TIMEOUT
The TRS could not be proven terminating. The proof attempt took 60005 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (15526ms).
| Problem 2 was processed with processor DependencyGraph (1073ms).
| | Problem 71 remains open; application of the following processors failed [].
| Problem 3 was processed with processor DependencyGraph (1090ms).
| | Problem 72 remains open; application of the following processors failed [].
| Problem 4 was processed with processor DependencyGraph (249ms).
| | Problem 73 remains open; application of the following processors failed [].
| Problem 5 was processed with processor DependencyGraph (1056ms).
| | Problem 74 remains open; application of the following processors failed [].
| Problem 6 was processed with processor DependencyGraph (2ms).
| Problem 7 was processed with processor DependencyGraph (1050ms).
| | Problem 75 remains open; application of the following processors failed [].
| Problem 8 was processed with processor DependencyGraph (1232ms).
| | Problem 76 remains open; application of the following processors failed [].
| Problem 9 was processed with processor DependencyGraph (1051ms).
| | Problem 77 remains open; application of the following processors failed [].
| Problem 10 was processed with processor DependencyGraph (1110ms).
| | Problem 78 remains open; application of the following processors failed [].
| Problem 11 was processed with processor DependencyGraph (1057ms).
| | Problem 79 remains open; application of the following processors failed [].
| Problem 12 was processed with processor DependencyGraph (1264ms).
| | Problem 80 remains open; application of the following processors failed [].
| Problem 13 was processed with processor DependencyGraph (1ms).
| Problem 14 was processed with processor DependencyGraph (172ms).
| | Problem 81 remains open; application of the following processors failed [].
| | Problem 82 remains open; application of the following processors failed [].
| Problem 15 was processed with processor DependencyGraph (1262ms).
| | Problem 83 remains open; application of the following processors failed [].
| Problem 16 was processed with processor DependencyGraph (159ms).
| | Problem 84 remains open; application of the following processors failed [].
| | Problem 85 remains open; application of the following processors failed [].
| Problem 17 remains open; application of the following processors failed [SubtermCriterion (0ms), DependencyGraph (122ms)].
| Problem 18 was processed with processor DependencyGraph (1ms).
| Problem 19 was processed with processor DependencyGraph (1080ms).
| | Problem 86 remains open; application of the following processors failed [].
| Problem 20 was processed with processor DependencyGraph (1202ms).
| | Problem 87 remains open; application of the following processors failed [].
| Problem 21 was processed with processor DependencyGraph (2ms).
| Problem 22 was processed with processor DependencyGraph (1ms).
| Problem 23 was processed with processor DependencyGraph (1051ms).
| | Problem 88 remains open; application of the following processors failed [].
| Problem 24 was processed with processor DependencyGraph (1165ms).
| | Problem 89 remains open; application of the following processors failed [].
| Problem 25 was processed with processor DependencyGraph (1ms).
| Problem 26 was processed with processor DependencyGraph (2ms).
| Problem 27 was processed with processor DependencyGraph (1107ms).
| | Problem 90 remains open; application of the following processors failed [].
| Problem 28 was processed with processor DependencyGraph (932ms).
| | Problem 92 remains open; application of the following processors failed [].
| | Problem 93 remains open; application of the following processors failed [].
| Problem 29 was processed with processor DependencyGraph (1167ms).
| | Problem 91 remains open; application of the following processors failed [].
| Problem 30 was processed with processor DependencyGraph (1135ms).
| | Problem 94 remains open; application of the following processors failed [].
| Problem 31 was processed with processor DependencyGraph (2ms).
| Problem 32 was processed with processor DependencyGraph (36ms).
| | Problem 97 remains open; application of the following processors failed [].
| Problem 33 was processed with processor DependencyGraph (1094ms).
| | Problem 98 remains open; application of the following processors failed [].
| Problem 34 was processed with processor DependencyGraph (161ms).
| | Problem 95 remains open; application of the following processors failed [].
| | Problem 96 remains open; application of the following processors failed [].
| Problem 35 was processed with processor DependencyGraph (1ms).
| Problem 36 was processed with processor DependencyGraph (1101ms).
| | Problem 101 remains open; application of the following processors failed [].
| Problem 37 was processed with processor DependencyGraph (1048ms).
| | Problem 102 remains open; application of the following processors failed [].
| Problem 38 was processed with processor DependencyGraph (1110ms).
| | Problem 99 remains open; application of the following processors failed [].
| Problem 39 was processed with processor DependencyGraph (1050ms).
| | Problem 100 remains open; application of the following processors failed [].
| Problem 40 was processed with processor DependencyGraph (1325ms).
| | Problem 104 remains open; application of the following processors failed [].
| Problem 41 was processed with processor DependencyGraph (1ms).
| Problem 42 was processed with processor DependencyGraph (34ms).
| Problem 43 was processed with processor DependencyGraph (1053ms).
| | Problem 103 remains open; application of the following processors failed [].
| Problem 44 was processed with processor DependencyGraph (1235ms).
| | Problem 106 remains open; application of the following processors failed [].
| Problem 45 was processed with processor DependencyGraph (1018ms).
| | Problem 107 remains open; application of the following processors failed [].
| Problem 46 was processed with processor DependencyGraph (2ms).
| Problem 47 was processed with processor DependencyGraph (1046ms).
| | Problem 105 remains open; application of the following processors failed [].
| Problem 48 was processed with processor DependencyGraph (1ms).
| Problem 49 was processed with processor DependencyGraph (172ms).
| | Problem 110 remains open; application of the following processors failed [].
| | Problem 111 remains open; application of the following processors failed [].
| Problem 50 was processed with processor DependencyGraph (1050ms).
| | Problem 109 remains open; application of the following processors failed [].
| Problem 51 was processed with processor DependencyGraph (1077ms).
| | Problem 108 remains open; application of the following processors failed [].
| Problem 52 was processed with processor DependencyGraph (1298ms).
| | Problem 115 remains open; application of the following processors failed [].
| Problem 53 was processed with processor DependencyGraph (1061ms).
| | Problem 114 remains open; application of the following processors failed [].
| Problem 54 was processed with processor DependencyGraph (59ms).
| | Problem 113 remains open; application of the following processors failed [].
| Problem 55 was processed with processor DependencyGraph (1083ms).
| | Problem 112 remains open; application of the following processors failed [].
| Problem 56 was processed with processor DependencyGraph (2ms).
| Problem 57 was processed with processor DependencyGraph (1140ms).
| | Problem 118 remains open; application of the following processors failed [].
| Problem 58 was processed with processor DependencyGraph (1078ms).
| | Problem 117 remains open; application of the following processors failed [].
| Problem 59 was processed with processor DependencyGraph (1047ms).
| | Problem 116 remains open; application of the following processors failed [].
| Problem 60 remains open; application of the following processors failed [SubtermCriterion (0ms)].
| Problem 61 remains open; application of the following processors failed [SubtermCriterion (0ms), DependencyGraph (timeout)].
| Problem 62 was processed with processor DependencyGraph (631ms).
| | Problem 120 remains open; application of the following processors failed [].
| Problem 63 was processed with processor DependencyGraph (1361ms).
| | Problem 119 remains open; application of the following processors failed [].
| Problem 64 remains open; application of the following processors failed [SubtermCriterion (0ms)].
| Problem 65 remains open; application of the following processors failed [SubtermCriterion (0ms)].
| Problem 66 remains open; application of the following processors failed [SubtermCriterion (0ms)].
| Problem 67 remains open; application of the following processors failed [SubtermCriterion (0ms)].
| Problem 68 remains open; application of the following processors failed [SubtermCriterion (0ms)].
| Problem 69 remains open; application of the following processors failed [SubtermCriterion (0ms)].
| Problem 70 remains open; application of the following processors failed [SubtermCriterion (0ms)].
The following open problems remain:
Open Dependency Pair Problem 2
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U105#(tt, V2) | → | U106#(isLNat(V2)) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U103#(tt, V1, V2) | → | isLNatKind#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 3
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 4
Dependency Pairs
U343#(tt, N, XS) | → | U344#(isLNatKind(XS), N, XS) | | U327#(pair(YS, ZS), X) | → | T(X) |
U22#(tt, X, Y) | → | isLNat#(Y) | | fst#(pair(X, Y)) | → | isLNat#(X) |
splitAt#(s(N), cons(X, XS)) | → | isNatural#(N) | | U324#(tt, N, X, XS) | → | U325#(isLNat(XS), N, X, XS) |
fst#(pair(X, Y)) | → | U21#(isLNat(X), X, Y) | | U325#(tt, N, X, XS) | → | isLNatKind#(XS) |
splitAt#(s(N), cons(X, XS)) | → | U321#(isNatural(N), N, X, XS) | | U324#(tt, N, X, XS) | → | isLNat#(XS) |
U322#(tt, N, X, XS) | → | U323#(isNatural(X), N, X, XS) | | U312#(tt, XS) | → | T(XS) |
U344#(tt, N, XS) | → | splitAt#(N, XS) | | U311#(tt, XS) | → | isLNatKind#(XS) |
splitAt#(0, XS) | → | U311#(isLNat(XS), XS) | | U323#(tt, N, X, XS) | → | U324#(isNaturalKind(X), N, X, XS) |
U21#(tt, X, Y) | → | U22#(isLNatKind(X), X, Y) | | U344#(tt, N, XS) | → | fst#(splitAt(N, XS)) |
U323#(tt, N, X, XS) | → | isNaturalKind#(X) | | U325#(tt, N, X, XS) | → | U326#(isLNatKind(XS), N, X, XS) |
U326#(tt, N, X, XS) | → | T(XS) | | splitAt#(0, XS) | → | isLNat#(XS) |
U321#(tt, N, X, XS) | → | U322#(isNaturalKind(N), N, X, XS) | | U326#(tt, N, X, XS) | → | U327#(splitAt(N, XS), X) |
U322#(tt, N, X, XS) | → | isNatural#(X) | | U24#(tt, X) | → | T(X) |
U23#(tt, X, Y) | → | isLNatKind#(Y) | | U21#(tt, X, Y) | → | isLNatKind#(X) |
U326#(tt, N, X, XS) | → | T(N) | | U321#(tt, N, X, XS) | → | isNaturalKind#(N) |
U22#(tt, X, Y) | → | U23#(isLNat(Y), X, Y) | | U344#(tt, N, XS) | → | T(N) |
U326#(tt, N, X, XS) | → | splitAt#(N, XS) | | U311#(tt, XS) | → | U312#(isLNatKind(XS), XS) |
U23#(tt, X, Y) | → | U24#(isLNatKind(Y), X) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 5
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 7
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) |
U55#(tt, V2) | → | U56#(isLNat(V2)) | | U82#(tt, V1) | → | isPLNat#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U255#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 8
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U245#(tt, V2) | → | U246#(isLNat(V2)) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U243#(tt, V1, V2) | → | isLNatKind#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U255#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U241#(tt, V1, V2) | → | isLNatKind#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U62#(tt, V1) | → | U63#(isPLNat(V1)) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
U61#(tt, V1) | → | isPLNatKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 9
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | U246#(isLNat(V2)) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U205#(tt, V2) | → | isLNat#(V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 10
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 11
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) |
U55#(tt, V2) | → | U56#(isLNat(V2)) | | U82#(tt, V1) | → | isPLNat#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 12
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U245#(tt, V2) | → | U246#(isLNat(V2)) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U243#(tt, V1, V2) | → | isLNatKind#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U241#(tt, V1, V2) | → | isLNatKind#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U62#(tt, V1) | → | U63#(isPLNat(V1)) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) | | U61#(tt, V1) | → | isPLNatKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 14
Dependency Pairs
U281#(tt, N) | → | U282#(isNaturalKind(N), N) | | U327#(pair(YS, ZS), X) | → | T(X) |
splitAt#(s(N), cons(X, XS)) | → | isNatural#(N) | | U324#(tt, N, X, XS) | → | U325#(isLNat(XS), N, X, XS) |
U325#(tt, N, X, XS) | → | isLNatKind#(XS) | | splitAt#(s(N), cons(X, XS)) | → | U321#(isNatural(N), N, X, XS) |
U282#(tt, N) | → | T(N) | | U322#(tt, N, X, XS) | → | U323#(isNatural(X), N, X, XS) |
U312#(tt, XS) | → | T(XS) | | U311#(tt, XS) | → | isLNatKind#(XS) |
splitAt#(0, XS) | → | U311#(isLNat(XS), XS) | | U323#(tt, N, X, XS) | → | U324#(isNaturalKind(X), N, X, XS) |
T(s(x_1)) | → | T(x_1) | | U323#(tt, N, X, XS) | → | isNaturalKind#(X) |
U326#(tt, N, X, XS) | → | T(XS) | | U325#(tt, N, X, XS) | → | U326#(isLNatKind(XS), N, X, XS) |
splitAt#(0, XS) | → | isLNat#(XS) | | T(natsFrom(x_1)) | → | T(x_1) |
U321#(tt, N, X, XS) | → | U322#(isNaturalKind(N), N, X, XS) | | U326#(tt, N, X, XS) | → | U327#(splitAt(N, XS), X) |
U322#(tt, N, X, XS) | → | isNatural#(X) | | natsFrom#(N) | → | isNatural#(N) |
T(natsFrom(s(N))) | → | natsFrom#(s(N)) | | natsFrom#(N) | → | U281#(isNatural(N), N) |
U326#(tt, N, X, XS) | → | T(N) | | U321#(tt, N, X, XS) | → | isNaturalKind#(N) |
U326#(tt, N, X, XS) | → | splitAt#(N, XS) | | U281#(tt, N) | → | isNaturalKind#(N) |
U311#(tt, XS) | → | U312#(isLNatKind(XS), XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 15
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U241#(tt, V1, V2) | → | isLNatKind#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U62#(tt, V1) | → | U63#(isPLNat(V1)) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U103#(tt, V1, V2) | → | isLNatKind#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) | | U61#(tt, V1) | → | isPLNatKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 17
Dependency Pairs
U271#(tt, V2) | → | isLNatKind#(V2) | | isNaturalKind#(head(V1)) | → | isLNatKind#(V1) |
U231#(tt, V2) | → | isLNatKind#(V2) | | U121#(tt, V2) | → | isLNatKind#(V2) |
U261#(tt, V2) | → | isLNatKind#(V2) | | isLNatKind#(natsFrom(V1)) | → | isNaturalKind#(V1) |
isPLNatKind#(splitAt(V1, V2)) | → | isNaturalKind#(V1) | | isNaturalKind#(sel(V1, V2)) | → | isNaturalKind#(V1) |
isLNatKind#(afterNth(V1, V2)) | → | U111#(isNaturalKind(V1), V2) | | isNaturalKind#(s(V1)) | → | isNaturalKind#(V1) |
isLNatKind#(tail(V1)) | → | isLNatKind#(V1) | | isLNatKind#(snd(V1)) | → | isPLNatKind#(V1) |
U171#(tt, V2) | → | isLNatKind#(V2) | | isLNatKind#(afterNth(V1, V2)) | → | isNaturalKind#(V1) |
isPLNatKind#(splitAt(V1, V2)) | → | U271#(isNaturalKind(V1), V2) | | isNaturalKind#(sel(V1, V2)) | → | U231#(isNaturalKind(V1), V2) |
isLNatKind#(fst(V1)) | → | isPLNatKind#(V1) | | isLNatKind#(take(V1, V2)) | → | isNaturalKind#(V1) |
isPLNatKind#(pair(V1, V2)) | → | isLNatKind#(V1) | | U111#(tt, V2) | → | isLNatKind#(V2) |
isLNatKind#(take(V1, V2)) | → | U171#(isNaturalKind(V1), V2) | | isPLNatKind#(pair(V1, V2)) | → | U261#(isLNatKind(V1), V2) |
isLNatKind#(cons(V1, V2)) | → | isNaturalKind#(V1) | | isLNatKind#(cons(V1, V2)) | → | U121#(isNaturalKind(V1), V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 16
Dependency Pairs
U327#(pair(YS, ZS), X) | → | T(X) | | U281#(tt, N) | → | U282#(isNaturalKind(N), N) |
U324#(tt, N, X, XS) | → | U325#(isLNat(XS), N, X, XS) | | splitAt#(s(N), cons(X, XS)) | → | isNatural#(N) |
U325#(tt, N, X, XS) | → | isLNatKind#(XS) | | splitAt#(s(N), cons(X, XS)) | → | U321#(isNatural(N), N, X, XS) |
U282#(tt, N) | → | T(N) | | U322#(tt, N, X, XS) | → | U323#(isNatural(X), N, X, XS) |
U312#(tt, XS) | → | T(XS) | | U311#(tt, XS) | → | isLNatKind#(XS) |
splitAt#(0, XS) | → | U311#(isLNat(XS), XS) | | U323#(tt, N, X, XS) | → | U324#(isNaturalKind(X), N, X, XS) |
T(s(x_1)) | → | T(x_1) | | U323#(tt, N, X, XS) | → | isNaturalKind#(X) |
U325#(tt, N, X, XS) | → | U326#(isLNatKind(XS), N, X, XS) | | U326#(tt, N, X, XS) | → | T(XS) |
splitAt#(0, XS) | → | isLNat#(XS) | | T(natsFrom(x_1)) | → | T(x_1) |
U321#(tt, N, X, XS) | → | U322#(isNaturalKind(N), N, X, XS) | | U322#(tt, N, X, XS) | → | isNatural#(X) |
U326#(tt, N, X, XS) | → | U327#(splitAt(N, XS), X) | | natsFrom#(N) | → | isNatural#(N) |
T(natsFrom(s(N))) | → | natsFrom#(s(N)) | | natsFrom#(N) | → | U281#(isNatural(N), N) |
U326#(tt, N, X, XS) | → | T(N) | | U326#(tt, N, X, XS) | → | splitAt#(N, XS) |
U281#(tt, N) | → | isNaturalKind#(N) | | U311#(tt, XS) | → | U312#(isLNatKind(XS), XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 19
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | U246#(isLNat(V2)) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U243#(tt, V1, V2) | → | isLNatKind#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U255#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U241#(tt, V1, V2) | → | isLNatKind#(V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U205#(tt, V2) | → | isLNat#(V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 20
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U103#(tt, V1, V2) | → | isLNatKind#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) | | U61#(tt, V1) | → | isPLNatKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 23
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U255#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 24
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U255#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U241#(tt, V1, V2) | → | isLNatKind#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U62#(tt, V1) | → | U63#(isPLNat(V1)) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
U61#(tt, V1) | → | isPLNatKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 27
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U255#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U205#(tt, V2) | → | isLNat#(V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
U61#(tt, V1) | → | isPLNatKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 29
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U103#(tt, V1, V2) | → | isLNatKind#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 28
Dependency Pairs
U327#(pair(YS, ZS), X) | → | T(X) | | U324#(tt, N, X, XS) | → | U325#(isLNat(XS), N, X, XS) |
splitAt#(s(N), cons(X, XS)) | → | isNatural#(N) | | U282#(tt, N) | → | T(N) |
U34#(tt, N) | → | T(N) | | U33#(tt, N, XS) | → | isLNatKind#(XS) |
U14#(tt, N, XS) | → | T(N) | | U14#(tt, N, XS) | → | snd#(splitAt(N, XS)) |
U311#(tt, XS) | → | isLNatKind#(XS) | | U323#(tt, N, X, XS) | → | U324#(isNaturalKind(X), N, X, XS) |
splitAt#(0, XS) | → | U311#(isLNat(XS), XS) | | head#(cons(N, XS)) | → | isNatural#(N) |
U294#(tt, N, XS) | → | T(XS) | | T(s(x_1)) | → | T(x_1) |
U294#(tt, N, XS) | → | head#(afterNth(N, XS)) | | U325#(tt, N, X, XS) | → | U326#(isLNatKind(XS), N, X, XS) |
U326#(tt, N, X, XS) | → | T(XS) | | snd#(pair(X, Y)) | → | isLNat#(X) |
splitAt#(0, XS) | → | isLNat#(XS) | | U322#(tt, N, X, XS) | → | isNatural#(X) |
U326#(tt, N, X, XS) | → | U327#(splitAt(N, XS), X) | | U303#(tt, Y) | → | isLNatKind#(Y) |
natsFrom#(N) | → | isNatural#(N) | | T(natsFrom(s(N))) | → | natsFrom#(s(N)) |
U294#(tt, N, XS) | → | afterNth#(N, XS) | | U326#(tt, N, X, XS) | → | splitAt#(N, XS) |
U304#(tt, Y) | → | T(Y) | | U12#(tt, N, XS) | → | U13#(isLNat(XS), N, XS) |
U302#(tt, Y) | → | U303#(isLNat(Y), Y) | | U281#(tt, N) | → | U282#(isNaturalKind(N), N) |
U13#(tt, N, XS) | → | isLNatKind#(XS) | | U294#(tt, N, XS) | → | T(N) |
U292#(tt, N, XS) | → | U293#(isLNat(XS), N, XS) | | U12#(tt, N, XS) | → | isLNat#(XS) |
U325#(tt, N, X, XS) | → | isLNatKind#(XS) | | U303#(tt, Y) | → | U304#(isLNatKind(Y), Y) |
splitAt#(s(N), cons(X, XS)) | → | U321#(isNatural(N), N, X, XS) | | U301#(tt, X, Y) | → | U302#(isLNatKind(X), Y) |
U322#(tt, N, X, XS) | → | U323#(isNatural(X), N, X, XS) | | U324#(tt, N, X, XS) | → | isLNat#(XS) |
U312#(tt, XS) | → | T(XS) | | snd#(pair(X, Y)) | → | U301#(isLNat(X), X, Y) |
U323#(tt, N, X, XS) | → | isNaturalKind#(X) | | U31#(tt, N, XS) | → | isNaturalKind#(N) |
U302#(tt, Y) | → | isLNat#(Y) | | U31#(tt, N, XS) | → | U32#(isNaturalKind(N), N, XS) |
afterNth#(N, XS) | → | isNatural#(N) | | U321#(tt, N, X, XS) | → | U322#(isNaturalKind(N), N, X, XS) |
U14#(tt, N, XS) | → | T(XS) | | T(natsFrom(x_1)) | → | T(x_1) |
head#(cons(N, XS)) | → | U31#(isNatural(N), N, XS) | | U293#(tt, N, XS) | → | isLNatKind#(XS) |
U33#(tt, N, XS) | → | U34#(isLNatKind(XS), N) | | natsFrom#(N) | → | U281#(isNatural(N), N) |
U32#(tt, N, XS) | → | isLNat#(XS) | | U13#(tt, N, XS) | → | U14#(isLNatKind(XS), N, XS) |
U321#(tt, N, X, XS) | → | isNaturalKind#(N) | | U11#(tt, N, XS) | → | isNaturalKind#(N) |
U326#(tt, N, X, XS) | → | T(N) | | U32#(tt, N, XS) | → | U33#(isLNat(XS), N, XS) |
afterNth#(N, XS) | → | U11#(isNatural(N), N, XS) | | U301#(tt, X, Y) | → | isLNatKind#(X) |
U14#(tt, N, XS) | → | splitAt#(N, XS) | | U281#(tt, N) | → | isNaturalKind#(N) |
U291#(tt, N, XS) | → | U292#(isNaturalKind(N), N, XS) | | U11#(tt, N, XS) | → | U12#(isNaturalKind(N), N, XS) |
U311#(tt, XS) | → | U312#(isLNatKind(XS), XS) | | U293#(tt, N, XS) | → | U294#(isLNatKind(XS), N, XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 30
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U255#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U62#(tt, V1) | → | U63#(isPLNat(V1)) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) | | U61#(tt, V1) | → | isPLNatKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 34
Dependency Pairs
U281#(tt, N) | → | U282#(isNaturalKind(N), N) | | U327#(pair(YS, ZS), X) | → | T(X) |
U324#(tt, N, X, XS) | → | U325#(isLNat(XS), N, X, XS) | | splitAt#(s(N), cons(X, XS)) | → | U321#(isNatural(N), N, X, XS) |
U282#(tt, N) | → | T(N) | | U324#(tt, N, X, XS) | → | isLNat#(XS) |
U322#(tt, N, X, XS) | → | U323#(isNatural(X), N, X, XS) | | U312#(tt, XS) | → | T(XS) |
U311#(tt, XS) | → | isLNatKind#(XS) | | splitAt#(0, XS) | → | U311#(isLNat(XS), XS) |
U323#(tt, N, X, XS) | → | U324#(isNaturalKind(X), N, X, XS) | | T(s(x_1)) | → | T(x_1) |
U323#(tt, N, X, XS) | → | isNaturalKind#(X) | | U326#(tt, N, X, XS) | → | T(XS) |
U325#(tt, N, X, XS) | → | U326#(isLNatKind(XS), N, X, XS) | | T(natsFrom(x_1)) | → | T(x_1) |
U321#(tt, N, X, XS) | → | U322#(isNaturalKind(N), N, X, XS) | | splitAt#(0, XS) | → | isLNat#(XS) |
U326#(tt, N, X, XS) | → | U327#(splitAt(N, XS), X) | | U322#(tt, N, X, XS) | → | isNatural#(X) |
natsFrom#(N) | → | isNatural#(N) | | T(natsFrom(s(N))) | → | natsFrom#(s(N)) |
natsFrom#(N) | → | U281#(isNatural(N), N) | | U326#(tt, N, X, XS) | → | T(N) |
U321#(tt, N, X, XS) | → | isNaturalKind#(N) | | U326#(tt, N, X, XS) | → | splitAt#(N, XS) |
U281#(tt, N) | → | isNaturalKind#(N) | | U311#(tt, XS) | → | U312#(isLNatKind(XS), XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 32
Dependency Pairs
T(natsFrom(x_1)) | → | T(x_1) | | U281#(tt, N) | → | U282#(isNaturalKind(N), N) |
U333#(tt, XS) | → | isLNatKind#(XS) | | natsFrom#(N) | → | isNatural#(N) |
T(natsFrom(s(N))) | → | natsFrom#(s(N)) | | natsFrom#(N) | → | U281#(isNatural(N), N) |
U282#(tt, N) | → | T(N) | | U334#(tt, XS) | → | T(XS) |
T(s(x_1)) | → | T(x_1) | | U333#(tt, XS) | → | U334#(isLNatKind(XS), XS) |
U281#(tt, N) | → | isNaturalKind#(N) | | U332#(tt, XS) | → | U333#(isLNat(XS), XS) |
U331#(tt, N, XS) | → | U332#(isNaturalKind(N), XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 33
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 38
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U82#(tt, V1) | → | isPLNat#(V1) |
U251#(tt, V1, V2) | → | isNaturalKind#(V1) | | U182#(tt, V1) | → | U183#(isLNat(V1)) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U255#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U102#(tt, V1, V2) | → | isLNatKind#(V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U205#(tt, V2) | → | isLNat#(V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 39
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U62#(tt, V1) | → | U63#(isPLNat(V1)) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 36
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U105#(tt, V2) | → | U106#(isLNat(V2)) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 37
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U105#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U255#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U205#(tt, V2) | → | isLNat#(V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 43
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U62#(tt, V1) | → | U63#(isPLNat(V1)) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U61#(tt, V1) | → | isPLNatKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 40
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U245#(tt, V2) | → | U246#(isLNat(V2)) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U243#(tt, V1, V2) | → | isLNatKind#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U241#(tt, V1, V2) | → | isLNatKind#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U62#(tt, V1) | → | U63#(isPLNat(V1)) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U103#(tt, V1, V2) | → | isLNatKind#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) | | U61#(tt, V1) | → | isPLNatKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 47
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | U246#(isLNat(V2)) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U243#(tt, V1, V2) | → | isLNatKind#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U255#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U205#(tt, V2) | → | isLNat#(V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 44
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U62#(tt, V1) | → | U63#(isPLNat(V1)) |
U55#(tt, V2) | → | isLNat#(V2) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U103#(tt, V1, V2) | → | isLNatKind#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
U61#(tt, V1) | → | isPLNatKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 45
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U105#(tt, V2) | → | U106#(isLNat(V2)) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U103#(tt, V1, V2) | → | isLNatKind#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 51
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 50
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 49
Dependency Pairs
U281#(tt, N) | → | U282#(isNaturalKind(N), N) | | U327#(pair(YS, ZS), X) | → | T(X) |
U324#(tt, N, X, XS) | → | U325#(isLNat(XS), N, X, XS) | | U325#(tt, N, X, XS) | → | isLNatKind#(XS) |
splitAt#(s(N), cons(X, XS)) | → | U321#(isNatural(N), N, X, XS) | | U282#(tt, N) | → | T(N) |
U324#(tt, N, X, XS) | → | isLNat#(XS) | | U322#(tt, N, X, XS) | → | U323#(isNatural(X), N, X, XS) |
U312#(tt, XS) | → | T(XS) | | U311#(tt, XS) | → | isLNatKind#(XS) |
U323#(tt, N, X, XS) | → | U324#(isNaturalKind(X), N, X, XS) | | splitAt#(0, XS) | → | U311#(isLNat(XS), XS) |
T(s(x_1)) | → | T(x_1) | | U323#(tt, N, X, XS) | → | isNaturalKind#(X) |
U325#(tt, N, X, XS) | → | U326#(isLNatKind(XS), N, X, XS) | | U326#(tt, N, X, XS) | → | T(XS) |
T(natsFrom(x_1)) | → | T(x_1) | | U321#(tt, N, X, XS) | → | U322#(isNaturalKind(N), N, X, XS) |
splitAt#(0, XS) | → | isLNat#(XS) | | U326#(tt, N, X, XS) | → | U327#(splitAt(N, XS), X) |
U322#(tt, N, X, XS) | → | isNatural#(X) | | natsFrom#(N) | → | isNatural#(N) |
T(natsFrom(s(N))) | → | natsFrom#(s(N)) | | natsFrom#(N) | → | U281#(isNatural(N), N) |
U321#(tt, N, X, XS) | → | isNaturalKind#(N) | | U326#(tt, N, X, XS) | → | T(N) |
U326#(tt, N, X, XS) | → | splitAt#(N, XS) | | U281#(tt, N) | → | isNaturalKind#(N) |
U311#(tt, XS) | → | U312#(isLNatKind(XS), XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 55
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 54
Dependency Pairs
T(natsFrom(x_1)) | → | T(x_1) | | U281#(tt, N) | → | U282#(isNaturalKind(N), N) |
U22#(tt, X, Y) | → | isLNat#(Y) | | U24#(tt, X) | → | T(X) |
natsFrom#(N) | → | isNatural#(N) | | fst#(pair(X, Y)) | → | U21#(isLNat(X), X, Y) |
U23#(tt, X, Y) | → | isLNatKind#(Y) | | T(natsFrom(s(N))) | → | natsFrom#(s(N)) |
natsFrom#(N) | → | U281#(isNatural(N), N) | | U21#(tt, X, Y) | → | isLNatKind#(X) |
U282#(tt, N) | → | T(N) | | U22#(tt, X, Y) | → | U23#(isLNat(Y), X, Y) |
U21#(tt, X, Y) | → | U22#(isLNatKind(X), X, Y) | | T(s(x_1)) | → | T(x_1) |
U344#(tt, N, XS) | → | fst#(splitAt(N, XS)) | | U281#(tt, N) | → | isNaturalKind#(N) |
U23#(tt, X, Y) | → | U24#(isLNatKind(Y), X) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 53
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U241#(tt, V1, V2) | → | isLNatKind#(V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 52
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U182#(tt, V1) | → | U183#(isLNat(V1)) |
U251#(tt, V1, V2) | → | isNaturalKind#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U243#(tt, V1, V2) | → | isLNatKind#(V2) |
U255#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U102#(tt, V1, V2) | → | isLNatKind#(V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U241#(tt, V1, V2) | → | isLNatKind#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U62#(tt, V1) | → | U63#(isPLNat(V1)) |
U55#(tt, V2) | → | isLNat#(V2) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U103#(tt, V1, V2) | → | isLNatKind#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
U61#(tt, V1) | → | isPLNatKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 59
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 58
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U255#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U205#(tt, V2) | → | isLNat#(V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 57
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 63
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U245#(tt, V2) | → | U246#(isLNat(V2)) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U243#(tt, V1, V2) | → | isLNatKind#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U241#(tt, V1, V2) | → | isLNatKind#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U62#(tt, V1) | → | U63#(isPLNat(V1)) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U105#(tt, V2) | → | U106#(isLNat(V2)) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U103#(tt, V1, V2) | → | isLNatKind#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
U61#(tt, V1) | → | isPLNatKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 62
Dependency Pairs
U327#(pair(YS, ZS), X) | → | T(X) | | U324#(tt, N, X, XS) | → | U325#(isLNat(XS), N, X, XS) |
splitAt#(s(N), cons(X, XS)) | → | isNatural#(N) | | U34#(tt, N) | → | T(N) |
U33#(tt, N, XS) | → | isLNatKind#(XS) | | U14#(tt, N, XS) | → | T(N) |
U14#(tt, N, XS) | → | snd#(splitAt(N, XS)) | | U311#(tt, XS) | → | isLNatKind#(XS) |
U323#(tt, N, X, XS) | → | U324#(isNaturalKind(X), N, X, XS) | | splitAt#(0, XS) | → | U311#(isLNat(XS), XS) |
head#(cons(N, XS)) | → | isNatural#(N) | | U294#(tt, N, XS) | → | T(XS) |
U294#(tt, N, XS) | → | head#(afterNth(N, XS)) | | U325#(tt, N, X, XS) | → | U326#(isLNatKind(XS), N, X, XS) |
U326#(tt, N, X, XS) | → | T(XS) | | snd#(pair(X, Y)) | → | isLNat#(X) |
splitAt#(0, XS) | → | isLNat#(XS) | | U322#(tt, N, X, XS) | → | isNatural#(X) |
U326#(tt, N, X, XS) | → | U327#(splitAt(N, XS), X) | | U303#(tt, Y) | → | isLNatKind#(Y) |
U294#(tt, N, XS) | → | afterNth#(N, XS) | | U326#(tt, N, X, XS) | → | splitAt#(N, XS) |
U304#(tt, Y) | → | T(Y) | | U12#(tt, N, XS) | → | U13#(isLNat(XS), N, XS) |
U302#(tt, Y) | → | U303#(isLNat(Y), Y) | | U13#(tt, N, XS) | → | isLNatKind#(XS) |
U12#(tt, N, XS) | → | isLNat#(XS) | | U325#(tt, N, X, XS) | → | isLNatKind#(XS) |
U303#(tt, Y) | → | U304#(isLNatKind(Y), Y) | | splitAt#(s(N), cons(X, XS)) | → | U321#(isNatural(N), N, X, XS) |
U301#(tt, X, Y) | → | U302#(isLNatKind(X), Y) | | U322#(tt, N, X, XS) | → | U323#(isNatural(X), N, X, XS) |
U324#(tt, N, X, XS) | → | isLNat#(XS) | | U312#(tt, XS) | → | T(XS) |
snd#(pair(X, Y)) | → | U301#(isLNat(X), X, Y) | | U323#(tt, N, X, XS) | → | isNaturalKind#(X) |
U31#(tt, N, XS) | → | isNaturalKind#(N) | | U302#(tt, Y) | → | isLNat#(Y) |
U31#(tt, N, XS) | → | U32#(isNaturalKind(N), N, XS) | | afterNth#(N, XS) | → | isNatural#(N) |
U321#(tt, N, X, XS) | → | U322#(isNaturalKind(N), N, X, XS) | | U14#(tt, N, XS) | → | T(XS) |
head#(cons(N, XS)) | → | U31#(isNatural(N), N, XS) | | U33#(tt, N, XS) | → | U34#(isLNatKind(XS), N) |
U32#(tt, N, XS) | → | isLNat#(XS) | | U13#(tt, N, XS) | → | U14#(isLNatKind(XS), N, XS) |
U321#(tt, N, X, XS) | → | isNaturalKind#(N) | | U11#(tt, N, XS) | → | isNaturalKind#(N) |
U326#(tt, N, X, XS) | → | T(N) | | U32#(tt, N, XS) | → | U33#(isLNat(XS), N, XS) |
afterNth#(N, XS) | → | U11#(isNatural(N), N, XS) | | U301#(tt, X, Y) | → | isLNatKind#(X) |
U14#(tt, N, XS) | → | splitAt#(N, XS) | | U11#(tt, N, XS) | → | U12#(isNaturalKind(N), N, XS) |
U311#(tt, XS) | → | U312#(isLNatKind(XS), XS) | | U293#(tt, N, XS) | → | U294#(isLNatKind(XS), N, XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 61
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U243#(tt, V1, V2) | → | isLNatKind#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U241#(tt, V1, V2) | → | isLNatKind#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U62#(tt, V1) | → | U63#(isPLNat(V1)) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) | | U61#(tt, V1) | → | isPLNatKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 60
Dependency Pairs
U302#(tt, Y) | → | U303#(isLNat(Y), Y) | | T(natsFrom(x_1)) | → | T(x_1) |
U281#(tt, N) | → | U282#(isNaturalKind(N), N) | | U303#(tt, Y) | → | isLNatKind#(Y) |
natsFrom#(N) | → | isNatural#(N) | | T(natsFrom(s(N))) | → | natsFrom#(s(N)) |
natsFrom#(N) | → | U281#(isNatural(N), N) | | U303#(tt, Y) | → | U304#(isLNatKind(Y), Y) |
U282#(tt, N) | → | T(N) | | U301#(tt, X, Y) | → | U302#(isLNatKind(X), Y) |
T(s(x_1)) | → | T(x_1) | | U304#(tt, Y) | → | T(Y) |
U281#(tt, N) | → | isNaturalKind#(N) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 68
Dependency Pairs
head#(cons(N, XS)) | → | isNatural#(N) | | U294#(tt, N, XS) | → | head#(afterNth(N, XS)) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 69
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U255#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U205#(tt, V2) | → | isLNat#(V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 70
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U255#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U205#(tt, V2) | → | isLNat#(V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 64
Dependency Pairs
T(natsFrom(x_1)) | → | T(x_1) | | U281#(tt, N) | → | U282#(isNaturalKind(N), N) |
U24#(tt, X) | → | T(X) | | natsFrom#(N) | → | isNatural#(N) |
U23#(tt, X, Y) | → | isLNatKind#(Y) | | T(natsFrom(s(N))) | → | natsFrom#(s(N)) |
natsFrom#(N) | → | U281#(isNatural(N), N) | | U282#(tt, N) | → | T(N) |
U22#(tt, X, Y) | → | U23#(isLNat(Y), X, Y) | | U21#(tt, X, Y) | → | U22#(isLNatKind(X), X, Y) |
T(s(x_1)) | → | T(x_1) | | U281#(tt, N) | → | isNaturalKind#(N) |
U23#(tt, X, Y) | → | U24#(isLNatKind(Y), X) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 65
Dependency Pairs
T(natsFrom(x_1)) | → | T(x_1) | | U281#(tt, N) | → | U282#(isNaturalKind(N), N) |
T(s(x_1)) | → | T(x_1) | | U281#(tt, N) | → | isNaturalKind#(N) |
T(natsFrom(s(N))) | → | natsFrom#(s(N)) | | natsFrom#(N) | → | U281#(isNatural(N), N) |
U282#(tt, N) | → | T(N) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 66
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | U246#(isLNat(V2)) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U205#(tt, V2) | → | isLNat#(V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Open Dependency Pair Problem 67
Dependency Pairs
U33#(tt, N, XS) | → | isLNatKind#(XS) | | U32#(tt, N, XS) | → | U33#(isLNat(XS), N, XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U63, U111, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, tail, U193, U192, U71, U191, U73, U72, 0, U122, U121, U262, U261, pair, U331, U332, U333, U334, U46, U325, U45, U324, U44, U327, U43, U131, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, U171, isNaturalKind, U172, U272, U83, U271, U201, U202, U14, take, U82, U301, U81, U11, U12, U13, U102, sel, U103, U101, nil
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U333#(tt, XS) | → | isLNatKind#(XS) |
splitAt#(s(N), cons(X, XS)) | → | isNatural#(N) | | tail#(cons(N, XS)) | → | isNatural#(N) |
isPLNat#(splitAt(V1, V2)) | → | isNaturalKind#(V1) | | U282#(tt, N) | → | T(N) |
U231#(tt, V2) | → | isLNatKind#(V2) | | U14#(tt, N, XS) | → | T(N) |
U33#(tt, N, XS) | → | isLNatKind#(XS) | | splitAt#(0, XS) | → | U311#(isLNat(XS), XS) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U21#(tt, X, Y) | → | U22#(isLNatKind(X), X, Y) |
isLNat#(snd(V1)) | → | isPLNatKind#(V1) | | U344#(tt, N, XS) | → | fst#(splitAt(N, XS)) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | isLNatKind#(tail(V1)) | → | U161#(isLNatKind(V1)) |
isNaturalKind#(sel(V1, V2)) | → | isNaturalKind#(V1) | | isLNatKind#(afterNth(V1, V2)) | → | U111#(isNaturalKind(V1), V2) |
U171#(tt, V2) | → | U172#(isLNatKind(V2)) | | U326#(tt, N, X, XS) | → | U327#(splitAt(N, XS), X) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U231#(tt, V2) | → | U232#(isLNatKind(V2)) |
U171#(tt, V2) | → | isLNatKind#(V2) | | isPLNatKind#(splitAt(V1, V2)) | → | U271#(isNaturalKind(V1), V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | isLNat#(cons(V1, V2)) | → | isNaturalKind#(V1) |
isLNatKind#(cons(V1, V2)) | → | isNaturalKind#(V1) | | U331#(tt, N, XS) | → | isNaturalKind#(N) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U342#(tt, N, XS) | → | isLNat#(XS) | | U92#(tt, V1) | → | U93#(isLNat(V1)) |
isNaturalKind#(s(V1)) | → | U221#(isNaturalKind(V1)) | | U292#(tt, N, XS) | → | U293#(isLNat(XS), N, XS) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | isLNatKind#(snd(V1)) | → | U151#(isPLNatKind(V1)) |
U303#(tt, Y) | → | U304#(isLNatKind(Y), Y) | | U52#(tt, V1, V2) | → | isLNatKind#(V2) |
U62#(tt, V1) | → | U63#(isPLNat(V1)) | | U324#(tt, N, X, XS) | → | isLNat#(XS) |
isPLNat#(pair(V1, V2)) | → | isLNatKind#(V1) | | U121#(tt, V2) | → | isLNatKind#(V2) |
U261#(tt, V2) | → | isLNatKind#(V2) | | U205#(tt, V2) | → | isLNat#(V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | snd#(pair(X, Y)) | → | U301#(isLNat(X), X, Y) |
isLNat#(tail(V1)) | → | isLNatKind#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
isPLNatKind#(splitAt(V1, V2)) | → | isNaturalKind#(V1) | | isNatural#(head(V1)) | → | isLNatKind#(V1) |
U341#(tt, N, XS) | → | isNaturalKind#(N) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U101#(tt, V1, V2) | → | isNaturalKind#(V1) |
natsFrom#(N) | → | U281#(isNatural(N), N) | | U32#(tt, N, XS) | → | isLNat#(XS) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | U326#(tt, N, X, XS) | → | T(N) |
U32#(tt, N, XS) | → | U33#(isLNat(XS), N, XS) | | afterNth#(N, XS) | → | U11#(isNatural(N), N, XS) |
isLNatKind#(take(V1, V2)) | → | isNaturalKind#(V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U41#(tt, V1, V2) | → | isNaturalKind#(V1) | | U344#(tt, N, XS) | → | T(N) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U103#(tt, V1, V2) | → | isLNatKind#(V2) |
U11#(tt, N, XS) | → | U12#(isNaturalKind(N), N, XS) | | U342#(tt, N, XS) | → | U343#(isLNat(XS), N, XS) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U61#(tt, V1) | → | isPLNatKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) | | isLNat#(take(V1, V2)) | → | isNaturalKind#(V1) |
U34#(tt, N) | → | T(N) | | isLNat#(natsFrom(V1)) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | isNaturalKind#(V1) | | T(s(x_1)) | → | T(x_1) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U326#(tt, N, X, XS) | → | T(XS) |
U325#(tt, N, X, XS) | → | U326#(isLNatKind(XS), N, X, XS) | | U245#(tt, V2) | → | U246#(isLNat(V2)) |
U253#(tt, V1, V2) | → | isLNatKind#(V2) | | snd#(pair(X, Y)) | → | isLNat#(X) |
splitAt#(0, XS) | → | isLNat#(XS) | | U243#(tt, V1, V2) | → | isLNatKind#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | isLNatKind#(snd(V1)) | → | isPLNatKind#(V1) |
T(natsFrom(s(N))) | → | natsFrom#(s(N)) | | U294#(tt, N, XS) | → | afterNth#(N, XS) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | isLNatKind#(fst(V1)) | → | isPLNatKind#(V1) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U326#(tt, N, X, XS) | → | splitAt#(N, XS) |
U304#(tt, Y) | → | T(Y) | | isPLNatKind#(pair(V1, V2)) | → | U261#(isLNatKind(V1), V2) |
U241#(tt, V1, V2) | → | isLNatKind#(V1) | | U271#(tt, V2) | → | U272#(isLNatKind(V2)) |
U12#(tt, N, XS) | → | U13#(isLNat(XS), N, XS) | | tail#(cons(N, XS)) | → | U331#(isNatural(N), N, XS) |
U331#(tt, N, XS) | → | U332#(isNaturalKind(N), XS) | | U23#(tt, X, Y) | → | U24#(isLNatKind(Y), X) |
U22#(tt, X, Y) | → | isLNat#(Y) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U12#(tt, N, XS) | → | isLNat#(XS) | | U91#(tt, V1) | → | isLNatKind#(V1) |
fst#(pair(X, Y)) | → | U21#(isLNat(X), X, Y) | | take#(N, XS) | → | isNatural#(N) |
isNaturalKind#(head(V1)) | → | isLNatKind#(V1) | | U325#(tt, N, X, XS) | → | isLNatKind#(XS) |
U301#(tt, X, Y) | → | U302#(isLNatKind(X), Y) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U203#(tt, V1, V2) | → | isLNatKind#(V2) |
isNatural#(sel(V1, V2)) | → | isNaturalKind#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
isNatural#(s(V1)) | → | isNaturalKind#(V1) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U31#(tt, N, XS) | → | isNaturalKind#(N) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U105#(tt, V2) | → | U106#(isLNat(V2)) | | afterNth#(N, XS) | → | isNatural#(N) |
U14#(tt, N, XS) | → | T(XS) | | U24#(tt, X) | → | T(X) |
U344#(tt, N, XS) | → | T(XS) | | U293#(tt, N, XS) | → | isLNatKind#(XS) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U23#(tt, X, Y) | → | isLNatKind#(Y) |
isLNatKind#(afterNth(V1, V2)) | → | isNaturalKind#(V1) | | U11#(tt, N, XS) | → | isNaturalKind#(N) |
isLNat#(fst(V1)) | → | isPLNatKind#(V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U72#(tt, V1) | → | U73#(isNatural(V1)) |
U291#(tt, N, XS) | → | U292#(isNaturalKind(N), N, XS) | | U311#(tt, XS) | → | U312#(isLNatKind(XS), XS) |
isLNatKind#(cons(V1, V2)) | → | U121#(isNaturalKind(V1), V2) | | U202#(tt, V1, V2) | → | isLNatKind#(V2) |
U261#(tt, V2) | → | U262#(isLNatKind(V2)) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) | → | isNaturalKind#(V1) | | U121#(tt, V2) | → | U122#(isLNatKind(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U311#(tt, XS) | → | isLNatKind#(XS) |
U323#(tt, N, X, XS) | → | U324#(isNaturalKind(X), N, X, XS) | | head#(cons(N, XS)) | → | isNatural#(N) |
U294#(tt, N, XS) | → | head#(afterNth(N, XS)) | | U332#(tt, XS) | → | isLNat#(XS) |
U245#(tt, V2) | → | isLNat#(V2) | | U341#(tt, N, XS) | → | U342#(isNaturalKind(N), N, XS) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U105#(tt, V2) | → | isLNat#(V2) |
U322#(tt, N, X, XS) | → | isNatural#(X) | | U303#(tt, Y) | → | isLNatKind#(Y) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U102#(tt, V1, V2) | → | isLNatKind#(V2) | | isNaturalKind#(sel(V1, V2)) | → | U231#(isNaturalKind(V1), V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isPLNatKind#(pair(V1, V2)) | → | isLNatKind#(V1) |
U291#(tt, N, XS) | → | isNaturalKind#(N) | | U111#(tt, V2) | → | isLNatKind#(V2) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
isLNatKind#(take(V1, V2)) | → | U171#(isNaturalKind(V1), V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U242#(tt, V1, V2) | → | isLNatKind#(V2) | | sel#(N, XS) | → | U291#(isNatural(N), N, XS) |
U302#(tt, Y) | → | U303#(isLNat(Y), Y) | | U294#(tt, N, XS) | → | T(N) |
U111#(tt, V2) | → | U112#(isLNatKind(V2)) | | U255#(tt, V2) | → | U256#(isLNat(V2)) |
U322#(tt, N, X, XS) | → | U323#(isNatural(X), N, X, XS) | | U312#(tt, XS) | → | T(XS) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U323#(tt, N, X, XS) | → | isNaturalKind#(X) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U292#(tt, N, XS) | → | isLNat#(XS) | | U181#(tt, V1) | → | isLNatKind#(V1) |
T(natsFrom(x_1)) | → | T(x_1) | | U42#(tt, V1, V2) | → | isLNatKind#(V2) |
isNaturalKind#(s(V1)) | → | isNaturalKind#(V1) | | head#(cons(N, XS)) | → | U31#(isNatural(N), N, XS) |
U33#(tt, N, XS) | → | U34#(isLNatKind(XS), N) | | U21#(tt, X, Y) | → | isLNatKind#(X) |
U13#(tt, N, XS) | → | U14#(isLNatKind(XS), N, XS) | | U321#(tt, N, X, XS) | → | isNaturalKind#(N) |
U301#(tt, X, Y) | → | isLNatKind#(X) | | U334#(tt, XS) | → | T(XS) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U14#(tt, N, XS) | → | splitAt#(N, XS) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U343#(tt, N, XS) | → | U344#(isLNatKind(XS), N, XS) |
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U327#(pair(YS, ZS), X) | → | T(X) |
U71#(tt, V1) | → | isNaturalKind#(V1) | | U45#(tt, V2) | → | U46#(isLNat(V2)) |
U324#(tt, N, X, XS) | → | U325#(isLNat(XS), N, X, XS) | | U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) |
U55#(tt, V2) | → | U56#(isLNat(V2)) | | U14#(tt, N, XS) | → | snd#(splitAt(N, XS)) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U92#(tt, V1) | → | isLNat#(V1) |
U294#(tt, N, XS) | → | T(XS) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | isLNatKind#(fst(V1)) | → | U131#(isPLNatKind(V1)) |
isLNat#(afterNth(V1, V2)) | → | isNaturalKind#(V1) | | U255#(tt, V2) | → | isLNat#(V2) |
natsFrom#(N) | → | isNatural#(N) | | take#(N, XS) | → | U341#(isNatural(N), N, XS) |
U333#(tt, XS) | → | U334#(isLNatKind(XS), XS) | | U192#(tt, V1) | → | isNatural#(V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | fst#(pair(X, Y)) | → | isLNat#(X) |
U281#(tt, N) | → | U282#(isNaturalKind(N), N) | | U13#(tt, N, XS) | → | isLNatKind#(XS) |
sel#(N, XS) | → | isNatural#(N) | | U191#(tt, V1) | → | isNaturalKind#(V1) |
isNaturalKind#(head(V1)) | → | U211#(isLNatKind(V1)) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U271#(tt, V2) | → | isLNatKind#(V2) | | U343#(tt, N, XS) | → | isLNatKind#(XS) |
splitAt#(s(N), cons(X, XS)) | → | U321#(isNatural(N), N, X, XS) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U344#(tt, N, XS) | → | splitAt#(N, XS) | | isLNatKind#(natsFrom(V1)) | → | U141#(isNaturalKind(V1)) |
U332#(tt, XS) | → | U333#(isLNat(XS), XS) | | isLNatKind#(natsFrom(V1)) | → | isNaturalKind#(V1) |
U31#(tt, N, XS) | → | U32#(isNaturalKind(N), N, XS) | | U302#(tt, Y) | → | isLNat#(Y) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U321#(tt, N, X, XS) | → | U322#(isNaturalKind(N), N, X, XS) |
isLNatKind#(tail(V1)) | → | isLNatKind#(V1) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U22#(tt, X, Y) | → | U23#(isLNat(Y), X, Y) |
U281#(tt, N) | → | isNaturalKind#(N) | | U293#(tt, N, XS) | → | U294#(isLNatKind(XS), N, XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U202#) = μ(U262#) = μ(U193) = μ(tail) = μ(U192) = μ(U191) = μ(U242#) = μ(U232#) = μ(U252#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U55#) = μ(U151) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U91) = μ(U251#) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U82) = μ(U301) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(fst#) = μ(U31#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U83#) = μ(U242) = μ(U241) = μ(U141#) = μ(U34#) = μ(U342#) = μ(U327#) = μ(U246#) = μ(U21#) = μ(U204) = μ(U203) = μ(U256#) = μ(U206) = μ(U62#) = μ(U205) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(U23) = μ(head) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U341#) = μ(U172#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U325#) = μ(U244#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U326#) = μ(U245#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U13) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U182#(tt, V1) → U183#(isLNat(V1)) |
U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) → isLNat#(V2) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U105#(tt, V2) → U106#(isLNat(V2)) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) | U43#(tt, V1, V2) → isLNatKind#(V2) |
fst#(pair(X, Y)) → U21#(isLNat(X), X, Y) | U21#(tt, X, Y) → isLNatKind#(X) |
U343#(tt, N, XS) → isLNatKind#(XS) | U342#(tt, N, XS) → U343#(isLNat(XS), N, XS) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → isNaturalKind#(V1) |
U182#(tt, V1) → U183#(isLNat(V1)) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U252#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) → U206#(isLNat(V2)) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) → isPLNatKind#(V1) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) → isLNat#(V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) | U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → isNaturalKind#(V1) |
U182#(tt, V1) → U183#(isLNat(V1)) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U102#(tt, V1, V2) → isLNatKind#(V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → isLNatKind#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U62#(tt, V1) → U63#(isPLNat(V1)) |
U55#(tt, V2) → isLNat#(V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U103#(tt, V1, V2) → isLNatKind#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) | U61#(tt, V1) → isPLNatKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U333#(tt, XS) → isLNatKind#(XS) | U332#(tt, XS) → U333#(isLNat(XS), XS) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U82#(tt, V1) → U83#(isPLNat(V1)) |
U255#(tt, V2) → isLNat#(V2) | U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) → isLNat#(V2) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | U44#(tt, V1, V2) → isNatural#(V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → isNaturalKind#(V1) |
U182#(tt, V1) → U183#(isLNat(V1)) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U252#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) → U206#(isLNat(V2)) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) → isPLNatKind#(V1) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) → isLNat#(V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U281#(tt, N) → U282#(isNaturalKind(N), N) | T(natsFrom(x_1)) → T(x_1) |
T(s(x_1)) → T(x_1) | T(natsFrom(s(N))) → natsFrom#(s(N)) |
U281#(tt, N) → isNaturalKind#(N) | natsFrom#(N) → U281#(isNatural(N), N) |
U282#(tt, N) → T(N) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U245#(tt, V2) → U246#(isLNat(V2)) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U243#(tt, V1, V2) → isLNatKind#(V2) | U82#(tt, V1) → U83#(isPLNat(V1)) |
U255#(tt, V2) → isLNat#(V2) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U81#(tt, V1) → isPLNatKind#(V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U44#(tt, V1, V2) → isNatural#(V1) | U205#(tt, V2) → isLNat#(V2) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) |
afterNth#(N, XS) → U11#(isNatural(N), N, XS) | U11#(tt, N, XS) → isNaturalKind#(N) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U245#(tt, V2) → U246#(isLNat(V2)) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U255#(tt, V2) → isLNat#(V2) |
U105#(tt, V2) → isLNat#(V2) | U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U252#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) → U206#(isLNat(V2)) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) → isPLNatKind#(V1) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U205#(tt, V2) → isLNat#(V2) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) | U43#(tt, V1, V2) → isLNatKind#(V2) |
U291#(tt, N, XS) → isNaturalKind#(N) | sel#(N, XS) → U291#(isNatural(N), N, XS) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → isNaturalKind#(V1) |
U182#(tt, V1) → U183#(isLNat(V1)) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U102#(tt, V1, V2) → isLNatKind#(V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → isLNatKind#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U205#(tt, V2) → isLNat#(V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) | U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) → U183#(isLNat(V1)) | U251#(tt, V1, V2) → isNaturalKind#(V1) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → U246#(isLNat(V2)) | U245#(tt, V2) → isLNat#(V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U243#(tt, V1, V2) → isLNatKind#(V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U255#(tt, V2) → isLNat#(V2) |
U105#(tt, V2) → isLNat#(V2) | U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U252#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) → U206#(isLNat(V2)) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) → isPLNatKind#(V1) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → isLNatKind#(V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U91#(tt, V1) → isLNatKind#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U62#(tt, V1) → U63#(isPLNat(V1)) |
U55#(tt, V2) → isLNat#(V2) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U61#(tt, V1) → isPLNatKind#(V1) | U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U55#(tt, V2) → U56#(isLNat(V2)) | U82#(tt, V1) → isPLNat#(V1) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U252#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) → U206#(isLNat(V2)) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) → isPLNatKind#(V1) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) → isLNat#(V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → isNaturalKind#(V1) |
U182#(tt, V1) → U183#(isLNat(V1)) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U102#(tt, V1, V2) → isLNatKind#(V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → isLNatKind#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U205#(tt, V2) → isLNat#(V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U103#(tt, V1, V2) → isLNatKind#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U61#(tt, V1) → isPLNatKind#(V1) | U43#(tt, V1, V2) → isLNatKind#(V2) |
U281#(tt, N) → U282#(isNaturalKind(N), N) | U327#(pair(YS, ZS), X) → T(X) |
splitAt#(s(N), cons(X, XS)) → isNatural#(N) | U324#(tt, N, X, XS) → U325#(isLNat(XS), N, X, XS) |
U325#(tt, N, X, XS) → isLNatKind#(XS) | splitAt#(s(N), cons(X, XS)) → U321#(isNatural(N), N, X, XS) |
U282#(tt, N) → T(N) | U322#(tt, N, X, XS) → U323#(isNatural(X), N, X, XS) |
U312#(tt, XS) → T(XS) | U311#(tt, XS) → isLNatKind#(XS) |
U323#(tt, N, X, XS) → U324#(isNaturalKind(X), N, X, XS) | splitAt#(0, XS) → U311#(isLNat(XS), XS) |
T(s(x_1)) → T(x_1) | U323#(tt, N, X, XS) → isNaturalKind#(X) |
U326#(tt, N, X, XS) → T(XS) | U325#(tt, N, X, XS) → U326#(isLNatKind(XS), N, X, XS) |
U321#(tt, N, X, XS) → U322#(isNaturalKind(N), N, X, XS) | T(natsFrom(x_1)) → T(x_1) |
splitAt#(0, XS) → isLNat#(XS) | U326#(tt, N, X, XS) → U327#(splitAt(N, XS), X) |
U322#(tt, N, X, XS) → isNatural#(X) | natsFrom#(N) → isNatural#(N) |
T(natsFrom(s(N))) → natsFrom#(s(N)) | natsFrom#(N) → U281#(isNatural(N), N) |
U326#(tt, N, X, XS) → T(N) | U326#(tt, N, X, XS) → splitAt#(N, XS) |
U281#(tt, N) → isNaturalKind#(N) | U311#(tt, XS) → U312#(isLNatKind(XS), XS) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U105#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U252#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) → U206#(isLNat(V2)) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U62#(tt, V1) → U63#(isPLNat(V1)) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U205#(tt, V2) → isLNat#(V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) | U43#(tt, V1, V2) → isLNatKind#(V2) |
U61#(tt, V1) → isPLNatKind#(V1) |
U327#(pair(YS, ZS), X) → T(X) | splitAt#(s(N), cons(X, XS)) → isNatural#(N) |
U324#(tt, N, X, XS) → U325#(isLNat(XS), N, X, XS) | U34#(tt, N) → T(N) |
U14#(tt, N, XS) → snd#(splitAt(N, XS)) | U14#(tt, N, XS) → T(N) |
U33#(tt, N, XS) → isLNatKind#(XS) | U311#(tt, XS) → isLNatKind#(XS) |
splitAt#(0, XS) → U311#(isLNat(XS), XS) | U323#(tt, N, X, XS) → U324#(isNaturalKind(X), N, X, XS) |
U294#(tt, N, XS) → T(XS) | head#(cons(N, XS)) → isNatural#(N) |
U294#(tt, N, XS) → head#(afterNth(N, XS)) | U326#(tt, N, X, XS) → T(XS) |
U325#(tt, N, X, XS) → U326#(isLNatKind(XS), N, X, XS) | snd#(pair(X, Y)) → isLNat#(X) |
splitAt#(0, XS) → isLNat#(XS) | U326#(tt, N, X, XS) → U327#(splitAt(N, XS), X) |
U322#(tt, N, X, XS) → isNatural#(X) | U303#(tt, Y) → isLNatKind#(Y) |
U294#(tt, N, XS) → afterNth#(N, XS) | U326#(tt, N, X, XS) → splitAt#(N, XS) |
U304#(tt, Y) → T(Y) | U12#(tt, N, XS) → U13#(isLNat(XS), N, XS) |
U302#(tt, Y) → U303#(isLNat(Y), Y) | U13#(tt, N, XS) → isLNatKind#(XS) |
U12#(tt, N, XS) → isLNat#(XS) | U303#(tt, Y) → U304#(isLNatKind(Y), Y) |
U325#(tt, N, X, XS) → isLNatKind#(XS) | splitAt#(s(N), cons(X, XS)) → U321#(isNatural(N), N, X, XS) |
U301#(tt, X, Y) → U302#(isLNatKind(X), Y) | U324#(tt, N, X, XS) → isLNat#(XS) |
U322#(tt, N, X, XS) → U323#(isNatural(X), N, X, XS) | U312#(tt, XS) → T(XS) |
snd#(pair(X, Y)) → U301#(isLNat(X), X, Y) | U323#(tt, N, X, XS) → isNaturalKind#(X) |
U31#(tt, N, XS) → isNaturalKind#(N) | U31#(tt, N, XS) → U32#(isNaturalKind(N), N, XS) |
U302#(tt, Y) → isLNat#(Y) | afterNth#(N, XS) → isNatural#(N) |
U14#(tt, N, XS) → T(XS) | U321#(tt, N, X, XS) → U322#(isNaturalKind(N), N, X, XS) |
head#(cons(N, XS)) → U31#(isNatural(N), N, XS) | U33#(tt, N, XS) → U34#(isLNatKind(XS), N) |
U32#(tt, N, XS) → isLNat#(XS) | U13#(tt, N, XS) → U14#(isLNatKind(XS), N, XS) |
U32#(tt, N, XS) → U33#(isLNat(XS), N, XS) | U326#(tt, N, X, XS) → T(N) |
U11#(tt, N, XS) → isNaturalKind#(N) | U321#(tt, N, X, XS) → isNaturalKind#(N) |
afterNth#(N, XS) → U11#(isNatural(N), N, XS) | U301#(tt, X, Y) → isLNatKind#(X) |
U14#(tt, N, XS) → splitAt#(N, XS) | U311#(tt, XS) → U312#(isLNatKind(XS), XS) |
U11#(tt, N, XS) → U12#(isNaturalKind(N), N, XS) | U293#(tt, N, XS) → U294#(isLNatKind(XS), N, XS) |
U311#(tt, XS) → isLNatKind#(XS) | splitAt#(0, XS) → U311#(isLNat(XS), XS) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U105#(tt, V2) → isLNat#(V2) | U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U102#(tt, V1, V2) → isLNatKind#(V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) → isLNat#(V2) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) → U183#(isLNat(V1)) | U251#(tt, V1, V2) → isNaturalKind#(V1) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → U246#(isLNat(V2)) | U245#(tt, V2) → isLNat#(V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U243#(tt, V1, V2) → isLNatKind#(V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U255#(tt, V2) → isLNat#(V2) |
U105#(tt, V2) → isLNat#(V2) | U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U102#(tt, V1, V2) → isLNatKind#(V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U241#(tt, V1, V2) → isLNatKind#(V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U62#(tt, V1) → U63#(isPLNat(V1)) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U205#(tt, V2) → isLNat#(V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U103#(tt, V1, V2) → isLNatKind#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U61#(tt, V1) → isPLNatKind#(V1) | U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U82#(tt, V1) → U83#(isPLNat(V1)) |
U255#(tt, V2) → isLNat#(V2) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U91#(tt, V1) → isLNatKind#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U62#(tt, V1) → U63#(isPLNat(V1)) |
U55#(tt, V2) → isLNat#(V2) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U61#(tt, V1) → isPLNatKind#(V1) | U43#(tt, V1, V2) → isLNatKind#(V2) |
snd#(pair(X, Y)) → isLNat#(X) | U302#(tt, Y) → U303#(isLNat(Y), Y) |
U14#(tt, N, XS) → T(XS) | U303#(tt, Y) → isLNatKind#(Y) |
U303#(tt, Y) → U304#(isLNatKind(Y), Y) | U13#(tt, N, XS) → U14#(isLNatKind(XS), N, XS) |
U301#(tt, X, Y) → U302#(isLNatKind(X), Y) | U301#(tt, X, Y) → isLNatKind#(X) |
U14#(tt, N, XS) → T(N) | U14#(tt, N, XS) → snd#(splitAt(N, XS)) |
snd#(pair(X, Y)) → U301#(isLNat(X), X, Y) | U304#(tt, Y) → T(Y) |
U302#(tt, Y) → isLNat#(Y) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | U82#(tt, V1) → U83#(isPLNat(V1)) |
U255#(tt, V2) → isLNat#(V2) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U81#(tt, V1) → isPLNatKind#(V1) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → isLNatKind#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U205#(tt, V2) → isLNat#(V2) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U82#(tt, V1) → U83#(isPLNat(V1)) |
U255#(tt, V2) → isLNat#(V2) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) → isLNat#(V2) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) → U183#(isLNat(V1)) | U251#(tt, V1, V2) → isNaturalKind#(V1) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → U246#(isLNat(V2)) | U245#(tt, V2) → isLNat#(V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U243#(tt, V1, V2) → isLNatKind#(V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U255#(tt, V2) → isLNat#(V2) |
U105#(tt, V2) → isLNat#(V2) | U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U102#(tt, V1, V2) → isLNatKind#(V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U241#(tt, V1, V2) → isLNatKind#(V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U62#(tt, V1) → U63#(isPLNat(V1)) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U205#(tt, V2) → isLNat#(V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U105#(tt, V2) → U106#(isLNat(V2)) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U103#(tt, V1, V2) → isLNatKind#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) | U61#(tt, V1) → isPLNatKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → isNaturalKind#(V1) |
U182#(tt, V1) → U183#(isLNat(V1)) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U102#(tt, V1, V2) → isLNatKind#(V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U241#(tt, V1, V2) → isLNatKind#(V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U62#(tt, V1) → U63#(isPLNat(V1)) | U55#(tt, V2) → isLNat#(V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U205#(tt, V2) → isLNat#(V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U103#(tt, V1, V2) → isLNatKind#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U61#(tt, V1) → isPLNatKind#(V1) | U43#(tt, V1, V2) → isLNatKind#(V2) |
U281#(tt, N) → U282#(isNaturalKind(N), N) | T(natsFrom(x_1)) → T(x_1) |
U333#(tt, XS) → isLNatKind#(XS) | natsFrom#(N) → isNatural#(N) |
T(natsFrom(s(N))) → natsFrom#(s(N)) | natsFrom#(N) → U281#(isNatural(N), N) |
U282#(tt, N) → T(N) | U334#(tt, XS) → T(XS) |
T(s(x_1)) → T(x_1) | U333#(tt, XS) → U334#(isLNatKind(XS), XS) |
U281#(tt, N) → isNaturalKind#(N) | U332#(tt, XS) → U333#(isLNat(XS), XS) |
U331#(tt, N, XS) → U332#(isNaturalKind(N), XS) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U55#(tt, V2) → U56#(isLNat(V2)) | U82#(tt, V1) → isPLNat#(V1) |
U182#(tt, V1) → U183#(isLNat(V1)) | U251#(tt, V1, V2) → isNaturalKind#(V1) |
U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | U82#(tt, V1) → U83#(isPLNat(V1)) |
U105#(tt, V2) → isLNat#(V2) | U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) |
U255#(tt, V2) → isLNat#(V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → isLNatKind#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U205#(tt, V2) → isLNat#(V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U343#(tt, N, XS) → U344#(isLNatKind(XS), N, XS) | fst#(pair(X, Y)) → isLNat#(X) |
U22#(tt, X, Y) → isLNat#(Y) | U327#(pair(YS, ZS), X) → T(X) |
U324#(tt, N, X, XS) → U325#(isLNat(XS), N, X, XS) | splitAt#(s(N), cons(X, XS)) → isNatural#(N) |
fst#(pair(X, Y)) → U21#(isLNat(X), X, Y) | U325#(tt, N, X, XS) → isLNatKind#(XS) |
splitAt#(s(N), cons(X, XS)) → U321#(isNatural(N), N, X, XS) | U322#(tt, N, X, XS) → U323#(isNatural(X), N, X, XS) |
U324#(tt, N, X, XS) → isLNat#(XS) | U344#(tt, N, XS) → splitAt#(N, XS) |
U312#(tt, XS) → T(XS) | U311#(tt, XS) → isLNatKind#(XS) |
U323#(tt, N, X, XS) → U324#(isNaturalKind(X), N, X, XS) | splitAt#(0, XS) → U311#(isLNat(XS), XS) |
U21#(tt, X, Y) → U22#(isLNatKind(X), X, Y) | U344#(tt, N, XS) → fst#(splitAt(N, XS)) |
U323#(tt, N, X, XS) → isNaturalKind#(X) | U326#(tt, N, X, XS) → T(XS) |
U325#(tt, N, X, XS) → U326#(isLNatKind(XS), N, X, XS) | U321#(tt, N, X, XS) → U322#(isNaturalKind(N), N, X, XS) |
splitAt#(0, XS) → isLNat#(XS) | U322#(tt, N, X, XS) → isNatural#(X) |
U326#(tt, N, X, XS) → U327#(splitAt(N, XS), X) | U24#(tt, X) → T(X) |
U23#(tt, X, Y) → isLNatKind#(Y) | U21#(tt, X, Y) → isLNatKind#(X) |
U321#(tt, N, X, XS) → isNaturalKind#(N) | U326#(tt, N, X, XS) → T(N) |
U22#(tt, X, Y) → U23#(isLNat(Y), X, Y) | U344#(tt, N, XS) → T(N) |
U326#(tt, N, X, XS) → splitAt#(N, XS) | U311#(tt, XS) → U312#(isLNatKind(XS), XS) |
U23#(tt, X, Y) → U24#(isLNatKind(Y), X) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U245#(tt, V2) → U246#(isLNat(V2)) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U255#(tt, V2) → isLNat#(V2) |
U105#(tt, V2) → isLNat#(V2) | U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U252#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) → U206#(isLNat(V2)) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) → isPLNatKind#(V1) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U44#(tt, V1, V2) → isNatural#(V1) | U205#(tt, V2) → isLNat#(V2) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U182#(tt, V1) → U183#(isLNat(V1)) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U243#(tt, V1, V2) → isLNatKind#(V2) | U82#(tt, V1) → U83#(isPLNat(V1)) |
U105#(tt, V2) → isLNat#(V2) | U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) |
U255#(tt, V2) → isLNat#(V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U102#(tt, V1, V2) → isLNatKind#(V2) | U252#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) → U206#(isLNat(V2)) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) → isPLNatKind#(V1) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → isLNatKind#(V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → isLNatKind#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U62#(tt, V1) → U63#(isPLNat(V1)) |
U55#(tt, V2) → isLNat#(V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U103#(tt, V1, V2) → isLNatKind#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) | U61#(tt, V1) → isPLNatKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U255#(tt, V2) → isLNat#(V2) |
U105#(tt, V2) → isLNat#(V2) | U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U252#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) → U206#(isLNat(V2)) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) → isPLNatKind#(V1) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) → isLNat#(V2) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U342#(tt, N, XS) → isLNat#(XS) | U341#(tt, N, XS) → U342#(isNaturalKind(N), N, XS) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U182#(tt, V1) → U183#(isLNat(V1)) |
U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U102#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) → U206#(isLNat(V2)) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) → isLNat#(V2) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U105#(tt, V2) → U106#(isLNat(V2)) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U103#(tt, V1, V2) → isLNatKind#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U281#(tt, N) → U282#(isNaturalKind(N), N) | T(natsFrom(x_1)) → T(x_1) |
U24#(tt, X) → T(X) | natsFrom#(N) → isNatural#(N) |
T(natsFrom(s(N))) → natsFrom#(s(N)) | U23#(tt, X, Y) → isLNatKind#(Y) |
natsFrom#(N) → U281#(isNatural(N), N) | U282#(tt, N) → T(N) |
U22#(tt, X, Y) → U23#(isLNat(Y), X, Y) | U21#(tt, X, Y) → U22#(isLNatKind(X), X, Y) |
T(s(x_1)) → T(x_1) | U281#(tt, N) → isNaturalKind#(N) |
U23#(tt, X, Y) → U24#(isLNatKind(Y), X) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | U82#(tt, V1) → U83#(isPLNat(V1)) |
U255#(tt, V2) → isLNat#(V2) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U81#(tt, V1) → isPLNatKind#(V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) → isLNat#(V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U294#(tt, N, XS) → afterNth#(N, XS) | afterNth#(N, XS) → isNatural#(N) |
U327#(pair(YS, ZS), X) → T(X) | U281#(tt, N) → U282#(isNaturalKind(N), N) |
U324#(tt, N, X, XS) → U325#(isLNat(XS), N, X, XS) | splitAt#(s(N), cons(X, XS)) → isNatural#(N) |
U325#(tt, N, X, XS) → isLNatKind#(XS) | splitAt#(s(N), cons(X, XS)) → U321#(isNatural(N), N, X, XS) |
U282#(tt, N) → T(N) | U322#(tt, N, X, XS) → U323#(isNatural(X), N, X, XS) |
U312#(tt, XS) → T(XS) | U311#(tt, XS) → isLNatKind#(XS) |
U323#(tt, N, X, XS) → U324#(isNaturalKind(X), N, X, XS) | splitAt#(0, XS) → U311#(isLNat(XS), XS) |
T(s(x_1)) → T(x_1) | U323#(tt, N, X, XS) → isNaturalKind#(X) |
U325#(tt, N, X, XS) → U326#(isLNatKind(XS), N, X, XS) | U326#(tt, N, X, XS) → T(XS) |
U321#(tt, N, X, XS) → U322#(isNaturalKind(N), N, X, XS) | T(natsFrom(x_1)) → T(x_1) |
splitAt#(0, XS) → isLNat#(XS) | U322#(tt, N, X, XS) → isNatural#(X) |
U326#(tt, N, X, XS) → U327#(splitAt(N, XS), X) | natsFrom#(N) → isNatural#(N) |
T(natsFrom(s(N))) → natsFrom#(s(N)) | natsFrom#(N) → U281#(isNatural(N), N) |
U321#(tt, N, X, XS) → isNaturalKind#(N) | U326#(tt, N, X, XS) → T(N) |
U326#(tt, N, X, XS) → splitAt#(N, XS) | U281#(tt, N) → isNaturalKind#(N) |
U311#(tt, XS) → U312#(isLNatKind(XS), XS) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | U82#(tt, V1) → U83#(isPLNat(V1)) |
U255#(tt, V2) → isLNat#(V2) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U81#(tt, V1) → isPLNatKind#(V1) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → isLNatKind#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U205#(tt, V2) → isLNat#(V2) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) | U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U255#(tt, V2) → isLNat#(V2) |
U105#(tt, V2) → isLNat#(V2) | U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U241#(tt, V1, V2) → isLNatKind#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) → isLNat#(V2) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U82#(tt, V1) → U83#(isPLNat(V1)) |
U255#(tt, V2) → isLNat#(V2) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U241#(tt, V1, V2) → isLNatKind#(V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U62#(tt, V1) → U63#(isPLNat(V1)) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U205#(tt, V2) → isLNat#(V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) | U61#(tt, V1) → isPLNatKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U12#(tt, N, XS) → isLNat#(XS) | U11#(tt, N, XS) → U12#(isNaturalKind(N), N, XS) |
U341#(tt, N, XS) → isNaturalKind#(N) | take#(N, XS) → U341#(isNatural(N), N, XS) |
U33#(tt, N, XS) → isLNatKind#(XS) | U32#(tt, N, XS) → U33#(isLNat(XS), N, XS) |
isLNatKind#(afterNth(V1, V2)) → U111#(isNaturalKind(V1), V2) | isLNatKind#(tail(V1)) → isLNatKind#(V1) |
isNaturalKind#(s(V1)) → isNaturalKind#(V1) | isLNatKind#(snd(V1)) → isPLNatKind#(V1) |
U271#(tt, V2) → isLNatKind#(V2) | U171#(tt, V2) → isLNatKind#(V2) |
isNaturalKind#(head(V1)) → isLNatKind#(V1) | isPLNatKind#(splitAt(V1, V2)) → U271#(isNaturalKind(V1), V2) |
isLNatKind#(afterNth(V1, V2)) → isNaturalKind#(V1) | isNaturalKind#(sel(V1, V2)) → U231#(isNaturalKind(V1), V2) |
isLNatKind#(fst(V1)) → isPLNatKind#(V1) | U231#(tt, V2) → isLNatKind#(V2) |
U121#(tt, V2) → isLNatKind#(V2) | isPLNatKind#(pair(V1, V2)) → isLNatKind#(V1) |
isLNatKind#(take(V1, V2)) → isNaturalKind#(V1) | U111#(tt, V2) → isLNatKind#(V2) |
U261#(tt, V2) → isLNatKind#(V2) | isLNatKind#(take(V1, V2)) → U171#(isNaturalKind(V1), V2) |
isPLNatKind#(pair(V1, V2)) → U261#(isLNatKind(V1), V2) | isLNatKind#(cons(V1, V2)) → isNaturalKind#(V1) |
isLNatKind#(cons(V1, V2)) → U121#(isNaturalKind(V1), V2) | isLNatKind#(natsFrom(V1)) → isNaturalKind#(V1) |
isPLNatKind#(splitAt(V1, V2)) → isNaturalKind#(V1) | isNaturalKind#(sel(V1, V2)) → isNaturalKind#(V1) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → isNaturalKind#(V1) |
U182#(tt, V1) → U183#(isLNat(V1)) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U252#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → isLNatKind#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U205#(tt, V2) → isLNat#(V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) | U43#(tt, V1, V2) → isLNatKind#(V2) |
U22#(tt, X, Y) → isLNat#(Y) | U281#(tt, N) → U282#(isNaturalKind(N), N) |
T(natsFrom(x_1)) → T(x_1) | U24#(tt, X) → T(X) |
natsFrom#(N) → isNatural#(N) | fst#(pair(X, Y)) → U21#(isLNat(X), X, Y) |
T(natsFrom(s(N))) → natsFrom#(s(N)) | U23#(tt, X, Y) → isLNatKind#(Y) |
natsFrom#(N) → U281#(isNatural(N), N) | U21#(tt, X, Y) → isLNatKind#(X) |
U282#(tt, N) → T(N) | U22#(tt, X, Y) → U23#(isLNat(Y), X, Y) |
U21#(tt, X, Y) → U22#(isLNatKind(X), X, Y) | T(s(x_1)) → T(x_1) |
U344#(tt, N, XS) → fst#(splitAt(N, XS)) | U281#(tt, N) → isNaturalKind#(N) |
U23#(tt, X, Y) → U24#(isLNatKind(Y), X) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U105#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U252#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) → U206#(isLNat(V2)) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U91#(tt, V1) → isLNatKind#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U62#(tt, V1) → U63#(isPLNat(V1)) |
U55#(tt, V2) → isLNat#(V2) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U82#(tt, V1) → isPLNat#(V1) |
U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) | U182#(tt, V1) → U183#(isLNat(V1)) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | U82#(tt, V1) → U83#(isPLNat(V1)) |
U255#(tt, V2) → isLNat#(V2) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U102#(tt, V1, V2) → isLNatKind#(V2) | U252#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) → U206#(isLNat(V2)) | U81#(tt, V1) → isPLNatKind#(V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) → isLNat#(V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U327#(pair(YS, ZS), X) → T(X) | splitAt#(s(N), cons(X, XS)) → isNatural#(N) |
U324#(tt, N, X, XS) → U325#(isLNat(XS), N, X, XS) | U282#(tt, N) → T(N) |
U34#(tt, N) → T(N) | U14#(tt, N, XS) → snd#(splitAt(N, XS)) |
U14#(tt, N, XS) → T(N) | U33#(tt, N, XS) → isLNatKind#(XS) |
U311#(tt, XS) → isLNatKind#(XS) | splitAt#(0, XS) → U311#(isLNat(XS), XS) |
U323#(tt, N, X, XS) → U324#(isNaturalKind(X), N, X, XS) | T(s(x_1)) → T(x_1) |
U294#(tt, N, XS) → T(XS) | head#(cons(N, XS)) → isNatural#(N) |
U294#(tt, N, XS) → head#(afterNth(N, XS)) | U326#(tt, N, X, XS) → T(XS) |
U325#(tt, N, X, XS) → U326#(isLNatKind(XS), N, X, XS) | snd#(pair(X, Y)) → isLNat#(X) |
splitAt#(0, XS) → isLNat#(XS) | U326#(tt, N, X, XS) → U327#(splitAt(N, XS), X) |
U322#(tt, N, X, XS) → isNatural#(X) | natsFrom#(N) → isNatural#(N) |
U303#(tt, Y) → isLNatKind#(Y) | T(natsFrom(s(N))) → natsFrom#(s(N)) |
U294#(tt, N, XS) → afterNth#(N, XS) | U326#(tt, N, X, XS) → splitAt#(N, XS) |
U304#(tt, Y) → T(Y) | U12#(tt, N, XS) → U13#(isLNat(XS), N, XS) |
U281#(tt, N) → U282#(isNaturalKind(N), N) | U302#(tt, Y) → U303#(isLNat(Y), Y) |
U294#(tt, N, XS) → T(N) | U13#(tt, N, XS) → isLNatKind#(XS) |
U292#(tt, N, XS) → U293#(isLNat(XS), N, XS) | U12#(tt, N, XS) → isLNat#(XS) |
U303#(tt, Y) → U304#(isLNatKind(Y), Y) | U325#(tt, N, X, XS) → isLNatKind#(XS) |
splitAt#(s(N), cons(X, XS)) → U321#(isNatural(N), N, X, XS) | U301#(tt, X, Y) → U302#(isLNatKind(X), Y) |
U324#(tt, N, X, XS) → isLNat#(XS) | U322#(tt, N, X, XS) → U323#(isNatural(X), N, X, XS) |
U312#(tt, XS) → T(XS) | snd#(pair(X, Y)) → U301#(isLNat(X), X, Y) |
U323#(tt, N, X, XS) → isNaturalKind#(X) | U31#(tt, N, XS) → isNaturalKind#(N) |
U31#(tt, N, XS) → U32#(isNaturalKind(N), N, XS) | U302#(tt, Y) → isLNat#(Y) |
afterNth#(N, XS) → isNatural#(N) | T(natsFrom(x_1)) → T(x_1) |
U14#(tt, N, XS) → T(XS) | U321#(tt, N, X, XS) → U322#(isNaturalKind(N), N, X, XS) |
head#(cons(N, XS)) → U31#(isNatural(N), N, XS) | U293#(tt, N, XS) → isLNatKind#(XS) |
U33#(tt, N, XS) → U34#(isLNatKind(XS), N) | natsFrom#(N) → U281#(isNatural(N), N) |
U32#(tt, N, XS) → isLNat#(XS) | U13#(tt, N, XS) → U14#(isLNatKind(XS), N, XS) |
U32#(tt, N, XS) → U33#(isLNat(XS), N, XS) | U326#(tt, N, X, XS) → T(N) |
U11#(tt, N, XS) → isNaturalKind#(N) | U321#(tt, N, X, XS) → isNaturalKind#(N) |
afterNth#(N, XS) → U11#(isNatural(N), N, XS) | U301#(tt, X, Y) → isLNatKind#(X) |
U14#(tt, N, XS) → splitAt#(N, XS) | U281#(tt, N) → isNaturalKind#(N) |
U291#(tt, N, XS) → U292#(isNaturalKind(N), N, XS) | U311#(tt, XS) → U312#(isLNatKind(XS), XS) |
U11#(tt, N, XS) → U12#(isNaturalKind(N), N, XS) | U293#(tt, N, XS) → U294#(isLNatKind(XS), N, XS) |
U32#(tt, N, XS) → isLNat#(XS) | U31#(tt, N, XS) → U32#(isNaturalKind(N), N, XS) |
U327#(pair(YS, ZS), X) → T(X) | U281#(tt, N) → U282#(isNaturalKind(N), N) |
U324#(tt, N, X, XS) → U325#(isLNat(XS), N, X, XS) | splitAt#(s(N), cons(X, XS)) → U321#(isNatural(N), N, X, XS) |
U282#(tt, N) → T(N) | U322#(tt, N, X, XS) → U323#(isNatural(X), N, X, XS) |
U324#(tt, N, X, XS) → isLNat#(XS) | U312#(tt, XS) → T(XS) |
U311#(tt, XS) → isLNatKind#(XS) | U323#(tt, N, X, XS) → U324#(isNaturalKind(X), N, X, XS) |
splitAt#(0, XS) → U311#(isLNat(XS), XS) | T(s(x_1)) → T(x_1) |
U323#(tt, N, X, XS) → isNaturalKind#(X) | U325#(tt, N, X, XS) → U326#(isLNatKind(XS), N, X, XS) |
U326#(tt, N, X, XS) → T(XS) | splitAt#(0, XS) → isLNat#(XS) |
U321#(tt, N, X, XS) → U322#(isNaturalKind(N), N, X, XS) | T(natsFrom(x_1)) → T(x_1) |
U322#(tt, N, X, XS) → isNatural#(X) | U326#(tt, N, X, XS) → U327#(splitAt(N, XS), X) |
natsFrom#(N) → isNatural#(N) | T(natsFrom(s(N))) → natsFrom#(s(N)) |
natsFrom#(N) → U281#(isNatural(N), N) | U321#(tt, N, X, XS) → isNaturalKind#(N) |
U326#(tt, N, X, XS) → T(N) | U326#(tt, N, X, XS) → splitAt#(N, XS) |
U281#(tt, N) → isNaturalKind#(N) | U311#(tt, XS) → U312#(isLNatKind(XS), XS) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U245#(tt, V2) → U246#(isLNat(V2)) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U243#(tt, V1, V2) → isLNatKind#(V2) | U82#(tt, V1) → U83#(isPLNat(V1)) |
U255#(tt, V2) → isLNat#(V2) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U81#(tt, V1) → isPLNatKind#(V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U241#(tt, V1, V2) → isLNatKind#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) → isLNat#(V2) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | U44#(tt, V1, V2) → isNatural#(V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U72#(tt, V1) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → isNaturalKind#(V1) |
U182#(tt, V1) → U183#(isLNat(V1)) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U252#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) → U206#(isLNat(V2)) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) → isPLNatKind#(V1) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) → isLNat#(V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U43#(tt, V1, V2) → isLNatKind#(V2) |
head#(cons(N, XS)) → isNatural#(N) | U294#(tt, N, XS) → head#(afterNth(N, XS)) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U82#(tt, V1) → U83#(isPLNat(V1)) |
U255#(tt, V2) → isLNat#(V2) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U91#(tt, V1) → isLNatKind#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U205#(tt, V2) → isLNat#(V2) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) | U61#(tt, V1) → isPLNatKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → isNaturalKind#(V1) |
U182#(tt, V1) → U183#(isLNat(V1)) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → isLNatKind#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U205#(tt, V2) → isLNat#(V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) | U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U182#(tt, V1) → U183#(isLNat(V1)) |
U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U205#(tt, V2) → isLNat#(V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U105#(tt, V2) → U106#(isLNat(V2)) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U103#(tt, V1, V2) → isLNatKind#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) | U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U243#(tt, V1, V2) → isLNatKind#(V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U255#(tt, V2) → isLNat#(V2) |
U105#(tt, V2) → isLNat#(V2) | U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U252#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) → U206#(isLNat(V2)) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) → isPLNatKind#(V1) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → isLNatKind#(V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U104#(tt, V1, V2) → isNatural#(V1) |
U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) | U91#(tt, V1) → isLNatKind#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U62#(tt, V1) → U63#(isPLNat(V1)) |
U55#(tt, V2) → isLNat#(V2) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U61#(tt, V1) → isPLNatKind#(V1) | U43#(tt, V1, V2) → isLNatKind#(V2) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | U245#(tt, V2) → U246#(isLNat(V2)) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U243#(tt, V1, V2) → isLNatKind#(V2) | U82#(tt, V1) → U83#(isPLNat(V1)) |
U255#(tt, V2) → isLNat#(V2) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U241#(tt, V1, V2) → isLNatKind#(V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U62#(tt, V1) → U63#(isPLNat(V1)) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U205#(tt, V2) → isLNat#(V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) → U255#(isNatural(V1), V2) | isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U201#(tt, V1, V2) → isNaturalKind#(V1) | U61#(tt, V1) → isPLNatKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
head#(cons(N, XS)) → U31#(isNatural(N), N, XS) | U31#(tt, N, XS) → isNaturalKind#(N) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → isNaturalKind#(V1) |
U182#(tt, V1) → U183#(isLNat(V1)) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → U83#(isPLNat(V1)) | U105#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U102#(tt, V1, V2) → isLNatKind#(V2) |
U252#(tt, V1, V2) → isLNatKind#(V2) | U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) | U205#(tt, V2) → U206#(isLNat(V2)) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U81#(tt, V1) → isPLNatKind#(V1) |
U61#(tt, V1) → U62#(isPLNatKind(V1), V1) | U192#(tt, V1) → isNatural#(V1) |
U181#(tt, V1) → U182#(isLNatKind(V1), V1) | U71#(tt, V1) → U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) → isPLNat#(V1) | U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → isLNatKind#(V1) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
U204#(tt, V1, V2) → U205#(isNatural(V1), V2) | U205#(tt, V2) → isLNat#(V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U254#(tt, V1, V2) → isNatural#(V1) |
U72#(tt, V1) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U53#(tt, V1, V2) → isLNatKind#(V2) |
U192#(tt, V1) → U193#(isNatural(V1)) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
U103#(tt, V1, V2) → isLNatKind#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U281#(tt, N) → U282#(isNaturalKind(N), N) | T(natsFrom(x_1)) → T(x_1) |
U302#(tt, Y) → U303#(isLNat(Y), Y) | natsFrom#(N) → isNatural#(N) |
U303#(tt, Y) → isLNatKind#(Y) | T(natsFrom(s(N))) → natsFrom#(s(N)) |
natsFrom#(N) → U281#(isNatural(N), N) | U303#(tt, Y) → U304#(isLNatKind(Y), Y) |
U301#(tt, X, Y) → U302#(isLNatKind(X), Y) | U282#(tt, N) → T(N) |
T(s(x_1)) → T(x_1) | U281#(tt, N) → isNaturalKind#(N) |
U304#(tt, Y) → T(Y) |
snd#(pair(X, Y)) → isLNat#(X) | U14#(tt, N, XS) → snd#(splitAt(N, XS)) |
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U51#(tt, V1, V2) → isNaturalKind#(V1) |
U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) | U55#(tt, V2) → U56#(isLNat(V2)) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U251#(tt, V1, V2) → isNaturalKind#(V1) | U92#(tt, V1) → isLNat#(V1) |
U182#(tt, V1) → isLNat#(V1) | U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → isNatural#(V1) | isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) | U245#(tt, V2) → isLNat#(V2) |
isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) | U255#(tt, V2) → isLNat#(V2) |
U105#(tt, V2) → isLNat#(V2) | U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) | U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) | U252#(tt, V1, V2) → isLNatKind#(V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) → U206#(isLNat(V2)) | U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) → isPLNatKind#(V1) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
U91#(tt, V1) → isLNatKind#(V1) | isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) → isLNat#(V2) | isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U205#(tt, V2) → isLNat#(V2) | U44#(tt, V1, V2) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U244#(tt, V1, V2) → U245#(isLNat(V1), V2) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U204#(tt, V1, V2) → isNatural#(V1) |
U91#(tt, V1) → U92#(isLNatKind(V1), V1) | U81#(tt, V1) → U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) → isLNatKind#(V2) | U192#(tt, V1) → U193#(isNatural(V1)) |
U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) | U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) | U104#(tt, V1, V2) → U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) | U244#(tt, V1, V2) → isLNat#(V1) |
U45#(tt, V2) → isLNat#(V2) | U201#(tt, V1, V2) → isNaturalKind#(V1) |
U43#(tt, V1, V2) → isLNatKind#(V2) |
U327#(pair(YS, ZS), X) → T(X) | U281#(tt, N) → U282#(isNaturalKind(N), N) |
U324#(tt, N, X, XS) → U325#(isLNat(XS), N, X, XS) | U325#(tt, N, X, XS) → isLNatKind#(XS) |
splitAt#(s(N), cons(X, XS)) → U321#(isNatural(N), N, X, XS) | U282#(tt, N) → T(N) |
U322#(tt, N, X, XS) → U323#(isNatural(X), N, X, XS) | U324#(tt, N, X, XS) → isLNat#(XS) |
U312#(tt, XS) → T(XS) | U311#(tt, XS) → isLNatKind#(XS) |
splitAt#(0, XS) → U311#(isLNat(XS), XS) | U323#(tt, N, X, XS) → U324#(isNaturalKind(X), N, X, XS) |
T(s(x_1)) → T(x_1) | U323#(tt, N, X, XS) → isNaturalKind#(X) |
U326#(tt, N, X, XS) → T(XS) | U325#(tt, N, X, XS) → U326#(isLNatKind(XS), N, X, XS) |
splitAt#(0, XS) → isLNat#(XS) | U321#(tt, N, X, XS) → U322#(isNaturalKind(N), N, X, XS) |
T(natsFrom(x_1)) → T(x_1) | U322#(tt, N, X, XS) → isNatural#(X) |
U326#(tt, N, X, XS) → U327#(splitAt(N, XS), X) | natsFrom#(N) → isNatural#(N) |
T(natsFrom(s(N))) → natsFrom#(s(N)) | natsFrom#(N) → U281#(isNatural(N), N) |
U326#(tt, N, X, XS) → T(N) | U321#(tt, N, X, XS) → isNaturalKind#(N) |
U326#(tt, N, X, XS) → splitAt#(N, XS) | U281#(tt, N) → isNaturalKind#(N) |
U311#(tt, XS) → U312#(isLNatKind(XS), XS) |
Problem 2: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U105#(tt, V2) | → | U106#(isLNat(V2)) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U103#(tt, V1, V2) | → | isLNatKind#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 3: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 4: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U343#(tt, N, XS) | → | U344#(isLNatKind(XS), N, XS) | | fst#(pair(X, Y)) | → | isLNat#(X) |
U22#(tt, X, Y) | → | isLNat#(Y) | | U327#(pair(YS, ZS), X) | → | T(X) |
U324#(tt, N, X, XS) | → | U325#(isLNat(XS), N, X, XS) | | splitAt#(s(N), cons(X, XS)) | → | isNatural#(N) |
fst#(pair(X, Y)) | → | U21#(isLNat(X), X, Y) | | U325#(tt, N, X, XS) | → | isLNatKind#(XS) |
splitAt#(s(N), cons(X, XS)) | → | U321#(isNatural(N), N, X, XS) | | U322#(tt, N, X, XS) | → | U323#(isNatural(X), N, X, XS) |
U324#(tt, N, X, XS) | → | isLNat#(XS) | | U344#(tt, N, XS) | → | splitAt#(N, XS) |
U312#(tt, XS) | → | T(XS) | | U311#(tt, XS) | → | isLNatKind#(XS) |
splitAt#(0, XS) | → | U311#(isLNat(XS), XS) | | U323#(tt, N, X, XS) | → | U324#(isNaturalKind(X), N, X, XS) |
U21#(tt, X, Y) | → | U22#(isLNatKind(X), X, Y) | | U344#(tt, N, XS) | → | fst#(splitAt(N, XS)) |
U323#(tt, N, X, XS) | → | isNaturalKind#(X) | | U325#(tt, N, X, XS) | → | U326#(isLNatKind(XS), N, X, XS) |
U326#(tt, N, X, XS) | → | T(XS) | | splitAt#(0, XS) | → | isLNat#(XS) |
U321#(tt, N, X, XS) | → | U322#(isNaturalKind(N), N, X, XS) | | U326#(tt, N, X, XS) | → | U327#(splitAt(N, XS), X) |
U322#(tt, N, X, XS) | → | isNatural#(X) | | U24#(tt, X) | → | T(X) |
U23#(tt, X, Y) | → | isLNatKind#(Y) | | U21#(tt, X, Y) | → | isLNatKind#(X) |
U321#(tt, N, X, XS) | → | isNaturalKind#(N) | | U326#(tt, N, X, XS) | → | T(N) |
U22#(tt, X, Y) | → | U23#(isLNat(Y), X, Y) | | U344#(tt, N, XS) | → | T(N) |
U326#(tt, N, X, XS) | → | splitAt#(N, XS) | | U311#(tt, XS) | → | U312#(isLNatKind(XS), XS) |
U23#(tt, X, Y) | → | U24#(isLNatKind(Y), X) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U321#(tt, N, X, XS) → U322#(isNaturalKind(N), N, X, XS) | U324#(tt, N, X, XS) → U325#(isLNat(XS), N, X, XS) |
U323#(tt, N, X, XS) → U324#(isNaturalKind(X), N, X, XS) | U326#(tt, N, X, XS) → splitAt#(N, XS) |
U325#(tt, N, X, XS) → U326#(isLNatKind(XS), N, X, XS) | splitAt#(s(N), cons(X, XS)) → U321#(isNatural(N), N, X, XS) |
U322#(tt, N, X, XS) → U323#(isNatural(X), N, X, XS) |
Problem 5: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 6: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U32#(tt, N, XS) | → | isLNat#(XS) | | U31#(tt, N, XS) | → | U32#(isNaturalKind(N), N, XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
There are no SCCs!
Problem 7: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) |
U55#(tt, V2) | → | U56#(isLNat(V2)) | | U82#(tt, V1) | → | isPLNat#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U105#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U255#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 8: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | U246#(isLNat(V2)) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | isLNatKind#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U255#(tt, V2) | → | isLNat#(V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U241#(tt, V1, V2) | → | isLNatKind#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U62#(tt, V1) | → | U63#(isPLNat(V1)) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U205#(tt, V2) | → | isLNat#(V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U61#(tt, V1) | → | isPLNatKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 9: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U245#(tt, V2) | → | U246#(isLNat(V2)) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U205#(tt, V2) | → | isLNat#(V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 10: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 11: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) |
U55#(tt, V2) | → | U56#(isLNat(V2)) | | U82#(tt, V1) | → | isPLNat#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 12: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | U246#(isLNat(V2)) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | isLNatKind#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U241#(tt, V1, V2) | → | isLNatKind#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U62#(tt, V1) | → | U63#(isPLNat(V1)) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U205#(tt, V2) | → | isLNat#(V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U61#(tt, V1) | → | isPLNatKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 13: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U12#(tt, N, XS) | → | isLNat#(XS) | | U11#(tt, N, XS) | → | U12#(isNaturalKind(N), N, XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
There are no SCCs!
Problem 14: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U327#(pair(YS, ZS), X) | → | T(X) | | U281#(tt, N) | → | U282#(isNaturalKind(N), N) |
U324#(tt, N, X, XS) | → | U325#(isLNat(XS), N, X, XS) | | splitAt#(s(N), cons(X, XS)) | → | isNatural#(N) |
U325#(tt, N, X, XS) | → | isLNatKind#(XS) | | splitAt#(s(N), cons(X, XS)) | → | U321#(isNatural(N), N, X, XS) |
U282#(tt, N) | → | T(N) | | U322#(tt, N, X, XS) | → | U323#(isNatural(X), N, X, XS) |
U312#(tt, XS) | → | T(XS) | | U311#(tt, XS) | → | isLNatKind#(XS) |
U323#(tt, N, X, XS) | → | U324#(isNaturalKind(X), N, X, XS) | | splitAt#(0, XS) | → | U311#(isLNat(XS), XS) |
T(s(x_1)) | → | T(x_1) | | U323#(tt, N, X, XS) | → | isNaturalKind#(X) |
U326#(tt, N, X, XS) | → | T(XS) | | U325#(tt, N, X, XS) | → | U326#(isLNatKind(XS), N, X, XS) |
splitAt#(0, XS) | → | isLNat#(XS) | | T(natsFrom(x_1)) | → | T(x_1) |
U321#(tt, N, X, XS) | → | U322#(isNaturalKind(N), N, X, XS) | | U326#(tt, N, X, XS) | → | U327#(splitAt(N, XS), X) |
U322#(tt, N, X, XS) | → | isNatural#(X) | | natsFrom#(N) | → | isNatural#(N) |
T(natsFrom(s(N))) | → | natsFrom#(s(N)) | | natsFrom#(N) | → | U281#(isNatural(N), N) |
U321#(tt, N, X, XS) | → | isNaturalKind#(N) | | U326#(tt, N, X, XS) | → | T(N) |
U326#(tt, N, X, XS) | → | splitAt#(N, XS) | | U281#(tt, N) | → | isNaturalKind#(N) |
U311#(tt, XS) | → | U312#(isLNatKind(XS), XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
T(natsFrom(x_1)) → T(x_1) | U281#(tt, N) → U282#(isNaturalKind(N), N) |
T(s(x_1)) → T(x_1) | T(natsFrom(s(N))) → natsFrom#(s(N)) |
natsFrom#(N) → U281#(isNatural(N), N) | U282#(tt, N) → T(N) |
U321#(tt, N, X, XS) → U322#(isNaturalKind(N), N, X, XS) | U324#(tt, N, X, XS) → U325#(isLNat(XS), N, X, XS) |
U323#(tt, N, X, XS) → U324#(isNaturalKind(X), N, X, XS) | U326#(tt, N, X, XS) → splitAt#(N, XS) |
U325#(tt, N, X, XS) → U326#(isLNatKind(XS), N, X, XS) | splitAt#(s(N), cons(X, XS)) → U321#(isNatural(N), N, X, XS) |
U322#(tt, N, X, XS) → U323#(isNatural(X), N, X, XS) |
Problem 15: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U241#(tt, V1, V2) | → | isLNatKind#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U62#(tt, V1) | → | U63#(isPLNat(V1)) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U205#(tt, V2) | → | isLNat#(V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U103#(tt, V1, V2) | → | isLNatKind#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U61#(tt, V1) | → | isPLNatKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 16: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U281#(tt, N) | → | U282#(isNaturalKind(N), N) | | U327#(pair(YS, ZS), X) | → | T(X) |
splitAt#(s(N), cons(X, XS)) | → | isNatural#(N) | | U324#(tt, N, X, XS) | → | U325#(isLNat(XS), N, X, XS) |
U325#(tt, N, X, XS) | → | isLNatKind#(XS) | | splitAt#(s(N), cons(X, XS)) | → | U321#(isNatural(N), N, X, XS) |
U282#(tt, N) | → | T(N) | | U322#(tt, N, X, XS) | → | U323#(isNatural(X), N, X, XS) |
U312#(tt, XS) | → | T(XS) | | U311#(tt, XS) | → | isLNatKind#(XS) |
U323#(tt, N, X, XS) | → | U324#(isNaturalKind(X), N, X, XS) | | splitAt#(0, XS) | → | U311#(isLNat(XS), XS) |
T(s(x_1)) | → | T(x_1) | | U323#(tt, N, X, XS) | → | isNaturalKind#(X) |
U325#(tt, N, X, XS) | → | U326#(isLNatKind(XS), N, X, XS) | | U326#(tt, N, X, XS) | → | T(XS) |
splitAt#(0, XS) | → | isLNat#(XS) | | T(natsFrom(x_1)) | → | T(x_1) |
U321#(tt, N, X, XS) | → | U322#(isNaturalKind(N), N, X, XS) | | U322#(tt, N, X, XS) | → | isNatural#(X) |
U326#(tt, N, X, XS) | → | U327#(splitAt(N, XS), X) | | natsFrom#(N) | → | isNatural#(N) |
T(natsFrom(s(N))) | → | natsFrom#(s(N)) | | natsFrom#(N) | → | U281#(isNatural(N), N) |
U326#(tt, N, X, XS) | → | T(N) | | U326#(tt, N, X, XS) | → | splitAt#(N, XS) |
U281#(tt, N) | → | isNaturalKind#(N) | | U311#(tt, XS) | → | U312#(isLNatKind(XS), XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U281#(tt, N) → U282#(isNaturalKind(N), N) | T(natsFrom(x_1)) → T(x_1) |
T(s(x_1)) → T(x_1) | T(natsFrom(s(N))) → natsFrom#(s(N)) |
natsFrom#(N) → U281#(isNatural(N), N) | U282#(tt, N) → T(N) |
U321#(tt, N, X, XS) → U322#(isNaturalKind(N), N, X, XS) | U324#(tt, N, X, XS) → U325#(isLNat(XS), N, X, XS) |
U323#(tt, N, X, XS) → U324#(isNaturalKind(X), N, X, XS) | U326#(tt, N, X, XS) → splitAt#(N, XS) |
U325#(tt, N, X, XS) → U326#(isLNatKind(XS), N, X, XS) | splitAt#(s(N), cons(X, XS)) → U321#(isNatural(N), N, X, XS) |
U322#(tt, N, X, XS) → U323#(isNatural(X), N, X, XS) |
Problem 18: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U341#(tt, N, XS) | → | isNaturalKind#(N) | | take#(N, XS) | → | U341#(isNatural(N), N, XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
There are no SCCs!
Problem 19: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U245#(tt, V2) | → | U246#(isLNat(V2)) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | isLNatKind#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U255#(tt, V2) | → | isLNat#(V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U241#(tt, V1, V2) | → | isLNatKind#(V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U205#(tt, V2) | → | isLNat#(V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 20: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U103#(tt, V1, V2) | → | isLNatKind#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U61#(tt, V1) | → | isPLNatKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 21: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U342#(tt, N, XS) | → | isLNat#(XS) | | U341#(tt, N, XS) | → | U342#(isNaturalKind(N), N, XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
There are no SCCs!
Problem 22: DependencyGraph
Dependency Pair Problem
Dependency Pairs
snd#(pair(X, Y)) | → | isLNat#(X) | | U14#(tt, N, XS) | → | snd#(splitAt(N, XS)) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
There are no SCCs!
Problem 23: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U255#(tt, V2) | → | isLNat#(V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 24: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U255#(tt, V2) | → | isLNat#(V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U241#(tt, V1, V2) | → | isLNatKind#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U62#(tt, V1) | → | U63#(isPLNat(V1)) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U61#(tt, V1) | → | isPLNatKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 25: DependencyGraph
Dependency Pair Problem
Dependency Pairs
fst#(pair(X, Y)) | → | U21#(isLNat(X), X, Y) | | U21#(tt, X, Y) | → | isLNatKind#(X) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
There are no SCCs!
Problem 26: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U333#(tt, XS) | → | isLNatKind#(XS) | | U332#(tt, XS) | → | U333#(isLNat(XS), XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
There are no SCCs!
Problem 27: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U255#(tt, V2) | → | isLNat#(V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U205#(tt, V2) | → | isLNat#(V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U61#(tt, V1) | → | isPLNatKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 28: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U327#(pair(YS, ZS), X) | → | T(X) | | U324#(tt, N, X, XS) | → | U325#(isLNat(XS), N, X, XS) |
splitAt#(s(N), cons(X, XS)) | → | isNatural#(N) | | U282#(tt, N) | → | T(N) |
U34#(tt, N) | → | T(N) | | U33#(tt, N, XS) | → | isLNatKind#(XS) |
U14#(tt, N, XS) | → | T(N) | | U14#(tt, N, XS) | → | snd#(splitAt(N, XS)) |
U311#(tt, XS) | → | isLNatKind#(XS) | | U323#(tt, N, X, XS) | → | U324#(isNaturalKind(X), N, X, XS) |
splitAt#(0, XS) | → | U311#(isLNat(XS), XS) | | T(s(x_1)) | → | T(x_1) |
head#(cons(N, XS)) | → | isNatural#(N) | | U294#(tt, N, XS) | → | T(XS) |
U294#(tt, N, XS) | → | head#(afterNth(N, XS)) | | U326#(tt, N, X, XS) | → | T(XS) |
U325#(tt, N, X, XS) | → | U326#(isLNatKind(XS), N, X, XS) | | snd#(pair(X, Y)) | → | isLNat#(X) |
splitAt#(0, XS) | → | isLNat#(XS) | | U326#(tt, N, X, XS) | → | U327#(splitAt(N, XS), X) |
U322#(tt, N, X, XS) | → | isNatural#(X) | | natsFrom#(N) | → | isNatural#(N) |
U303#(tt, Y) | → | isLNatKind#(Y) | | T(natsFrom(s(N))) | → | natsFrom#(s(N)) |
U294#(tt, N, XS) | → | afterNth#(N, XS) | | U326#(tt, N, X, XS) | → | splitAt#(N, XS) |
U304#(tt, Y) | → | T(Y) | | U12#(tt, N, XS) | → | U13#(isLNat(XS), N, XS) |
U302#(tt, Y) | → | U303#(isLNat(Y), Y) | | U281#(tt, N) | → | U282#(isNaturalKind(N), N) |
U13#(tt, N, XS) | → | isLNatKind#(XS) | | U294#(tt, N, XS) | → | T(N) |
U292#(tt, N, XS) | → | U293#(isLNat(XS), N, XS) | | U12#(tt, N, XS) | → | isLNat#(XS) |
U325#(tt, N, X, XS) | → | isLNatKind#(XS) | | U303#(tt, Y) | → | U304#(isLNatKind(Y), Y) |
splitAt#(s(N), cons(X, XS)) | → | U321#(isNatural(N), N, X, XS) | | U301#(tt, X, Y) | → | U302#(isLNatKind(X), Y) |
U322#(tt, N, X, XS) | → | U323#(isNatural(X), N, X, XS) | | U324#(tt, N, X, XS) | → | isLNat#(XS) |
U312#(tt, XS) | → | T(XS) | | snd#(pair(X, Y)) | → | U301#(isLNat(X), X, Y) |
U323#(tt, N, X, XS) | → | isNaturalKind#(X) | | U31#(tt, N, XS) | → | isNaturalKind#(N) |
U302#(tt, Y) | → | isLNat#(Y) | | U31#(tt, N, XS) | → | U32#(isNaturalKind(N), N, XS) |
afterNth#(N, XS) | → | isNatural#(N) | | T(natsFrom(x_1)) | → | T(x_1) |
U321#(tt, N, X, XS) | → | U322#(isNaturalKind(N), N, X, XS) | | U14#(tt, N, XS) | → | T(XS) |
head#(cons(N, XS)) | → | U31#(isNatural(N), N, XS) | | U293#(tt, N, XS) | → | isLNatKind#(XS) |
U33#(tt, N, XS) | → | U34#(isLNatKind(XS), N) | | natsFrom#(N) | → | U281#(isNatural(N), N) |
U32#(tt, N, XS) | → | isLNat#(XS) | | U13#(tt, N, XS) | → | U14#(isLNatKind(XS), N, XS) |
U32#(tt, N, XS) | → | U33#(isLNat(XS), N, XS) | | U326#(tt, N, X, XS) | → | T(N) |
U11#(tt, N, XS) | → | isNaturalKind#(N) | | U321#(tt, N, X, XS) | → | isNaturalKind#(N) |
afterNth#(N, XS) | → | U11#(isNatural(N), N, XS) | | U301#(tt, X, Y) | → | isLNatKind#(X) |
U14#(tt, N, XS) | → | splitAt#(N, XS) | | U281#(tt, N) | → | isNaturalKind#(N) |
U291#(tt, N, XS) | → | U292#(isNaturalKind(N), N, XS) | | U311#(tt, XS) | → | U312#(isLNatKind(XS), XS) |
U11#(tt, N, XS) | → | U12#(isNaturalKind(N), N, XS) | | U293#(tt, N, XS) | → | U294#(isLNatKind(XS), N, XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
T(natsFrom(x_1)) → T(x_1) | U281#(tt, N) → U282#(isNaturalKind(N), N) |
T(s(x_1)) → T(x_1) | T(natsFrom(s(N))) → natsFrom#(s(N)) |
natsFrom#(N) → U281#(isNatural(N), N) | U282#(tt, N) → T(N) |
U321#(tt, N, X, XS) → U322#(isNaturalKind(N), N, X, XS) | U324#(tt, N, X, XS) → U325#(isLNat(XS), N, X, XS) |
U323#(tt, N, X, XS) → U324#(isNaturalKind(X), N, X, XS) | U326#(tt, N, X, XS) → splitAt#(N, XS) |
U325#(tt, N, X, XS) → U326#(isLNatKind(XS), N, X, XS) | splitAt#(s(N), cons(X, XS)) → U321#(isNatural(N), N, X, XS) |
U322#(tt, N, X, XS) → U323#(isNatural(X), N, X, XS) |
Problem 29: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U103#(tt, V1, V2) | → | isLNatKind#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 30: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U255#(tt, V2) | → | isLNat#(V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U62#(tt, V1) | → | U63#(isPLNat(V1)) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U61#(tt, V1) | → | isPLNatKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 31: DependencyGraph
Dependency Pair Problem
Dependency Pairs
head#(cons(N, XS)) | → | U31#(isNatural(N), N, XS) | | U31#(tt, N, XS) | → | isNaturalKind#(N) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
There are no SCCs!
Problem 32: DependencyGraph
Dependency Pair Problem
Dependency Pairs
T(natsFrom(x_1)) | → | T(x_1) | | U281#(tt, N) | → | U282#(isNaturalKind(N), N) |
U333#(tt, XS) | → | isLNatKind#(XS) | | natsFrom#(N) | → | isNatural#(N) |
T(natsFrom(s(N))) | → | natsFrom#(s(N)) | | natsFrom#(N) | → | U281#(isNatural(N), N) |
U282#(tt, N) | → | T(N) | | U334#(tt, XS) | → | T(XS) |
T(s(x_1)) | → | T(x_1) | | U333#(tt, XS) | → | U334#(isLNatKind(XS), XS) |
U281#(tt, N) | → | isNaturalKind#(N) | | U332#(tt, XS) | → | U333#(isLNat(XS), XS) |
U331#(tt, N, XS) | → | U332#(isNaturalKind(N), XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U281#(tt, N) → U282#(isNaturalKind(N), N) | T(natsFrom(x_1)) → T(x_1) |
T(s(x_1)) → T(x_1) | T(natsFrom(s(N))) → natsFrom#(s(N)) |
natsFrom#(N) → U281#(isNatural(N), N) | U282#(tt, N) → T(N) |
Problem 33: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 34: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U327#(pair(YS, ZS), X) | → | T(X) | | U281#(tt, N) | → | U282#(isNaturalKind(N), N) |
U324#(tt, N, X, XS) | → | U325#(isLNat(XS), N, X, XS) | | splitAt#(s(N), cons(X, XS)) | → | U321#(isNatural(N), N, X, XS) |
U282#(tt, N) | → | T(N) | | U322#(tt, N, X, XS) | → | U323#(isNatural(X), N, X, XS) |
U324#(tt, N, X, XS) | → | isLNat#(XS) | | U312#(tt, XS) | → | T(XS) |
U311#(tt, XS) | → | isLNatKind#(XS) | | U323#(tt, N, X, XS) | → | U324#(isNaturalKind(X), N, X, XS) |
splitAt#(0, XS) | → | U311#(isLNat(XS), XS) | | T(s(x_1)) | → | T(x_1) |
U323#(tt, N, X, XS) | → | isNaturalKind#(X) | | U326#(tt, N, X, XS) | → | T(XS) |
U325#(tt, N, X, XS) | → | U326#(isLNatKind(XS), N, X, XS) | | T(natsFrom(x_1)) | → | T(x_1) |
U321#(tt, N, X, XS) | → | U322#(isNaturalKind(N), N, X, XS) | | splitAt#(0, XS) | → | isLNat#(XS) |
U326#(tt, N, X, XS) | → | U327#(splitAt(N, XS), X) | | U322#(tt, N, X, XS) | → | isNatural#(X) |
natsFrom#(N) | → | isNatural#(N) | | T(natsFrom(s(N))) | → | natsFrom#(s(N)) |
natsFrom#(N) | → | U281#(isNatural(N), N) | | U326#(tt, N, X, XS) | → | T(N) |
U321#(tt, N, X, XS) | → | isNaturalKind#(N) | | U326#(tt, N, X, XS) | → | splitAt#(N, XS) |
U281#(tt, N) | → | isNaturalKind#(N) | | U311#(tt, XS) | → | U312#(isLNatKind(XS), XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
T(natsFrom(x_1)) → T(x_1) | U281#(tt, N) → U282#(isNaturalKind(N), N) |
T(s(x_1)) → T(x_1) | T(natsFrom(s(N))) → natsFrom#(s(N)) |
natsFrom#(N) → U281#(isNatural(N), N) | U282#(tt, N) → T(N) |
U321#(tt, N, X, XS) → U322#(isNaturalKind(N), N, X, XS) | U324#(tt, N, X, XS) → U325#(isLNat(XS), N, X, XS) |
U323#(tt, N, X, XS) → U324#(isNaturalKind(X), N, X, XS) | U326#(tt, N, X, XS) → splitAt#(N, XS) |
U325#(tt, N, X, XS) → U326#(isLNatKind(XS), N, X, XS) | splitAt#(s(N), cons(X, XS)) → U321#(isNatural(N), N, X, XS) |
U322#(tt, N, X, XS) → U323#(isNatural(X), N, X, XS) |
Problem 35: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U343#(tt, N, XS) | → | isLNatKind#(XS) | | U342#(tt, N, XS) | → | U343#(isLNat(XS), N, XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
There are no SCCs!
Problem 36: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U105#(tt, V2) | → | U106#(isLNat(V2)) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 37: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U255#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U205#(tt, V2) | → | isLNat#(V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 38: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U82#(tt, V1) | → | isPLNat#(V1) |
U251#(tt, V1, V2) | → | isNaturalKind#(V1) | | U182#(tt, V1) | → | U183#(isLNat(V1)) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U255#(tt, V2) | → | isLNat#(V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U102#(tt, V1, V2) | → | isLNatKind#(V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U205#(tt, V2) | → | isLNat#(V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 39: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U62#(tt, V1) | → | U63#(isPLNat(V1)) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 40: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | U246#(isLNat(V2)) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | isLNatKind#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U241#(tt, V1, V2) | → | isLNatKind#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U62#(tt, V1) | → | U63#(isPLNat(V1)) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U205#(tt, V2) | → | isLNat#(V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U103#(tt, V1, V2) | → | isLNatKind#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U61#(tt, V1) | → | isPLNatKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 41: DependencyGraph
Dependency Pair Problem
Dependency Pairs
afterNth#(N, XS) | → | U11#(isNatural(N), N, XS) | | U11#(tt, N, XS) | → | isNaturalKind#(N) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
There are no SCCs!
Problem 42: DependencyGraph
Dependency Pair Problem
Dependency Pairs
snd#(pair(X, Y)) | → | isLNat#(X) | | U14#(tt, N, XS) | → | T(XS) |
U302#(tt, Y) | → | U303#(isLNat(Y), Y) | | U303#(tt, Y) | → | isLNatKind#(Y) |
U303#(tt, Y) | → | U304#(isLNatKind(Y), Y) | | U301#(tt, X, Y) | → | U302#(isLNatKind(X), Y) |
U13#(tt, N, XS) | → | U14#(isLNatKind(XS), N, XS) | | U301#(tt, X, Y) | → | isLNatKind#(X) |
U14#(tt, N, XS) | → | snd#(splitAt(N, XS)) | | U14#(tt, N, XS) | → | T(N) |
snd#(pair(X, Y)) | → | U301#(isLNat(X), X, Y) | | U304#(tt, Y) | → | T(Y) |
U302#(tt, Y) | → | isLNat#(Y) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
There are no SCCs!
Problem 43: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U62#(tt, V1) | → | U63#(isPLNat(V1)) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
U61#(tt, V1) | → | isPLNatKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 44: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U62#(tt, V1) | → | U63#(isPLNat(V1)) |
U55#(tt, V2) | → | isLNat#(V2) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U103#(tt, V1, V2) | → | isLNatKind#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U61#(tt, V1) | → | isPLNatKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 45: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U105#(tt, V2) | → | U106#(isLNat(V2)) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U103#(tt, V1, V2) | → | isLNatKind#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 46: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U294#(tt, N, XS) | → | afterNth#(N, XS) | | afterNth#(N, XS) | → | isNatural#(N) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
There are no SCCs!
Problem 47: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U245#(tt, V2) | → | U246#(isLNat(V2)) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | isLNatKind#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U255#(tt, V2) | → | isLNat#(V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U55#(tt, V2) | → | isLNat#(V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U205#(tt, V2) | → | isLNat#(V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 48: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U291#(tt, N, XS) | → | isNaturalKind#(N) | | sel#(N, XS) | → | U291#(isNatural(N), N, XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
There are no SCCs!
Problem 49: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U327#(pair(YS, ZS), X) | → | T(X) | | U281#(tt, N) | → | U282#(isNaturalKind(N), N) |
U324#(tt, N, X, XS) | → | U325#(isLNat(XS), N, X, XS) | | U325#(tt, N, X, XS) | → | isLNatKind#(XS) |
splitAt#(s(N), cons(X, XS)) | → | U321#(isNatural(N), N, X, XS) | | U282#(tt, N) | → | T(N) |
U322#(tt, N, X, XS) | → | U323#(isNatural(X), N, X, XS) | | U324#(tt, N, X, XS) | → | isLNat#(XS) |
U312#(tt, XS) | → | T(XS) | | U311#(tt, XS) | → | isLNatKind#(XS) |
splitAt#(0, XS) | → | U311#(isLNat(XS), XS) | | U323#(tt, N, X, XS) | → | U324#(isNaturalKind(X), N, X, XS) |
T(s(x_1)) | → | T(x_1) | | U323#(tt, N, X, XS) | → | isNaturalKind#(X) |
U325#(tt, N, X, XS) | → | U326#(isLNatKind(XS), N, X, XS) | | U326#(tt, N, X, XS) | → | T(XS) |
T(natsFrom(x_1)) | → | T(x_1) | | U321#(tt, N, X, XS) | → | U322#(isNaturalKind(N), N, X, XS) |
splitAt#(0, XS) | → | isLNat#(XS) | | U326#(tt, N, X, XS) | → | U327#(splitAt(N, XS), X) |
U322#(tt, N, X, XS) | → | isNatural#(X) | | natsFrom#(N) | → | isNatural#(N) |
T(natsFrom(s(N))) | → | natsFrom#(s(N)) | | natsFrom#(N) | → | U281#(isNatural(N), N) |
U326#(tt, N, X, XS) | → | T(N) | | U321#(tt, N, X, XS) | → | isNaturalKind#(N) |
U326#(tt, N, X, XS) | → | splitAt#(N, XS) | | U281#(tt, N) | → | isNaturalKind#(N) |
U311#(tt, XS) | → | U312#(isLNatKind(XS), XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
T(natsFrom(x_1)) → T(x_1) | U281#(tt, N) → U282#(isNaturalKind(N), N) |
T(s(x_1)) → T(x_1) | T(natsFrom(s(N))) → natsFrom#(s(N)) |
natsFrom#(N) → U281#(isNatural(N), N) | U282#(tt, N) → T(N) |
U321#(tt, N, X, XS) → U322#(isNaturalKind(N), N, X, XS) | U324#(tt, N, X, XS) → U325#(isLNat(XS), N, X, XS) |
U323#(tt, N, X, XS) → U324#(isNaturalKind(X), N, X, XS) | U326#(tt, N, X, XS) → splitAt#(N, XS) |
U325#(tt, N, X, XS) → U326#(isLNatKind(XS), N, X, XS) | splitAt#(s(N), cons(X, XS)) → U321#(isNatural(N), N, X, XS) |
U322#(tt, N, X, XS) → U323#(isNatural(X), N, X, XS) |
Problem 50: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 51: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 52: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U182#(tt, V1) | → | U183#(isLNat(V1)) |
U251#(tt, V1, V2) | → | isNaturalKind#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | isLNatKind#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U105#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U255#(tt, V2) | → | isLNat#(V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U102#(tt, V1, V2) | → | isLNatKind#(V2) | | U252#(tt, V1, V2) | → | isLNatKind#(V2) |
U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) | | isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) |
U205#(tt, V2) | → | U206#(isLNat(V2)) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U241#(tt, V1, V2) | → | isLNatKind#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U62#(tt, V1) | → | U63#(isPLNat(V1)) |
U55#(tt, V2) | → | isLNat#(V2) | | isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) |
isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U205#(tt, V2) | → | isLNat#(V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U103#(tt, V1, V2) | → | isLNatKind#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U61#(tt, V1) | → | isPLNatKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 53: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U241#(tt, V1, V2) | → | isLNatKind#(V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U72#(tt, V1) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 54: DependencyGraph
Dependency Pair Problem
Dependency Pairs
T(natsFrom(x_1)) | → | T(x_1) | | U281#(tt, N) | → | U282#(isNaturalKind(N), N) |
U22#(tt, X, Y) | → | isLNat#(Y) | | U24#(tt, X) | → | T(X) |
natsFrom#(N) | → | isNatural#(N) | | fst#(pair(X, Y)) | → | U21#(isLNat(X), X, Y) |
U23#(tt, X, Y) | → | isLNatKind#(Y) | | T(natsFrom(s(N))) | → | natsFrom#(s(N)) |
natsFrom#(N) | → | U281#(isNatural(N), N) | | U21#(tt, X, Y) | → | isLNatKind#(X) |
U282#(tt, N) | → | T(N) | | U22#(tt, X, Y) | → | U23#(isLNat(Y), X, Y) |
U21#(tt, X, Y) | → | U22#(isLNatKind(X), X, Y) | | T(s(x_1)) | → | T(x_1) |
U344#(tt, N, XS) | → | fst#(splitAt(N, XS)) | | U281#(tt, N) | → | isNaturalKind#(N) |
U23#(tt, X, Y) | → | U24#(isLNatKind(Y), X) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U281#(tt, N) → U282#(isNaturalKind(N), N) | T(natsFrom(x_1)) → T(x_1) |
T(s(x_1)) → T(x_1) | T(natsFrom(s(N))) → natsFrom#(s(N)) |
natsFrom#(N) → U281#(isNatural(N), N) | U282#(tt, N) → T(N) |
Problem 55: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 56: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U311#(tt, XS) | → | isLNatKind#(XS) | | splitAt#(0, XS) | → | U311#(isLNat(XS), XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
There are no SCCs!
Problem 57: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U205#(tt, V2) | → | isLNat#(V2) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 58: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) |
U245#(tt, V2) | → | isLNat#(V2) | | U82#(tt, V1) | → | U83#(isPLNat(V1)) |
U255#(tt, V2) | → | isLNat#(V2) | | U105#(tt, V2) | → | isLNat#(V2) |
U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) | | U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) | | isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U81#(tt, V1) | → | isPLNatKind#(V1) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) |
isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) |
U91#(tt, V1) | → | isLNatKind#(V1) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U205#(tt, V2) | → | isLNat#(V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) | | U53#(tt, V1, V2) | → | isLNatKind#(V2) |
U192#(tt, V1) | → | U193#(isNatural(V1)) | | U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) | | isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) | | isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) | | U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) | → | isLNat#(V1) | | U45#(tt, V2) | → | isLNat#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 59: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) | | U92#(tt, V1) | → | isLNat#(V1) |
U182#(tt, V1) | → | isLNat#(V1) | | U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) | → | isNatural#(V1) | | isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) |
U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U255#(tt, V2) | → | isLNat#(V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) | | U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) | → | isNatural#(V1) | | U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) |
U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) | | U62#(tt, V1) | → | isPLNat#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) | → | isNatural#(V1) | | U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U55#(tt, V2) | → | isLNat#(V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | U44#(tt, V1, V2) | → | isNatural#(V1) |
U205#(tt, V2) | → | isLNat#(V2) | | U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) |
U254#(tt, V1, V2) | → | isNatural#(V1) | | U72#(tt, V1) | → | isNatural#(V1) |
U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) | | U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) |
isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) | | U204#(tt, V1, V2) | → | isNatural#(V1) |
U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) | | U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) |
U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U201#(tt, V1, V2) | → | isNaturalKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |
Problem 62: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U327#(pair(YS, ZS), X) | → | T(X) | | U324#(tt, N, X, XS) | → | U325#(isLNat(XS), N, X, XS) |
splitAt#(s(N), cons(X, XS)) | → | isNatural#(N) | | U34#(tt, N) | → | T(N) |
U33#(tt, N, XS) | → | isLNatKind#(XS) | | U14#(tt, N, XS) | → | T(N) |
U14#(tt, N, XS) | → | snd#(splitAt(N, XS)) | | U311#(tt, XS) | → | isLNatKind#(XS) |
U323#(tt, N, X, XS) | → | U324#(isNaturalKind(X), N, X, XS) | | splitAt#(0, XS) | → | U311#(isLNat(XS), XS) |
head#(cons(N, XS)) | → | isNatural#(N) | | U294#(tt, N, XS) | → | T(XS) |
U294#(tt, N, XS) | → | head#(afterNth(N, XS)) | | U326#(tt, N, X, XS) | → | T(XS) |
U325#(tt, N, X, XS) | → | U326#(isLNatKind(XS), N, X, XS) | | snd#(pair(X, Y)) | → | isLNat#(X) |
splitAt#(0, XS) | → | isLNat#(XS) | | U326#(tt, N, X, XS) | → | U327#(splitAt(N, XS), X) |
U322#(tt, N, X, XS) | → | isNatural#(X) | | U303#(tt, Y) | → | isLNatKind#(Y) |
U294#(tt, N, XS) | → | afterNth#(N, XS) | | U326#(tt, N, X, XS) | → | splitAt#(N, XS) |
U304#(tt, Y) | → | T(Y) | | U12#(tt, N, XS) | → | U13#(isLNat(XS), N, XS) |
U302#(tt, Y) | → | U303#(isLNat(Y), Y) | | U13#(tt, N, XS) | → | isLNatKind#(XS) |
U12#(tt, N, XS) | → | isLNat#(XS) | | U325#(tt, N, X, XS) | → | isLNatKind#(XS) |
U303#(tt, Y) | → | U304#(isLNatKind(Y), Y) | | splitAt#(s(N), cons(X, XS)) | → | U321#(isNatural(N), N, X, XS) |
U301#(tt, X, Y) | → | U302#(isLNatKind(X), Y) | | U322#(tt, N, X, XS) | → | U323#(isNatural(X), N, X, XS) |
U324#(tt, N, X, XS) | → | isLNat#(XS) | | U312#(tt, XS) | → | T(XS) |
snd#(pair(X, Y)) | → | U301#(isLNat(X), X, Y) | | U323#(tt, N, X, XS) | → | isNaturalKind#(X) |
U31#(tt, N, XS) | → | isNaturalKind#(N) | | U302#(tt, Y) | → | isLNat#(Y) |
U31#(tt, N, XS) | → | U32#(isNaturalKind(N), N, XS) | | afterNth#(N, XS) | → | isNatural#(N) |
U321#(tt, N, X, XS) | → | U322#(isNaturalKind(N), N, X, XS) | | U14#(tt, N, XS) | → | T(XS) |
head#(cons(N, XS)) | → | U31#(isNatural(N), N, XS) | | U33#(tt, N, XS) | → | U34#(isLNatKind(XS), N) |
U32#(tt, N, XS) | → | isLNat#(XS) | | U13#(tt, N, XS) | → | U14#(isLNatKind(XS), N, XS) |
U32#(tt, N, XS) | → | U33#(isLNat(XS), N, XS) | | U321#(tt, N, X, XS) | → | isNaturalKind#(N) |
U11#(tt, N, XS) | → | isNaturalKind#(N) | | U326#(tt, N, X, XS) | → | T(N) |
afterNth#(N, XS) | → | U11#(isNatural(N), N, XS) | | U301#(tt, X, Y) | → | isLNatKind#(X) |
U14#(tt, N, XS) | → | splitAt#(N, XS) | | U311#(tt, XS) | → | U312#(isLNatKind(XS), XS) |
U11#(tt, N, XS) | → | U12#(isNaturalKind(N), N, XS) | | U293#(tt, N, XS) | → | U294#(isLNatKind(XS), N, XS) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U321#(tt, N, X, XS) → U322#(isNaturalKind(N), N, X, XS) | U324#(tt, N, X, XS) → U325#(isLNat(XS), N, X, XS) |
U323#(tt, N, X, XS) → U324#(isNaturalKind(X), N, X, XS) | U326#(tt, N, X, XS) → splitAt#(N, XS) |
U325#(tt, N, X, XS) → U326#(isLNatKind(XS), N, X, XS) | splitAt#(s(N), cons(X, XS)) → U321#(isNatural(N), N, X, XS) |
U322#(tt, N, X, XS) → U323#(isNatural(X), N, X, XS) |
Problem 63: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U102#(tt, V1, V2) | → | U103#(isLNatKind(V2), V1, V2) | | U41#(tt, V1, V2) | → | U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) | → | U192#(isNaturalKind(V1), V1) | | U51#(tt, V1, V2) | → | isNaturalKind#(V1) |
U241#(tt, V1, V2) | → | U242#(isLNatKind(V1), V1, V2) | | U55#(tt, V2) | → | U56#(isLNat(V2)) |
U82#(tt, V1) | → | isPLNat#(V1) | | U251#(tt, V1, V2) | → | isNaturalKind#(V1) |
U182#(tt, V1) | → | U183#(isLNat(V1)) | | U251#(tt, V1, V2) | → | U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) | → | isLNat#(V1) | | U182#(tt, V1) | → | isLNat#(V1) |
U253#(tt, V1, V2) | → | U254#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(afterNth(V1, V2)) | → | U41#(isNaturalKind(V1), V1, V2) | | U42#(tt, V1, V2) | → | U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) | → | U246#(isLNat(V2)) | | U245#(tt, V2) | → | isLNat#(V2) |
isPLNat#(pair(V1, V2)) | → | U241#(isLNatKind(V1), V1, V2) | | U243#(tt, V1, V2) | → | isLNatKind#(V2) |
U82#(tt, V1) | → | U83#(isPLNat(V1)) | | U255#(tt, V2) | → | isLNat#(V2) |
U105#(tt, V2) | → | isLNat#(V2) | | U101#(tt, V1, V2) | → | U102#(isNaturalKind(V1), V1, V2) |
U43#(tt, V1, V2) | → | U44#(isLNatKind(V2), V1, V2) | | U203#(tt, V1, V2) | → | U204#(isLNatKind(V2), V1, V2) |
isLNat#(cons(V1, V2)) | → | U51#(isNaturalKind(V1), V1, V2) | | U102#(tt, V1, V2) | → | isLNatKind#(V2) |
U252#(tt, V1, V2) | → | isLNatKind#(V2) | | U51#(tt, V1, V2) | → | U52#(isNaturalKind(V1), V1, V2) |
isLNat#(natsFrom(V1)) | → | U71#(isNaturalKind(V1), V1) | | U205#(tt, V2) | → | U206#(isLNat(V2)) |
U81#(tt, V1) | → | isPLNatKind#(V1) | | U201#(tt, V1, V2) | → | U202#(isNaturalKind(V1), V1, V2) |
U61#(tt, V1) | → | U62#(isPLNatKind(V1), V1) | | U192#(tt, V1) | → | isNatural#(V1) |
U181#(tt, V1) | → | U182#(isLNatKind(V1), V1) | | U71#(tt, V1) | → | U72#(isNaturalKind(V1), V1) |
U62#(tt, V1) | → | isPLNat#(V1) | | U241#(tt, V1, V2) | → | isLNatKind#(V1) |
U202#(tt, V1, V2) | → | U203#(isLNatKind(V2), V1, V2) | | isNatural#(sel(V1, V2)) | → | U201#(isNaturalKind(V1), V1, V2) |
U243#(tt, V1, V2) | → | U244#(isLNatKind(V2), V1, V2) | | U104#(tt, V1, V2) | → | isNatural#(V1) |
isLNat#(take(V1, V2)) | → | U101#(isNaturalKind(V1), V1, V2) | | U91#(tt, V1) | → | isLNatKind#(V1) |
U62#(tt, V1) | → | U63#(isPLNat(V1)) | | U55#(tt, V2) | → | isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) | → | U251#(isNaturalKind(V1), V1, V2) | | isLNat#(tail(V1)) | → | U91#(isLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | U205#(isNatural(V1), V2) | | U205#(tt, V2) | → | isLNat#(V2) |
U44#(tt, V1, V2) | → | isNatural#(V1) | | U254#(tt, V1, V2) | → | isNatural#(V1) |
U72#(tt, V1) | → | isNatural#(V1) | | U244#(tt, V1, V2) | → | U245#(isLNat(V1), V2) |
U254#(tt, V1, V2) | → | U255#(isNatural(V1), V2) | | isLNat#(fst(V1)) | → | U61#(isPLNatKind(V1), V1) |
U204#(tt, V1, V2) | → | isNatural#(V1) | | U91#(tt, V1) | → | U92#(isLNatKind(V1), V1) |
U81#(tt, V1) | → | U82#(isPLNatKind(V1), V1) | | U105#(tt, V2) | → | U106#(isLNat(V2)) |
U242#(tt, V1, V2) | → | U243#(isLNatKind(V2), V1, V2) | | U54#(tt, V1, V2) | → | U55#(isNatural(V1), V2) |
U53#(tt, V1, V2) | → | isLNatKind#(V2) | | U192#(tt, V1) | → | U193#(isNatural(V1)) |
U252#(tt, V1, V2) | → | U253#(isLNatKind(V2), V1, V2) | | U53#(tt, V1, V2) | → | U54#(isLNatKind(V2), V1, V2) |
isNatural#(s(V1)) | → | U191#(isNaturalKind(V1), V1) | | U44#(tt, V1, V2) | → | U45#(isNatural(V1), V2) |
isLNat#(snd(V1)) | → | U81#(isPLNatKind(V1), V1) | | U104#(tt, V1, V2) | → | U105#(isNatural(V1), V2) |
U52#(tt, V1, V2) | → | U53#(isLNatKind(V2), V1, V2) | | U103#(tt, V1, V2) | → | U104#(isLNatKind(V2), V1, V2) |
isNatural#(head(V1)) | → | U181#(isLNatKind(V1), V1) | | U244#(tt, V1, V2) | → | isLNat#(V1) |
U45#(tt, V2) | → | isLNat#(V2) | | U103#(tt, V1, V2) | → | isLNatKind#(V2) |
U201#(tt, V1, V2) | → | isNaturalKind#(V1) | | U61#(tt, V1) | → | isPLNatKind#(V1) |
U43#(tt, V1, V2) | → | isLNatKind#(V2) |
Rewrite Rules
U101(tt, V1, V2) | → | U102(isNaturalKind(V1), V1, V2) | | U102(tt, V1, V2) | → | U103(isLNatKind(V2), V1, V2) |
U103(tt, V1, V2) | → | U104(isLNatKind(V2), V1, V2) | | U104(tt, V1, V2) | → | U105(isNatural(V1), V2) |
U105(tt, V2) | → | U106(isLNat(V2)) | | U106(tt) | → | tt |
U11(tt, N, XS) | → | U12(isNaturalKind(N), N, XS) | | U111(tt, V2) | → | U112(isLNatKind(V2)) |
U112(tt) | → | tt | | U12(tt, N, XS) | → | U13(isLNat(XS), N, XS) |
U121(tt, V2) | → | U122(isLNatKind(V2)) | | U122(tt) | → | tt |
U13(tt, N, XS) | → | U14(isLNatKind(XS), N, XS) | | U131(tt) | → | tt |
U14(tt, N, XS) | → | snd(splitAt(N, XS)) | | U141(tt) | → | tt |
U151(tt) | → | tt | | U161(tt) | → | tt |
U171(tt, V2) | → | U172(isLNatKind(V2)) | | U172(tt) | → | tt |
U181(tt, V1) | → | U182(isLNatKind(V1), V1) | | U182(tt, V1) | → | U183(isLNat(V1)) |
U183(tt) | → | tt | | U191(tt, V1) | → | U192(isNaturalKind(V1), V1) |
U192(tt, V1) | → | U193(isNatural(V1)) | | U193(tt) | → | tt |
U201(tt, V1, V2) | → | U202(isNaturalKind(V1), V1, V2) | | U202(tt, V1, V2) | → | U203(isLNatKind(V2), V1, V2) |
U203(tt, V1, V2) | → | U204(isLNatKind(V2), V1, V2) | | U204(tt, V1, V2) | → | U205(isNatural(V1), V2) |
U205(tt, V2) | → | U206(isLNat(V2)) | | U206(tt) | → | tt |
U21(tt, X, Y) | → | U22(isLNatKind(X), X, Y) | | U211(tt) | → | tt |
U22(tt, X, Y) | → | U23(isLNat(Y), X, Y) | | U221(tt) | → | tt |
U23(tt, X, Y) | → | U24(isLNatKind(Y), X) | | U231(tt, V2) | → | U232(isLNatKind(V2)) |
U232(tt) | → | tt | | U24(tt, X) | → | X |
U241(tt, V1, V2) | → | U242(isLNatKind(V1), V1, V2) | | U242(tt, V1, V2) | → | U243(isLNatKind(V2), V1, V2) |
U243(tt, V1, V2) | → | U244(isLNatKind(V2), V1, V2) | | U244(tt, V1, V2) | → | U245(isLNat(V1), V2) |
U245(tt, V2) | → | U246(isLNat(V2)) | | U246(tt) | → | tt |
U251(tt, V1, V2) | → | U252(isNaturalKind(V1), V1, V2) | | U252(tt, V1, V2) | → | U253(isLNatKind(V2), V1, V2) |
U253(tt, V1, V2) | → | U254(isLNatKind(V2), V1, V2) | | U254(tt, V1, V2) | → | U255(isNatural(V1), V2) |
U255(tt, V2) | → | U256(isLNat(V2)) | | U256(tt) | → | tt |
U261(tt, V2) | → | U262(isLNatKind(V2)) | | U262(tt) | → | tt |
U271(tt, V2) | → | U272(isLNatKind(V2)) | | U272(tt) | → | tt |
U281(tt, N) | → | U282(isNaturalKind(N), N) | | U282(tt, N) | → | cons(N, natsFrom(s(N))) |
U291(tt, N, XS) | → | U292(isNaturalKind(N), N, XS) | | U292(tt, N, XS) | → | U293(isLNat(XS), N, XS) |
U293(tt, N, XS) | → | U294(isLNatKind(XS), N, XS) | | U294(tt, N, XS) | → | head(afterNth(N, XS)) |
U301(tt, X, Y) | → | U302(isLNatKind(X), Y) | | U302(tt, Y) | → | U303(isLNat(Y), Y) |
U303(tt, Y) | → | U304(isLNatKind(Y), Y) | | U304(tt, Y) | → | Y |
U31(tt, N, XS) | → | U32(isNaturalKind(N), N, XS) | | U311(tt, XS) | → | U312(isLNatKind(XS), XS) |
U312(tt, XS) | → | pair(nil, XS) | | U32(tt, N, XS) | → | U33(isLNat(XS), N, XS) |
U321(tt, N, X, XS) | → | U322(isNaturalKind(N), N, X, XS) | | U322(tt, N, X, XS) | → | U323(isNatural(X), N, X, XS) |
U323(tt, N, X, XS) | → | U324(isNaturalKind(X), N, X, XS) | | U324(tt, N, X, XS) | → | U325(isLNat(XS), N, X, XS) |
U325(tt, N, X, XS) | → | U326(isLNatKind(XS), N, X, XS) | | U326(tt, N, X, XS) | → | U327(splitAt(N, XS), X) |
U327(pair(YS, ZS), X) | → | pair(cons(X, YS), ZS) | | U33(tt, N, XS) | → | U34(isLNatKind(XS), N) |
U331(tt, N, XS) | → | U332(isNaturalKind(N), XS) | | U332(tt, XS) | → | U333(isLNat(XS), XS) |
U333(tt, XS) | → | U334(isLNatKind(XS), XS) | | U334(tt, XS) | → | XS |
U34(tt, N) | → | N | | U341(tt, N, XS) | → | U342(isNaturalKind(N), N, XS) |
U342(tt, N, XS) | → | U343(isLNat(XS), N, XS) | | U343(tt, N, XS) | → | U344(isLNatKind(XS), N, XS) |
U344(tt, N, XS) | → | fst(splitAt(N, XS)) | | U41(tt, V1, V2) | → | U42(isNaturalKind(V1), V1, V2) |
U42(tt, V1, V2) | → | U43(isLNatKind(V2), V1, V2) | | U43(tt, V1, V2) | → | U44(isLNatKind(V2), V1, V2) |
U44(tt, V1, V2) | → | U45(isNatural(V1), V2) | | U45(tt, V2) | → | U46(isLNat(V2)) |
U46(tt) | → | tt | | U51(tt, V1, V2) | → | U52(isNaturalKind(V1), V1, V2) |
U52(tt, V1, V2) | → | U53(isLNatKind(V2), V1, V2) | | U53(tt, V1, V2) | → | U54(isLNatKind(V2), V1, V2) |
U54(tt, V1, V2) | → | U55(isNatural(V1), V2) | | U55(tt, V2) | → | U56(isLNat(V2)) |
U56(tt) | → | tt | | U61(tt, V1) | → | U62(isPLNatKind(V1), V1) |
U62(tt, V1) | → | U63(isPLNat(V1)) | | U63(tt) | → | tt |
U71(tt, V1) | → | U72(isNaturalKind(V1), V1) | | U72(tt, V1) | → | U73(isNatural(V1)) |
U73(tt) | → | tt | | U81(tt, V1) | → | U82(isPLNatKind(V1), V1) |
U82(tt, V1) | → | U83(isPLNat(V1)) | | U83(tt) | → | tt |
U91(tt, V1) | → | U92(isLNatKind(V1), V1) | | U92(tt, V1) | → | U93(isLNat(V1)) |
U93(tt) | → | tt | | afterNth(N, XS) | → | U11(isNatural(N), N, XS) |
fst(pair(X, Y)) | → | U21(isLNat(X), X, Y) | | head(cons(N, XS)) | → | U31(isNatural(N), N, XS) |
isLNat(nil) | → | tt | | isLNat(afterNth(V1, V2)) | → | U41(isNaturalKind(V1), V1, V2) |
isLNat(cons(V1, V2)) | → | U51(isNaturalKind(V1), 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(isNaturalKind(V1), V1, V2) |
isLNatKind(nil) | → | tt | | isLNatKind(afterNth(V1, V2)) | → | U111(isNaturalKind(V1), V2) |
isLNatKind(cons(V1, V2)) | → | U121(isNaturalKind(V1), V2) | | isLNatKind(fst(V1)) | → | U131(isPLNatKind(V1)) |
isLNatKind(natsFrom(V1)) | → | U141(isNaturalKind(V1)) | | isLNatKind(snd(V1)) | → | U151(isPLNatKind(V1)) |
isLNatKind(tail(V1)) | → | U161(isLNatKind(V1)) | | isLNatKind(take(V1, V2)) | → | U171(isNaturalKind(V1), V2) |
isNatural(0) | → | tt | | isNatural(head(V1)) | → | U181(isLNatKind(V1), V1) |
isNatural(s(V1)) | → | U191(isNaturalKind(V1), V1) | | isNatural(sel(V1, V2)) | → | U201(isNaturalKind(V1), V1, V2) |
isNaturalKind(0) | → | tt | | isNaturalKind(head(V1)) | → | U211(isLNatKind(V1)) |
isNaturalKind(s(V1)) | → | U221(isNaturalKind(V1)) | | isNaturalKind(sel(V1, V2)) | → | U231(isNaturalKind(V1), V2) |
isPLNat(pair(V1, V2)) | → | U241(isLNatKind(V1), V1, V2) | | isPLNat(splitAt(V1, V2)) | → | U251(isNaturalKind(V1), V1, V2) |
isPLNatKind(pair(V1, V2)) | → | U261(isLNatKind(V1), V2) | | isPLNatKind(splitAt(V1, V2)) | → | U271(isNaturalKind(V1), V2) |
natsFrom(N) | → | U281(isNatural(N), N) | | sel(N, XS) | → | U291(isNatural(N), N, XS) |
snd(pair(X, Y)) | → | U301(isLNat(X), X, Y) | | splitAt(0, XS) | → | U311(isLNat(XS), XS) |
splitAt(s(N), cons(X, XS)) | → | U321(isNatural(N), N, X, XS) | | tail(cons(N, XS)) | → | U331(isNatural(N), N, XS) |
take(N, XS) | → | U341(isNatural(N), N, XS) |
Original Signature
Termination of terms over the following signature is verified: U311, U312, U104, U105, U106, U112, U111, U63, U62, U61, U303, U302, U304, U251, U253, U252, U255, U254, U256, U322, U323, isPLNat, isLNatKind, U321, U193, tail, U192, U191, U71, U73, U72, U122, 0, U121, U262, U261, pair, U331, U332, U333, U334, U325, U46, U324, U45, U327, U44, U131, U43, U326, U42, U41, U232, U231, cons, U341, U344, U342, splitAt, U343, U55, U54, U141, U56, U51, s, tt, U53, U52, U246, U245, U244, U243, afterNth, U242, U241, natsFrom, U161, U204, U203, U206, U205, fst, U211, U23, head, U24, U21, U22, U294, U292, U293, U151, U291, isPLNatKind, U221, isLNat, U31, U32, U33, U34, U181, U182, U183, isNatural, U281, U282, U93, U92, U91, snd, isNaturalKind, U171, U172, U272, U83, U271, U201, U202, U14, U301, U82, take, U81, U11, U12, U13, U102, U103, sel, nil, U101
Strategy
Context-sensitive strategy:
μ(isNatural#) = μ(isLNatKind#) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind) = μ(isLNat) = μ(isPLNat#) = μ(isNaturalKind#) = μ(isLNatKind) = μ(isPLNatKind#) = μ(isNatural) = μ(isNaturalKind) = μ(nil) = ∅
μ(natsFrom#) = μ(U203#) = μ(U294#) = μ(U253#) = μ(U243#) = μ(U323#) = μ(U272#) = μ(U281#) = μ(U262#) = μ(U202#) = μ(tail) = μ(U193) = μ(U192) = μ(U191) = μ(U242#) = μ(U252#) = μ(U232#) = μ(U324#) = μ(U282#) = μ(U201#) = μ(U261#) = μ(U292#) = μ(U221#) = μ(U241#) = μ(U311#) = μ(U255#) = μ(U321#) = μ(cons) = μ(U293#) = μ(U254#) = μ(U312#) = μ(s) = μ(U322#) = μ(U93#) = μ(U151#) = μ(natsFrom) = μ(U161) = μ(U56#) = μ(fst) = μ(U41#) = μ(U192#) = μ(U291#) = μ(U294) = μ(U292) = μ(U293) = μ(U151) = μ(U55#) = μ(U291) = μ(U42#) = μ(U191#) = μ(U181) = μ(U182) = μ(U183) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U281) = μ(U282) = μ(U93) = μ(U92) = μ(U251#) = μ(U91) = μ(U111#) = μ(U171) = μ(U172) = μ(U272) = μ(U92#) = μ(U83) = μ(U82#) = μ(U271) = μ(U193#) = μ(U301) = μ(U82) = μ(U81) = μ(U112#) = μ(head#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(U311) = μ(U312) = μ(U104) = μ(tail#) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U63) = μ(U62) = μ(U61) = μ(U161#) = μ(U45#) = μ(U303) = μ(U302) = μ(U72#) = μ(U303#) = μ(U304) = μ(U251) = μ(U253) = μ(U252) = μ(U255) = μ(U254) = μ(U256) = μ(U12#) = μ(U322) = μ(U323) = μ(U182#) = μ(U321) = μ(U51#) = μ(U71) = μ(U73) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U304#) = μ(U32#) = μ(U262) = μ(U261) = μ(U334#) = μ(U13#) = μ(U102#) = μ(U23#) = μ(U122#) = μ(U331) = μ(U332) = μ(U333) = μ(U334) = μ(U325) = μ(U46) = μ(U324) = μ(U45) = μ(U43#) = μ(U327) = μ(U44) = μ(U131) = μ(U326) = μ(U43) = μ(U301#) = μ(U42) = μ(U41) = μ(U54#) = μ(U232) = μ(U231) = μ(U33#) = μ(U333#) = μ(U14#) = μ(U101#) = μ(U121#) = μ(U63#) = μ(U341) = μ(U53#) = μ(U24#) = μ(U344) = μ(U342) = μ(U343) = μ(U55) = μ(U73#) = μ(U44#) = μ(U302#) = μ(U54) = μ(U141) = μ(U56) = μ(U51) = μ(U53) = μ(U52) = μ(U246) = μ(U245) = μ(U244) = μ(U243) = μ(U242) = μ(U83#) = μ(U141#) = μ(U241) = μ(U34#) = μ(U342#) = μ(U246#) = μ(U327#) = μ(U21#) = μ(U204) = μ(U256#) = μ(U203) = μ(U206) = μ(U205) = μ(U62#) = μ(U104#) = μ(U332#) = μ(U171#) = μ(U211) = μ(snd#) = μ(head) = μ(U23) = μ(U24) = μ(U21) = μ(U22) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U172#) = μ(U341#) = μ(U331#) = μ(U206#) = μ(U221) = μ(U31) = μ(U32) = μ(U33) = μ(U34) = μ(U244#) = μ(U325#) = μ(U344#) = μ(U183#) = μ(U106#) = μ(U205#) = μ(U271#) = μ(snd) = μ(U245#) = μ(U326#) = μ(U343#) = μ(U105#) = μ(U231#) = μ(U201) = μ(U202) = μ(U14) = μ(U204#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = μ(sel#) = μ(pair) = {1, 2}
The following SCCs where found
U102#(tt, V1, V2) → U103#(isLNatKind(V2), V1, V2) | U41#(tt, V1, V2) → U42#(isNaturalKind(V1), V1, V2) |
U191#(tt, V1) → U192#(isNaturalKind(V1), V1) | U241#(tt, V1, V2) → U242#(isLNatKind(V1), V1, V2) |
U82#(tt, V1) → isPLNat#(V1) | U251#(tt, V1, V2) → U252#(isNaturalKind(V1), V1, V2) |
U92#(tt, V1) → isLNat#(V1) | U182#(tt, V1) → isLNat#(V1) |
U253#(tt, V1, V2) → U254#(isLNatKind(V2), V1, V2) | U54#(tt, V1, V2) → isNatural#(V1) |
isLNat#(afterNth(V1, V2)) → U41#(isNaturalKind(V1), V1, V2) | U42#(tt, V1, V2) → U43#(isLNatKind(V2), V1, V2) |
U245#(tt, V2) → isLNat#(V2) | isPLNat#(pair(V1, V2)) → U241#(isLNatKind(V1), V1, V2) |
U105#(tt, V2) → isLNat#(V2) | U255#(tt, V2) → isLNat#(V2) |
U101#(tt, V1, V2) → U102#(isNaturalKind(V1), V1, V2) | U43#(tt, V1, V2) → U44#(isLNatKind(V2), V1, V2) |
U203#(tt, V1, V2) → U204#(isLNatKind(V2), V1, V2) | isLNat#(cons(V1, V2)) → U51#(isNaturalKind(V1), V1, V2) |
U51#(tt, V1, V2) → U52#(isNaturalKind(V1), V1, V2) | isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1) |
U201#(tt, V1, V2) → U202#(isNaturalKind(V1), V1, V2) | U61#(tt, V1) → U62#(isPLNatKind(V1), V1) |
U192#(tt, V1) → isNatural#(V1) | U181#(tt, V1) → U182#(isLNatKind(V1), V1) |
U71#(tt, V1) → U72#(isNaturalKind(V1), V1) | U62#(tt, V1) → isPLNat#(V1) |
U202#(tt, V1, V2) → U203#(isLNatKind(V2), V1, V2) | isNatural#(sel(V1, V2)) → U201#(isNaturalKind(V1), V1, V2) |
U104#(tt, V1, V2) → isNatural#(V1) | U243#(tt, V1, V2) → U244#(isLNatKind(V2), V1, V2) |
isLNat#(take(V1, V2)) → U101#(isNaturalKind(V1), V1, V2) | U55#(tt, V2) → isLNat#(V2) |
isPLNat#(splitAt(V1, V2)) → U251#(isNaturalKind(V1), V1, V2) | isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1) |
U205#(tt, V2) → isLNat#(V2) | U204#(tt, V1, V2) → U205#(isNatural(V1), V2) |
U44#(tt, V1, V2) → isNatural#(V1) | U72#(tt, V1) → isNatural#(V1) |
U254#(tt, V1, V2) → isNatural#(V1) | U244#(tt, V1, V2) → U245#(isLNat(V1), V2) |
isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1) | U254#(tt, V1, V2) → U255#(isNatural(V1), V2) |
U204#(tt, V1, V2) → isNatural#(V1) | U91#(tt, V1) → U92#(isLNatKind(V1), V1) |
U81#(tt, V1) → U82#(isPLNatKind(V1), V1) | U242#(tt, V1, V2) → U243#(isLNatKind(V2), V1, V2) |
U54#(tt, V1, V2) → U55#(isNatural(V1), V2) | U252#(tt, V1, V2) → U253#(isLNatKind(V2), V1, V2) |
U53#(tt, V1, V2) → U54#(isLNatKind(V2), V1, V2) | isNatural#(s(V1)) → U191#(isNaturalKind(V1), V1) |
U44#(tt, V1, V2) → U45#(isNatural(V1), V2) | isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1) |
U104#(tt, V1, V2) → U105#(isNatural(V1), V2) | U103#(tt, V1, V2) → U104#(isLNatKind(V2), V1, V2) |
U52#(tt, V1, V2) → U53#(isLNatKind(V2), V1, V2) | isNatural#(head(V1)) → U181#(isLNatKind(V1), V1) |
U244#(tt, V1, V2) → isLNat#(V1) | U45#(tt, V2) → isLNat#(V2) |