/export/starexec/sandbox2/solver/bin/starexec_run_complexity /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^1), O(n^2)) proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^2). (0) CpxTRS (1) NestedDefinedSymbolProof [UPPER BOUND(ID), 31 ms] (2) CpxTRS (3) RcToIrcProof [BOTH BOUNDS(ID, ID), 89 ms] (4) CpxTRS (5) CpxTrsToCdtProof [UPPER BOUND(ID), 16 ms] (6) CdtProblem (7) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CdtProblem (9) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CdtProblem (11) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 6 ms] (12) CdtProblem (13) CdtRuleRemovalProof [UPPER BOUND(ADD(n^2)), 724 ms] (14) CdtProblem (15) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 136 ms] (16) CdtProblem (17) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 78 ms] (18) CdtProblem (19) SIsEmptyProof [BOTH BOUNDS(ID, ID), 0 ms] (20) BOUNDS(1, 1) (21) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (22) CpxTRS (23) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (24) typed CpxTrs (25) OrderProof [LOWER BOUND(ID), 0 ms] (26) typed CpxTrs (27) RewriteLemmaProof [LOWER BOUND(ID), 480 ms] (28) BEST (29) proven lower bound (30) LowerBoundPropagationProof [FINISHED, 0 ms] (31) BOUNDS(n^1, INF) (32) typed CpxTrs (33) RewriteLemmaProof [LOWER BOUND(ID), 150 ms] (34) typed CpxTrs (35) RewriteLemmaProof [LOWER BOUND(ID), 87 ms] (36) typed CpxTrs (37) RewriteLemmaProof [LOWER BOUND(ID), 188 ms] (38) typed CpxTrs (39) RewriteLemmaProof [LOWER BOUND(ID), 93 ms] (40) typed CpxTrs (41) RewriteLemmaProof [LOWER BOUND(ID), 89 ms] (42) typed CpxTrs (43) RewriteLemmaProof [LOWER BOUND(ID), 166 ms] (44) typed CpxTrs (45) RewriteLemmaProof [LOWER BOUND(ID), 101 ms] (46) typed CpxTrs (47) RewriteLemmaProof [LOWER BOUND(ID), 151 ms] (48) typed CpxTrs (49) RewriteLemmaProof [LOWER BOUND(ID), 81 ms] (50) typed CpxTrs (51) RewriteLemmaProof [LOWER BOUND(ID), 160 ms] (52) typed CpxTrs (53) RewriteLemmaProof [LOWER BOUND(ID), 85 ms] (54) typed CpxTrs (55) RewriteLemmaProof [LOWER BOUND(ID), 124 ms] (56) typed CpxTrs (57) RewriteLemmaProof [LOWER BOUND(ID), 111 ms] (58) typed CpxTrs (59) RewriteLemmaProof [LOWER BOUND(ID), 113 ms] (60) typed CpxTrs (61) RewriteLemmaProof [LOWER BOUND(ID), 135 ms] (62) typed CpxTrs (63) RewriteLemmaProof [LOWER BOUND(ID), 205 ms] (64) typed CpxTrs (65) RewriteLemmaProof [LOWER BOUND(ID), 189 ms] (66) typed CpxTrs (67) RewriteLemmaProof [LOWER BOUND(ID), 194 ms] (68) typed CpxTrs (69) RewriteLemmaProof [LOWER BOUND(ID), 134 ms] (70) typed CpxTrs (71) RewriteLemmaProof [LOWER BOUND(ID), 194 ms] (72) typed CpxTrs (73) RewriteLemmaProof [LOWER BOUND(ID), 103 ms] (74) typed CpxTrs (75) RewriteLemmaProof [LOWER BOUND(ID), 179 ms] (76) typed CpxTrs (77) RewriteLemmaProof [LOWER BOUND(ID), 137 ms] (78) typed CpxTrs (79) RewriteLemmaProof [LOWER BOUND(ID), 105 ms] (80) typed CpxTrs (81) RewriteLemmaProof [LOWER BOUND(ID), 98 ms] (82) typed CpxTrs (83) RewriteLemmaProof [LOWER BOUND(ID), 139 ms] (84) typed CpxTrs (85) RewriteLemmaProof [LOWER BOUND(ID), 92 ms] (86) typed CpxTrs (87) RewriteLemmaProof [LOWER BOUND(ID), 277 ms] (88) typed CpxTrs (89) RewriteLemmaProof [LOWER BOUND(ID), 139 ms] (90) typed CpxTrs (91) RewriteLemmaProof [LOWER BOUND(ID), 181 ms] (92) typed CpxTrs (93) RewriteLemmaProof [LOWER BOUND(ID), 194 ms] (94) typed CpxTrs (95) RewriteLemmaProof [LOWER BOUND(ID), 322 ms] (96) typed CpxTrs (97) RewriteLemmaProof [LOWER BOUND(ID), 256 ms] (98) typed CpxTrs (99) RewriteLemmaProof [LOWER BOUND(ID), 214 ms] (100) typed CpxTrs (101) RewriteLemmaProof [LOWER BOUND(ID), 181 ms] (102) typed CpxTrs (103) RewriteLemmaProof [LOWER BOUND(ID), 192 ms] (104) typed CpxTrs (105) RewriteLemmaProof [LOWER BOUND(ID), 161 ms] (106) typed CpxTrs (107) RewriteLemmaProof [LOWER BOUND(ID), 305 ms] (108) typed CpxTrs (109) RewriteLemmaProof [LOWER BOUND(ID), 160 ms] (110) typed CpxTrs (111) RewriteLemmaProof [LOWER BOUND(ID), 233 ms] (112) typed CpxTrs (113) RewriteLemmaProof [LOWER BOUND(ID), 276 ms] (114) typed CpxTrs (115) RewriteLemmaProof [LOWER BOUND(ID), 320 ms] (116) typed CpxTrs (117) RewriteLemmaProof [LOWER BOUND(ID), 359 ms] (118) typed CpxTrs (119) RewriteLemmaProof [LOWER BOUND(ID), 190 ms] (120) typed CpxTrs (121) RewriteLemmaProof [LOWER BOUND(ID), 326 ms] (122) typed CpxTrs (123) RewriteLemmaProof [LOWER BOUND(ID), 248 ms] (124) typed CpxTrs (125) RewriteLemmaProof [LOWER BOUND(ID), 265 ms] (126) typed CpxTrs (127) RewriteLemmaProof [LOWER BOUND(ID), 455 ms] (128) typed CpxTrs (129) RewriteLemmaProof [LOWER BOUND(ID), 219 ms] (130) typed CpxTrs (131) RewriteLemmaProof [LOWER BOUND(ID), 336 ms] (132) typed CpxTrs (133) RewriteLemmaProof [LOWER BOUND(ID), 136 ms] (134) typed CpxTrs (135) RewriteLemmaProof [LOWER BOUND(ID), 266 ms] (136) typed CpxTrs (137) RewriteLemmaProof [LOWER BOUND(ID), 269 ms] (138) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0)) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0)) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0, XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0) -> ok(0) proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) S is empty. Rewrite Strategy: FULL ---------------------------------------- (1) NestedDefinedSymbolProof (UPPER BOUND(ID)) The following defined symbols can occur below the 0th argument of top: proper, active The following defined symbols can occur below the 0th argument of proper: proper, active The following defined symbols can occur below the 0th argument of active: proper, active Hence, the left-hand sides of the following rules are not basic-reachable and can be removed: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0)) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0)) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0, XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) ---------------------------------------- (2) Obligation: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(tt) -> ok(tt) proper(nil) -> ok(nil) proper(0) -> ok(0) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) S is empty. Rewrite Strategy: FULL ---------------------------------------- (3) RcToIrcProof (BOTH BOUNDS(ID, ID)) Converted rc-obligation to irc-obligation. As the TRS is a non-duplicating overlay system, we have rc = irc. ---------------------------------------- (4) Obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(tt) -> ok(tt) proper(nil) -> ok(nil) proper(0) -> ok(0) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (5) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS to CDT ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: U101(mark(z0), z1, z2) -> mark(U101(z0, z1, z2)) U101(ok(z0), ok(z1), ok(z2)) -> ok(U101(z0, z1, z2)) U102(mark(z0), z1) -> mark(U102(z0, z1)) U102(ok(z0), ok(z1)) -> ok(U102(z0, z1)) U103(mark(z0)) -> mark(U103(z0)) U103(ok(z0)) -> ok(U103(z0)) U11(mark(z0), z1, z2) -> mark(U11(z0, z1, z2)) U11(ok(z0), ok(z1), ok(z2)) -> ok(U11(z0, z1, z2)) snd(mark(z0)) -> mark(snd(z0)) snd(ok(z0)) -> ok(snd(z0)) splitAt(mark(z0), z1) -> mark(splitAt(z0, z1)) splitAt(z0, mark(z1)) -> mark(splitAt(z0, z1)) splitAt(ok(z0), ok(z1)) -> ok(splitAt(z0, z1)) U111(mark(z0), z1) -> mark(U111(z0, z1)) U111(ok(z0), ok(z1)) -> ok(U111(z0, z1)) U112(mark(z0)) -> mark(U112(z0)) U112(ok(z0)) -> ok(U112(z0)) U121(mark(z0), z1) -> mark(U121(z0, z1)) U121(ok(z0), ok(z1)) -> ok(U121(z0, z1)) U122(mark(z0)) -> mark(U122(z0)) U122(ok(z0)) -> ok(U122(z0)) U131(mark(z0), z1, z2) -> mark(U131(z0, z1, z2)) U131(ok(z0), ok(z1), ok(z2)) -> ok(U131(z0, z1, z2)) U132(mark(z0), z1) -> mark(U132(z0, z1)) U132(ok(z0), ok(z1)) -> ok(U132(z0, z1)) U133(mark(z0)) -> mark(U133(z0)) U133(ok(z0)) -> ok(U133(z0)) U141(mark(z0), z1, z2) -> mark(U141(z0, z1, z2)) U141(ok(z0), ok(z1), ok(z2)) -> ok(U141(z0, z1, z2)) U142(mark(z0), z1) -> mark(U142(z0, z1)) U142(ok(z0), ok(z1)) -> ok(U142(z0, z1)) U143(mark(z0)) -> mark(U143(z0)) U143(ok(z0)) -> ok(U143(z0)) U151(mark(z0), z1, z2) -> mark(U151(z0, z1, z2)) U151(ok(z0), ok(z1), ok(z2)) -> ok(U151(z0, z1, z2)) U152(mark(z0), z1) -> mark(U152(z0, z1)) U152(ok(z0), ok(z1)) -> ok(U152(z0, z1)) U153(mark(z0)) -> mark(U153(z0)) U153(ok(z0)) -> ok(U153(z0)) U161(mark(z0), z1) -> mark(U161(z0, z1)) U161(ok(z0), ok(z1)) -> ok(U161(z0, z1)) cons(mark(z0), z1) -> mark(cons(z0, z1)) cons(ok(z0), ok(z1)) -> ok(cons(z0, z1)) natsFrom(mark(z0)) -> mark(natsFrom(z0)) natsFrom(ok(z0)) -> ok(natsFrom(z0)) s(mark(z0)) -> mark(s(z0)) s(ok(z0)) -> ok(s(z0)) U171(mark(z0), z1, z2) -> mark(U171(z0, z1, z2)) U171(ok(z0), ok(z1), ok(z2)) -> ok(U171(z0, z1, z2)) head(mark(z0)) -> mark(head(z0)) head(ok(z0)) -> ok(head(z0)) afterNth(mark(z0), z1) -> mark(afterNth(z0, z1)) afterNth(z0, mark(z1)) -> mark(afterNth(z0, z1)) afterNth(ok(z0), ok(z1)) -> ok(afterNth(z0, z1)) U181(mark(z0), z1) -> mark(U181(z0, z1)) U181(ok(z0), ok(z1)) -> ok(U181(z0, z1)) U191(mark(z0), z1) -> mark(U191(z0, z1)) U191(ok(z0), ok(z1)) -> ok(U191(z0, z1)) pair(mark(z0), z1) -> mark(pair(z0, z1)) pair(z0, mark(z1)) -> mark(pair(z0, z1)) pair(ok(z0), ok(z1)) -> ok(pair(z0, z1)) U201(mark(z0), z1, z2, z3) -> mark(U201(z0, z1, z2, z3)) U201(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U201(z0, z1, z2, z3)) U202(mark(z0), z1) -> mark(U202(z0, z1)) U202(ok(z0), ok(z1)) -> ok(U202(z0, z1)) U21(mark(z0), z1) -> mark(U21(z0, z1)) U21(ok(z0), ok(z1)) -> ok(U21(z0, z1)) U211(mark(z0), z1) -> mark(U211(z0, z1)) U211(ok(z0), ok(z1)) -> ok(U211(z0, z1)) U221(mark(z0), z1, z2) -> mark(U221(z0, z1, z2)) U221(ok(z0), ok(z1), ok(z2)) -> ok(U221(z0, z1, z2)) fst(mark(z0)) -> mark(fst(z0)) fst(ok(z0)) -> ok(fst(z0)) U31(mark(z0), z1) -> mark(U31(z0, z1)) U31(ok(z0), ok(z1)) -> ok(U31(z0, z1)) U41(mark(z0), z1, z2) -> mark(U41(z0, z1, z2)) U41(ok(z0), ok(z1), ok(z2)) -> ok(U41(z0, z1, z2)) U42(mark(z0), z1) -> mark(U42(z0, z1)) U42(ok(z0), ok(z1)) -> ok(U42(z0, z1)) U43(mark(z0)) -> mark(U43(z0)) U43(ok(z0)) -> ok(U43(z0)) U51(mark(z0), z1, z2) -> mark(U51(z0, z1, z2)) U51(ok(z0), ok(z1), ok(z2)) -> ok(U51(z0, z1, z2)) U52(mark(z0), z1) -> mark(U52(z0, z1)) U52(ok(z0), ok(z1)) -> ok(U52(z0, z1)) U53(mark(z0)) -> mark(U53(z0)) U53(ok(z0)) -> ok(U53(z0)) U61(mark(z0), z1) -> mark(U61(z0, z1)) U61(ok(z0), ok(z1)) -> ok(U61(z0, z1)) U62(mark(z0)) -> mark(U62(z0)) U62(ok(z0)) -> ok(U62(z0)) U71(mark(z0), z1) -> mark(U71(z0, z1)) U71(ok(z0), ok(z1)) -> ok(U71(z0, z1)) U72(mark(z0)) -> mark(U72(z0)) U72(ok(z0)) -> ok(U72(z0)) U81(mark(z0), z1) -> mark(U81(z0, z1)) U81(ok(z0), ok(z1)) -> ok(U81(z0, z1)) U82(mark(z0)) -> mark(U82(z0)) U82(ok(z0)) -> ok(U82(z0)) U91(mark(z0), z1) -> mark(U91(z0, z1)) U91(ok(z0), ok(z1)) -> ok(U91(z0, z1)) U92(mark(z0)) -> mark(U92(z0)) U92(ok(z0)) -> ok(U92(z0)) and(mark(z0), z1) -> mark(and(z0, z1)) and(ok(z0), ok(z1)) -> ok(and(z0, z1)) tail(mark(z0)) -> mark(tail(z0)) tail(ok(z0)) -> ok(tail(z0)) take(mark(z0), z1) -> mark(take(z0, z1)) take(z0, mark(z1)) -> mark(take(z0, z1)) take(ok(z0), ok(z1)) -> ok(take(z0, z1)) sel(mark(z0), z1) -> mark(sel(z0, z1)) sel(z0, mark(z1)) -> mark(sel(z0, z1)) sel(ok(z0), ok(z1)) -> ok(sel(z0, z1)) proper(tt) -> ok(tt) proper(nil) -> ok(nil) proper(0) -> ok(0) isNatural(ok(z0)) -> ok(isNatural(z0)) isLNat(ok(z0)) -> ok(isLNat(z0)) isPLNat(ok(z0)) -> ok(isPLNat(z0)) isNaturalKind(ok(z0)) -> ok(isNaturalKind(z0)) isLNatKind(ok(z0)) -> ok(isLNatKind(z0)) isPLNatKind(ok(z0)) -> ok(isPLNatKind(z0)) top(mark(z0)) -> top(proper(z0)) top(ok(z0)) -> top(active(z0)) Tuples: U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) PROPER(tt) -> c113 PROPER(nil) -> c114 PROPER(0) -> c115 ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0)), PROPER(z0)) TOP(ok(z0)) -> c123(TOP(active(z0))) S tuples: U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) PROPER(tt) -> c113 PROPER(nil) -> c114 PROPER(0) -> c115 ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0)), PROPER(z0)) TOP(ok(z0)) -> c123(TOP(active(z0))) K tuples:none Defined Rule Symbols: U101_3, U102_2, U103_1, U11_3, snd_1, splitAt_2, U111_2, U112_1, U121_2, U122_1, U131_3, U132_2, U133_1, U141_3, U142_2, U143_1, U151_3, U152_2, U153_1, U161_2, cons_2, natsFrom_1, s_1, U171_3, head_1, afterNth_2, U181_2, U191_2, pair_2, U201_4, U202_2, U21_2, U211_2, U221_3, fst_1, U31_2, U41_3, U42_2, U43_1, U51_3, U52_2, U53_1, U61_2, U62_1, U71_2, U72_1, U81_2, U82_1, U91_2, U92_1, and_2, tail_1, take_2, sel_2, proper_1, isNatural_1, isLNat_1, isPLNat_1, isNaturalKind_1, isLNatKind_1, isPLNatKind_1, top_1 Defined Pair Symbols: U101'_3, U102'_2, U103'_1, U11'_3, SND_1, SPLITAT_2, U111'_2, U112'_1, U121'_2, U122'_1, U131'_3, U132'_2, U133'_1, U141'_3, U142'_2, U143'_1, U151'_3, U152'_2, U153'_1, U161'_2, CONS_2, NATSFROM_1, S_1, U171'_3, HEAD_1, AFTERNTH_2, U181'_2, U191'_2, PAIR_2, U201'_4, U202'_2, U21'_2, U211'_2, U221'_3, FST_1, U31'_2, U41'_3, U42'_2, U43'_1, U51'_3, U52'_2, U53'_1, U61'_2, U62'_1, U71'_2, U72'_1, U81'_2, U82'_1, U91'_2, U92'_1, AND_2, TAIL_1, TAKE_2, SEL_2, PROPER_1, ISNATURAL_1, ISLNAT_1, ISPLNAT_1, ISNATURALKIND_1, ISLNATKIND_1, ISPLNATKIND_1, TOP_1 Compound Symbols: c_1, c1_1, c2_1, c3_1, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c11_1, c12_1, c13_1, c14_1, c15_1, c16_1, c17_1, c18_1, c19_1, c20_1, c21_1, c22_1, c23_1, c24_1, c25_1, c26_1, c27_1, c28_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_1, c35_1, c36_1, c37_1, c38_1, c39_1, c40_1, c41_1, c42_1, c43_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c66_1, c67_1, c68_1, c69_1, c70_1, c71_1, c72_1, c73_1, c74_1, c75_1, c76_1, c77_1, c78_1, c79_1, c80_1, c81_1, c82_1, c83_1, c84_1, c85_1, c86_1, c87_1, c88_1, c89_1, c90_1, c91_1, c92_1, c93_1, c94_1, c95_1, c96_1, c97_1, c98_1, c99_1, c100_1, c101_1, c102_1, c103_1, c104_1, c105_1, c106_1, c107_1, c108_1, c109_1, c110_1, c111_1, c112_1, c113, c114, c115, c116_1, c117_1, c118_1, c119_1, c120_1, c121_1, c122_2, c123_1 ---------------------------------------- (7) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 4 trailing nodes: PROPER(0) -> c115 PROPER(nil) -> c114 PROPER(tt) -> c113 TOP(ok(z0)) -> c123(TOP(active(z0))) ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: U101(mark(z0), z1, z2) -> mark(U101(z0, z1, z2)) U101(ok(z0), ok(z1), ok(z2)) -> ok(U101(z0, z1, z2)) U102(mark(z0), z1) -> mark(U102(z0, z1)) U102(ok(z0), ok(z1)) -> ok(U102(z0, z1)) U103(mark(z0)) -> mark(U103(z0)) U103(ok(z0)) -> ok(U103(z0)) U11(mark(z0), z1, z2) -> mark(U11(z0, z1, z2)) U11(ok(z0), ok(z1), ok(z2)) -> ok(U11(z0, z1, z2)) snd(mark(z0)) -> mark(snd(z0)) snd(ok(z0)) -> ok(snd(z0)) splitAt(mark(z0), z1) -> mark(splitAt(z0, z1)) splitAt(z0, mark(z1)) -> mark(splitAt(z0, z1)) splitAt(ok(z0), ok(z1)) -> ok(splitAt(z0, z1)) U111(mark(z0), z1) -> mark(U111(z0, z1)) U111(ok(z0), ok(z1)) -> ok(U111(z0, z1)) U112(mark(z0)) -> mark(U112(z0)) U112(ok(z0)) -> ok(U112(z0)) U121(mark(z0), z1) -> mark(U121(z0, z1)) U121(ok(z0), ok(z1)) -> ok(U121(z0, z1)) U122(mark(z0)) -> mark(U122(z0)) U122(ok(z0)) -> ok(U122(z0)) U131(mark(z0), z1, z2) -> mark(U131(z0, z1, z2)) U131(ok(z0), ok(z1), ok(z2)) -> ok(U131(z0, z1, z2)) U132(mark(z0), z1) -> mark(U132(z0, z1)) U132(ok(z0), ok(z1)) -> ok(U132(z0, z1)) U133(mark(z0)) -> mark(U133(z0)) U133(ok(z0)) -> ok(U133(z0)) U141(mark(z0), z1, z2) -> mark(U141(z0, z1, z2)) U141(ok(z0), ok(z1), ok(z2)) -> ok(U141(z0, z1, z2)) U142(mark(z0), z1) -> mark(U142(z0, z1)) U142(ok(z0), ok(z1)) -> ok(U142(z0, z1)) U143(mark(z0)) -> mark(U143(z0)) U143(ok(z0)) -> ok(U143(z0)) U151(mark(z0), z1, z2) -> mark(U151(z0, z1, z2)) U151(ok(z0), ok(z1), ok(z2)) -> ok(U151(z0, z1, z2)) U152(mark(z0), z1) -> mark(U152(z0, z1)) U152(ok(z0), ok(z1)) -> ok(U152(z0, z1)) U153(mark(z0)) -> mark(U153(z0)) U153(ok(z0)) -> ok(U153(z0)) U161(mark(z0), z1) -> mark(U161(z0, z1)) U161(ok(z0), ok(z1)) -> ok(U161(z0, z1)) cons(mark(z0), z1) -> mark(cons(z0, z1)) cons(ok(z0), ok(z1)) -> ok(cons(z0, z1)) natsFrom(mark(z0)) -> mark(natsFrom(z0)) natsFrom(ok(z0)) -> ok(natsFrom(z0)) s(mark(z0)) -> mark(s(z0)) s(ok(z0)) -> ok(s(z0)) U171(mark(z0), z1, z2) -> mark(U171(z0, z1, z2)) U171(ok(z0), ok(z1), ok(z2)) -> ok(U171(z0, z1, z2)) head(mark(z0)) -> mark(head(z0)) head(ok(z0)) -> ok(head(z0)) afterNth(mark(z0), z1) -> mark(afterNth(z0, z1)) afterNth(z0, mark(z1)) -> mark(afterNth(z0, z1)) afterNth(ok(z0), ok(z1)) -> ok(afterNth(z0, z1)) U181(mark(z0), z1) -> mark(U181(z0, z1)) U181(ok(z0), ok(z1)) -> ok(U181(z0, z1)) U191(mark(z0), z1) -> mark(U191(z0, z1)) U191(ok(z0), ok(z1)) -> ok(U191(z0, z1)) pair(mark(z0), z1) -> mark(pair(z0, z1)) pair(z0, mark(z1)) -> mark(pair(z0, z1)) pair(ok(z0), ok(z1)) -> ok(pair(z0, z1)) U201(mark(z0), z1, z2, z3) -> mark(U201(z0, z1, z2, z3)) U201(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U201(z0, z1, z2, z3)) U202(mark(z0), z1) -> mark(U202(z0, z1)) U202(ok(z0), ok(z1)) -> ok(U202(z0, z1)) U21(mark(z0), z1) -> mark(U21(z0, z1)) U21(ok(z0), ok(z1)) -> ok(U21(z0, z1)) U211(mark(z0), z1) -> mark(U211(z0, z1)) U211(ok(z0), ok(z1)) -> ok(U211(z0, z1)) U221(mark(z0), z1, z2) -> mark(U221(z0, z1, z2)) U221(ok(z0), ok(z1), ok(z2)) -> ok(U221(z0, z1, z2)) fst(mark(z0)) -> mark(fst(z0)) fst(ok(z0)) -> ok(fst(z0)) U31(mark(z0), z1) -> mark(U31(z0, z1)) U31(ok(z0), ok(z1)) -> ok(U31(z0, z1)) U41(mark(z0), z1, z2) -> mark(U41(z0, z1, z2)) U41(ok(z0), ok(z1), ok(z2)) -> ok(U41(z0, z1, z2)) U42(mark(z0), z1) -> mark(U42(z0, z1)) U42(ok(z0), ok(z1)) -> ok(U42(z0, z1)) U43(mark(z0)) -> mark(U43(z0)) U43(ok(z0)) -> ok(U43(z0)) U51(mark(z0), z1, z2) -> mark(U51(z0, z1, z2)) U51(ok(z0), ok(z1), ok(z2)) -> ok(U51(z0, z1, z2)) U52(mark(z0), z1) -> mark(U52(z0, z1)) U52(ok(z0), ok(z1)) -> ok(U52(z0, z1)) U53(mark(z0)) -> mark(U53(z0)) U53(ok(z0)) -> ok(U53(z0)) U61(mark(z0), z1) -> mark(U61(z0, z1)) U61(ok(z0), ok(z1)) -> ok(U61(z0, z1)) U62(mark(z0)) -> mark(U62(z0)) U62(ok(z0)) -> ok(U62(z0)) U71(mark(z0), z1) -> mark(U71(z0, z1)) U71(ok(z0), ok(z1)) -> ok(U71(z0, z1)) U72(mark(z0)) -> mark(U72(z0)) U72(ok(z0)) -> ok(U72(z0)) U81(mark(z0), z1) -> mark(U81(z0, z1)) U81(ok(z0), ok(z1)) -> ok(U81(z0, z1)) U82(mark(z0)) -> mark(U82(z0)) U82(ok(z0)) -> ok(U82(z0)) U91(mark(z0), z1) -> mark(U91(z0, z1)) U91(ok(z0), ok(z1)) -> ok(U91(z0, z1)) U92(mark(z0)) -> mark(U92(z0)) U92(ok(z0)) -> ok(U92(z0)) and(mark(z0), z1) -> mark(and(z0, z1)) and(ok(z0), ok(z1)) -> ok(and(z0, z1)) tail(mark(z0)) -> mark(tail(z0)) tail(ok(z0)) -> ok(tail(z0)) take(mark(z0), z1) -> mark(take(z0, z1)) take(z0, mark(z1)) -> mark(take(z0, z1)) take(ok(z0), ok(z1)) -> ok(take(z0, z1)) sel(mark(z0), z1) -> mark(sel(z0, z1)) sel(z0, mark(z1)) -> mark(sel(z0, z1)) sel(ok(z0), ok(z1)) -> ok(sel(z0, z1)) proper(tt) -> ok(tt) proper(nil) -> ok(nil) proper(0) -> ok(0) isNatural(ok(z0)) -> ok(isNatural(z0)) isLNat(ok(z0)) -> ok(isLNat(z0)) isPLNat(ok(z0)) -> ok(isPLNat(z0)) isNaturalKind(ok(z0)) -> ok(isNaturalKind(z0)) isLNatKind(ok(z0)) -> ok(isLNatKind(z0)) isPLNatKind(ok(z0)) -> ok(isPLNatKind(z0)) top(mark(z0)) -> top(proper(z0)) top(ok(z0)) -> top(active(z0)) Tuples: U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0)), PROPER(z0)) S tuples: U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0)), PROPER(z0)) K tuples:none Defined Rule Symbols: U101_3, U102_2, U103_1, U11_3, snd_1, splitAt_2, U111_2, U112_1, U121_2, U122_1, U131_3, U132_2, U133_1, U141_3, U142_2, U143_1, U151_3, U152_2, U153_1, U161_2, cons_2, natsFrom_1, s_1, U171_3, head_1, afterNth_2, U181_2, U191_2, pair_2, U201_4, U202_2, U21_2, U211_2, U221_3, fst_1, U31_2, U41_3, U42_2, U43_1, U51_3, U52_2, U53_1, U61_2, U62_1, U71_2, U72_1, U81_2, U82_1, U91_2, U92_1, and_2, tail_1, take_2, sel_2, proper_1, isNatural_1, isLNat_1, isPLNat_1, isNaturalKind_1, isLNatKind_1, isPLNatKind_1, top_1 Defined Pair Symbols: U101'_3, U102'_2, U103'_1, U11'_3, SND_1, SPLITAT_2, U111'_2, U112'_1, U121'_2, U122'_1, U131'_3, U132'_2, U133'_1, U141'_3, U142'_2, U143'_1, U151'_3, U152'_2, U153'_1, U161'_2, CONS_2, NATSFROM_1, S_1, U171'_3, HEAD_1, AFTERNTH_2, U181'_2, U191'_2, PAIR_2, U201'_4, U202'_2, U21'_2, U211'_2, U221'_3, FST_1, U31'_2, U41'_3, U42'_2, U43'_1, U51'_3, U52'_2, U53'_1, U61'_2, U62'_1, U71'_2, U72'_1, U81'_2, U82'_1, U91'_2, U92'_1, AND_2, TAIL_1, TAKE_2, SEL_2, ISNATURAL_1, ISLNAT_1, ISPLNAT_1, ISNATURALKIND_1, ISLNATKIND_1, ISPLNATKIND_1, TOP_1 Compound Symbols: c_1, c1_1, c2_1, c3_1, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c11_1, c12_1, c13_1, c14_1, c15_1, c16_1, c17_1, c18_1, c19_1, c20_1, c21_1, c22_1, c23_1, c24_1, c25_1, c26_1, c27_1, c28_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_1, c35_1, c36_1, c37_1, c38_1, c39_1, c40_1, c41_1, c42_1, c43_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c66_1, c67_1, c68_1, c69_1, c70_1, c71_1, c72_1, c73_1, c74_1, c75_1, c76_1, c77_1, c78_1, c79_1, c80_1, c81_1, c82_1, c83_1, c84_1, c85_1, c86_1, c87_1, c88_1, c89_1, c90_1, c91_1, c92_1, c93_1, c94_1, c95_1, c96_1, c97_1, c98_1, c99_1, c100_1, c101_1, c102_1, c103_1, c104_1, c105_1, c106_1, c107_1, c108_1, c109_1, c110_1, c111_1, c112_1, c116_1, c117_1, c118_1, c119_1, c120_1, c121_1, c122_2 ---------------------------------------- (9) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (10) Obligation: Complexity Dependency Tuples Problem Rules: U101(mark(z0), z1, z2) -> mark(U101(z0, z1, z2)) U101(ok(z0), ok(z1), ok(z2)) -> ok(U101(z0, z1, z2)) U102(mark(z0), z1) -> mark(U102(z0, z1)) U102(ok(z0), ok(z1)) -> ok(U102(z0, z1)) U103(mark(z0)) -> mark(U103(z0)) U103(ok(z0)) -> ok(U103(z0)) U11(mark(z0), z1, z2) -> mark(U11(z0, z1, z2)) U11(ok(z0), ok(z1), ok(z2)) -> ok(U11(z0, z1, z2)) snd(mark(z0)) -> mark(snd(z0)) snd(ok(z0)) -> ok(snd(z0)) splitAt(mark(z0), z1) -> mark(splitAt(z0, z1)) splitAt(z0, mark(z1)) -> mark(splitAt(z0, z1)) splitAt(ok(z0), ok(z1)) -> ok(splitAt(z0, z1)) U111(mark(z0), z1) -> mark(U111(z0, z1)) U111(ok(z0), ok(z1)) -> ok(U111(z0, z1)) U112(mark(z0)) -> mark(U112(z0)) U112(ok(z0)) -> ok(U112(z0)) U121(mark(z0), z1) -> mark(U121(z0, z1)) U121(ok(z0), ok(z1)) -> ok(U121(z0, z1)) U122(mark(z0)) -> mark(U122(z0)) U122(ok(z0)) -> ok(U122(z0)) U131(mark(z0), z1, z2) -> mark(U131(z0, z1, z2)) U131(ok(z0), ok(z1), ok(z2)) -> ok(U131(z0, z1, z2)) U132(mark(z0), z1) -> mark(U132(z0, z1)) U132(ok(z0), ok(z1)) -> ok(U132(z0, z1)) U133(mark(z0)) -> mark(U133(z0)) U133(ok(z0)) -> ok(U133(z0)) U141(mark(z0), z1, z2) -> mark(U141(z0, z1, z2)) U141(ok(z0), ok(z1), ok(z2)) -> ok(U141(z0, z1, z2)) U142(mark(z0), z1) -> mark(U142(z0, z1)) U142(ok(z0), ok(z1)) -> ok(U142(z0, z1)) U143(mark(z0)) -> mark(U143(z0)) U143(ok(z0)) -> ok(U143(z0)) U151(mark(z0), z1, z2) -> mark(U151(z0, z1, z2)) U151(ok(z0), ok(z1), ok(z2)) -> ok(U151(z0, z1, z2)) U152(mark(z0), z1) -> mark(U152(z0, z1)) U152(ok(z0), ok(z1)) -> ok(U152(z0, z1)) U153(mark(z0)) -> mark(U153(z0)) U153(ok(z0)) -> ok(U153(z0)) U161(mark(z0), z1) -> mark(U161(z0, z1)) U161(ok(z0), ok(z1)) -> ok(U161(z0, z1)) cons(mark(z0), z1) -> mark(cons(z0, z1)) cons(ok(z0), ok(z1)) -> ok(cons(z0, z1)) natsFrom(mark(z0)) -> mark(natsFrom(z0)) natsFrom(ok(z0)) -> ok(natsFrom(z0)) s(mark(z0)) -> mark(s(z0)) s(ok(z0)) -> ok(s(z0)) U171(mark(z0), z1, z2) -> mark(U171(z0, z1, z2)) U171(ok(z0), ok(z1), ok(z2)) -> ok(U171(z0, z1, z2)) head(mark(z0)) -> mark(head(z0)) head(ok(z0)) -> ok(head(z0)) afterNth(mark(z0), z1) -> mark(afterNth(z0, z1)) afterNth(z0, mark(z1)) -> mark(afterNth(z0, z1)) afterNth(ok(z0), ok(z1)) -> ok(afterNth(z0, z1)) U181(mark(z0), z1) -> mark(U181(z0, z1)) U181(ok(z0), ok(z1)) -> ok(U181(z0, z1)) U191(mark(z0), z1) -> mark(U191(z0, z1)) U191(ok(z0), ok(z1)) -> ok(U191(z0, z1)) pair(mark(z0), z1) -> mark(pair(z0, z1)) pair(z0, mark(z1)) -> mark(pair(z0, z1)) pair(ok(z0), ok(z1)) -> ok(pair(z0, z1)) U201(mark(z0), z1, z2, z3) -> mark(U201(z0, z1, z2, z3)) U201(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U201(z0, z1, z2, z3)) U202(mark(z0), z1) -> mark(U202(z0, z1)) U202(ok(z0), ok(z1)) -> ok(U202(z0, z1)) U21(mark(z0), z1) -> mark(U21(z0, z1)) U21(ok(z0), ok(z1)) -> ok(U21(z0, z1)) U211(mark(z0), z1) -> mark(U211(z0, z1)) U211(ok(z0), ok(z1)) -> ok(U211(z0, z1)) U221(mark(z0), z1, z2) -> mark(U221(z0, z1, z2)) U221(ok(z0), ok(z1), ok(z2)) -> ok(U221(z0, z1, z2)) fst(mark(z0)) -> mark(fst(z0)) fst(ok(z0)) -> ok(fst(z0)) U31(mark(z0), z1) -> mark(U31(z0, z1)) U31(ok(z0), ok(z1)) -> ok(U31(z0, z1)) U41(mark(z0), z1, z2) -> mark(U41(z0, z1, z2)) U41(ok(z0), ok(z1), ok(z2)) -> ok(U41(z0, z1, z2)) U42(mark(z0), z1) -> mark(U42(z0, z1)) U42(ok(z0), ok(z1)) -> ok(U42(z0, z1)) U43(mark(z0)) -> mark(U43(z0)) U43(ok(z0)) -> ok(U43(z0)) U51(mark(z0), z1, z2) -> mark(U51(z0, z1, z2)) U51(ok(z0), ok(z1), ok(z2)) -> ok(U51(z0, z1, z2)) U52(mark(z0), z1) -> mark(U52(z0, z1)) U52(ok(z0), ok(z1)) -> ok(U52(z0, z1)) U53(mark(z0)) -> mark(U53(z0)) U53(ok(z0)) -> ok(U53(z0)) U61(mark(z0), z1) -> mark(U61(z0, z1)) U61(ok(z0), ok(z1)) -> ok(U61(z0, z1)) U62(mark(z0)) -> mark(U62(z0)) U62(ok(z0)) -> ok(U62(z0)) U71(mark(z0), z1) -> mark(U71(z0, z1)) U71(ok(z0), ok(z1)) -> ok(U71(z0, z1)) U72(mark(z0)) -> mark(U72(z0)) U72(ok(z0)) -> ok(U72(z0)) U81(mark(z0), z1) -> mark(U81(z0, z1)) U81(ok(z0), ok(z1)) -> ok(U81(z0, z1)) U82(mark(z0)) -> mark(U82(z0)) U82(ok(z0)) -> ok(U82(z0)) U91(mark(z0), z1) -> mark(U91(z0, z1)) U91(ok(z0), ok(z1)) -> ok(U91(z0, z1)) U92(mark(z0)) -> mark(U92(z0)) U92(ok(z0)) -> ok(U92(z0)) and(mark(z0), z1) -> mark(and(z0, z1)) and(ok(z0), ok(z1)) -> ok(and(z0, z1)) tail(mark(z0)) -> mark(tail(z0)) tail(ok(z0)) -> ok(tail(z0)) take(mark(z0), z1) -> mark(take(z0, z1)) take(z0, mark(z1)) -> mark(take(z0, z1)) take(ok(z0), ok(z1)) -> ok(take(z0, z1)) sel(mark(z0), z1) -> mark(sel(z0, z1)) sel(z0, mark(z1)) -> mark(sel(z0, z1)) sel(ok(z0), ok(z1)) -> ok(sel(z0, z1)) proper(tt) -> ok(tt) proper(nil) -> ok(nil) proper(0) -> ok(0) isNatural(ok(z0)) -> ok(isNatural(z0)) isLNat(ok(z0)) -> ok(isLNat(z0)) isPLNat(ok(z0)) -> ok(isPLNat(z0)) isNaturalKind(ok(z0)) -> ok(isNaturalKind(z0)) isLNatKind(ok(z0)) -> ok(isLNatKind(z0)) isPLNatKind(ok(z0)) -> ok(isPLNatKind(z0)) top(mark(z0)) -> top(proper(z0)) top(ok(z0)) -> top(active(z0)) Tuples: U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0))) S tuples: U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0))) K tuples:none Defined Rule Symbols: U101_3, U102_2, U103_1, U11_3, snd_1, splitAt_2, U111_2, U112_1, U121_2, U122_1, U131_3, U132_2, U133_1, U141_3, U142_2, U143_1, U151_3, U152_2, U153_1, U161_2, cons_2, natsFrom_1, s_1, U171_3, head_1, afterNth_2, U181_2, U191_2, pair_2, U201_4, U202_2, U21_2, U211_2, U221_3, fst_1, U31_2, U41_3, U42_2, U43_1, U51_3, U52_2, U53_1, U61_2, U62_1, U71_2, U72_1, U81_2, U82_1, U91_2, U92_1, and_2, tail_1, take_2, sel_2, proper_1, isNatural_1, isLNat_1, isPLNat_1, isNaturalKind_1, isLNatKind_1, isPLNatKind_1, top_1 Defined Pair Symbols: U101'_3, U102'_2, U103'_1, U11'_3, SND_1, SPLITAT_2, U111'_2, U112'_1, U121'_2, U122'_1, U131'_3, U132'_2, U133'_1, U141'_3, U142'_2, U143'_1, U151'_3, U152'_2, U153'_1, U161'_2, CONS_2, NATSFROM_1, S_1, U171'_3, HEAD_1, AFTERNTH_2, U181'_2, U191'_2, PAIR_2, U201'_4, U202'_2, U21'_2, U211'_2, U221'_3, FST_1, U31'_2, U41'_3, U42'_2, U43'_1, U51'_3, U52'_2, U53'_1, U61'_2, U62'_1, U71'_2, U72'_1, U81'_2, U82'_1, U91'_2, U92'_1, AND_2, TAIL_1, TAKE_2, SEL_2, ISNATURAL_1, ISLNAT_1, ISPLNAT_1, ISNATURALKIND_1, ISLNATKIND_1, ISPLNATKIND_1, TOP_1 Compound Symbols: c_1, c1_1, c2_1, c3_1, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c11_1, c12_1, c13_1, c14_1, c15_1, c16_1, c17_1, c18_1, c19_1, c20_1, c21_1, c22_1, c23_1, c24_1, c25_1, c26_1, c27_1, c28_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_1, c35_1, c36_1, c37_1, c38_1, c39_1, c40_1, c41_1, c42_1, c43_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c66_1, c67_1, c68_1, c69_1, c70_1, c71_1, c72_1, c73_1, c74_1, c75_1, c76_1, c77_1, c78_1, c79_1, c80_1, c81_1, c82_1, c83_1, c84_1, c85_1, c86_1, c87_1, c88_1, c89_1, c90_1, c91_1, c92_1, c93_1, c94_1, c95_1, c96_1, c97_1, c98_1, c99_1, c100_1, c101_1, c102_1, c103_1, c104_1, c105_1, c106_1, c107_1, c108_1, c109_1, c110_1, c111_1, c112_1, c116_1, c117_1, c118_1, c119_1, c120_1, c121_1, c122_1 ---------------------------------------- (11) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: U101(mark(z0), z1, z2) -> mark(U101(z0, z1, z2)) U101(ok(z0), ok(z1), ok(z2)) -> ok(U101(z0, z1, z2)) U102(mark(z0), z1) -> mark(U102(z0, z1)) U102(ok(z0), ok(z1)) -> ok(U102(z0, z1)) U103(mark(z0)) -> mark(U103(z0)) U103(ok(z0)) -> ok(U103(z0)) U11(mark(z0), z1, z2) -> mark(U11(z0, z1, z2)) U11(ok(z0), ok(z1), ok(z2)) -> ok(U11(z0, z1, z2)) snd(mark(z0)) -> mark(snd(z0)) snd(ok(z0)) -> ok(snd(z0)) splitAt(mark(z0), z1) -> mark(splitAt(z0, z1)) splitAt(z0, mark(z1)) -> mark(splitAt(z0, z1)) splitAt(ok(z0), ok(z1)) -> ok(splitAt(z0, z1)) U111(mark(z0), z1) -> mark(U111(z0, z1)) U111(ok(z0), ok(z1)) -> ok(U111(z0, z1)) U112(mark(z0)) -> mark(U112(z0)) U112(ok(z0)) -> ok(U112(z0)) U121(mark(z0), z1) -> mark(U121(z0, z1)) U121(ok(z0), ok(z1)) -> ok(U121(z0, z1)) U122(mark(z0)) -> mark(U122(z0)) U122(ok(z0)) -> ok(U122(z0)) U131(mark(z0), z1, z2) -> mark(U131(z0, z1, z2)) U131(ok(z0), ok(z1), ok(z2)) -> ok(U131(z0, z1, z2)) U132(mark(z0), z1) -> mark(U132(z0, z1)) U132(ok(z0), ok(z1)) -> ok(U132(z0, z1)) U133(mark(z0)) -> mark(U133(z0)) U133(ok(z0)) -> ok(U133(z0)) U141(mark(z0), z1, z2) -> mark(U141(z0, z1, z2)) U141(ok(z0), ok(z1), ok(z2)) -> ok(U141(z0, z1, z2)) U142(mark(z0), z1) -> mark(U142(z0, z1)) U142(ok(z0), ok(z1)) -> ok(U142(z0, z1)) U143(mark(z0)) -> mark(U143(z0)) U143(ok(z0)) -> ok(U143(z0)) U151(mark(z0), z1, z2) -> mark(U151(z0, z1, z2)) U151(ok(z0), ok(z1), ok(z2)) -> ok(U151(z0, z1, z2)) U152(mark(z0), z1) -> mark(U152(z0, z1)) U152(ok(z0), ok(z1)) -> ok(U152(z0, z1)) U153(mark(z0)) -> mark(U153(z0)) U153(ok(z0)) -> ok(U153(z0)) U161(mark(z0), z1) -> mark(U161(z0, z1)) U161(ok(z0), ok(z1)) -> ok(U161(z0, z1)) cons(mark(z0), z1) -> mark(cons(z0, z1)) cons(ok(z0), ok(z1)) -> ok(cons(z0, z1)) natsFrom(mark(z0)) -> mark(natsFrom(z0)) natsFrom(ok(z0)) -> ok(natsFrom(z0)) s(mark(z0)) -> mark(s(z0)) s(ok(z0)) -> ok(s(z0)) U171(mark(z0), z1, z2) -> mark(U171(z0, z1, z2)) U171(ok(z0), ok(z1), ok(z2)) -> ok(U171(z0, z1, z2)) head(mark(z0)) -> mark(head(z0)) head(ok(z0)) -> ok(head(z0)) afterNth(mark(z0), z1) -> mark(afterNth(z0, z1)) afterNth(z0, mark(z1)) -> mark(afterNth(z0, z1)) afterNth(ok(z0), ok(z1)) -> ok(afterNth(z0, z1)) U181(mark(z0), z1) -> mark(U181(z0, z1)) U181(ok(z0), ok(z1)) -> ok(U181(z0, z1)) U191(mark(z0), z1) -> mark(U191(z0, z1)) U191(ok(z0), ok(z1)) -> ok(U191(z0, z1)) pair(mark(z0), z1) -> mark(pair(z0, z1)) pair(z0, mark(z1)) -> mark(pair(z0, z1)) pair(ok(z0), ok(z1)) -> ok(pair(z0, z1)) U201(mark(z0), z1, z2, z3) -> mark(U201(z0, z1, z2, z3)) U201(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U201(z0, z1, z2, z3)) U202(mark(z0), z1) -> mark(U202(z0, z1)) U202(ok(z0), ok(z1)) -> ok(U202(z0, z1)) U21(mark(z0), z1) -> mark(U21(z0, z1)) U21(ok(z0), ok(z1)) -> ok(U21(z0, z1)) U211(mark(z0), z1) -> mark(U211(z0, z1)) U211(ok(z0), ok(z1)) -> ok(U211(z0, z1)) U221(mark(z0), z1, z2) -> mark(U221(z0, z1, z2)) U221(ok(z0), ok(z1), ok(z2)) -> ok(U221(z0, z1, z2)) fst(mark(z0)) -> mark(fst(z0)) fst(ok(z0)) -> ok(fst(z0)) U31(mark(z0), z1) -> mark(U31(z0, z1)) U31(ok(z0), ok(z1)) -> ok(U31(z0, z1)) U41(mark(z0), z1, z2) -> mark(U41(z0, z1, z2)) U41(ok(z0), ok(z1), ok(z2)) -> ok(U41(z0, z1, z2)) U42(mark(z0), z1) -> mark(U42(z0, z1)) U42(ok(z0), ok(z1)) -> ok(U42(z0, z1)) U43(mark(z0)) -> mark(U43(z0)) U43(ok(z0)) -> ok(U43(z0)) U51(mark(z0), z1, z2) -> mark(U51(z0, z1, z2)) U51(ok(z0), ok(z1), ok(z2)) -> ok(U51(z0, z1, z2)) U52(mark(z0), z1) -> mark(U52(z0, z1)) U52(ok(z0), ok(z1)) -> ok(U52(z0, z1)) U53(mark(z0)) -> mark(U53(z0)) U53(ok(z0)) -> ok(U53(z0)) U61(mark(z0), z1) -> mark(U61(z0, z1)) U61(ok(z0), ok(z1)) -> ok(U61(z0, z1)) U62(mark(z0)) -> mark(U62(z0)) U62(ok(z0)) -> ok(U62(z0)) U71(mark(z0), z1) -> mark(U71(z0, z1)) U71(ok(z0), ok(z1)) -> ok(U71(z0, z1)) U72(mark(z0)) -> mark(U72(z0)) U72(ok(z0)) -> ok(U72(z0)) U81(mark(z0), z1) -> mark(U81(z0, z1)) U81(ok(z0), ok(z1)) -> ok(U81(z0, z1)) U82(mark(z0)) -> mark(U82(z0)) U82(ok(z0)) -> ok(U82(z0)) U91(mark(z0), z1) -> mark(U91(z0, z1)) U91(ok(z0), ok(z1)) -> ok(U91(z0, z1)) U92(mark(z0)) -> mark(U92(z0)) U92(ok(z0)) -> ok(U92(z0)) and(mark(z0), z1) -> mark(and(z0, z1)) and(ok(z0), ok(z1)) -> ok(and(z0, z1)) tail(mark(z0)) -> mark(tail(z0)) tail(ok(z0)) -> ok(tail(z0)) take(mark(z0), z1) -> mark(take(z0, z1)) take(z0, mark(z1)) -> mark(take(z0, z1)) take(ok(z0), ok(z1)) -> ok(take(z0, z1)) sel(mark(z0), z1) -> mark(sel(z0, z1)) sel(z0, mark(z1)) -> mark(sel(z0, z1)) sel(ok(z0), ok(z1)) -> ok(sel(z0, z1)) isNatural(ok(z0)) -> ok(isNatural(z0)) isLNat(ok(z0)) -> ok(isLNat(z0)) isPLNat(ok(z0)) -> ok(isPLNat(z0)) isNaturalKind(ok(z0)) -> ok(isNaturalKind(z0)) isLNatKind(ok(z0)) -> ok(isLNatKind(z0)) isPLNatKind(ok(z0)) -> ok(isPLNatKind(z0)) top(mark(z0)) -> top(proper(z0)) top(ok(z0)) -> top(active(z0)) ---------------------------------------- (12) Obligation: Complexity Dependency Tuples Problem Rules: proper(tt) -> ok(tt) proper(nil) -> ok(nil) proper(0) -> ok(0) Tuples: U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0))) S tuples: U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0))) K tuples:none Defined Rule Symbols: proper_1 Defined Pair Symbols: U101'_3, U102'_2, U103'_1, U11'_3, SND_1, SPLITAT_2, U111'_2, U112'_1, U121'_2, U122'_1, U131'_3, U132'_2, U133'_1, U141'_3, U142'_2, U143'_1, U151'_3, U152'_2, U153'_1, U161'_2, CONS_2, NATSFROM_1, S_1, U171'_3, HEAD_1, AFTERNTH_2, U181'_2, U191'_2, PAIR_2, U201'_4, U202'_2, U21'_2, U211'_2, U221'_3, FST_1, U31'_2, U41'_3, U42'_2, U43'_1, U51'_3, U52'_2, U53'_1, U61'_2, U62'_1, U71'_2, U72'_1, U81'_2, U82'_1, U91'_2, U92'_1, AND_2, TAIL_1, TAKE_2, SEL_2, ISNATURAL_1, ISLNAT_1, ISPLNAT_1, ISNATURALKIND_1, ISLNATKIND_1, ISPLNATKIND_1, TOP_1 Compound Symbols: c_1, c1_1, c2_1, c3_1, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c11_1, c12_1, c13_1, c14_1, c15_1, c16_1, c17_1, c18_1, c19_1, c20_1, c21_1, c22_1, c23_1, c24_1, c25_1, c26_1, c27_1, c28_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_1, c35_1, c36_1, c37_1, c38_1, c39_1, c40_1, c41_1, c42_1, c43_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c66_1, c67_1, c68_1, c69_1, c70_1, c71_1, c72_1, c73_1, c74_1, c75_1, c76_1, c77_1, c78_1, c79_1, c80_1, c81_1, c82_1, c83_1, c84_1, c85_1, c86_1, c87_1, c88_1, c89_1, c90_1, c91_1, c92_1, c93_1, c94_1, c95_1, c96_1, c97_1, c98_1, c99_1, c100_1, c101_1, c102_1, c103_1, c104_1, c105_1, c106_1, c107_1, c108_1, c109_1, c110_1, c111_1, c112_1, c116_1, c117_1, c118_1, c119_1, c120_1, c121_1, c122_1 ---------------------------------------- (13) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) We considered the (Usable) Rules:none And the Tuples: U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [2] POL(AFTERNTH(x_1, x_2)) = 0 POL(AND(x_1, x_2)) = 0 POL(CONS(x_1, x_2)) = 0 POL(FST(x_1)) = 0 POL(HEAD(x_1)) = 0 POL(ISLNAT(x_1)) = 0 POL(ISLNATKIND(x_1)) = 0 POL(ISNATURAL(x_1)) = 0 POL(ISNATURALKIND(x_1)) = 0 POL(ISPLNAT(x_1)) = [2]x_1^2 POL(ISPLNATKIND(x_1)) = [2]x_1^2 POL(NATSFROM(x_1)) = 0 POL(PAIR(x_1, x_2)) = 0 POL(S(x_1)) = 0 POL(SEL(x_1, x_2)) = 0 POL(SND(x_1)) = 0 POL(SPLITAT(x_1, x_2)) = x_1 POL(TAIL(x_1)) = 0 POL(TAKE(x_1, x_2)) = 0 POL(TOP(x_1)) = 0 POL(U101'(x_1, x_2, x_3)) = 0 POL(U102'(x_1, x_2)) = 0 POL(U103'(x_1)) = 0 POL(U11'(x_1, x_2, x_3)) = 0 POL(U111'(x_1, x_2)) = 0 POL(U112'(x_1)) = 0 POL(U121'(x_1, x_2)) = 0 POL(U122'(x_1)) = 0 POL(U131'(x_1, x_2, x_3)) = 0 POL(U132'(x_1, x_2)) = 0 POL(U133'(x_1)) = 0 POL(U141'(x_1, x_2, x_3)) = 0 POL(U142'(x_1, x_2)) = 0 POL(U143'(x_1)) = 0 POL(U151'(x_1, x_2, x_3)) = 0 POL(U152'(x_1, x_2)) = 0 POL(U153'(x_1)) = 0 POL(U161'(x_1, x_2)) = 0 POL(U171'(x_1, x_2, x_3)) = 0 POL(U181'(x_1, x_2)) = 0 POL(U191'(x_1, x_2)) = 0 POL(U201'(x_1, x_2, x_3, x_4)) = 0 POL(U202'(x_1, x_2)) = 0 POL(U21'(x_1, x_2)) = 0 POL(U211'(x_1, x_2)) = 0 POL(U221'(x_1, x_2, x_3)) = 0 POL(U31'(x_1, x_2)) = 0 POL(U41'(x_1, x_2, x_3)) = 0 POL(U42'(x_1, x_2)) = 0 POL(U43'(x_1)) = 0 POL(U51'(x_1, x_2, x_3)) = 0 POL(U52'(x_1, x_2)) = 0 POL(U53'(x_1)) = 0 POL(U61'(x_1, x_2)) = 0 POL(U62'(x_1)) = 0 POL(U71'(x_1, x_2)) = 0 POL(U72'(x_1)) = 0 POL(U81'(x_1, x_2)) = 0 POL(U82'(x_1)) = 0 POL(U91'(x_1, x_2)) = 0 POL(U92'(x_1)) = 0 POL(c(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c10(x_1)) = x_1 POL(c100(x_1)) = x_1 POL(c101(x_1)) = x_1 POL(c102(x_1)) = x_1 POL(c103(x_1)) = x_1 POL(c104(x_1)) = x_1 POL(c105(x_1)) = x_1 POL(c106(x_1)) = x_1 POL(c107(x_1)) = x_1 POL(c108(x_1)) = x_1 POL(c109(x_1)) = x_1 POL(c11(x_1)) = x_1 POL(c110(x_1)) = x_1 POL(c111(x_1)) = x_1 POL(c112(x_1)) = x_1 POL(c116(x_1)) = x_1 POL(c117(x_1)) = x_1 POL(c118(x_1)) = x_1 POL(c119(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c120(x_1)) = x_1 POL(c121(x_1)) = x_1 POL(c122(x_1)) = x_1 POL(c13(x_1)) = x_1 POL(c14(x_1)) = x_1 POL(c15(x_1)) = x_1 POL(c16(x_1)) = x_1 POL(c17(x_1)) = x_1 POL(c18(x_1)) = x_1 POL(c19(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c21(x_1)) = x_1 POL(c22(x_1)) = x_1 POL(c23(x_1)) = x_1 POL(c24(x_1)) = x_1 POL(c25(x_1)) = x_1 POL(c26(x_1)) = x_1 POL(c27(x_1)) = x_1 POL(c28(x_1)) = x_1 POL(c29(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c30(x_1)) = x_1 POL(c31(x_1)) = x_1 POL(c32(x_1)) = x_1 POL(c33(x_1)) = x_1 POL(c34(x_1)) = x_1 POL(c35(x_1)) = x_1 POL(c36(x_1)) = x_1 POL(c37(x_1)) = x_1 POL(c38(x_1)) = x_1 POL(c39(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c40(x_1)) = x_1 POL(c41(x_1)) = x_1 POL(c42(x_1)) = x_1 POL(c43(x_1)) = x_1 POL(c44(x_1)) = x_1 POL(c45(x_1)) = x_1 POL(c46(x_1)) = x_1 POL(c47(x_1)) = x_1 POL(c48(x_1)) = x_1 POL(c49(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c50(x_1)) = x_1 POL(c51(x_1)) = x_1 POL(c52(x_1)) = x_1 POL(c53(x_1)) = x_1 POL(c54(x_1)) = x_1 POL(c55(x_1)) = x_1 POL(c56(x_1)) = x_1 POL(c57(x_1)) = x_1 POL(c58(x_1)) = x_1 POL(c59(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c60(x_1)) = x_1 POL(c61(x_1)) = x_1 POL(c62(x_1)) = x_1 POL(c63(x_1)) = x_1 POL(c64(x_1)) = x_1 POL(c65(x_1)) = x_1 POL(c66(x_1)) = x_1 POL(c67(x_1)) = x_1 POL(c68(x_1)) = x_1 POL(c69(x_1)) = x_1 POL(c7(x_1)) = x_1 POL(c70(x_1)) = x_1 POL(c71(x_1)) = x_1 POL(c72(x_1)) = x_1 POL(c73(x_1)) = x_1 POL(c74(x_1)) = x_1 POL(c75(x_1)) = x_1 POL(c76(x_1)) = x_1 POL(c77(x_1)) = x_1 POL(c78(x_1)) = x_1 POL(c79(x_1)) = x_1 POL(c8(x_1)) = x_1 POL(c80(x_1)) = x_1 POL(c81(x_1)) = x_1 POL(c82(x_1)) = x_1 POL(c83(x_1)) = x_1 POL(c84(x_1)) = x_1 POL(c85(x_1)) = x_1 POL(c86(x_1)) = x_1 POL(c87(x_1)) = x_1 POL(c88(x_1)) = x_1 POL(c89(x_1)) = x_1 POL(c9(x_1)) = x_1 POL(c90(x_1)) = x_1 POL(c91(x_1)) = x_1 POL(c92(x_1)) = x_1 POL(c93(x_1)) = x_1 POL(c94(x_1)) = x_1 POL(c95(x_1)) = x_1 POL(c96(x_1)) = x_1 POL(c97(x_1)) = x_1 POL(c98(x_1)) = x_1 POL(c99(x_1)) = x_1 POL(mark(x_1)) = [1] + x_1 POL(nil) = 0 POL(ok(x_1)) = [2] + x_1 POL(proper(x_1)) = [2] + [2]x_1^2 POL(tt) = [2] ---------------------------------------- (14) Obligation: Complexity Dependency Tuples Problem Rules: proper(tt) -> ok(tt) proper(nil) -> ok(nil) proper(0) -> ok(0) Tuples: U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0))) S tuples: U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0))) K tuples: SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) Defined Rule Symbols: proper_1 Defined Pair Symbols: U101'_3, U102'_2, U103'_1, U11'_3, SND_1, SPLITAT_2, U111'_2, U112'_1, U121'_2, U122'_1, U131'_3, U132'_2, U133'_1, U141'_3, U142'_2, U143'_1, U151'_3, U152'_2, U153'_1, U161'_2, CONS_2, NATSFROM_1, S_1, U171'_3, HEAD_1, AFTERNTH_2, U181'_2, U191'_2, PAIR_2, U201'_4, U202'_2, U21'_2, U211'_2, U221'_3, FST_1, U31'_2, U41'_3, U42'_2, U43'_1, U51'_3, U52'_2, U53'_1, U61'_2, U62'_1, U71'_2, U72'_1, U81'_2, U82'_1, U91'_2, U92'_1, AND_2, TAIL_1, TAKE_2, SEL_2, ISNATURAL_1, ISLNAT_1, ISPLNAT_1, ISNATURALKIND_1, ISLNATKIND_1, ISPLNATKIND_1, TOP_1 Compound Symbols: c_1, c1_1, c2_1, c3_1, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c11_1, c12_1, c13_1, c14_1, c15_1, c16_1, c17_1, c18_1, c19_1, c20_1, c21_1, c22_1, c23_1, c24_1, c25_1, c26_1, c27_1, c28_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_1, c35_1, c36_1, c37_1, c38_1, c39_1, c40_1, c41_1, c42_1, c43_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c66_1, c67_1, c68_1, c69_1, c70_1, c71_1, c72_1, c73_1, c74_1, c75_1, c76_1, c77_1, c78_1, c79_1, c80_1, c81_1, c82_1, c83_1, c84_1, c85_1, c86_1, c87_1, c88_1, c89_1, c90_1, c91_1, c92_1, c93_1, c94_1, c95_1, c96_1, c97_1, c98_1, c99_1, c100_1, c101_1, c102_1, c103_1, c104_1, c105_1, c106_1, c107_1, c108_1, c109_1, c110_1, c111_1, c112_1, c116_1, c117_1, c118_1, c119_1, c120_1, c121_1, c122_1 ---------------------------------------- (15) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) We considered the (Usable) Rules: proper(tt) -> ok(tt) proper(nil) -> ok(nil) proper(0) -> ok(0) And the Tuples: U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(AFTERNTH(x_1, x_2)) = x_1 + x_2 POL(AND(x_1, x_2)) = x_1 + x_2 POL(CONS(x_1, x_2)) = x_1 + x_2 POL(FST(x_1)) = x_1 POL(HEAD(x_1)) = x_1 POL(ISLNAT(x_1)) = x_1 POL(ISLNATKIND(x_1)) = x_1 POL(ISNATURAL(x_1)) = x_1 POL(ISNATURALKIND(x_1)) = x_1 POL(ISPLNAT(x_1)) = x_1 POL(ISPLNATKIND(x_1)) = x_1 POL(NATSFROM(x_1)) = x_1 POL(PAIR(x_1, x_2)) = x_1 + x_2 POL(S(x_1)) = x_1 POL(SEL(x_1, x_2)) = x_1 + x_2 POL(SND(x_1)) = x_1 POL(SPLITAT(x_1, x_2)) = x_1 + x_2 POL(TAIL(x_1)) = x_1 POL(TAKE(x_1, x_2)) = x_1 + x_2 POL(TOP(x_1)) = x_1 POL(U101'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U102'(x_1, x_2)) = x_1 + x_2 POL(U103'(x_1)) = x_1 POL(U11'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U111'(x_1, x_2)) = x_1 + x_2 POL(U112'(x_1)) = x_1 POL(U121'(x_1, x_2)) = x_1 + x_2 POL(U122'(x_1)) = x_1 POL(U131'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U132'(x_1, x_2)) = x_1 + x_2 POL(U133'(x_1)) = x_1 POL(U141'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U142'(x_1, x_2)) = x_1 + x_2 POL(U143'(x_1)) = x_1 POL(U151'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U152'(x_1, x_2)) = x_1 + x_2 POL(U153'(x_1)) = x_1 POL(U161'(x_1, x_2)) = x_1 + x_2 POL(U171'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U181'(x_1, x_2)) = x_1 + x_2 POL(U191'(x_1, x_2)) = x_1 + x_2 POL(U201'(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 POL(U202'(x_1, x_2)) = x_1 + x_2 POL(U21'(x_1, x_2)) = x_1 + x_2 POL(U211'(x_1, x_2)) = x_1 + x_2 POL(U221'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U31'(x_1, x_2)) = x_1 + x_2 POL(U41'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U42'(x_1, x_2)) = x_1 + x_2 POL(U43'(x_1)) = x_1 POL(U51'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U52'(x_1, x_2)) = x_1 + x_2 POL(U53'(x_1)) = x_1 POL(U61'(x_1, x_2)) = x_1 + x_2 POL(U62'(x_1)) = x_1 POL(U71'(x_1, x_2)) = x_1 + x_2 POL(U72'(x_1)) = x_1 POL(U81'(x_1, x_2)) = x_1 + x_2 POL(U82'(x_1)) = x_1 POL(U91'(x_1, x_2)) = x_1 + x_2 POL(U92'(x_1)) = x_1 POL(c(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c10(x_1)) = x_1 POL(c100(x_1)) = x_1 POL(c101(x_1)) = x_1 POL(c102(x_1)) = x_1 POL(c103(x_1)) = x_1 POL(c104(x_1)) = x_1 POL(c105(x_1)) = x_1 POL(c106(x_1)) = x_1 POL(c107(x_1)) = x_1 POL(c108(x_1)) = x_1 POL(c109(x_1)) = x_1 POL(c11(x_1)) = x_1 POL(c110(x_1)) = x_1 POL(c111(x_1)) = x_1 POL(c112(x_1)) = x_1 POL(c116(x_1)) = x_1 POL(c117(x_1)) = x_1 POL(c118(x_1)) = x_1 POL(c119(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c120(x_1)) = x_1 POL(c121(x_1)) = x_1 POL(c122(x_1)) = x_1 POL(c13(x_1)) = x_1 POL(c14(x_1)) = x_1 POL(c15(x_1)) = x_1 POL(c16(x_1)) = x_1 POL(c17(x_1)) = x_1 POL(c18(x_1)) = x_1 POL(c19(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c21(x_1)) = x_1 POL(c22(x_1)) = x_1 POL(c23(x_1)) = x_1 POL(c24(x_1)) = x_1 POL(c25(x_1)) = x_1 POL(c26(x_1)) = x_1 POL(c27(x_1)) = x_1 POL(c28(x_1)) = x_1 POL(c29(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c30(x_1)) = x_1 POL(c31(x_1)) = x_1 POL(c32(x_1)) = x_1 POL(c33(x_1)) = x_1 POL(c34(x_1)) = x_1 POL(c35(x_1)) = x_1 POL(c36(x_1)) = x_1 POL(c37(x_1)) = x_1 POL(c38(x_1)) = x_1 POL(c39(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c40(x_1)) = x_1 POL(c41(x_1)) = x_1 POL(c42(x_1)) = x_1 POL(c43(x_1)) = x_1 POL(c44(x_1)) = x_1 POL(c45(x_1)) = x_1 POL(c46(x_1)) = x_1 POL(c47(x_1)) = x_1 POL(c48(x_1)) = x_1 POL(c49(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c50(x_1)) = x_1 POL(c51(x_1)) = x_1 POL(c52(x_1)) = x_1 POL(c53(x_1)) = x_1 POL(c54(x_1)) = x_1 POL(c55(x_1)) = x_1 POL(c56(x_1)) = x_1 POL(c57(x_1)) = x_1 POL(c58(x_1)) = x_1 POL(c59(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c60(x_1)) = x_1 POL(c61(x_1)) = x_1 POL(c62(x_1)) = x_1 POL(c63(x_1)) = x_1 POL(c64(x_1)) = x_1 POL(c65(x_1)) = x_1 POL(c66(x_1)) = x_1 POL(c67(x_1)) = x_1 POL(c68(x_1)) = x_1 POL(c69(x_1)) = x_1 POL(c7(x_1)) = x_1 POL(c70(x_1)) = x_1 POL(c71(x_1)) = x_1 POL(c72(x_1)) = x_1 POL(c73(x_1)) = x_1 POL(c74(x_1)) = x_1 POL(c75(x_1)) = x_1 POL(c76(x_1)) = x_1 POL(c77(x_1)) = x_1 POL(c78(x_1)) = x_1 POL(c79(x_1)) = x_1 POL(c8(x_1)) = x_1 POL(c80(x_1)) = x_1 POL(c81(x_1)) = x_1 POL(c82(x_1)) = x_1 POL(c83(x_1)) = x_1 POL(c84(x_1)) = x_1 POL(c85(x_1)) = x_1 POL(c86(x_1)) = x_1 POL(c87(x_1)) = x_1 POL(c88(x_1)) = x_1 POL(c89(x_1)) = x_1 POL(c9(x_1)) = x_1 POL(c90(x_1)) = x_1 POL(c91(x_1)) = x_1 POL(c92(x_1)) = x_1 POL(c93(x_1)) = x_1 POL(c94(x_1)) = x_1 POL(c95(x_1)) = x_1 POL(c96(x_1)) = x_1 POL(c97(x_1)) = x_1 POL(c98(x_1)) = x_1 POL(c99(x_1)) = x_1 POL(mark(x_1)) = [1] + x_1 POL(nil) = [1] POL(ok(x_1)) = [1] + x_1 POL(proper(x_1)) = [1] + x_1 POL(tt) = [1] ---------------------------------------- (16) Obligation: Complexity Dependency Tuples Problem Rules: proper(tt) -> ok(tt) proper(nil) -> ok(nil) proper(0) -> ok(0) Tuples: U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0))) S tuples: TOP(mark(z0)) -> c122(TOP(proper(z0))) K tuples: SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) Defined Rule Symbols: proper_1 Defined Pair Symbols: U101'_3, U102'_2, U103'_1, U11'_3, SND_1, SPLITAT_2, U111'_2, U112'_1, U121'_2, U122'_1, U131'_3, U132'_2, U133'_1, U141'_3, U142'_2, U143'_1, U151'_3, U152'_2, U153'_1, U161'_2, CONS_2, NATSFROM_1, S_1, U171'_3, HEAD_1, AFTERNTH_2, U181'_2, U191'_2, PAIR_2, U201'_4, U202'_2, U21'_2, U211'_2, U221'_3, FST_1, U31'_2, U41'_3, U42'_2, U43'_1, U51'_3, U52'_2, U53'_1, U61'_2, U62'_1, U71'_2, U72'_1, U81'_2, U82'_1, U91'_2, U92'_1, AND_2, TAIL_1, TAKE_2, SEL_2, ISNATURAL_1, ISLNAT_1, ISPLNAT_1, ISNATURALKIND_1, ISLNATKIND_1, ISPLNATKIND_1, TOP_1 Compound Symbols: c_1, c1_1, c2_1, c3_1, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c11_1, c12_1, c13_1, c14_1, c15_1, c16_1, c17_1, c18_1, c19_1, c20_1, c21_1, c22_1, c23_1, c24_1, c25_1, c26_1, c27_1, c28_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_1, c35_1, c36_1, c37_1, c38_1, c39_1, c40_1, c41_1, c42_1, c43_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c66_1, c67_1, c68_1, c69_1, c70_1, c71_1, c72_1, c73_1, c74_1, c75_1, c76_1, c77_1, c78_1, c79_1, c80_1, c81_1, c82_1, c83_1, c84_1, c85_1, c86_1, c87_1, c88_1, c89_1, c90_1, c91_1, c92_1, c93_1, c94_1, c95_1, c96_1, c97_1, c98_1, c99_1, c100_1, c101_1, c102_1, c103_1, c104_1, c105_1, c106_1, c107_1, c108_1, c109_1, c110_1, c111_1, c112_1, c116_1, c117_1, c118_1, c119_1, c120_1, c121_1, c122_1 ---------------------------------------- (17) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. TOP(mark(z0)) -> c122(TOP(proper(z0))) We considered the (Usable) Rules: proper(tt) -> ok(tt) proper(nil) -> ok(nil) proper(0) -> ok(0) And the Tuples: U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(AFTERNTH(x_1, x_2)) = x_1 + x_2 POL(AND(x_1, x_2)) = x_1 + x_2 POL(CONS(x_1, x_2)) = x_1 + x_2 POL(FST(x_1)) = x_1 POL(HEAD(x_1)) = x_1 POL(ISLNAT(x_1)) = x_1 POL(ISLNATKIND(x_1)) = x_1 POL(ISNATURAL(x_1)) = x_1 POL(ISNATURALKIND(x_1)) = x_1 POL(ISPLNAT(x_1)) = x_1 POL(ISPLNATKIND(x_1)) = x_1 POL(NATSFROM(x_1)) = x_1 POL(PAIR(x_1, x_2)) = x_1 + x_2 POL(S(x_1)) = x_1 POL(SEL(x_1, x_2)) = x_1 + x_2 POL(SND(x_1)) = x_1 POL(SPLITAT(x_1, x_2)) = x_1 + x_2 POL(TAIL(x_1)) = x_1 POL(TAKE(x_1, x_2)) = x_1 + x_2 POL(TOP(x_1)) = x_1 POL(U101'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U102'(x_1, x_2)) = x_1 + x_2 POL(U103'(x_1)) = x_1 POL(U11'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U111'(x_1, x_2)) = x_1 + x_2 POL(U112'(x_1)) = x_1 POL(U121'(x_1, x_2)) = x_1 + x_2 POL(U122'(x_1)) = x_1 POL(U131'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U132'(x_1, x_2)) = x_1 + x_2 POL(U133'(x_1)) = x_1 POL(U141'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U142'(x_1, x_2)) = x_1 + x_2 POL(U143'(x_1)) = x_1 POL(U151'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U152'(x_1, x_2)) = x_1 + x_2 POL(U153'(x_1)) = x_1 POL(U161'(x_1, x_2)) = x_1 + x_2 POL(U171'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U181'(x_1, x_2)) = x_1 + x_2 POL(U191'(x_1, x_2)) = x_1 + x_2 POL(U201'(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 POL(U202'(x_1, x_2)) = x_1 + x_2 POL(U21'(x_1, x_2)) = x_1 + x_2 POL(U211'(x_1, x_2)) = x_1 + x_2 POL(U221'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U31'(x_1, x_2)) = x_1 + x_2 POL(U41'(x_1, x_2, x_3)) = x_2 + x_3 POL(U42'(x_1, x_2)) = x_1 + x_2 POL(U43'(x_1)) = x_1 POL(U51'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(U52'(x_1, x_2)) = x_1 + x_2 POL(U53'(x_1)) = x_1 POL(U61'(x_1, x_2)) = x_1 + x_2 POL(U62'(x_1)) = x_1 POL(U71'(x_1, x_2)) = x_1 + x_2 POL(U72'(x_1)) = x_1 POL(U81'(x_1, x_2)) = x_1 + x_2 POL(U82'(x_1)) = x_1 POL(U91'(x_1, x_2)) = x_1 + x_2 POL(U92'(x_1)) = x_1 POL(c(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c10(x_1)) = x_1 POL(c100(x_1)) = x_1 POL(c101(x_1)) = x_1 POL(c102(x_1)) = x_1 POL(c103(x_1)) = x_1 POL(c104(x_1)) = x_1 POL(c105(x_1)) = x_1 POL(c106(x_1)) = x_1 POL(c107(x_1)) = x_1 POL(c108(x_1)) = x_1 POL(c109(x_1)) = x_1 POL(c11(x_1)) = x_1 POL(c110(x_1)) = x_1 POL(c111(x_1)) = x_1 POL(c112(x_1)) = x_1 POL(c116(x_1)) = x_1 POL(c117(x_1)) = x_1 POL(c118(x_1)) = x_1 POL(c119(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c120(x_1)) = x_1 POL(c121(x_1)) = x_1 POL(c122(x_1)) = x_1 POL(c13(x_1)) = x_1 POL(c14(x_1)) = x_1 POL(c15(x_1)) = x_1 POL(c16(x_1)) = x_1 POL(c17(x_1)) = x_1 POL(c18(x_1)) = x_1 POL(c19(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c21(x_1)) = x_1 POL(c22(x_1)) = x_1 POL(c23(x_1)) = x_1 POL(c24(x_1)) = x_1 POL(c25(x_1)) = x_1 POL(c26(x_1)) = x_1 POL(c27(x_1)) = x_1 POL(c28(x_1)) = x_1 POL(c29(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c30(x_1)) = x_1 POL(c31(x_1)) = x_1 POL(c32(x_1)) = x_1 POL(c33(x_1)) = x_1 POL(c34(x_1)) = x_1 POL(c35(x_1)) = x_1 POL(c36(x_1)) = x_1 POL(c37(x_1)) = x_1 POL(c38(x_1)) = x_1 POL(c39(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c40(x_1)) = x_1 POL(c41(x_1)) = x_1 POL(c42(x_1)) = x_1 POL(c43(x_1)) = x_1 POL(c44(x_1)) = x_1 POL(c45(x_1)) = x_1 POL(c46(x_1)) = x_1 POL(c47(x_1)) = x_1 POL(c48(x_1)) = x_1 POL(c49(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c50(x_1)) = x_1 POL(c51(x_1)) = x_1 POL(c52(x_1)) = x_1 POL(c53(x_1)) = x_1 POL(c54(x_1)) = x_1 POL(c55(x_1)) = x_1 POL(c56(x_1)) = x_1 POL(c57(x_1)) = x_1 POL(c58(x_1)) = x_1 POL(c59(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c60(x_1)) = x_1 POL(c61(x_1)) = x_1 POL(c62(x_1)) = x_1 POL(c63(x_1)) = x_1 POL(c64(x_1)) = x_1 POL(c65(x_1)) = x_1 POL(c66(x_1)) = x_1 POL(c67(x_1)) = x_1 POL(c68(x_1)) = x_1 POL(c69(x_1)) = x_1 POL(c7(x_1)) = x_1 POL(c70(x_1)) = x_1 POL(c71(x_1)) = x_1 POL(c72(x_1)) = x_1 POL(c73(x_1)) = x_1 POL(c74(x_1)) = x_1 POL(c75(x_1)) = x_1 POL(c76(x_1)) = x_1 POL(c77(x_1)) = x_1 POL(c78(x_1)) = x_1 POL(c79(x_1)) = x_1 POL(c8(x_1)) = x_1 POL(c80(x_1)) = x_1 POL(c81(x_1)) = x_1 POL(c82(x_1)) = x_1 POL(c83(x_1)) = x_1 POL(c84(x_1)) = x_1 POL(c85(x_1)) = x_1 POL(c86(x_1)) = x_1 POL(c87(x_1)) = x_1 POL(c88(x_1)) = x_1 POL(c89(x_1)) = x_1 POL(c9(x_1)) = x_1 POL(c90(x_1)) = x_1 POL(c91(x_1)) = x_1 POL(c92(x_1)) = x_1 POL(c93(x_1)) = x_1 POL(c94(x_1)) = x_1 POL(c95(x_1)) = x_1 POL(c96(x_1)) = x_1 POL(c97(x_1)) = x_1 POL(c98(x_1)) = x_1 POL(c99(x_1)) = x_1 POL(mark(x_1)) = [1] + x_1 POL(nil) = [1] POL(ok(x_1)) = x_1 POL(proper(x_1)) = x_1 POL(tt) = [1] ---------------------------------------- (18) Obligation: Complexity Dependency Tuples Problem Rules: proper(tt) -> ok(tt) proper(nil) -> ok(nil) proper(0) -> ok(0) Tuples: U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0))) S tuples:none K tuples: SPLITAT(mark(z0), z1) -> c10(SPLITAT(z0, z1)) SPLITAT(ok(z0), ok(z1)) -> c12(SPLITAT(z0, z1)) ISPLNAT(ok(z0)) -> c118(ISPLNAT(z0)) ISPLNATKIND(ok(z0)) -> c121(ISPLNATKIND(z0)) U101'(mark(z0), z1, z2) -> c(U101'(z0, z1, z2)) U101'(ok(z0), ok(z1), ok(z2)) -> c1(U101'(z0, z1, z2)) U102'(mark(z0), z1) -> c2(U102'(z0, z1)) U102'(ok(z0), ok(z1)) -> c3(U102'(z0, z1)) U103'(mark(z0)) -> c4(U103'(z0)) U103'(ok(z0)) -> c5(U103'(z0)) U11'(mark(z0), z1, z2) -> c6(U11'(z0, z1, z2)) U11'(ok(z0), ok(z1), ok(z2)) -> c7(U11'(z0, z1, z2)) SND(mark(z0)) -> c8(SND(z0)) SND(ok(z0)) -> c9(SND(z0)) SPLITAT(z0, mark(z1)) -> c11(SPLITAT(z0, z1)) U111'(mark(z0), z1) -> c13(U111'(z0, z1)) U111'(ok(z0), ok(z1)) -> c14(U111'(z0, z1)) U112'(mark(z0)) -> c15(U112'(z0)) U112'(ok(z0)) -> c16(U112'(z0)) U121'(mark(z0), z1) -> c17(U121'(z0, z1)) U121'(ok(z0), ok(z1)) -> c18(U121'(z0, z1)) U122'(mark(z0)) -> c19(U122'(z0)) U122'(ok(z0)) -> c20(U122'(z0)) U131'(mark(z0), z1, z2) -> c21(U131'(z0, z1, z2)) U131'(ok(z0), ok(z1), ok(z2)) -> c22(U131'(z0, z1, z2)) U132'(mark(z0), z1) -> c23(U132'(z0, z1)) U132'(ok(z0), ok(z1)) -> c24(U132'(z0, z1)) U133'(mark(z0)) -> c25(U133'(z0)) U133'(ok(z0)) -> c26(U133'(z0)) U141'(mark(z0), z1, z2) -> c27(U141'(z0, z1, z2)) U141'(ok(z0), ok(z1), ok(z2)) -> c28(U141'(z0, z1, z2)) U142'(mark(z0), z1) -> c29(U142'(z0, z1)) U142'(ok(z0), ok(z1)) -> c30(U142'(z0, z1)) U143'(mark(z0)) -> c31(U143'(z0)) U143'(ok(z0)) -> c32(U143'(z0)) U151'(mark(z0), z1, z2) -> c33(U151'(z0, z1, z2)) U151'(ok(z0), ok(z1), ok(z2)) -> c34(U151'(z0, z1, z2)) U152'(mark(z0), z1) -> c35(U152'(z0, z1)) U152'(ok(z0), ok(z1)) -> c36(U152'(z0, z1)) U153'(mark(z0)) -> c37(U153'(z0)) U153'(ok(z0)) -> c38(U153'(z0)) U161'(mark(z0), z1) -> c39(U161'(z0, z1)) U161'(ok(z0), ok(z1)) -> c40(U161'(z0, z1)) CONS(mark(z0), z1) -> c41(CONS(z0, z1)) CONS(ok(z0), ok(z1)) -> c42(CONS(z0, z1)) NATSFROM(mark(z0)) -> c43(NATSFROM(z0)) NATSFROM(ok(z0)) -> c44(NATSFROM(z0)) S(mark(z0)) -> c45(S(z0)) S(ok(z0)) -> c46(S(z0)) U171'(mark(z0), z1, z2) -> c47(U171'(z0, z1, z2)) U171'(ok(z0), ok(z1), ok(z2)) -> c48(U171'(z0, z1, z2)) HEAD(mark(z0)) -> c49(HEAD(z0)) HEAD(ok(z0)) -> c50(HEAD(z0)) AFTERNTH(mark(z0), z1) -> c51(AFTERNTH(z0, z1)) AFTERNTH(z0, mark(z1)) -> c52(AFTERNTH(z0, z1)) AFTERNTH(ok(z0), ok(z1)) -> c53(AFTERNTH(z0, z1)) U181'(mark(z0), z1) -> c54(U181'(z0, z1)) U181'(ok(z0), ok(z1)) -> c55(U181'(z0, z1)) U191'(mark(z0), z1) -> c56(U191'(z0, z1)) U191'(ok(z0), ok(z1)) -> c57(U191'(z0, z1)) PAIR(mark(z0), z1) -> c58(PAIR(z0, z1)) PAIR(z0, mark(z1)) -> c59(PAIR(z0, z1)) PAIR(ok(z0), ok(z1)) -> c60(PAIR(z0, z1)) U201'(mark(z0), z1, z2, z3) -> c61(U201'(z0, z1, z2, z3)) U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c62(U201'(z0, z1, z2, z3)) U202'(mark(z0), z1) -> c63(U202'(z0, z1)) U202'(ok(z0), ok(z1)) -> c64(U202'(z0, z1)) U21'(mark(z0), z1) -> c65(U21'(z0, z1)) U21'(ok(z0), ok(z1)) -> c66(U21'(z0, z1)) U211'(mark(z0), z1) -> c67(U211'(z0, z1)) U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) U221'(mark(z0), z1, z2) -> c69(U221'(z0, z1, z2)) U221'(ok(z0), ok(z1), ok(z2)) -> c70(U221'(z0, z1, z2)) FST(mark(z0)) -> c71(FST(z0)) FST(ok(z0)) -> c72(FST(z0)) U31'(mark(z0), z1) -> c73(U31'(z0, z1)) U31'(ok(z0), ok(z1)) -> c74(U31'(z0, z1)) U41'(mark(z0), z1, z2) -> c75(U41'(z0, z1, z2)) U41'(ok(z0), ok(z1), ok(z2)) -> c76(U41'(z0, z1, z2)) U42'(mark(z0), z1) -> c77(U42'(z0, z1)) U42'(ok(z0), ok(z1)) -> c78(U42'(z0, z1)) U43'(mark(z0)) -> c79(U43'(z0)) U43'(ok(z0)) -> c80(U43'(z0)) U51'(mark(z0), z1, z2) -> c81(U51'(z0, z1, z2)) U51'(ok(z0), ok(z1), ok(z2)) -> c82(U51'(z0, z1, z2)) U52'(mark(z0), z1) -> c83(U52'(z0, z1)) U52'(ok(z0), ok(z1)) -> c84(U52'(z0, z1)) U53'(mark(z0)) -> c85(U53'(z0)) U53'(ok(z0)) -> c86(U53'(z0)) U61'(mark(z0), z1) -> c87(U61'(z0, z1)) U61'(ok(z0), ok(z1)) -> c88(U61'(z0, z1)) U62'(mark(z0)) -> c89(U62'(z0)) U62'(ok(z0)) -> c90(U62'(z0)) U71'(mark(z0), z1) -> c91(U71'(z0, z1)) U71'(ok(z0), ok(z1)) -> c92(U71'(z0, z1)) U72'(mark(z0)) -> c93(U72'(z0)) U72'(ok(z0)) -> c94(U72'(z0)) U81'(mark(z0), z1) -> c95(U81'(z0, z1)) U81'(ok(z0), ok(z1)) -> c96(U81'(z0, z1)) U82'(mark(z0)) -> c97(U82'(z0)) U82'(ok(z0)) -> c98(U82'(z0)) U91'(mark(z0), z1) -> c99(U91'(z0, z1)) U91'(ok(z0), ok(z1)) -> c100(U91'(z0, z1)) U92'(mark(z0)) -> c101(U92'(z0)) U92'(ok(z0)) -> c102(U92'(z0)) AND(mark(z0), z1) -> c103(AND(z0, z1)) AND(ok(z0), ok(z1)) -> c104(AND(z0, z1)) TAIL(mark(z0)) -> c105(TAIL(z0)) TAIL(ok(z0)) -> c106(TAIL(z0)) TAKE(mark(z0), z1) -> c107(TAKE(z0, z1)) TAKE(z0, mark(z1)) -> c108(TAKE(z0, z1)) TAKE(ok(z0), ok(z1)) -> c109(TAKE(z0, z1)) SEL(mark(z0), z1) -> c110(SEL(z0, z1)) SEL(z0, mark(z1)) -> c111(SEL(z0, z1)) SEL(ok(z0), ok(z1)) -> c112(SEL(z0, z1)) ISNATURAL(ok(z0)) -> c116(ISNATURAL(z0)) ISLNAT(ok(z0)) -> c117(ISLNAT(z0)) ISNATURALKIND(ok(z0)) -> c119(ISNATURALKIND(z0)) ISLNATKIND(ok(z0)) -> c120(ISLNATKIND(z0)) TOP(mark(z0)) -> c122(TOP(proper(z0))) Defined Rule Symbols: proper_1 Defined Pair Symbols: U101'_3, U102'_2, U103'_1, U11'_3, SND_1, SPLITAT_2, U111'_2, U112'_1, U121'_2, U122'_1, U131'_3, U132'_2, U133'_1, U141'_3, U142'_2, U143'_1, U151'_3, U152'_2, U153'_1, U161'_2, CONS_2, NATSFROM_1, S_1, U171'_3, HEAD_1, AFTERNTH_2, U181'_2, U191'_2, PAIR_2, U201'_4, U202'_2, U21'_2, U211'_2, U221'_3, FST_1, U31'_2, U41'_3, U42'_2, U43'_1, U51'_3, U52'_2, U53'_1, U61'_2, U62'_1, U71'_2, U72'_1, U81'_2, U82'_1, U91'_2, U92'_1, AND_2, TAIL_1, TAKE_2, SEL_2, ISNATURAL_1, ISLNAT_1, ISPLNAT_1, ISNATURALKIND_1, ISLNATKIND_1, ISPLNATKIND_1, TOP_1 Compound Symbols: c_1, c1_1, c2_1, c3_1, c4_1, c5_1, c6_1, c7_1, c8_1, c9_1, c10_1, c11_1, c12_1, c13_1, c14_1, c15_1, c16_1, c17_1, c18_1, c19_1, c20_1, c21_1, c22_1, c23_1, c24_1, c25_1, c26_1, c27_1, c28_1, c29_1, c30_1, c31_1, c32_1, c33_1, c34_1, c35_1, c36_1, c37_1, c38_1, c39_1, c40_1, c41_1, c42_1, c43_1, c44_1, c45_1, c46_1, c47_1, c48_1, c49_1, c50_1, c51_1, c52_1, c53_1, c54_1, c55_1, c56_1, c57_1, c58_1, c59_1, c60_1, c61_1, c62_1, c63_1, c64_1, c65_1, c66_1, c67_1, c68_1, c69_1, c70_1, c71_1, c72_1, c73_1, c74_1, c75_1, c76_1, c77_1, c78_1, c79_1, c80_1, c81_1, c82_1, c83_1, c84_1, c85_1, c86_1, c87_1, c88_1, c89_1, c90_1, c91_1, c92_1, c93_1, c94_1, c95_1, c96_1, c97_1, c98_1, c99_1, c100_1, c101_1, c102_1, c103_1, c104_1, c105_1, c106_1, c107_1, c108_1, c109_1, c110_1, c111_1, c112_1, c116_1, c117_1, c118_1, c119_1, c120_1, c121_1, c122_1 ---------------------------------------- (19) SIsEmptyProof (BOTH BOUNDS(ID, ID)) The set S is empty ---------------------------------------- (20) BOUNDS(1, 1) ---------------------------------------- (21) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (22) Obligation: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) S is empty. Rewrite Strategy: FULL ---------------------------------------- (23) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (24) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok ---------------------------------------- (25) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: active, U102, isNatural, U103, isLNat, snd, splitAt, U112, U122, U132, U133, U142, U143, U152, U153, cons, natsFrom, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U102 < active isNatural < active U103 < active isLNat < active snd < active splitAt < active U112 < active U122 < active U132 < active U133 < active U142 < active U143 < active U152 < active U153 < active cons < active natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U102 < proper isNatural < proper U103 < proper isLNat < proper snd < proper splitAt < proper U112 < proper U122 < proper U132 < proper U133 < proper U142 < proper U143 < proper U152 < proper U153 < proper cons < proper natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (26) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U102, active, isNatural, U103, isLNat, snd, splitAt, U112, U122, U132, U133, U142, U143, U152, U153, cons, natsFrom, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U102 < active isNatural < active U103 < active isLNat < active snd < active splitAt < active U112 < active U122 < active U132 < active U133 < active U142 < active U143 < active U152 < active U153 < active cons < active natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U102 < proper isNatural < proper U103 < proper isLNat < proper snd < proper splitAt < proper U112 < proper U122 < proper U132 < proper U133 < proper U142 < proper U143 < proper U152 < proper U153 < proper cons < proper natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (27) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) Induction Base: U102(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U102(gen_tt:mark:nil:0':ok3_0(+(1, +(n5_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (28) Complex Obligation (BEST) ---------------------------------------- (29) Obligation: Proved the lower bound n^1 for the following obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U102, active, isNatural, U103, isLNat, snd, splitAt, U112, U122, U132, U133, U142, U143, U152, U153, cons, natsFrom, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U102 < active isNatural < active U103 < active isLNat < active snd < active splitAt < active U112 < active U122 < active U132 < active U133 < active U142 < active U143 < active U152 < active U153 < active cons < active natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U102 < proper isNatural < proper U103 < proper isLNat < proper snd < proper splitAt < proper U112 < proper U122 < proper U132 < proper U133 < proper U142 < proper U143 < proper U152 < proper U153 < proper cons < proper natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (30) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (31) BOUNDS(n^1, INF) ---------------------------------------- (32) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: isNatural, active, U103, isLNat, snd, splitAt, U112, U122, U132, U133, U142, U143, U152, U153, cons, natsFrom, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: isNatural < active U103 < active isLNat < active snd < active splitAt < active U112 < active U122 < active U132 < active U133 < active U142 < active U143 < active U152 < active U153 < active cons < active natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top isNatural < proper U103 < proper isLNat < proper snd < proper splitAt < proper U112 < proper U122 < proper U132 < proper U133 < proper U142 < proper U143 < proper U152 < proper U153 < proper cons < proper natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (33) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) Induction Base: U103(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: U103(gen_tt:mark:nil:0':ok3_0(+(1, +(n4971_0, 1)))) ->_R^Omega(1) mark(U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (34) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: isLNat, active, snd, splitAt, U112, U122, U132, U133, U142, U143, U152, U153, cons, natsFrom, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: isLNat < active snd < active splitAt < active U112 < active U122 < active U132 < active U133 < active U142 < active U143 < active U152 < active U153 < active cons < active natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top isLNat < proper snd < proper splitAt < proper U112 < proper U122 < proper U132 < proper U133 < proper U142 < proper U143 < proper U152 < proper U153 < proper cons < proper natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (35) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) Induction Base: snd(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: snd(gen_tt:mark:nil:0':ok3_0(+(1, +(n6369_0, 1)))) ->_R^Omega(1) mark(snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (36) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: splitAt, active, U112, U122, U132, U133, U142, U143, U152, U153, cons, natsFrom, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: splitAt < active U112 < active U122 < active U132 < active U133 < active U142 < active U143 < active U152 < active U153 < active cons < active natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top splitAt < proper U112 < proper U122 < proper U132 < proper U133 < proper U142 < proper U143 < proper U152 < proper U153 < proper cons < proper natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (37) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) Induction Base: splitAt(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: splitAt(gen_tt:mark:nil:0':ok3_0(+(1, +(n7856_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (38) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U112, active, U122, U132, U133, U142, U143, U152, U153, cons, natsFrom, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U112 < active U122 < active U132 < active U133 < active U142 < active U143 < active U152 < active U153 < active cons < active natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U112 < proper U122 < proper U132 < proper U133 < proper U142 < proper U143 < proper U152 < proper U153 < proper cons < proper natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (39) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) Induction Base: U112(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: U112(gen_tt:mark:nil:0':ok3_0(+(1, +(n13734_0, 1)))) ->_R^Omega(1) mark(U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (40) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U122, active, U132, U133, U142, U143, U152, U153, cons, natsFrom, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U122 < active U132 < active U133 < active U142 < active U143 < active U152 < active U153 < active cons < active natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U122 < proper U132 < proper U133 < proper U142 < proper U143 < proper U152 < proper U153 < proper cons < proper natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (41) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) Induction Base: U122(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: U122(gen_tt:mark:nil:0':ok3_0(+(1, +(n15472_0, 1)))) ->_R^Omega(1) mark(U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (42) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U132, active, U133, U142, U143, U152, U153, cons, natsFrom, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U132 < active U133 < active U142 < active U143 < active U152 < active U153 < active cons < active natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U132 < proper U133 < proper U142 < proper U143 < proper U152 < proper U153 < proper cons < proper natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (43) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) Induction Base: U132(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U132(gen_tt:mark:nil:0':ok3_0(+(1, +(n17311_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (44) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U133, active, U142, U143, U152, U153, cons, natsFrom, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U133 < active U142 < active U143 < active U152 < active U153 < active cons < active natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U133 < proper U142 < proper U143 < proper U152 < proper U153 < proper cons < proper natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (45) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) Induction Base: U133(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: U133(gen_tt:mark:nil:0':ok3_0(+(1, +(n23712_0, 1)))) ->_R^Omega(1) mark(U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (46) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U142, active, U143, U152, U153, cons, natsFrom, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U142 < active U143 < active U152 < active U153 < active cons < active natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U142 < proper U143 < proper U152 < proper U153 < proper cons < proper natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (47) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) Induction Base: U142(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U142(gen_tt:mark:nil:0':ok3_0(+(1, +(n25802_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (48) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U143, active, U152, U153, cons, natsFrom, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U143 < active U152 < active U153 < active cons < active natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U143 < proper U152 < proper U153 < proper cons < proper natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (49) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) Induction Base: U143(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: U143(gen_tt:mark:nil:0':ok3_0(+(1, +(n32717_0, 1)))) ->_R^Omega(1) mark(U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (50) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U152, active, U153, cons, natsFrom, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U152 < active U153 < active cons < active natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U152 < proper U153 < proper cons < proper natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (51) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) Induction Base: U152(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U152(gen_tt:mark:nil:0':ok3_0(+(1, +(n35058_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (52) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U153, active, cons, natsFrom, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U153 < active cons < active natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U153 < proper cons < proper natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (53) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) Induction Base: U153(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: U153(gen_tt:mark:nil:0':ok3_0(+(1, +(n42487_0, 1)))) ->_R^Omega(1) mark(U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (54) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: cons, active, natsFrom, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: cons < active natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top cons < proper natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (55) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) Induction Base: cons(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: cons(gen_tt:mark:nil:0':ok3_0(+(1, +(n45079_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (56) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: natsFrom, active, s, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: natsFrom < active s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top natsFrom < proper s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (57) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) Induction Base: natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, +(n53022_0, 1)))) ->_R^Omega(1) mark(natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (58) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: s, active, head, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: s < active head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top s < proper head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (59) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) Induction Base: s(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: s(gen_tt:mark:nil:0':ok3_0(+(1, +(n55865_0, 1)))) ->_R^Omega(1) mark(s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (60) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: head, active, afterNth, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: head < active afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top head < proper afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (61) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) Induction Base: head(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: head(gen_tt:mark:nil:0':ok3_0(+(1, +(n58809_0, 1)))) ->_R^Omega(1) mark(head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (62) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: afterNth, active, pair, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: afterNth < active pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top afterNth < proper pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (63) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) Induction Base: afterNth(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: afterNth(gen_tt:mark:nil:0':ok3_0(+(1, +(n61854_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (64) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: pair, active, U202, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: pair < active U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top pair < proper U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (65) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) Induction Base: pair(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: pair(gen_tt:mark:nil:0':ok3_0(+(1, +(n70926_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (66) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U202, active, fst, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U202 < active fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U202 < proper fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (67) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) Induction Base: U202(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U202(gen_tt:mark:nil:0':ok3_0(+(1, +(n80304_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (68) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: fst, active, U42, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: fst < active U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top fst < proper U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (69) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) Induction Base: fst(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: fst(gen_tt:mark:nil:0':ok3_0(+(1, +(n89789_0, 1)))) ->_R^Omega(1) mark(fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (70) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U42, active, U43, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U42 < active U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U42 < proper U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (71) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) Induction Base: U42(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U42(gen_tt:mark:nil:0':ok3_0(+(1, +(n93385_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (72) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U43, active, U52, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U43 < active U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U43 < proper U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (73) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) Induction Base: U43(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: U43(gen_tt:mark:nil:0':ok3_0(+(1, +(n103384_0, 1)))) ->_R^Omega(1) mark(U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (74) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U52, active, U53, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U52 < active U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U52 < proper U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (75) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) Induction Base: U52(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U52(gen_tt:mark:nil:0':ok3_0(+(1, +(n107231_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (76) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U53, active, U62, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U53 < active U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U53 < proper U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (77) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) Induction Base: U53(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: U53(gen_tt:mark:nil:0':ok3_0(+(1, +(n117744_0, 1)))) ->_R^Omega(1) mark(U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (78) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U62, active, isPLNat, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U62 < active isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U62 < proper isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (79) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) Induction Base: U62(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: U62(gen_tt:mark:nil:0':ok3_0(+(1, +(n121842_0, 1)))) ->_R^Omega(1) mark(U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (80) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: isPLNat, active, U72, U82, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: isPLNat < active U72 < active U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top isPLNat < proper U72 < proper U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (81) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) Induction Base: U72(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: U72(gen_tt:mark:nil:0':ok3_0(+(1, +(n126142_0, 1)))) ->_R^Omega(1) mark(U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (82) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U82, active, U92, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U82 < active U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U82 < proper U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (83) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) Induction Base: U82(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: U82(gen_tt:mark:nil:0':ok3_0(+(1, +(n130442_0, 1)))) ->_R^Omega(1) mark(U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (84) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U92, active, U11, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U92 < active U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U92 < proper U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (85) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) Induction Base: U92(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: U92(gen_tt:mark:nil:0':ok3_0(+(1, +(n134843_0, 1)))) ->_R^Omega(1) mark(U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (86) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U11, active, and, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U11 < active and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U11 < proper and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (87) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) Induction Base: U11(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) Induction Step: U11(gen_tt:mark:nil:0':ok3_0(+(1, +(n139345_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) ->_R^Omega(1) mark(U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (88) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: and, active, isNaturalKind, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: and < active isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top and < proper isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (89) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) Induction Base: and(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: and(gen_tt:mark:nil:0':ok3_0(+(1, +(n158460_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (90) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: isNaturalKind, active, isLNatKind, U21, U31, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: isNaturalKind < active isLNatKind < active U21 < active U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top isNaturalKind < proper isLNatKind < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (91) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) Induction Base: U21(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U21(gen_tt:mark:nil:0':ok3_0(+(1, +(n170967_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (92) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U31, active, U41, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U31 < active U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U31 < proper U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (93) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) Induction Base: U31(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U31(gen_tt:mark:nil:0':ok3_0(+(1, +(n183536_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (94) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U41, active, U51, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U41 < active U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U41 < proper U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (95) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) Induction Base: U41(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) Induction Step: U41(gen_tt:mark:nil:0':ok3_0(+(1, +(n196411_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) ->_R^Omega(1) mark(U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (96) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U51, active, U61, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U51 < active U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U51 < proper U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (97) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) Induction Base: U51(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) Induction Step: U51(gen_tt:mark:nil:0':ok3_0(+(1, +(n217521_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) ->_R^Omega(1) mark(U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (98) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U61, active, isPLNatKind, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U61 < active isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U61 < proper isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (99) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) Induction Base: U61(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U61(gen_tt:mark:nil:0':ok3_0(+(1, +(n239240_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (100) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: isPLNatKind, active, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: isPLNatKind < active U71 < active U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top isPLNatKind < proper U71 < proper U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (101) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) Induction Base: U71(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U71(gen_tt:mark:nil:0':ok3_0(+(1, +(n253380_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (102) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U81, active, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U81 < active U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U81 < proper U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (103) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) Induction Base: U81(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U81(gen_tt:mark:nil:0':ok3_0(+(1, +(n267675_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (104) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U91, active, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U91 < active U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U91 < proper U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (105) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) Induction Base: U91(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U91(gen_tt:mark:nil:0':ok3_0(+(1, +(n282276_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (106) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U101, active, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U101 < active U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U101 < proper U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (107) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) Induction Base: U101(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) Induction Step: U101(gen_tt:mark:nil:0':ok3_0(+(1, +(n297183_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) ->_R^Omega(1) mark(U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (108) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U111, active, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U111 < active U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U111 < proper U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (109) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) Induction Base: U111(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U111(gen_tt:mark:nil:0':ok3_0(+(1, +(n321359_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (110) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U121, active, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U121 < active U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U121 < proper U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (111) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n336976_0) Induction Base: U121(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U121(gen_tt:mark:nil:0':ok3_0(+(1, +(n336976_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (112) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n336976_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U131, active, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U131 < active U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U131 < proper U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (113) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U131(gen_tt:mark:nil:0':ok3_0(+(1, n352899_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n352899_0) Induction Base: U131(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) Induction Step: U131(gen_tt:mark:nil:0':ok3_0(+(1, +(n352899_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) ->_R^Omega(1) mark(U131(gen_tt:mark:nil:0':ok3_0(+(1, n352899_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (114) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n336976_0) U131(gen_tt:mark:nil:0':ok3_0(+(1, n352899_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n352899_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U141, active, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U141 < active U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U141 < proper U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (115) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U141(gen_tt:mark:nil:0':ok3_0(+(1, n378608_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n378608_0) Induction Base: U141(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) Induction Step: U141(gen_tt:mark:nil:0':ok3_0(+(1, +(n378608_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) ->_R^Omega(1) mark(U141(gen_tt:mark:nil:0':ok3_0(+(1, n378608_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (116) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n336976_0) U131(gen_tt:mark:nil:0':ok3_0(+(1, n352899_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n352899_0) U141(gen_tt:mark:nil:0':ok3_0(+(1, n378608_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n378608_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U151, active, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U151 < active U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U151 < proper U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (117) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U151(gen_tt:mark:nil:0':ok3_0(+(1, n404926_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n404926_0) Induction Base: U151(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) Induction Step: U151(gen_tt:mark:nil:0':ok3_0(+(1, +(n404926_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) ->_R^Omega(1) mark(U151(gen_tt:mark:nil:0':ok3_0(+(1, n404926_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (118) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n336976_0) U131(gen_tt:mark:nil:0':ok3_0(+(1, n352899_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n352899_0) U141(gen_tt:mark:nil:0':ok3_0(+(1, n378608_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n378608_0) U151(gen_tt:mark:nil:0':ok3_0(+(1, n404926_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n404926_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U161, active, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U161 < active U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U161 < proper U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (119) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U161(gen_tt:mark:nil:0':ok3_0(+(1, n431853_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n431853_0) Induction Base: U161(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U161(gen_tt:mark:nil:0':ok3_0(+(1, +(n431853_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U161(gen_tt:mark:nil:0':ok3_0(+(1, n431853_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (120) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n336976_0) U131(gen_tt:mark:nil:0':ok3_0(+(1, n352899_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n352899_0) U141(gen_tt:mark:nil:0':ok3_0(+(1, n378608_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n378608_0) U151(gen_tt:mark:nil:0':ok3_0(+(1, n404926_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n404926_0) U161(gen_tt:mark:nil:0':ok3_0(+(1, n431853_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n431853_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U171, active, U181, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U171 < active U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U171 < proper U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (121) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U171(gen_tt:mark:nil:0':ok3_0(+(1, n449294_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n449294_0) Induction Base: U171(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) Induction Step: U171(gen_tt:mark:nil:0':ok3_0(+(1, +(n449294_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) ->_R^Omega(1) mark(U171(gen_tt:mark:nil:0':ok3_0(+(1, n449294_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (122) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n336976_0) U131(gen_tt:mark:nil:0':ok3_0(+(1, n352899_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n352899_0) U141(gen_tt:mark:nil:0':ok3_0(+(1, n378608_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n378608_0) U151(gen_tt:mark:nil:0':ok3_0(+(1, n404926_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n404926_0) U161(gen_tt:mark:nil:0':ok3_0(+(1, n431853_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n431853_0) U171(gen_tt:mark:nil:0':ok3_0(+(1, n449294_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n449294_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U181, active, U191, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U181 < active U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U181 < proper U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (123) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U181(gen_tt:mark:nil:0':ok3_0(+(1, n477292_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n477292_0) Induction Base: U181(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U181(gen_tt:mark:nil:0':ok3_0(+(1, +(n477292_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U181(gen_tt:mark:nil:0':ok3_0(+(1, n477292_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (124) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n336976_0) U131(gen_tt:mark:nil:0':ok3_0(+(1, n352899_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n352899_0) U141(gen_tt:mark:nil:0':ok3_0(+(1, n378608_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n378608_0) U151(gen_tt:mark:nil:0':ok3_0(+(1, n404926_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n404926_0) U161(gen_tt:mark:nil:0':ok3_0(+(1, n431853_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n431853_0) U171(gen_tt:mark:nil:0':ok3_0(+(1, n449294_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n449294_0) U181(gen_tt:mark:nil:0':ok3_0(+(1, n477292_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n477292_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U191, active, U201, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U191 < active U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U191 < proper U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (125) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U191(gen_tt:mark:nil:0':ok3_0(+(1, n495443_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n495443_0) Induction Base: U191(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U191(gen_tt:mark:nil:0':ok3_0(+(1, +(n495443_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U191(gen_tt:mark:nil:0':ok3_0(+(1, n495443_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (126) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n336976_0) U131(gen_tt:mark:nil:0':ok3_0(+(1, n352899_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n352899_0) U141(gen_tt:mark:nil:0':ok3_0(+(1, n378608_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n378608_0) U151(gen_tt:mark:nil:0':ok3_0(+(1, n404926_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n404926_0) U161(gen_tt:mark:nil:0':ok3_0(+(1, n431853_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n431853_0) U171(gen_tt:mark:nil:0':ok3_0(+(1, n449294_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n449294_0) U181(gen_tt:mark:nil:0':ok3_0(+(1, n477292_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n477292_0) U191(gen_tt:mark:nil:0':ok3_0(+(1, n495443_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n495443_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U201, active, U211, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U201 < active U211 < active U221 < active tail < active take < active sel < active active < top U201 < proper U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (127) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U201(gen_tt:mark:nil:0':ok3_0(+(1, n513900_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c), gen_tt:mark:nil:0':ok3_0(d)) -> *4_0, rt in Omega(n513900_0) Induction Base: U201(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c), gen_tt:mark:nil:0':ok3_0(d)) Induction Step: U201(gen_tt:mark:nil:0':ok3_0(+(1, +(n513900_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c), gen_tt:mark:nil:0':ok3_0(d)) ->_R^Omega(1) mark(U201(gen_tt:mark:nil:0':ok3_0(+(1, n513900_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c), gen_tt:mark:nil:0':ok3_0(d))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (128) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n336976_0) U131(gen_tt:mark:nil:0':ok3_0(+(1, n352899_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n352899_0) U141(gen_tt:mark:nil:0':ok3_0(+(1, n378608_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n378608_0) U151(gen_tt:mark:nil:0':ok3_0(+(1, n404926_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n404926_0) U161(gen_tt:mark:nil:0':ok3_0(+(1, n431853_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n431853_0) U171(gen_tt:mark:nil:0':ok3_0(+(1, n449294_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n449294_0) U181(gen_tt:mark:nil:0':ok3_0(+(1, n477292_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n477292_0) U191(gen_tt:mark:nil:0':ok3_0(+(1, n495443_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n495443_0) U201(gen_tt:mark:nil:0':ok3_0(+(1, n513900_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c), gen_tt:mark:nil:0':ok3_0(d)) -> *4_0, rt in Omega(n513900_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U211, active, U221, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U211 < active U221 < active tail < active take < active sel < active active < top U211 < proper U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (129) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U211(gen_tt:mark:nil:0':ok3_0(+(1, n554199_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n554199_0) Induction Base: U211(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: U211(gen_tt:mark:nil:0':ok3_0(+(1, +(n554199_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(U211(gen_tt:mark:nil:0':ok3_0(+(1, n554199_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (130) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n336976_0) U131(gen_tt:mark:nil:0':ok3_0(+(1, n352899_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n352899_0) U141(gen_tt:mark:nil:0':ok3_0(+(1, n378608_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n378608_0) U151(gen_tt:mark:nil:0':ok3_0(+(1, n404926_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n404926_0) U161(gen_tt:mark:nil:0':ok3_0(+(1, n431853_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n431853_0) U171(gen_tt:mark:nil:0':ok3_0(+(1, n449294_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n449294_0) U181(gen_tt:mark:nil:0':ok3_0(+(1, n477292_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n477292_0) U191(gen_tt:mark:nil:0':ok3_0(+(1, n495443_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n495443_0) U201(gen_tt:mark:nil:0':ok3_0(+(1, n513900_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c), gen_tt:mark:nil:0':ok3_0(d)) -> *4_0, rt in Omega(n513900_0) U211(gen_tt:mark:nil:0':ok3_0(+(1, n554199_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n554199_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: U221, active, tail, take, sel, proper, top They will be analysed ascendingly in the following order: U221 < active tail < active take < active sel < active active < top U221 < proper tail < proper take < proper sel < proper proper < top ---------------------------------------- (131) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U221(gen_tt:mark:nil:0':ok3_0(+(1, n573464_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n573464_0) Induction Base: U221(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) Induction Step: U221(gen_tt:mark:nil:0':ok3_0(+(1, +(n573464_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) ->_R^Omega(1) mark(U221(gen_tt:mark:nil:0':ok3_0(+(1, n573464_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (132) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n336976_0) U131(gen_tt:mark:nil:0':ok3_0(+(1, n352899_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n352899_0) U141(gen_tt:mark:nil:0':ok3_0(+(1, n378608_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n378608_0) U151(gen_tt:mark:nil:0':ok3_0(+(1, n404926_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n404926_0) U161(gen_tt:mark:nil:0':ok3_0(+(1, n431853_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n431853_0) U171(gen_tt:mark:nil:0':ok3_0(+(1, n449294_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n449294_0) U181(gen_tt:mark:nil:0':ok3_0(+(1, n477292_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n477292_0) U191(gen_tt:mark:nil:0':ok3_0(+(1, n495443_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n495443_0) U201(gen_tt:mark:nil:0':ok3_0(+(1, n513900_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c), gen_tt:mark:nil:0':ok3_0(d)) -> *4_0, rt in Omega(n513900_0) U211(gen_tt:mark:nil:0':ok3_0(+(1, n554199_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n554199_0) U221(gen_tt:mark:nil:0':ok3_0(+(1, n573464_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n573464_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: tail, active, take, sel, proper, top They will be analysed ascendingly in the following order: tail < active take < active sel < active active < top tail < proper take < proper sel < proper proper < top ---------------------------------------- (133) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: tail(gen_tt:mark:nil:0':ok3_0(+(1, n604213_0))) -> *4_0, rt in Omega(n604213_0) Induction Base: tail(gen_tt:mark:nil:0':ok3_0(+(1, 0))) Induction Step: tail(gen_tt:mark:nil:0':ok3_0(+(1, +(n604213_0, 1)))) ->_R^Omega(1) mark(tail(gen_tt:mark:nil:0':ok3_0(+(1, n604213_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (134) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n336976_0) U131(gen_tt:mark:nil:0':ok3_0(+(1, n352899_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n352899_0) U141(gen_tt:mark:nil:0':ok3_0(+(1, n378608_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n378608_0) U151(gen_tt:mark:nil:0':ok3_0(+(1, n404926_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n404926_0) U161(gen_tt:mark:nil:0':ok3_0(+(1, n431853_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n431853_0) U171(gen_tt:mark:nil:0':ok3_0(+(1, n449294_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n449294_0) U181(gen_tt:mark:nil:0':ok3_0(+(1, n477292_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n477292_0) U191(gen_tt:mark:nil:0':ok3_0(+(1, n495443_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n495443_0) U201(gen_tt:mark:nil:0':ok3_0(+(1, n513900_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c), gen_tt:mark:nil:0':ok3_0(d)) -> *4_0, rt in Omega(n513900_0) U211(gen_tt:mark:nil:0':ok3_0(+(1, n554199_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n554199_0) U221(gen_tt:mark:nil:0':ok3_0(+(1, n573464_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n573464_0) tail(gen_tt:mark:nil:0':ok3_0(+(1, n604213_0))) -> *4_0, rt in Omega(n604213_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: take, active, sel, proper, top They will be analysed ascendingly in the following order: take < active sel < active active < top take < proper sel < proper proper < top ---------------------------------------- (135) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: take(gen_tt:mark:nil:0':ok3_0(+(1, n612805_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n612805_0) Induction Base: take(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: take(gen_tt:mark:nil:0':ok3_0(+(1, +(n612805_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(take(gen_tt:mark:nil:0':ok3_0(+(1, n612805_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (136) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n336976_0) U131(gen_tt:mark:nil:0':ok3_0(+(1, n352899_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n352899_0) U141(gen_tt:mark:nil:0':ok3_0(+(1, n378608_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n378608_0) U151(gen_tt:mark:nil:0':ok3_0(+(1, n404926_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n404926_0) U161(gen_tt:mark:nil:0':ok3_0(+(1, n431853_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n431853_0) U171(gen_tt:mark:nil:0':ok3_0(+(1, n449294_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n449294_0) U181(gen_tt:mark:nil:0':ok3_0(+(1, n477292_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n477292_0) U191(gen_tt:mark:nil:0':ok3_0(+(1, n495443_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n495443_0) U201(gen_tt:mark:nil:0':ok3_0(+(1, n513900_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c), gen_tt:mark:nil:0':ok3_0(d)) -> *4_0, rt in Omega(n513900_0) U211(gen_tt:mark:nil:0':ok3_0(+(1, n554199_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n554199_0) U221(gen_tt:mark:nil:0':ok3_0(+(1, n573464_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n573464_0) tail(gen_tt:mark:nil:0':ok3_0(+(1, n604213_0))) -> *4_0, rt in Omega(n604213_0) take(gen_tt:mark:nil:0':ok3_0(+(1, n612805_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n612805_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: sel, active, proper, top They will be analysed ascendingly in the following order: sel < active active < top sel < proper proper < top ---------------------------------------- (137) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: sel(gen_tt:mark:nil:0':ok3_0(+(1, n633187_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n633187_0) Induction Base: sel(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) Induction Step: sel(gen_tt:mark:nil:0':ok3_0(+(1, +(n633187_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) mark(sel(gen_tt:mark:nil:0':ok3_0(+(1, n633187_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (138) Obligation: TRS: Rules: active(U101(tt, V1, V2)) -> mark(U102(isNatural(V1), V2)) active(U102(tt, V2)) -> mark(U103(isLNat(V2))) active(U103(tt)) -> mark(tt) active(U11(tt, N, XS)) -> mark(snd(splitAt(N, XS))) active(U111(tt, V1)) -> mark(U112(isLNat(V1))) active(U112(tt)) -> mark(tt) active(U121(tt, V1)) -> mark(U122(isNatural(V1))) active(U122(tt)) -> mark(tt) active(U131(tt, V1, V2)) -> mark(U132(isNatural(V1), V2)) active(U132(tt, V2)) -> mark(U133(isLNat(V2))) active(U133(tt)) -> mark(tt) active(U141(tt, V1, V2)) -> mark(U142(isLNat(V1), V2)) active(U142(tt, V2)) -> mark(U143(isLNat(V2))) active(U143(tt)) -> mark(tt) active(U151(tt, V1, V2)) -> mark(U152(isNatural(V1), V2)) active(U152(tt, V2)) -> mark(U153(isLNat(V2))) active(U153(tt)) -> mark(tt) active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) active(U171(tt, N, XS)) -> mark(head(afterNth(N, XS))) active(U181(tt, Y)) -> mark(Y) active(U191(tt, XS)) -> mark(pair(nil, XS)) active(U201(tt, N, X, XS)) -> mark(U202(splitAt(N, XS), X)) active(U202(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) active(U21(tt, X)) -> mark(X) active(U211(tt, XS)) -> mark(XS) active(U221(tt, N, XS)) -> mark(fst(splitAt(N, XS))) active(U31(tt, N)) -> mark(N) active(U41(tt, V1, V2)) -> mark(U42(isNatural(V1), V2)) active(U42(tt, V2)) -> mark(U43(isLNat(V2))) active(U43(tt)) -> mark(tt) active(U51(tt, V1, V2)) -> mark(U52(isNatural(V1), V2)) active(U52(tt, V2)) -> mark(U53(isLNat(V2))) active(U53(tt)) -> mark(tt) active(U61(tt, V1)) -> mark(U62(isPLNat(V1))) active(U62(tt)) -> mark(tt) active(U71(tt, V1)) -> mark(U72(isNatural(V1))) active(U72(tt)) -> mark(tt) active(U81(tt, V1)) -> mark(U82(isPLNat(V1))) active(U82(tt)) -> mark(tt) active(U91(tt, V1)) -> mark(U92(isLNat(V1))) active(U92(tt)) -> mark(tt) active(afterNth(N, XS)) -> mark(U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(and(tt, X)) -> mark(X) active(fst(pair(X, Y))) -> mark(U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)) active(head(cons(N, XS))) -> mark(U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)) active(isLNat(nil)) -> mark(tt) active(isLNat(afterNth(V1, V2))) -> mark(U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(cons(V1, V2))) -> mark(U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNat(fst(V1))) -> mark(U61(isPLNatKind(V1), V1)) active(isLNat(natsFrom(V1))) -> mark(U71(isNaturalKind(V1), V1)) active(isLNat(snd(V1))) -> mark(U81(isPLNatKind(V1), V1)) active(isLNat(tail(V1))) -> mark(U91(isLNatKind(V1), V1)) active(isLNat(take(V1, V2))) -> mark(U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isLNatKind(nil)) -> mark(tt) active(isLNatKind(afterNth(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(cons(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isLNatKind(fst(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(natsFrom(V1))) -> mark(isNaturalKind(V1)) active(isLNatKind(snd(V1))) -> mark(isPLNatKind(V1)) active(isLNatKind(tail(V1))) -> mark(isLNatKind(V1)) active(isLNatKind(take(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isNatural(0')) -> mark(tt) active(isNatural(head(V1))) -> mark(U111(isLNatKind(V1), V1)) active(isNatural(s(V1))) -> mark(U121(isNaturalKind(V1), V1)) active(isNatural(sel(V1, V2))) -> mark(U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isNaturalKind(0')) -> mark(tt) active(isNaturalKind(head(V1))) -> mark(isLNatKind(V1)) active(isNaturalKind(s(V1))) -> mark(isNaturalKind(V1)) active(isNaturalKind(sel(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(isPLNat(pair(V1, V2))) -> mark(U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNat(splitAt(V1, V2))) -> mark(U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)) active(isPLNatKind(pair(V1, V2))) -> mark(and(isLNatKind(V1), isLNatKind(V2))) active(isPLNatKind(splitAt(V1, V2))) -> mark(and(isNaturalKind(V1), isLNatKind(V2))) active(natsFrom(N)) -> mark(U161(and(isNatural(N), isNaturalKind(N)), N)) active(sel(N, XS)) -> mark(U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(snd(pair(X, Y))) -> mark(U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)) active(splitAt(0', XS)) -> mark(U191(and(isLNat(XS), isLNatKind(XS)), XS)) active(splitAt(s(N), cons(X, XS))) -> mark(U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)) active(tail(cons(N, XS))) -> mark(U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)) active(take(N, XS)) -> mark(U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)) active(U101(X1, X2, X3)) -> U101(active(X1), X2, X3) active(U102(X1, X2)) -> U102(active(X1), X2) active(U103(X)) -> U103(active(X)) active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) active(snd(X)) -> snd(active(X)) active(splitAt(X1, X2)) -> splitAt(active(X1), X2) active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) active(U111(X1, X2)) -> U111(active(X1), X2) active(U112(X)) -> U112(active(X)) active(U121(X1, X2)) -> U121(active(X1), X2) active(U122(X)) -> U122(active(X)) active(U131(X1, X2, X3)) -> U131(active(X1), X2, X3) active(U132(X1, X2)) -> U132(active(X1), X2) active(U133(X)) -> U133(active(X)) active(U141(X1, X2, X3)) -> U141(active(X1), X2, X3) active(U142(X1, X2)) -> U142(active(X1), X2) active(U143(X)) -> U143(active(X)) active(U151(X1, X2, X3)) -> U151(active(X1), X2, X3) active(U152(X1, X2)) -> U152(active(X1), X2) active(U153(X)) -> U153(active(X)) active(U161(X1, X2)) -> U161(active(X1), X2) active(cons(X1, X2)) -> cons(active(X1), X2) active(natsFrom(X)) -> natsFrom(active(X)) active(s(X)) -> s(active(X)) active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) active(head(X)) -> head(active(X)) active(afterNth(X1, X2)) -> afterNth(active(X1), X2) active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) active(U181(X1, X2)) -> U181(active(X1), X2) active(U191(X1, X2)) -> U191(active(X1), X2) active(pair(X1, X2)) -> pair(active(X1), X2) active(pair(X1, X2)) -> pair(X1, active(X2)) active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) active(U202(X1, X2)) -> U202(active(X1), X2) active(U21(X1, X2)) -> U21(active(X1), X2) active(U211(X1, X2)) -> U211(active(X1), X2) active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) active(fst(X)) -> fst(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2)) -> U42(active(X1), X2) active(U43(X)) -> U43(active(X)) active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) active(U52(X1, X2)) -> U52(active(X1), X2) active(U53(X)) -> U53(active(X)) active(U61(X1, X2)) -> U61(active(X1), X2) active(U62(X)) -> U62(active(X)) active(U71(X1, X2)) -> U71(active(X1), X2) active(U72(X)) -> U72(active(X)) active(U81(X1, X2)) -> U81(active(X1), X2) active(U82(X)) -> U82(active(X)) active(U91(X1, X2)) -> U91(active(X1), X2) active(U92(X)) -> U92(active(X)) active(and(X1, X2)) -> and(active(X1), X2) active(tail(X)) -> tail(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(sel(X1, X2)) -> sel(active(X1), X2) active(sel(X1, X2)) -> sel(X1, active(X2)) U101(mark(X1), X2, X3) -> mark(U101(X1, X2, X3)) U102(mark(X1), X2) -> mark(U102(X1, X2)) U103(mark(X)) -> mark(U103(X)) U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) snd(mark(X)) -> mark(snd(X)) splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) U111(mark(X1), X2) -> mark(U111(X1, X2)) U112(mark(X)) -> mark(U112(X)) U121(mark(X1), X2) -> mark(U121(X1, X2)) U122(mark(X)) -> mark(U122(X)) U131(mark(X1), X2, X3) -> mark(U131(X1, X2, X3)) U132(mark(X1), X2) -> mark(U132(X1, X2)) U133(mark(X)) -> mark(U133(X)) U141(mark(X1), X2, X3) -> mark(U141(X1, X2, X3)) U142(mark(X1), X2) -> mark(U142(X1, X2)) U143(mark(X)) -> mark(U143(X)) U151(mark(X1), X2, X3) -> mark(U151(X1, X2, X3)) U152(mark(X1), X2) -> mark(U152(X1, X2)) U153(mark(X)) -> mark(U153(X)) U161(mark(X1), X2) -> mark(U161(X1, X2)) cons(mark(X1), X2) -> mark(cons(X1, X2)) natsFrom(mark(X)) -> mark(natsFrom(X)) s(mark(X)) -> mark(s(X)) U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) head(mark(X)) -> mark(head(X)) afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) U181(mark(X1), X2) -> mark(U181(X1, X2)) U191(mark(X1), X2) -> mark(U191(X1, X2)) pair(mark(X1), X2) -> mark(pair(X1, X2)) pair(X1, mark(X2)) -> mark(pair(X1, X2)) U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) U202(mark(X1), X2) -> mark(U202(X1, X2)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U211(mark(X1), X2) -> mark(U211(X1, X2)) U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) fst(mark(X)) -> mark(fst(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2) -> mark(U42(X1, X2)) U43(mark(X)) -> mark(U43(X)) U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) U52(mark(X1), X2) -> mark(U52(X1, X2)) U53(mark(X)) -> mark(U53(X)) U61(mark(X1), X2) -> mark(U61(X1, X2)) U62(mark(X)) -> mark(U62(X)) U71(mark(X1), X2) -> mark(U71(X1, X2)) U72(mark(X)) -> mark(U72(X)) U81(mark(X1), X2) -> mark(U81(X1, X2)) U82(mark(X)) -> mark(U82(X)) U91(mark(X1), X2) -> mark(U91(X1, X2)) U92(mark(X)) -> mark(U92(X)) and(mark(X1), X2) -> mark(and(X1, X2)) tail(mark(X)) -> mark(tail(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) sel(mark(X1), X2) -> mark(sel(X1, X2)) sel(X1, mark(X2)) -> mark(sel(X1, X2)) proper(U101(X1, X2, X3)) -> U101(proper(X1), proper(X2), proper(X3)) proper(tt) -> ok(tt) proper(U102(X1, X2)) -> U102(proper(X1), proper(X2)) proper(isNatural(X)) -> isNatural(proper(X)) proper(U103(X)) -> U103(proper(X)) proper(isLNat(X)) -> isLNat(proper(X)) proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) proper(snd(X)) -> snd(proper(X)) proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) proper(U111(X1, X2)) -> U111(proper(X1), proper(X2)) proper(U112(X)) -> U112(proper(X)) proper(U121(X1, X2)) -> U121(proper(X1), proper(X2)) proper(U122(X)) -> U122(proper(X)) proper(U131(X1, X2, X3)) -> U131(proper(X1), proper(X2), proper(X3)) proper(U132(X1, X2)) -> U132(proper(X1), proper(X2)) proper(U133(X)) -> U133(proper(X)) proper(U141(X1, X2, X3)) -> U141(proper(X1), proper(X2), proper(X3)) proper(U142(X1, X2)) -> U142(proper(X1), proper(X2)) proper(U143(X)) -> U143(proper(X)) proper(U151(X1, X2, X3)) -> U151(proper(X1), proper(X2), proper(X3)) proper(U152(X1, X2)) -> U152(proper(X1), proper(X2)) proper(U153(X)) -> U153(proper(X)) proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(natsFrom(X)) -> natsFrom(proper(X)) proper(s(X)) -> s(proper(X)) proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) proper(head(X)) -> head(proper(X)) proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) proper(U202(X1, X2)) -> U202(proper(X1), proper(X2)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) proper(fst(X)) -> fst(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2)) -> U42(proper(X1), proper(X2)) proper(U43(X)) -> U43(proper(X)) proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) proper(U53(X)) -> U53(proper(X)) proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) proper(U62(X)) -> U62(proper(X)) proper(isPLNat(X)) -> isPLNat(proper(X)) proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) proper(U72(X)) -> U72(proper(X)) proper(U81(X1, X2)) -> U81(proper(X1), proper(X2)) proper(U82(X)) -> U82(proper(X)) proper(U91(X1, X2)) -> U91(proper(X1), proper(X2)) proper(U92(X)) -> U92(proper(X)) proper(and(X1, X2)) -> and(proper(X1), proper(X2)) proper(isNaturalKind(X)) -> isNaturalKind(proper(X)) proper(isLNatKind(X)) -> isLNatKind(proper(X)) proper(isPLNatKind(X)) -> isPLNatKind(proper(X)) proper(tail(X)) -> tail(proper(X)) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(0') -> ok(0') proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) U101(ok(X1), ok(X2), ok(X3)) -> ok(U101(X1, X2, X3)) U102(ok(X1), ok(X2)) -> ok(U102(X1, X2)) isNatural(ok(X)) -> ok(isNatural(X)) U103(ok(X)) -> ok(U103(X)) isLNat(ok(X)) -> ok(isLNat(X)) U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) snd(ok(X)) -> ok(snd(X)) splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) U111(ok(X1), ok(X2)) -> ok(U111(X1, X2)) U112(ok(X)) -> ok(U112(X)) U121(ok(X1), ok(X2)) -> ok(U121(X1, X2)) U122(ok(X)) -> ok(U122(X)) U131(ok(X1), ok(X2), ok(X3)) -> ok(U131(X1, X2, X3)) U132(ok(X1), ok(X2)) -> ok(U132(X1, X2)) U133(ok(X)) -> ok(U133(X)) U141(ok(X1), ok(X2), ok(X3)) -> ok(U141(X1, X2, X3)) U142(ok(X1), ok(X2)) -> ok(U142(X1, X2)) U143(ok(X)) -> ok(U143(X)) U151(ok(X1), ok(X2), ok(X3)) -> ok(U151(X1, X2, X3)) U152(ok(X1), ok(X2)) -> ok(U152(X1, X2)) U153(ok(X)) -> ok(U153(X)) U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) natsFrom(ok(X)) -> ok(natsFrom(X)) s(ok(X)) -> ok(s(X)) U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) head(ok(X)) -> ok(head(X)) afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) U202(ok(X1), ok(X2)) -> ok(U202(X1, X2)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) fst(ok(X)) -> ok(fst(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2)) -> ok(U42(X1, X2)) U43(ok(X)) -> ok(U43(X)) U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) U53(ok(X)) -> ok(U53(X)) U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) U62(ok(X)) -> ok(U62(X)) isPLNat(ok(X)) -> ok(isPLNat(X)) U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) U72(ok(X)) -> ok(U72(X)) U81(ok(X1), ok(X2)) -> ok(U81(X1, X2)) U82(ok(X)) -> ok(U82(X)) U91(ok(X1), ok(X2)) -> ok(U91(X1, X2)) U92(ok(X)) -> ok(U92(X)) and(ok(X1), ok(X2)) -> ok(and(X1, X2)) isNaturalKind(ok(X)) -> ok(isNaturalKind(X)) isLNatKind(ok(X)) -> ok(isLNatKind(X)) isPLNatKind(ok(X)) -> ok(isPLNatKind(X)) tail(ok(X)) -> ok(tail(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok tt :: tt:mark:nil:0':ok mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U103 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U112 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U122 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U133 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U143 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U153 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok nil :: tt:mark:nil:0':ok U201 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U202 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U43 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U53 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U62 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U72 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U82 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok U92 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok and :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok isNaturalKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok isPLNatKind :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 0' :: tt:mark:nil:0':ok sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok top :: tt:mark:nil:0':ok -> top hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok hole_top2_0 :: top gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok Lemmas: U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) U103(gen_tt:mark:nil:0':ok3_0(+(1, n4971_0))) -> *4_0, rt in Omega(n4971_0) snd(gen_tt:mark:nil:0':ok3_0(+(1, n6369_0))) -> *4_0, rt in Omega(n6369_0) splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n7856_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n7856_0) U112(gen_tt:mark:nil:0':ok3_0(+(1, n13734_0))) -> *4_0, rt in Omega(n13734_0) U122(gen_tt:mark:nil:0':ok3_0(+(1, n15472_0))) -> *4_0, rt in Omega(n15472_0) U132(gen_tt:mark:nil:0':ok3_0(+(1, n17311_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n17311_0) U133(gen_tt:mark:nil:0':ok3_0(+(1, n23712_0))) -> *4_0, rt in Omega(n23712_0) U142(gen_tt:mark:nil:0':ok3_0(+(1, n25802_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n25802_0) U143(gen_tt:mark:nil:0':ok3_0(+(1, n32717_0))) -> *4_0, rt in Omega(n32717_0) U152(gen_tt:mark:nil:0':ok3_0(+(1, n35058_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n35058_0) U153(gen_tt:mark:nil:0':ok3_0(+(1, n42487_0))) -> *4_0, rt in Omega(n42487_0) cons(gen_tt:mark:nil:0':ok3_0(+(1, n45079_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45079_0) natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n53022_0))) -> *4_0, rt in Omega(n53022_0) s(gen_tt:mark:nil:0':ok3_0(+(1, n55865_0))) -> *4_0, rt in Omega(n55865_0) head(gen_tt:mark:nil:0':ok3_0(+(1, n58809_0))) -> *4_0, rt in Omega(n58809_0) afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n61854_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61854_0) pair(gen_tt:mark:nil:0':ok3_0(+(1, n70926_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n70926_0) U202(gen_tt:mark:nil:0':ok3_0(+(1, n80304_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n80304_0) fst(gen_tt:mark:nil:0':ok3_0(+(1, n89789_0))) -> *4_0, rt in Omega(n89789_0) U42(gen_tt:mark:nil:0':ok3_0(+(1, n93385_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n93385_0) U43(gen_tt:mark:nil:0':ok3_0(+(1, n103384_0))) -> *4_0, rt in Omega(n103384_0) U52(gen_tt:mark:nil:0':ok3_0(+(1, n107231_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n107231_0) U53(gen_tt:mark:nil:0':ok3_0(+(1, n117744_0))) -> *4_0, rt in Omega(n117744_0) U62(gen_tt:mark:nil:0':ok3_0(+(1, n121842_0))) -> *4_0, rt in Omega(n121842_0) U72(gen_tt:mark:nil:0':ok3_0(+(1, n126142_0))) -> *4_0, rt in Omega(n126142_0) U82(gen_tt:mark:nil:0':ok3_0(+(1, n130442_0))) -> *4_0, rt in Omega(n130442_0) U92(gen_tt:mark:nil:0':ok3_0(+(1, n134843_0))) -> *4_0, rt in Omega(n134843_0) U11(gen_tt:mark:nil:0':ok3_0(+(1, n139345_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n139345_0) and(gen_tt:mark:nil:0':ok3_0(+(1, n158460_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158460_0) U21(gen_tt:mark:nil:0':ok3_0(+(1, n170967_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n170967_0) U31(gen_tt:mark:nil:0':ok3_0(+(1, n183536_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n183536_0) U41(gen_tt:mark:nil:0':ok3_0(+(1, n196411_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n196411_0) U51(gen_tt:mark:nil:0':ok3_0(+(1, n217521_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n217521_0) U61(gen_tt:mark:nil:0':ok3_0(+(1, n239240_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n239240_0) U71(gen_tt:mark:nil:0':ok3_0(+(1, n253380_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n253380_0) U81(gen_tt:mark:nil:0':ok3_0(+(1, n267675_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n267675_0) U91(gen_tt:mark:nil:0':ok3_0(+(1, n282276_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n282276_0) U101(gen_tt:mark:nil:0':ok3_0(+(1, n297183_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n297183_0) U111(gen_tt:mark:nil:0':ok3_0(+(1, n321359_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n321359_0) U121(gen_tt:mark:nil:0':ok3_0(+(1, n336976_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n336976_0) U131(gen_tt:mark:nil:0':ok3_0(+(1, n352899_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n352899_0) U141(gen_tt:mark:nil:0':ok3_0(+(1, n378608_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n378608_0) U151(gen_tt:mark:nil:0':ok3_0(+(1, n404926_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n404926_0) U161(gen_tt:mark:nil:0':ok3_0(+(1, n431853_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n431853_0) U171(gen_tt:mark:nil:0':ok3_0(+(1, n449294_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n449294_0) U181(gen_tt:mark:nil:0':ok3_0(+(1, n477292_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n477292_0) U191(gen_tt:mark:nil:0':ok3_0(+(1, n495443_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n495443_0) U201(gen_tt:mark:nil:0':ok3_0(+(1, n513900_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c), gen_tt:mark:nil:0':ok3_0(d)) -> *4_0, rt in Omega(n513900_0) U211(gen_tt:mark:nil:0':ok3_0(+(1, n554199_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n554199_0) U221(gen_tt:mark:nil:0':ok3_0(+(1, n573464_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n573464_0) tail(gen_tt:mark:nil:0':ok3_0(+(1, n604213_0))) -> *4_0, rt in Omega(n604213_0) take(gen_tt:mark:nil:0':ok3_0(+(1, n612805_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n612805_0) sel(gen_tt:mark:nil:0':ok3_0(+(1, n633187_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n633187_0) Generator Equations: gen_tt:mark:nil:0':ok3_0(0) <=> tt gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) The following defined symbols remain to be analysed: active, proper, top They will be analysed ascendingly in the following order: active < top proper < top