54.74/14.91 WORST_CASE(Omega(n^1), O(n^1)) 54.74/14.92 proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml 54.74/14.92 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 54.74/14.92 54.74/14.92 54.74/14.92 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 54.74/14.92 54.74/14.92 (0) CpxTRS 54.74/14.92 (1) NestedDefinedSymbolProof [UPPER BOUND(ID), 0 ms] 54.74/14.92 (2) CpxTRS 54.74/14.92 (3) RcToIrcProof [BOTH BOUNDS(ID, ID), 79 ms] 54.74/14.92 (4) CpxTRS 54.74/14.92 (5) CpxTrsToCdtProof [UPPER BOUND(ID), 19 ms] 54.74/14.92 (6) CdtProblem 54.74/14.92 (7) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] 54.74/14.92 (8) CdtProblem 54.74/14.92 (9) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] 54.74/14.92 (10) CdtProblem 54.74/14.92 (11) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 13 ms] 54.74/14.92 (12) CdtProblem 54.74/14.92 (13) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 331 ms] 54.74/14.92 (14) CdtProblem 54.74/14.92 (15) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 98 ms] 54.74/14.92 (16) CdtProblem 54.74/14.92 (17) SIsEmptyProof [BOTH BOUNDS(ID, ID), 0 ms] 54.74/14.92 (18) BOUNDS(1, 1) 54.74/14.92 (19) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 54.74/14.92 (20) CpxTRS 54.74/14.92 (21) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 54.74/14.92 (22) typed CpxTrs 54.74/14.92 (23) OrderProof [LOWER BOUND(ID), 0 ms] 54.74/14.92 (24) typed CpxTrs 54.74/14.92 (25) RewriteLemmaProof [LOWER BOUND(ID), 499 ms] 54.74/14.92 (26) BEST 54.74/14.92 (27) proven lower bound 54.74/14.92 (28) LowerBoundPropagationProof [FINISHED, 0 ms] 54.74/14.92 (29) BOUNDS(n^1, INF) 54.74/14.92 (30) typed CpxTrs 54.74/14.92 (31) RewriteLemmaProof [LOWER BOUND(ID), 264 ms] 54.74/14.92 (32) typed CpxTrs 54.74/14.92 (33) RewriteLemmaProof [LOWER BOUND(ID), 170 ms] 54.74/14.92 (34) typed CpxTrs 54.74/14.92 (35) RewriteLemmaProof [LOWER BOUND(ID), 148 ms] 54.74/14.92 (36) typed CpxTrs 54.74/14.92 (37) RewriteLemmaProof [LOWER BOUND(ID), 95 ms] 54.74/14.92 (38) typed CpxTrs 54.74/14.92 (39) RewriteLemmaProof [LOWER BOUND(ID), 85 ms] 54.74/14.92 (40) typed CpxTrs 54.74/14.92 (41) RewriteLemmaProof [LOWER BOUND(ID), 136 ms] 54.74/14.92 (42) typed CpxTrs 54.74/14.92 (43) RewriteLemmaProof [LOWER BOUND(ID), 174 ms] 54.74/14.92 (44) typed CpxTrs 54.74/14.92 (45) RewriteLemmaProof [LOWER BOUND(ID), 128 ms] 54.74/14.92 (46) typed CpxTrs 54.74/14.92 (47) RewriteLemmaProof [LOWER BOUND(ID), 126 ms] 54.74/14.92 (48) typed CpxTrs 54.74/14.92 (49) RewriteLemmaProof [LOWER BOUND(ID), 200 ms] 54.74/14.92 (50) typed CpxTrs 54.74/14.92 (51) RewriteLemmaProof [LOWER BOUND(ID), 129 ms] 54.74/14.92 (52) typed CpxTrs 54.74/14.92 (53) RewriteLemmaProof [LOWER BOUND(ID), 193 ms] 54.74/14.92 (54) typed CpxTrs 54.74/14.92 (55) RewriteLemmaProof [LOWER BOUND(ID), 165 ms] 54.74/14.92 (56) typed CpxTrs 54.74/14.92 (57) RewriteLemmaProof [LOWER BOUND(ID), 197 ms] 54.74/14.92 (58) typed CpxTrs 54.74/14.92 (59) RewriteLemmaProof [LOWER BOUND(ID), 223 ms] 54.74/14.92 (60) typed CpxTrs 54.74/14.92 (61) RewriteLemmaProof [LOWER BOUND(ID), 277 ms] 54.74/14.92 (62) typed CpxTrs 54.74/14.92 (63) RewriteLemmaProof [LOWER BOUND(ID), 210 ms] 54.74/14.92 (64) typed CpxTrs 54.74/14.92 (65) RewriteLemmaProof [LOWER BOUND(ID), 211 ms] 54.74/14.92 (66) typed CpxTrs 54.74/14.92 (67) RewriteLemmaProof [LOWER BOUND(ID), 200 ms] 54.74/14.92 (68) typed CpxTrs 54.74/14.92 (69) RewriteLemmaProof [LOWER BOUND(ID), 255 ms] 54.74/14.92 (70) typed CpxTrs 54.74/14.92 (71) RewriteLemmaProof [LOWER BOUND(ID), 69 ms] 54.74/14.92 (72) typed CpxTrs 54.74/14.92 (73) RewriteLemmaProof [LOWER BOUND(ID), 210 ms] 54.74/14.92 (74) typed CpxTrs 54.74/14.92 (75) RewriteLemmaProof [LOWER BOUND(ID), 97 ms] 54.74/14.92 (76) typed CpxTrs 54.74/14.92 (77) RewriteLemmaProof [LOWER BOUND(ID), 42 ms] 54.74/14.92 (78) typed CpxTrs 54.74/14.92 (79) RewriteLemmaProof [LOWER BOUND(ID), 294 ms] 54.74/14.92 (80) typed CpxTrs 54.74/14.92 (81) RewriteLemmaProof [LOWER BOUND(ID), 288 ms] 54.74/14.92 (82) typed CpxTrs 54.74/14.92 (83) RewriteLemmaProof [LOWER BOUND(ID), 238 ms] 54.74/14.92 (84) typed CpxTrs 54.74/14.92 (85) RewriteLemmaProof [LOWER BOUND(ID), 135 ms] 54.74/14.92 (86) typed CpxTrs 54.74/14.92 (87) RewriteLemmaProof [LOWER BOUND(ID), 178 ms] 54.74/14.92 (88) typed CpxTrs 54.74/14.92 (89) RewriteLemmaProof [LOWER BOUND(ID), 47 ms] 54.74/14.92 (90) typed CpxTrs 54.74/14.92 (91) RewriteLemmaProof [LOWER BOUND(ID), 95 ms] 54.74/14.92 (92) typed CpxTrs 54.74/14.92 (93) RewriteLemmaProof [LOWER BOUND(ID), 122 ms] 54.74/14.92 (94) typed CpxTrs 54.74/14.92 (95) RewriteLemmaProof [LOWER BOUND(ID), 80 ms] 54.74/14.92 (96) typed CpxTrs 54.74/14.92 54.74/14.92 54.74/14.92 ---------------------------------------- 54.74/14.92 54.74/14.92 (0) 54.74/14.92 Obligation: 54.74/14.92 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 54.74/14.92 54.74/14.92 54.74/14.92 The TRS R consists of the following rules: 54.74/14.92 54.74/14.92 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 54.74/14.92 active(U102(tt)) -> mark(tt) 54.74/14.92 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 54.74/14.92 active(U111(tt)) -> mark(tt) 54.74/14.92 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 54.74/14.92 active(U121(tt)) -> mark(tt) 54.74/14.92 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 54.74/14.92 active(U132(tt)) -> mark(tt) 54.74/14.92 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 54.74/14.92 active(U142(tt)) -> mark(tt) 54.74/14.92 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 54.74/14.92 active(U152(tt)) -> mark(tt) 54.74/14.92 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 54.74/14.92 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 54.74/14.92 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 54.74/14.92 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 54.74/14.92 active(U182(tt, Y)) -> mark(Y) 54.74/14.92 active(U191(tt, XS)) -> mark(pair(nil, XS)) 54.74/14.92 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 54.74/14.92 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 54.74/14.92 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 54.74/14.92 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 54.74/14.92 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 54.74/14.92 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 54.74/14.92 active(U212(tt, XS)) -> mark(XS) 54.74/14.92 active(U22(tt, X)) -> mark(X) 54.74/14.92 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 54.74/14.92 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 54.74/14.92 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 54.74/14.92 active(U32(tt, N)) -> mark(N) 54.74/14.92 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 54.74/14.92 active(U42(tt)) -> mark(tt) 54.74/14.92 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 54.74/14.92 active(U52(tt)) -> mark(tt) 54.74/14.92 active(U61(tt)) -> mark(tt) 54.74/14.92 active(U71(tt)) -> mark(tt) 54.74/14.92 active(U81(tt)) -> mark(tt) 54.74/14.92 active(U91(tt)) -> mark(tt) 54.74/14.92 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 54.74/14.92 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 54.74/14.92 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 54.74/14.92 active(isLNat(nil)) -> mark(tt) 54.74/14.92 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 54.74/14.92 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 54.74/14.92 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 54.74/14.92 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 54.74/14.92 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 54.74/14.92 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 54.74/14.92 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 54.74/14.92 active(isNatural(0)) -> mark(tt) 54.74/14.92 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 54.74/14.92 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 54.74/14.92 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 54.74/14.92 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 54.74/14.92 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 54.74/14.92 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 54.74/14.92 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 54.74/14.92 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 54.74/14.92 active(splitAt(0, XS)) -> mark(U191(isLNat(XS), XS)) 54.74/14.92 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 54.74/14.92 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 54.74/14.92 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 54.74/14.92 active(U101(X1, X2)) -> U101(active(X1), X2) 54.74/14.92 active(U102(X)) -> U102(active(X)) 54.74/14.92 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 54.74/14.92 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 54.74/14.92 active(U111(X)) -> U111(active(X)) 54.74/14.92 active(snd(X)) -> snd(active(X)) 54.74/14.92 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 54.74/14.92 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 54.74/14.92 active(U121(X)) -> U121(active(X)) 54.74/14.92 active(U131(X1, X2)) -> U131(active(X1), X2) 54.74/14.92 active(U132(X)) -> U132(active(X)) 54.74/14.92 active(U141(X1, X2)) -> U141(active(X1), X2) 54.74/14.92 active(U142(X)) -> U142(active(X)) 54.74/14.92 active(U151(X1, X2)) -> U151(active(X1), X2) 54.74/14.92 active(U152(X)) -> U152(active(X)) 54.74/14.92 active(U161(X1, X2)) -> U161(active(X1), X2) 54.74/14.92 active(cons(X1, X2)) -> cons(active(X1), X2) 54.74/14.92 active(natsFrom(X)) -> natsFrom(active(X)) 54.74/14.92 active(s(X)) -> s(active(X)) 54.74/14.92 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 54.74/14.92 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 54.74/14.92 active(head(X)) -> head(active(X)) 54.74/14.92 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 54.74/14.92 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 54.74/14.92 active(U181(X1, X2)) -> U181(active(X1), X2) 54.74/14.92 active(U182(X1, X2)) -> U182(active(X1), X2) 54.74/14.92 active(U191(X1, X2)) -> U191(active(X1), X2) 54.74/14.92 active(pair(X1, X2)) -> pair(active(X1), X2) 54.74/14.92 active(pair(X1, X2)) -> pair(X1, active(X2)) 54.74/14.92 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 54.74/14.92 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 54.74/14.92 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 54.74/14.92 active(U204(X1, X2)) -> U204(active(X1), X2) 54.74/14.92 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 54.74/14.92 active(U22(X1, X2)) -> U22(active(X1), X2) 54.74/14.92 active(U211(X1, X2)) -> U211(active(X1), X2) 54.74/14.92 active(U212(X1, X2)) -> U212(active(X1), X2) 54.74/14.92 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 54.74/14.92 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 54.74/14.92 active(fst(X)) -> fst(active(X)) 54.74/14.92 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 54.74/14.92 active(U32(X1, X2)) -> U32(active(X1), X2) 54.74/14.92 active(U41(X1, X2)) -> U41(active(X1), X2) 54.74/14.92 active(U42(X)) -> U42(active(X)) 54.74/14.92 active(U51(X1, X2)) -> U51(active(X1), X2) 54.74/14.92 active(U52(X)) -> U52(active(X)) 54.74/14.92 active(U61(X)) -> U61(active(X)) 54.74/14.92 active(U71(X)) -> U71(active(X)) 54.74/14.92 active(U81(X)) -> U81(active(X)) 54.74/14.92 active(U91(X)) -> U91(active(X)) 54.74/14.92 active(tail(X)) -> tail(active(X)) 54.74/14.92 active(take(X1, X2)) -> take(active(X1), X2) 54.74/14.92 active(take(X1, X2)) -> take(X1, active(X2)) 54.74/14.92 active(sel(X1, X2)) -> sel(active(X1), X2) 54.74/14.92 active(sel(X1, X2)) -> sel(X1, active(X2)) 54.74/14.92 U101(mark(X1), X2) -> mark(U101(X1, X2)) 54.74/14.92 U102(mark(X)) -> mark(U102(X)) 54.74/14.92 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 54.74/14.92 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 54.74/14.92 U111(mark(X)) -> mark(U111(X)) 54.74/14.92 snd(mark(X)) -> mark(snd(X)) 54.74/14.92 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 54.74/14.92 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 54.74/14.92 U121(mark(X)) -> mark(U121(X)) 54.74/14.92 U131(mark(X1), X2) -> mark(U131(X1, X2)) 54.74/14.92 U132(mark(X)) -> mark(U132(X)) 54.74/14.92 U141(mark(X1), X2) -> mark(U141(X1, X2)) 54.74/14.92 U142(mark(X)) -> mark(U142(X)) 54.74/14.92 U151(mark(X1), X2) -> mark(U151(X1, X2)) 54.74/14.92 U152(mark(X)) -> mark(U152(X)) 54.74/14.92 U161(mark(X1), X2) -> mark(U161(X1, X2)) 54.74/14.92 cons(mark(X1), X2) -> mark(cons(X1, X2)) 54.74/14.92 natsFrom(mark(X)) -> mark(natsFrom(X)) 54.74/14.92 s(mark(X)) -> mark(s(X)) 54.74/14.92 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 54.74/14.92 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 54.74/14.92 head(mark(X)) -> mark(head(X)) 54.74/14.92 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 54.74/14.92 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 54.74/14.92 U181(mark(X1), X2) -> mark(U181(X1, X2)) 54.74/14.92 U182(mark(X1), X2) -> mark(U182(X1, X2)) 54.74/14.92 U191(mark(X1), X2) -> mark(U191(X1, X2)) 54.74/14.92 pair(mark(X1), X2) -> mark(pair(X1, X2)) 54.74/14.92 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 54.74/14.92 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 54.74/14.92 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 54.74/14.92 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 54.74/14.92 U204(mark(X1), X2) -> mark(U204(X1, X2)) 54.74/14.92 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 54.74/14.92 U22(mark(X1), X2) -> mark(U22(X1, X2)) 54.74/14.92 U211(mark(X1), X2) -> mark(U211(X1, X2)) 54.74/14.92 U212(mark(X1), X2) -> mark(U212(X1, X2)) 54.74/14.92 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 54.74/14.92 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 54.74/14.92 fst(mark(X)) -> mark(fst(X)) 54.74/14.92 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 54.74/14.92 U32(mark(X1), X2) -> mark(U32(X1, X2)) 54.74/14.92 U41(mark(X1), X2) -> mark(U41(X1, X2)) 54.74/14.92 U42(mark(X)) -> mark(U42(X)) 54.74/14.92 U51(mark(X1), X2) -> mark(U51(X1, X2)) 54.74/14.92 U52(mark(X)) -> mark(U52(X)) 54.74/14.92 U61(mark(X)) -> mark(U61(X)) 54.74/14.92 U71(mark(X)) -> mark(U71(X)) 54.74/14.92 U81(mark(X)) -> mark(U81(X)) 54.74/14.92 U91(mark(X)) -> mark(U91(X)) 54.74/14.92 tail(mark(X)) -> mark(tail(X)) 54.74/14.92 take(mark(X1), X2) -> mark(take(X1, X2)) 54.74/14.92 take(X1, mark(X2)) -> mark(take(X1, X2)) 54.74/14.92 sel(mark(X1), X2) -> mark(sel(X1, X2)) 54.74/14.92 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 54.74/14.92 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 54.74/14.92 proper(tt) -> ok(tt) 54.74/14.92 proper(U102(X)) -> U102(proper(X)) 54.74/14.92 proper(isLNat(X)) -> isLNat(proper(X)) 54.74/14.92 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 54.74/14.92 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 54.74/14.92 proper(U111(X)) -> U111(proper(X)) 54.74/14.92 proper(snd(X)) -> snd(proper(X)) 54.74/14.92 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 54.74/14.92 proper(U121(X)) -> U121(proper(X)) 54.74/14.92 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 54.74/14.92 proper(U132(X)) -> U132(proper(X)) 54.74/14.92 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 54.74/14.92 proper(U142(X)) -> U142(proper(X)) 54.74/14.92 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 54.74/14.92 proper(U152(X)) -> U152(proper(X)) 54.74/14.93 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 54.74/14.93 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 54.74/14.93 proper(natsFrom(X)) -> natsFrom(proper(X)) 54.74/14.93 proper(s(X)) -> s(proper(X)) 54.74/14.93 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 54.74/14.93 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 54.74/14.93 proper(head(X)) -> head(proper(X)) 54.74/14.93 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 54.74/14.93 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 54.74/14.93 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 54.74/14.93 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 54.74/14.93 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 54.74/14.93 proper(nil) -> ok(nil) 54.74/14.93 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 54.74/14.93 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 54.74/14.93 proper(isNatural(X)) -> isNatural(proper(X)) 54.74/14.93 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 54.74/14.93 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 54.74/14.93 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 54.74/14.93 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 54.74/14.93 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 54.74/14.93 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 54.74/14.93 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 54.74/14.93 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 54.74/14.93 proper(fst(X)) -> fst(proper(X)) 54.74/14.93 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 54.74/14.93 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 54.74/14.93 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 54.74/14.93 proper(U42(X)) -> U42(proper(X)) 54.74/14.93 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 54.74/14.93 proper(U52(X)) -> U52(proper(X)) 54.74/14.93 proper(U61(X)) -> U61(proper(X)) 54.74/14.93 proper(U71(X)) -> U71(proper(X)) 54.74/14.93 proper(U81(X)) -> U81(proper(X)) 54.74/14.93 proper(U91(X)) -> U91(proper(X)) 54.74/14.93 proper(isPLNat(X)) -> isPLNat(proper(X)) 54.74/14.93 proper(tail(X)) -> tail(proper(X)) 54.74/14.93 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 54.74/14.93 proper(0) -> ok(0) 54.74/14.93 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 54.74/14.93 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 54.74/14.93 U102(ok(X)) -> ok(U102(X)) 54.74/14.93 isLNat(ok(X)) -> ok(isLNat(X)) 54.74/14.93 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 54.74/14.93 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 54.74/14.93 U111(ok(X)) -> ok(U111(X)) 54.74/14.93 snd(ok(X)) -> ok(snd(X)) 54.74/14.93 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 54.74/14.93 U121(ok(X)) -> ok(U121(X)) 54.74/14.93 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 54.74/14.93 U132(ok(X)) -> ok(U132(X)) 54.74/14.93 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 54.74/14.93 U142(ok(X)) -> ok(U142(X)) 54.74/14.93 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 54.74/14.93 U152(ok(X)) -> ok(U152(X)) 54.74/14.93 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 54.74/14.93 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 54.74/14.93 natsFrom(ok(X)) -> ok(natsFrom(X)) 54.74/14.93 s(ok(X)) -> ok(s(X)) 54.74/14.93 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 54.74/14.93 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 54.74/14.93 head(ok(X)) -> ok(head(X)) 54.74/14.93 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 54.74/14.93 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 54.74/14.93 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 54.74/14.93 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 54.74/14.93 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 54.74/14.93 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 54.74/14.93 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 54.74/14.93 isNatural(ok(X)) -> ok(isNatural(X)) 54.74/14.93 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 54.74/14.93 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 54.74/14.93 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 54.74/14.93 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 54.74/14.93 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 54.74/14.93 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 54.74/14.93 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 54.74/14.93 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 54.74/14.93 fst(ok(X)) -> ok(fst(X)) 54.74/14.93 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 54.74/14.93 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 54.74/14.93 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 54.74/14.93 U42(ok(X)) -> ok(U42(X)) 54.74/14.93 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 54.74/14.93 U52(ok(X)) -> ok(U52(X)) 54.74/14.93 U61(ok(X)) -> ok(U61(X)) 54.74/14.93 U71(ok(X)) -> ok(U71(X)) 54.74/14.93 U81(ok(X)) -> ok(U81(X)) 54.74/14.93 U91(ok(X)) -> ok(U91(X)) 54.74/14.93 isPLNat(ok(X)) -> ok(isPLNat(X)) 54.74/14.93 tail(ok(X)) -> ok(tail(X)) 54.74/14.93 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 54.74/14.93 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 54.74/14.93 top(mark(X)) -> top(proper(X)) 54.74/14.93 top(ok(X)) -> top(active(X)) 54.74/14.93 54.74/14.93 S is empty. 54.74/14.93 Rewrite Strategy: FULL 54.74/14.93 ---------------------------------------- 54.74/14.93 54.74/14.93 (1) NestedDefinedSymbolProof (UPPER BOUND(ID)) 54.74/14.93 The following defined symbols can occur below the 0th argument of top: proper, active 54.74/14.93 The following defined symbols can occur below the 0th argument of proper: proper, active 54.74/14.93 The following defined symbols can occur below the 0th argument of active: proper, active 54.74/14.93 54.74/14.93 Hence, the left-hand sides of the following rules are not basic-reachable and can be removed: 54.74/14.93 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 54.74/14.93 active(U102(tt)) -> mark(tt) 54.74/14.93 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 54.74/14.93 active(U111(tt)) -> mark(tt) 54.74/14.93 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 54.74/14.93 active(U121(tt)) -> mark(tt) 54.74/14.93 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 54.74/14.93 active(U132(tt)) -> mark(tt) 54.74/14.93 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 54.74/14.93 active(U142(tt)) -> mark(tt) 54.74/14.93 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 54.74/14.93 active(U152(tt)) -> mark(tt) 54.74/14.93 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 54.74/14.93 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 54.74/14.93 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 54.74/14.93 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 54.74/14.93 active(U182(tt, Y)) -> mark(Y) 54.74/14.93 active(U191(tt, XS)) -> mark(pair(nil, XS)) 54.74/14.93 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 54.74/14.93 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 54.74/14.93 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 54.74/14.93 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 54.74/14.93 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 54.74/14.93 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 54.74/14.93 active(U212(tt, XS)) -> mark(XS) 54.74/14.93 active(U22(tt, X)) -> mark(X) 54.74/14.93 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 54.74/14.93 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 54.74/14.93 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 54.74/14.93 active(U32(tt, N)) -> mark(N) 54.74/14.93 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 54.74/14.93 active(U42(tt)) -> mark(tt) 54.74/14.93 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 54.74/14.93 active(U52(tt)) -> mark(tt) 54.74/14.93 active(U61(tt)) -> mark(tt) 54.74/14.93 active(U71(tt)) -> mark(tt) 54.74/14.93 active(U81(tt)) -> mark(tt) 54.74/14.93 active(U91(tt)) -> mark(tt) 54.74/14.93 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 54.74/14.93 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 54.74/14.93 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 54.74/14.93 active(isLNat(nil)) -> mark(tt) 54.74/14.93 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 54.74/14.93 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 54.74/14.93 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 54.74/14.93 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 54.74/14.93 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 54.74/14.93 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 54.74/14.93 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 54.74/14.93 active(isNatural(0)) -> mark(tt) 54.74/14.93 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 54.74/14.93 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 54.74/14.93 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 54.74/14.93 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 54.74/14.93 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 54.74/14.93 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 54.74/14.93 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 54.74/14.93 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 54.74/14.93 active(splitAt(0, XS)) -> mark(U191(isLNat(XS), XS)) 54.74/14.93 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 54.74/14.93 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 54.74/14.93 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 54.74/14.93 active(U101(X1, X2)) -> U101(active(X1), X2) 54.74/14.93 active(U102(X)) -> U102(active(X)) 54.74/14.93 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 54.74/14.93 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 54.74/14.93 active(U111(X)) -> U111(active(X)) 54.74/14.93 active(snd(X)) -> snd(active(X)) 54.74/14.93 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 54.74/14.93 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 54.74/14.93 active(U121(X)) -> U121(active(X)) 54.74/14.93 active(U131(X1, X2)) -> U131(active(X1), X2) 54.74/14.93 active(U132(X)) -> U132(active(X)) 54.74/14.93 active(U141(X1, X2)) -> U141(active(X1), X2) 54.74/14.93 active(U142(X)) -> U142(active(X)) 54.74/14.93 active(U151(X1, X2)) -> U151(active(X1), X2) 54.74/14.93 active(U152(X)) -> U152(active(X)) 54.74/14.93 active(U161(X1, X2)) -> U161(active(X1), X2) 54.74/14.93 active(cons(X1, X2)) -> cons(active(X1), X2) 54.74/14.93 active(natsFrom(X)) -> natsFrom(active(X)) 54.74/14.93 active(s(X)) -> s(active(X)) 54.74/14.93 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 54.74/14.93 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 54.74/14.93 active(head(X)) -> head(active(X)) 54.74/14.93 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 54.74/14.93 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 54.74/14.93 active(U181(X1, X2)) -> U181(active(X1), X2) 54.74/14.93 active(U182(X1, X2)) -> U182(active(X1), X2) 54.74/14.93 active(U191(X1, X2)) -> U191(active(X1), X2) 54.74/14.93 active(pair(X1, X2)) -> pair(active(X1), X2) 54.74/14.93 active(pair(X1, X2)) -> pair(X1, active(X2)) 54.74/14.93 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 54.74/14.93 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 54.74/14.93 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 54.74/14.93 active(U204(X1, X2)) -> U204(active(X1), X2) 54.74/14.93 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 54.74/14.93 active(U22(X1, X2)) -> U22(active(X1), X2) 54.74/14.93 active(U211(X1, X2)) -> U211(active(X1), X2) 54.74/14.93 active(U212(X1, X2)) -> U212(active(X1), X2) 54.74/14.93 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 54.74/14.93 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 54.74/14.93 active(fst(X)) -> fst(active(X)) 54.74/14.93 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 54.74/14.93 active(U32(X1, X2)) -> U32(active(X1), X2) 54.74/14.93 active(U41(X1, X2)) -> U41(active(X1), X2) 54.74/14.93 active(U42(X)) -> U42(active(X)) 54.74/14.93 active(U51(X1, X2)) -> U51(active(X1), X2) 54.74/14.93 active(U52(X)) -> U52(active(X)) 54.74/14.93 active(U61(X)) -> U61(active(X)) 54.74/14.93 active(U71(X)) -> U71(active(X)) 54.74/14.93 active(U81(X)) -> U81(active(X)) 54.74/14.93 active(U91(X)) -> U91(active(X)) 54.74/14.93 active(tail(X)) -> tail(active(X)) 54.74/14.93 active(take(X1, X2)) -> take(active(X1), X2) 54.74/14.93 active(take(X1, X2)) -> take(X1, active(X2)) 54.74/14.93 active(sel(X1, X2)) -> sel(active(X1), X2) 54.74/14.93 active(sel(X1, X2)) -> sel(X1, active(X2)) 54.74/14.93 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 54.74/14.93 proper(U102(X)) -> U102(proper(X)) 54.74/14.93 proper(isLNat(X)) -> isLNat(proper(X)) 54.74/14.93 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 54.74/14.93 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 54.74/14.93 proper(U111(X)) -> U111(proper(X)) 54.74/14.93 proper(snd(X)) -> snd(proper(X)) 54.74/14.93 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 54.74/14.93 proper(U121(X)) -> U121(proper(X)) 54.74/14.93 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 54.74/14.93 proper(U132(X)) -> U132(proper(X)) 54.74/14.93 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 54.74/14.93 proper(U142(X)) -> U142(proper(X)) 54.74/14.93 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 54.74/14.93 proper(U152(X)) -> U152(proper(X)) 54.74/14.93 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 54.74/14.93 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 54.74/14.93 proper(natsFrom(X)) -> natsFrom(proper(X)) 54.74/14.93 proper(s(X)) -> s(proper(X)) 54.74/14.93 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 54.74/14.93 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 54.74/14.93 proper(head(X)) -> head(proper(X)) 54.74/14.93 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 54.74/14.93 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 54.74/14.93 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 54.74/14.93 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 54.74/14.93 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 54.74/14.93 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 54.74/14.93 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 54.74/14.93 proper(isNatural(X)) -> isNatural(proper(X)) 54.74/14.93 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 54.74/14.93 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 54.74/14.93 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 54.74/14.93 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 54.74/14.93 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 54.74/14.93 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 54.74/14.93 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 54.74/14.93 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 54.74/14.93 proper(fst(X)) -> fst(proper(X)) 54.74/14.93 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 54.74/14.93 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 54.74/14.93 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 54.74/14.93 proper(U42(X)) -> U42(proper(X)) 54.74/14.93 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 54.74/14.93 proper(U52(X)) -> U52(proper(X)) 54.74/14.93 proper(U61(X)) -> U61(proper(X)) 54.74/14.93 proper(U71(X)) -> U71(proper(X)) 54.74/14.93 proper(U81(X)) -> U81(proper(X)) 54.74/14.93 proper(U91(X)) -> U91(proper(X)) 54.74/14.93 proper(isPLNat(X)) -> isPLNat(proper(X)) 54.74/14.93 proper(tail(X)) -> tail(proper(X)) 54.74/14.93 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 54.74/14.93 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 54.74/14.93 54.74/14.93 ---------------------------------------- 54.74/14.93 54.74/14.93 (2) 54.74/14.93 Obligation: 54.74/14.93 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(1, n^1). 54.74/14.93 54.74/14.93 54.74/14.93 The TRS R consists of the following rules: 54.74/14.93 54.74/14.93 U101(mark(X1), X2) -> mark(U101(X1, X2)) 54.74/14.93 U102(mark(X)) -> mark(U102(X)) 54.74/14.93 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 54.74/14.93 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 54.74/14.93 U111(mark(X)) -> mark(U111(X)) 54.74/14.93 snd(mark(X)) -> mark(snd(X)) 54.74/14.93 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 54.74/14.93 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 54.74/14.93 U121(mark(X)) -> mark(U121(X)) 54.74/14.93 U131(mark(X1), X2) -> mark(U131(X1, X2)) 54.74/14.93 U132(mark(X)) -> mark(U132(X)) 54.74/14.93 U141(mark(X1), X2) -> mark(U141(X1, X2)) 54.74/14.93 U142(mark(X)) -> mark(U142(X)) 54.74/14.93 U151(mark(X1), X2) -> mark(U151(X1, X2)) 54.74/14.93 U152(mark(X)) -> mark(U152(X)) 54.74/14.93 U161(mark(X1), X2) -> mark(U161(X1, X2)) 54.74/14.93 cons(mark(X1), X2) -> mark(cons(X1, X2)) 54.74/14.93 natsFrom(mark(X)) -> mark(natsFrom(X)) 54.74/14.93 s(mark(X)) -> mark(s(X)) 54.74/14.93 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 54.74/14.93 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 54.74/14.93 head(mark(X)) -> mark(head(X)) 54.74/14.93 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 54.74/14.93 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 54.74/14.93 U181(mark(X1), X2) -> mark(U181(X1, X2)) 54.74/14.93 U182(mark(X1), X2) -> mark(U182(X1, X2)) 54.74/14.93 U191(mark(X1), X2) -> mark(U191(X1, X2)) 54.74/14.93 pair(mark(X1), X2) -> mark(pair(X1, X2)) 54.74/14.93 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 54.74/14.93 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 54.74/14.93 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 54.74/14.93 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 54.74/14.93 U204(mark(X1), X2) -> mark(U204(X1, X2)) 54.74/14.93 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 54.74/14.93 U22(mark(X1), X2) -> mark(U22(X1, X2)) 54.74/14.93 U211(mark(X1), X2) -> mark(U211(X1, X2)) 54.74/14.93 U212(mark(X1), X2) -> mark(U212(X1, X2)) 54.74/14.93 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 54.74/14.93 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 54.74/14.93 fst(mark(X)) -> mark(fst(X)) 54.74/14.93 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 54.74/14.93 U32(mark(X1), X2) -> mark(U32(X1, X2)) 54.74/14.93 U41(mark(X1), X2) -> mark(U41(X1, X2)) 54.74/14.93 U42(mark(X)) -> mark(U42(X)) 54.74/14.93 U51(mark(X1), X2) -> mark(U51(X1, X2)) 54.74/14.93 U52(mark(X)) -> mark(U52(X)) 54.74/14.93 U61(mark(X)) -> mark(U61(X)) 54.74/14.93 U71(mark(X)) -> mark(U71(X)) 54.74/14.93 U81(mark(X)) -> mark(U81(X)) 54.74/14.93 U91(mark(X)) -> mark(U91(X)) 54.74/14.93 tail(mark(X)) -> mark(tail(X)) 54.74/14.93 take(mark(X1), X2) -> mark(take(X1, X2)) 54.74/14.93 take(X1, mark(X2)) -> mark(take(X1, X2)) 54.74/14.93 sel(mark(X1), X2) -> mark(sel(X1, X2)) 54.74/14.93 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 54.74/14.93 proper(tt) -> ok(tt) 54.74/14.93 proper(nil) -> ok(nil) 54.74/14.93 proper(0) -> ok(0) 54.74/14.93 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 54.74/14.93 U102(ok(X)) -> ok(U102(X)) 54.74/14.93 isLNat(ok(X)) -> ok(isLNat(X)) 54.74/14.93 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 54.74/14.93 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 54.74/14.93 U111(ok(X)) -> ok(U111(X)) 54.74/14.93 snd(ok(X)) -> ok(snd(X)) 54.74/14.93 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 54.74/14.93 U121(ok(X)) -> ok(U121(X)) 54.74/14.93 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 54.74/14.93 U132(ok(X)) -> ok(U132(X)) 54.74/14.93 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 54.74/14.93 U142(ok(X)) -> ok(U142(X)) 54.74/14.93 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 54.74/14.93 U152(ok(X)) -> ok(U152(X)) 54.74/14.93 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 54.74/14.93 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 54.74/14.93 natsFrom(ok(X)) -> ok(natsFrom(X)) 54.74/14.93 s(ok(X)) -> ok(s(X)) 54.74/14.93 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 54.74/14.93 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 54.74/14.93 head(ok(X)) -> ok(head(X)) 54.74/14.93 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 54.74/14.93 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 54.74/14.93 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 54.74/14.93 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 54.74/14.93 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 54.74/14.93 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 54.74/14.93 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 54.74/14.93 isNatural(ok(X)) -> ok(isNatural(X)) 54.74/14.93 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 54.74/14.93 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 54.74/14.93 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 54.74/14.93 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 54.74/14.93 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 54.74/14.93 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 54.74/14.93 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 54.74/14.93 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 54.74/14.93 fst(ok(X)) -> ok(fst(X)) 54.74/14.93 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 54.74/14.93 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 54.74/14.93 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 54.74/14.93 U42(ok(X)) -> ok(U42(X)) 54.74/14.93 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 54.74/14.93 U52(ok(X)) -> ok(U52(X)) 54.74/14.93 U61(ok(X)) -> ok(U61(X)) 54.74/14.93 U71(ok(X)) -> ok(U71(X)) 54.74/14.93 U81(ok(X)) -> ok(U81(X)) 54.74/14.93 U91(ok(X)) -> ok(U91(X)) 54.74/14.93 isPLNat(ok(X)) -> ok(isPLNat(X)) 54.74/14.93 tail(ok(X)) -> ok(tail(X)) 54.74/14.93 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 54.74/14.93 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 54.74/14.93 top(mark(X)) -> top(proper(X)) 54.74/14.93 top(ok(X)) -> top(active(X)) 54.74/14.93 54.74/14.93 S is empty. 54.74/14.93 Rewrite Strategy: FULL 54.74/14.93 ---------------------------------------- 54.74/14.93 54.74/14.93 (3) RcToIrcProof (BOTH BOUNDS(ID, ID)) 54.74/14.93 Converted rc-obligation to irc-obligation. 54.74/14.93 54.74/14.93 As the TRS is a non-duplicating overlay system, we have rc = irc. 54.74/14.93 ---------------------------------------- 54.74/14.93 54.74/14.93 (4) 54.74/14.93 Obligation: 54.74/14.93 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1). 54.74/14.93 54.74/14.93 54.74/14.93 The TRS R consists of the following rules: 54.74/14.93 54.74/14.93 U101(mark(X1), X2) -> mark(U101(X1, X2)) 54.74/14.93 U102(mark(X)) -> mark(U102(X)) 54.74/14.93 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 54.74/14.93 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 54.74/14.93 U111(mark(X)) -> mark(U111(X)) 54.74/14.93 snd(mark(X)) -> mark(snd(X)) 54.74/14.93 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 54.74/14.93 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 54.74/14.93 U121(mark(X)) -> mark(U121(X)) 54.74/14.93 U131(mark(X1), X2) -> mark(U131(X1, X2)) 54.74/14.93 U132(mark(X)) -> mark(U132(X)) 54.74/14.93 U141(mark(X1), X2) -> mark(U141(X1, X2)) 54.74/14.93 U142(mark(X)) -> mark(U142(X)) 54.74/14.93 U151(mark(X1), X2) -> mark(U151(X1, X2)) 54.74/14.93 U152(mark(X)) -> mark(U152(X)) 54.74/14.93 U161(mark(X1), X2) -> mark(U161(X1, X2)) 54.74/14.93 cons(mark(X1), X2) -> mark(cons(X1, X2)) 54.74/14.93 natsFrom(mark(X)) -> mark(natsFrom(X)) 54.74/14.93 s(mark(X)) -> mark(s(X)) 54.74/14.93 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 54.74/14.93 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 54.74/14.93 head(mark(X)) -> mark(head(X)) 54.74/14.93 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 54.74/14.93 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 54.74/14.93 U181(mark(X1), X2) -> mark(U181(X1, X2)) 54.74/14.93 U182(mark(X1), X2) -> mark(U182(X1, X2)) 54.74/14.93 U191(mark(X1), X2) -> mark(U191(X1, X2)) 54.74/14.93 pair(mark(X1), X2) -> mark(pair(X1, X2)) 54.74/14.93 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 54.74/14.93 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 54.74/14.93 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 54.74/14.93 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 54.74/14.93 U204(mark(X1), X2) -> mark(U204(X1, X2)) 54.74/14.93 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 54.74/14.93 U22(mark(X1), X2) -> mark(U22(X1, X2)) 54.74/14.93 U211(mark(X1), X2) -> mark(U211(X1, X2)) 54.74/14.93 U212(mark(X1), X2) -> mark(U212(X1, X2)) 54.74/14.93 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 54.74/14.93 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 54.74/14.93 fst(mark(X)) -> mark(fst(X)) 54.74/14.93 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 54.74/14.93 U32(mark(X1), X2) -> mark(U32(X1, X2)) 54.74/14.93 U41(mark(X1), X2) -> mark(U41(X1, X2)) 54.74/14.93 U42(mark(X)) -> mark(U42(X)) 54.74/14.93 U51(mark(X1), X2) -> mark(U51(X1, X2)) 54.74/14.93 U52(mark(X)) -> mark(U52(X)) 54.74/14.93 U61(mark(X)) -> mark(U61(X)) 54.74/14.93 U71(mark(X)) -> mark(U71(X)) 54.74/14.93 U81(mark(X)) -> mark(U81(X)) 54.74/14.93 U91(mark(X)) -> mark(U91(X)) 54.74/14.93 tail(mark(X)) -> mark(tail(X)) 54.74/14.93 take(mark(X1), X2) -> mark(take(X1, X2)) 54.74/14.93 take(X1, mark(X2)) -> mark(take(X1, X2)) 54.74/14.93 sel(mark(X1), X2) -> mark(sel(X1, X2)) 54.74/14.93 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 54.74/14.93 proper(tt) -> ok(tt) 54.74/14.93 proper(nil) -> ok(nil) 54.74/14.93 proper(0) -> ok(0) 54.74/14.93 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 54.74/14.93 U102(ok(X)) -> ok(U102(X)) 54.74/14.93 isLNat(ok(X)) -> ok(isLNat(X)) 54.74/14.93 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 54.74/14.93 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 54.74/14.93 U111(ok(X)) -> ok(U111(X)) 54.74/14.93 snd(ok(X)) -> ok(snd(X)) 54.74/14.93 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 54.74/14.93 U121(ok(X)) -> ok(U121(X)) 54.74/14.93 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 54.74/14.93 U132(ok(X)) -> ok(U132(X)) 54.74/14.93 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 54.74/14.93 U142(ok(X)) -> ok(U142(X)) 54.74/14.93 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 54.74/14.93 U152(ok(X)) -> ok(U152(X)) 54.74/14.93 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 54.74/14.93 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 54.74/14.93 natsFrom(ok(X)) -> ok(natsFrom(X)) 54.74/14.93 s(ok(X)) -> ok(s(X)) 54.74/14.93 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 54.74/14.93 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 54.74/14.93 head(ok(X)) -> ok(head(X)) 54.74/14.93 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 54.74/14.93 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 54.74/14.93 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 54.74/14.93 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 54.74/14.93 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 54.74/14.93 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 54.74/14.93 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 54.74/14.93 isNatural(ok(X)) -> ok(isNatural(X)) 54.74/14.93 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 54.74/14.93 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 54.74/14.93 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 54.74/14.93 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 54.74/14.93 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 54.74/14.93 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 54.74/14.93 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 54.74/14.93 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 54.74/14.93 fst(ok(X)) -> ok(fst(X)) 54.74/14.93 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 54.74/14.93 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 54.74/14.93 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 54.74/14.93 U42(ok(X)) -> ok(U42(X)) 54.74/14.93 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 54.74/14.93 U52(ok(X)) -> ok(U52(X)) 54.74/14.93 U61(ok(X)) -> ok(U61(X)) 54.74/14.93 U71(ok(X)) -> ok(U71(X)) 54.74/14.93 U81(ok(X)) -> ok(U81(X)) 54.74/14.93 U91(ok(X)) -> ok(U91(X)) 54.74/14.93 isPLNat(ok(X)) -> ok(isPLNat(X)) 54.74/14.93 tail(ok(X)) -> ok(tail(X)) 54.74/14.93 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 54.74/14.93 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 54.74/14.93 top(mark(X)) -> top(proper(X)) 54.74/14.93 top(ok(X)) -> top(active(X)) 54.74/14.93 54.74/14.93 S is empty. 54.74/14.93 Rewrite Strategy: INNERMOST 54.74/14.93 ---------------------------------------- 54.74/14.93 54.74/14.93 (5) CpxTrsToCdtProof (UPPER BOUND(ID)) 54.74/14.93 Converted Cpx (relative) TRS to CDT 54.74/14.93 ---------------------------------------- 54.74/14.93 54.74/14.93 (6) 54.74/14.93 Obligation: 54.74/14.93 Complexity Dependency Tuples Problem 54.74/14.93 54.74/14.93 Rules: 54.74/14.93 U101(mark(z0), z1) -> mark(U101(z0, z1)) 54.74/14.93 U101(ok(z0), ok(z1)) -> ok(U101(z0, z1)) 54.74/14.93 U102(mark(z0)) -> mark(U102(z0)) 54.74/14.93 U102(ok(z0)) -> ok(U102(z0)) 54.74/14.93 U11(mark(z0), z1, z2) -> mark(U11(z0, z1, z2)) 54.74/14.93 U11(ok(z0), ok(z1), ok(z2)) -> ok(U11(z0, z1, z2)) 54.74/14.93 U12(mark(z0), z1, z2) -> mark(U12(z0, z1, z2)) 54.74/14.93 U12(ok(z0), ok(z1), ok(z2)) -> ok(U12(z0, z1, z2)) 54.74/14.94 U111(mark(z0)) -> mark(U111(z0)) 54.74/14.94 U111(ok(z0)) -> ok(U111(z0)) 54.74/14.94 snd(mark(z0)) -> mark(snd(z0)) 54.74/14.94 snd(ok(z0)) -> ok(snd(z0)) 54.74/14.94 splitAt(mark(z0), z1) -> mark(splitAt(z0, z1)) 54.74/14.94 splitAt(z0, mark(z1)) -> mark(splitAt(z0, z1)) 54.74/14.94 splitAt(ok(z0), ok(z1)) -> ok(splitAt(z0, z1)) 54.74/14.94 U121(mark(z0)) -> mark(U121(z0)) 54.74/14.94 U121(ok(z0)) -> ok(U121(z0)) 54.74/14.94 U131(mark(z0), z1) -> mark(U131(z0, z1)) 54.74/14.94 U131(ok(z0), ok(z1)) -> ok(U131(z0, z1)) 54.74/14.94 U132(mark(z0)) -> mark(U132(z0)) 54.74/14.94 U132(ok(z0)) -> ok(U132(z0)) 54.74/14.94 U141(mark(z0), z1) -> mark(U141(z0, z1)) 54.74/14.94 U141(ok(z0), ok(z1)) -> ok(U141(z0, z1)) 54.74/14.94 U142(mark(z0)) -> mark(U142(z0)) 54.74/14.94 U142(ok(z0)) -> ok(U142(z0)) 54.74/14.94 U151(mark(z0), z1) -> mark(U151(z0, z1)) 54.74/14.94 U151(ok(z0), ok(z1)) -> ok(U151(z0, z1)) 54.74/14.94 U152(mark(z0)) -> mark(U152(z0)) 54.74/14.94 U152(ok(z0)) -> ok(U152(z0)) 54.74/14.94 U161(mark(z0), z1) -> mark(U161(z0, z1)) 54.74/14.94 U161(ok(z0), ok(z1)) -> ok(U161(z0, z1)) 54.74/14.94 cons(mark(z0), z1) -> mark(cons(z0, z1)) 54.74/14.94 cons(ok(z0), ok(z1)) -> ok(cons(z0, z1)) 54.74/14.94 natsFrom(mark(z0)) -> mark(natsFrom(z0)) 54.74/14.94 natsFrom(ok(z0)) -> ok(natsFrom(z0)) 54.74/14.94 s(mark(z0)) -> mark(s(z0)) 54.74/14.94 s(ok(z0)) -> ok(s(z0)) 54.74/14.94 U171(mark(z0), z1, z2) -> mark(U171(z0, z1, z2)) 54.74/14.94 U171(ok(z0), ok(z1), ok(z2)) -> ok(U171(z0, z1, z2)) 54.74/14.94 U172(mark(z0), z1, z2) -> mark(U172(z0, z1, z2)) 54.74/14.94 U172(ok(z0), ok(z1), ok(z2)) -> ok(U172(z0, z1, z2)) 54.74/14.94 head(mark(z0)) -> mark(head(z0)) 54.74/14.94 head(ok(z0)) -> ok(head(z0)) 54.74/14.94 afterNth(mark(z0), z1) -> mark(afterNth(z0, z1)) 54.74/14.94 afterNth(z0, mark(z1)) -> mark(afterNth(z0, z1)) 54.74/14.94 afterNth(ok(z0), ok(z1)) -> ok(afterNth(z0, z1)) 54.74/14.94 U181(mark(z0), z1) -> mark(U181(z0, z1)) 54.74/14.94 U181(ok(z0), ok(z1)) -> ok(U181(z0, z1)) 54.74/14.94 U182(mark(z0), z1) -> mark(U182(z0, z1)) 54.74/14.94 U182(ok(z0), ok(z1)) -> ok(U182(z0, z1)) 54.74/14.94 U191(mark(z0), z1) -> mark(U191(z0, z1)) 54.74/14.94 U191(ok(z0), ok(z1)) -> ok(U191(z0, z1)) 54.74/14.94 pair(mark(z0), z1) -> mark(pair(z0, z1)) 54.74/14.94 pair(z0, mark(z1)) -> mark(pair(z0, z1)) 54.74/14.94 pair(ok(z0), ok(z1)) -> ok(pair(z0, z1)) 54.74/14.94 U201(mark(z0), z1, z2, z3) -> mark(U201(z0, z1, z2, z3)) 54.74/14.94 U201(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U201(z0, z1, z2, z3)) 54.74/14.94 U202(mark(z0), z1, z2, z3) -> mark(U202(z0, z1, z2, z3)) 54.74/14.94 U202(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U202(z0, z1, z2, z3)) 54.74/14.94 U203(mark(z0), z1, z2, z3) -> mark(U203(z0, z1, z2, z3)) 54.74/14.94 U203(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U203(z0, z1, z2, z3)) 54.74/14.94 U204(mark(z0), z1) -> mark(U204(z0, z1)) 54.74/14.94 U204(ok(z0), ok(z1)) -> ok(U204(z0, z1)) 54.74/14.94 U21(mark(z0), z1, z2) -> mark(U21(z0, z1, z2)) 54.74/14.94 U21(ok(z0), ok(z1), ok(z2)) -> ok(U21(z0, z1, z2)) 54.74/14.94 U22(mark(z0), z1) -> mark(U22(z0, z1)) 54.74/14.94 U22(ok(z0), ok(z1)) -> ok(U22(z0, z1)) 54.74/14.94 U211(mark(z0), z1) -> mark(U211(z0, z1)) 54.74/14.94 U211(ok(z0), ok(z1)) -> ok(U211(z0, z1)) 54.74/14.94 U212(mark(z0), z1) -> mark(U212(z0, z1)) 54.74/14.94 U212(ok(z0), ok(z1)) -> ok(U212(z0, z1)) 54.74/14.94 U221(mark(z0), z1, z2) -> mark(U221(z0, z1, z2)) 54.74/14.94 U221(ok(z0), ok(z1), ok(z2)) -> ok(U221(z0, z1, z2)) 54.74/14.94 U222(mark(z0), z1, z2) -> mark(U222(z0, z1, z2)) 54.74/14.94 U222(ok(z0), ok(z1), ok(z2)) -> ok(U222(z0, z1, z2)) 54.74/14.94 fst(mark(z0)) -> mark(fst(z0)) 54.74/14.94 fst(ok(z0)) -> ok(fst(z0)) 54.74/14.94 U31(mark(z0), z1, z2) -> mark(U31(z0, z1, z2)) 54.74/14.94 U31(ok(z0), ok(z1), ok(z2)) -> ok(U31(z0, z1, z2)) 54.74/14.94 U32(mark(z0), z1) -> mark(U32(z0, z1)) 54.74/14.94 U32(ok(z0), ok(z1)) -> ok(U32(z0, z1)) 54.74/14.94 U41(mark(z0), z1) -> mark(U41(z0, z1)) 54.74/14.94 U41(ok(z0), ok(z1)) -> ok(U41(z0, z1)) 54.74/14.94 U42(mark(z0)) -> mark(U42(z0)) 54.74/14.94 U42(ok(z0)) -> ok(U42(z0)) 54.74/14.94 U51(mark(z0), z1) -> mark(U51(z0, z1)) 54.74/14.94 U51(ok(z0), ok(z1)) -> ok(U51(z0, z1)) 54.74/14.94 U52(mark(z0)) -> mark(U52(z0)) 54.74/14.94 U52(ok(z0)) -> ok(U52(z0)) 54.74/14.94 U61(mark(z0)) -> mark(U61(z0)) 54.74/14.94 U61(ok(z0)) -> ok(U61(z0)) 54.74/14.94 U71(mark(z0)) -> mark(U71(z0)) 54.74/14.94 U71(ok(z0)) -> ok(U71(z0)) 54.74/14.94 U81(mark(z0)) -> mark(U81(z0)) 54.74/14.94 U81(ok(z0)) -> ok(U81(z0)) 54.74/14.94 U91(mark(z0)) -> mark(U91(z0)) 54.74/14.94 U91(ok(z0)) -> ok(U91(z0)) 54.74/14.94 tail(mark(z0)) -> mark(tail(z0)) 54.74/14.94 tail(ok(z0)) -> ok(tail(z0)) 54.74/14.94 take(mark(z0), z1) -> mark(take(z0, z1)) 54.74/14.94 take(z0, mark(z1)) -> mark(take(z0, z1)) 54.74/14.94 take(ok(z0), ok(z1)) -> ok(take(z0, z1)) 54.74/14.94 sel(mark(z0), z1) -> mark(sel(z0, z1)) 54.74/14.94 sel(z0, mark(z1)) -> mark(sel(z0, z1)) 54.74/14.95 sel(ok(z0), ok(z1)) -> ok(sel(z0, z1)) 54.74/14.95 proper(tt) -> ok(tt) 54.74/14.95 proper(nil) -> ok(nil) 54.74/14.95 proper(0) -> ok(0) 54.74/14.95 isLNat(ok(z0)) -> ok(isLNat(z0)) 54.74/14.95 isNatural(ok(z0)) -> ok(isNatural(z0)) 54.74/14.95 isPLNat(ok(z0)) -> ok(isPLNat(z0)) 54.74/14.95 top(mark(z0)) -> top(proper(z0)) 54.74/14.95 top(ok(z0)) -> top(active(z0)) 54.74/14.95 Tuples: 54.74/14.95 U101'(mark(z0), z1) -> c(U101'(z0, z1)) 54.74/14.95 U101'(ok(z0), ok(z1)) -> c1(U101'(z0, z1)) 54.74/14.95 U102'(mark(z0)) -> c2(U102'(z0)) 54.74/14.95 U102'(ok(z0)) -> c3(U102'(z0)) 54.74/14.95 U11'(mark(z0), z1, z2) -> c4(U11'(z0, z1, z2)) 54.74/14.95 U11'(ok(z0), ok(z1), ok(z2)) -> c5(U11'(z0, z1, z2)) 54.74/14.95 U12'(mark(z0), z1, z2) -> c6(U12'(z0, z1, z2)) 54.74/14.95 U12'(ok(z0), ok(z1), ok(z2)) -> c7(U12'(z0, z1, z2)) 54.74/14.95 U111'(mark(z0)) -> c8(U111'(z0)) 54.74/14.95 U111'(ok(z0)) -> c9(U111'(z0)) 54.74/14.95 SND(mark(z0)) -> c10(SND(z0)) 54.74/14.95 SND(ok(z0)) -> c11(SND(z0)) 54.74/14.95 SPLITAT(mark(z0), z1) -> c12(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(z0, mark(z1)) -> c13(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(ok(z0), ok(z1)) -> c14(SPLITAT(z0, z1)) 54.74/14.95 U121'(mark(z0)) -> c15(U121'(z0)) 54.74/14.95 U121'(ok(z0)) -> c16(U121'(z0)) 54.74/14.95 U131'(mark(z0), z1) -> c17(U131'(z0, z1)) 54.74/14.95 U131'(ok(z0), ok(z1)) -> c18(U131'(z0, z1)) 54.74/14.95 U132'(mark(z0)) -> c19(U132'(z0)) 54.74/14.95 U132'(ok(z0)) -> c20(U132'(z0)) 54.74/14.95 U141'(mark(z0), z1) -> c21(U141'(z0, z1)) 54.74/14.95 U141'(ok(z0), ok(z1)) -> c22(U141'(z0, z1)) 54.74/14.95 U142'(mark(z0)) -> c23(U142'(z0)) 54.74/14.95 U142'(ok(z0)) -> c24(U142'(z0)) 54.74/14.95 U151'(mark(z0), z1) -> c25(U151'(z0, z1)) 54.74/14.95 U151'(ok(z0), ok(z1)) -> c26(U151'(z0, z1)) 54.74/14.95 U152'(mark(z0)) -> c27(U152'(z0)) 54.74/14.95 U152'(ok(z0)) -> c28(U152'(z0)) 54.74/14.95 U161'(mark(z0), z1) -> c29(U161'(z0, z1)) 54.74/14.95 U161'(ok(z0), ok(z1)) -> c30(U161'(z0, z1)) 54.74/14.95 CONS(mark(z0), z1) -> c31(CONS(z0, z1)) 54.74/14.95 CONS(ok(z0), ok(z1)) -> c32(CONS(z0, z1)) 54.74/14.95 NATSFROM(mark(z0)) -> c33(NATSFROM(z0)) 54.74/14.95 NATSFROM(ok(z0)) -> c34(NATSFROM(z0)) 54.74/14.95 S(mark(z0)) -> c35(S(z0)) 54.74/14.95 S(ok(z0)) -> c36(S(z0)) 54.74/14.95 U171'(mark(z0), z1, z2) -> c37(U171'(z0, z1, z2)) 54.74/14.95 U171'(ok(z0), ok(z1), ok(z2)) -> c38(U171'(z0, z1, z2)) 54.74/14.95 U172'(mark(z0), z1, z2) -> c39(U172'(z0, z1, z2)) 54.74/14.95 U172'(ok(z0), ok(z1), ok(z2)) -> c40(U172'(z0, z1, z2)) 54.74/14.95 HEAD(mark(z0)) -> c41(HEAD(z0)) 54.74/14.95 HEAD(ok(z0)) -> c42(HEAD(z0)) 54.74/14.95 AFTERNTH(mark(z0), z1) -> c43(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(z0, mark(z1)) -> c44(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(ok(z0), ok(z1)) -> c45(AFTERNTH(z0, z1)) 54.74/14.95 U181'(mark(z0), z1) -> c46(U181'(z0, z1)) 54.74/14.95 U181'(ok(z0), ok(z1)) -> c47(U181'(z0, z1)) 54.74/14.95 U182'(mark(z0), z1) -> c48(U182'(z0, z1)) 54.74/14.95 U182'(ok(z0), ok(z1)) -> c49(U182'(z0, z1)) 54.74/14.95 U191'(mark(z0), z1) -> c50(U191'(z0, z1)) 54.74/14.95 U191'(ok(z0), ok(z1)) -> c51(U191'(z0, z1)) 54.74/14.95 PAIR(mark(z0), z1) -> c52(PAIR(z0, z1)) 54.74/14.95 PAIR(z0, mark(z1)) -> c53(PAIR(z0, z1)) 54.74/14.95 PAIR(ok(z0), ok(z1)) -> c54(PAIR(z0, z1)) 54.74/14.95 U201'(mark(z0), z1, z2, z3) -> c55(U201'(z0, z1, z2, z3)) 54.74/14.95 U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c56(U201'(z0, z1, z2, z3)) 54.74/14.95 U202'(mark(z0), z1, z2, z3) -> c57(U202'(z0, z1, z2, z3)) 54.74/14.95 U202'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c58(U202'(z0, z1, z2, z3)) 54.74/14.95 U203'(mark(z0), z1, z2, z3) -> c59(U203'(z0, z1, z2, z3)) 54.74/14.95 U203'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c60(U203'(z0, z1, z2, z3)) 54.74/14.95 U204'(mark(z0), z1) -> c61(U204'(z0, z1)) 54.74/14.95 U204'(ok(z0), ok(z1)) -> c62(U204'(z0, z1)) 54.74/14.95 U21'(mark(z0), z1, z2) -> c63(U21'(z0, z1, z2)) 54.74/14.95 U21'(ok(z0), ok(z1), ok(z2)) -> c64(U21'(z0, z1, z2)) 54.74/14.95 U22'(mark(z0), z1) -> c65(U22'(z0, z1)) 54.74/14.95 U22'(ok(z0), ok(z1)) -> c66(U22'(z0, z1)) 54.74/14.95 U211'(mark(z0), z1) -> c67(U211'(z0, z1)) 54.74/14.95 U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) 54.74/14.95 U212'(mark(z0), z1) -> c69(U212'(z0, z1)) 54.74/14.95 U212'(ok(z0), ok(z1)) -> c70(U212'(z0, z1)) 54.74/14.95 U221'(mark(z0), z1, z2) -> c71(U221'(z0, z1, z2)) 54.74/14.95 U221'(ok(z0), ok(z1), ok(z2)) -> c72(U221'(z0, z1, z2)) 54.74/14.95 U222'(mark(z0), z1, z2) -> c73(U222'(z0, z1, z2)) 54.74/14.95 U222'(ok(z0), ok(z1), ok(z2)) -> c74(U222'(z0, z1, z2)) 54.74/14.95 FST(mark(z0)) -> c75(FST(z0)) 54.74/14.95 FST(ok(z0)) -> c76(FST(z0)) 54.74/14.95 U31'(mark(z0), z1, z2) -> c77(U31'(z0, z1, z2)) 54.74/14.95 U31'(ok(z0), ok(z1), ok(z2)) -> c78(U31'(z0, z1, z2)) 54.74/14.95 U32'(mark(z0), z1) -> c79(U32'(z0, z1)) 54.74/14.95 U32'(ok(z0), ok(z1)) -> c80(U32'(z0, z1)) 54.74/14.95 U41'(mark(z0), z1) -> c81(U41'(z0, z1)) 54.74/14.95 U41'(ok(z0), ok(z1)) -> c82(U41'(z0, z1)) 54.74/14.95 U42'(mark(z0)) -> c83(U42'(z0)) 54.74/14.95 U42'(ok(z0)) -> c84(U42'(z0)) 54.74/14.95 U51'(mark(z0), z1) -> c85(U51'(z0, z1)) 54.74/14.95 U51'(ok(z0), ok(z1)) -> c86(U51'(z0, z1)) 54.74/14.95 U52'(mark(z0)) -> c87(U52'(z0)) 54.74/14.95 U52'(ok(z0)) -> c88(U52'(z0)) 54.74/14.95 U61'(mark(z0)) -> c89(U61'(z0)) 54.74/14.95 U61'(ok(z0)) -> c90(U61'(z0)) 54.74/14.95 U71'(mark(z0)) -> c91(U71'(z0)) 54.74/14.95 U71'(ok(z0)) -> c92(U71'(z0)) 54.74/14.95 U81'(mark(z0)) -> c93(U81'(z0)) 54.74/14.95 U81'(ok(z0)) -> c94(U81'(z0)) 54.74/14.95 U91'(mark(z0)) -> c95(U91'(z0)) 54.74/14.95 U91'(ok(z0)) -> c96(U91'(z0)) 54.74/14.95 TAIL(mark(z0)) -> c97(TAIL(z0)) 54.74/14.95 TAIL(ok(z0)) -> c98(TAIL(z0)) 54.74/14.95 TAKE(mark(z0), z1) -> c99(TAKE(z0, z1)) 54.74/14.95 TAKE(z0, mark(z1)) -> c100(TAKE(z0, z1)) 54.74/14.95 TAKE(ok(z0), ok(z1)) -> c101(TAKE(z0, z1)) 54.74/14.95 SEL(mark(z0), z1) -> c102(SEL(z0, z1)) 54.74/14.95 SEL(z0, mark(z1)) -> c103(SEL(z0, z1)) 54.74/14.95 SEL(ok(z0), ok(z1)) -> c104(SEL(z0, z1)) 54.74/14.95 PROPER(tt) -> c105 54.74/14.95 PROPER(nil) -> c106 54.74/14.95 PROPER(0) -> c107 54.74/14.95 ISLNAT(ok(z0)) -> c108(ISLNAT(z0)) 54.74/14.95 ISNATURAL(ok(z0)) -> c109(ISNATURAL(z0)) 54.74/14.95 ISPLNAT(ok(z0)) -> c110(ISPLNAT(z0)) 54.74/14.95 TOP(mark(z0)) -> c111(TOP(proper(z0)), PROPER(z0)) 54.74/14.95 TOP(ok(z0)) -> c112(TOP(active(z0))) 54.74/14.95 S tuples: 54.74/14.95 U101'(mark(z0), z1) -> c(U101'(z0, z1)) 54.74/14.95 U101'(ok(z0), ok(z1)) -> c1(U101'(z0, z1)) 54.74/14.95 U102'(mark(z0)) -> c2(U102'(z0)) 54.74/14.95 U102'(ok(z0)) -> c3(U102'(z0)) 54.74/14.95 U11'(mark(z0), z1, z2) -> c4(U11'(z0, z1, z2)) 54.74/14.95 U11'(ok(z0), ok(z1), ok(z2)) -> c5(U11'(z0, z1, z2)) 54.74/14.95 U12'(mark(z0), z1, z2) -> c6(U12'(z0, z1, z2)) 54.74/14.95 U12'(ok(z0), ok(z1), ok(z2)) -> c7(U12'(z0, z1, z2)) 54.74/14.95 U111'(mark(z0)) -> c8(U111'(z0)) 54.74/14.95 U111'(ok(z0)) -> c9(U111'(z0)) 54.74/14.95 SND(mark(z0)) -> c10(SND(z0)) 54.74/14.95 SND(ok(z0)) -> c11(SND(z0)) 54.74/14.95 SPLITAT(mark(z0), z1) -> c12(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(z0, mark(z1)) -> c13(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(ok(z0), ok(z1)) -> c14(SPLITAT(z0, z1)) 54.74/14.95 U121'(mark(z0)) -> c15(U121'(z0)) 54.74/14.95 U121'(ok(z0)) -> c16(U121'(z0)) 54.74/14.95 U131'(mark(z0), z1) -> c17(U131'(z0, z1)) 54.74/14.95 U131'(ok(z0), ok(z1)) -> c18(U131'(z0, z1)) 54.74/14.95 U132'(mark(z0)) -> c19(U132'(z0)) 54.74/14.95 U132'(ok(z0)) -> c20(U132'(z0)) 54.74/14.95 U141'(mark(z0), z1) -> c21(U141'(z0, z1)) 54.74/14.95 U141'(ok(z0), ok(z1)) -> c22(U141'(z0, z1)) 54.74/14.95 U142'(mark(z0)) -> c23(U142'(z0)) 54.74/14.95 U142'(ok(z0)) -> c24(U142'(z0)) 54.74/14.95 U151'(mark(z0), z1) -> c25(U151'(z0, z1)) 54.74/14.95 U151'(ok(z0), ok(z1)) -> c26(U151'(z0, z1)) 54.74/14.95 U152'(mark(z0)) -> c27(U152'(z0)) 54.74/14.95 U152'(ok(z0)) -> c28(U152'(z0)) 54.74/14.95 U161'(mark(z0), z1) -> c29(U161'(z0, z1)) 54.74/14.95 U161'(ok(z0), ok(z1)) -> c30(U161'(z0, z1)) 54.74/14.95 CONS(mark(z0), z1) -> c31(CONS(z0, z1)) 54.74/14.95 CONS(ok(z0), ok(z1)) -> c32(CONS(z0, z1)) 54.74/14.95 NATSFROM(mark(z0)) -> c33(NATSFROM(z0)) 54.74/14.95 NATSFROM(ok(z0)) -> c34(NATSFROM(z0)) 54.74/14.95 S(mark(z0)) -> c35(S(z0)) 54.74/14.95 S(ok(z0)) -> c36(S(z0)) 54.74/14.95 U171'(mark(z0), z1, z2) -> c37(U171'(z0, z1, z2)) 54.74/14.95 U171'(ok(z0), ok(z1), ok(z2)) -> c38(U171'(z0, z1, z2)) 54.74/14.95 U172'(mark(z0), z1, z2) -> c39(U172'(z0, z1, z2)) 54.74/14.95 U172'(ok(z0), ok(z1), ok(z2)) -> c40(U172'(z0, z1, z2)) 54.74/14.95 HEAD(mark(z0)) -> c41(HEAD(z0)) 54.74/14.95 HEAD(ok(z0)) -> c42(HEAD(z0)) 54.74/14.95 AFTERNTH(mark(z0), z1) -> c43(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(z0, mark(z1)) -> c44(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(ok(z0), ok(z1)) -> c45(AFTERNTH(z0, z1)) 54.74/14.95 U181'(mark(z0), z1) -> c46(U181'(z0, z1)) 54.74/14.95 U181'(ok(z0), ok(z1)) -> c47(U181'(z0, z1)) 54.74/14.95 U182'(mark(z0), z1) -> c48(U182'(z0, z1)) 54.74/14.95 U182'(ok(z0), ok(z1)) -> c49(U182'(z0, z1)) 54.74/14.95 U191'(mark(z0), z1) -> c50(U191'(z0, z1)) 54.74/14.95 U191'(ok(z0), ok(z1)) -> c51(U191'(z0, z1)) 54.74/14.95 PAIR(mark(z0), z1) -> c52(PAIR(z0, z1)) 54.74/14.95 PAIR(z0, mark(z1)) -> c53(PAIR(z0, z1)) 54.74/14.95 PAIR(ok(z0), ok(z1)) -> c54(PAIR(z0, z1)) 54.74/14.95 U201'(mark(z0), z1, z2, z3) -> c55(U201'(z0, z1, z2, z3)) 54.74/14.95 U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c56(U201'(z0, z1, z2, z3)) 54.74/14.95 U202'(mark(z0), z1, z2, z3) -> c57(U202'(z0, z1, z2, z3)) 54.74/14.95 U202'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c58(U202'(z0, z1, z2, z3)) 54.74/14.95 U203'(mark(z0), z1, z2, z3) -> c59(U203'(z0, z1, z2, z3)) 54.74/14.95 U203'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c60(U203'(z0, z1, z2, z3)) 54.74/14.95 U204'(mark(z0), z1) -> c61(U204'(z0, z1)) 54.74/14.95 U204'(ok(z0), ok(z1)) -> c62(U204'(z0, z1)) 54.74/14.95 U21'(mark(z0), z1, z2) -> c63(U21'(z0, z1, z2)) 54.74/14.95 U21'(ok(z0), ok(z1), ok(z2)) -> c64(U21'(z0, z1, z2)) 54.74/14.95 U22'(mark(z0), z1) -> c65(U22'(z0, z1)) 54.74/14.95 U22'(ok(z0), ok(z1)) -> c66(U22'(z0, z1)) 54.74/14.95 U211'(mark(z0), z1) -> c67(U211'(z0, z1)) 54.74/14.95 U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) 54.74/14.95 U212'(mark(z0), z1) -> c69(U212'(z0, z1)) 54.74/14.95 U212'(ok(z0), ok(z1)) -> c70(U212'(z0, z1)) 54.74/14.95 U221'(mark(z0), z1, z2) -> c71(U221'(z0, z1, z2)) 54.74/14.95 U221'(ok(z0), ok(z1), ok(z2)) -> c72(U221'(z0, z1, z2)) 54.74/14.95 U222'(mark(z0), z1, z2) -> c73(U222'(z0, z1, z2)) 54.74/14.95 U222'(ok(z0), ok(z1), ok(z2)) -> c74(U222'(z0, z1, z2)) 54.74/14.95 FST(mark(z0)) -> c75(FST(z0)) 54.74/14.95 FST(ok(z0)) -> c76(FST(z0)) 54.74/14.95 U31'(mark(z0), z1, z2) -> c77(U31'(z0, z1, z2)) 54.74/14.95 U31'(ok(z0), ok(z1), ok(z2)) -> c78(U31'(z0, z1, z2)) 54.74/14.95 U32'(mark(z0), z1) -> c79(U32'(z0, z1)) 54.74/14.95 U32'(ok(z0), ok(z1)) -> c80(U32'(z0, z1)) 54.74/14.95 U41'(mark(z0), z1) -> c81(U41'(z0, z1)) 54.74/14.95 U41'(ok(z0), ok(z1)) -> c82(U41'(z0, z1)) 54.74/14.95 U42'(mark(z0)) -> c83(U42'(z0)) 54.74/14.95 U42'(ok(z0)) -> c84(U42'(z0)) 54.74/14.95 U51'(mark(z0), z1) -> c85(U51'(z0, z1)) 54.74/14.95 U51'(ok(z0), ok(z1)) -> c86(U51'(z0, z1)) 54.74/14.95 U52'(mark(z0)) -> c87(U52'(z0)) 54.74/14.95 U52'(ok(z0)) -> c88(U52'(z0)) 54.74/14.95 U61'(mark(z0)) -> c89(U61'(z0)) 54.74/14.95 U61'(ok(z0)) -> c90(U61'(z0)) 54.74/14.95 U71'(mark(z0)) -> c91(U71'(z0)) 54.74/14.95 U71'(ok(z0)) -> c92(U71'(z0)) 54.74/14.95 U81'(mark(z0)) -> c93(U81'(z0)) 54.74/14.95 U81'(ok(z0)) -> c94(U81'(z0)) 54.74/14.95 U91'(mark(z0)) -> c95(U91'(z0)) 54.74/14.95 U91'(ok(z0)) -> c96(U91'(z0)) 54.74/14.95 TAIL(mark(z0)) -> c97(TAIL(z0)) 54.74/14.95 TAIL(ok(z0)) -> c98(TAIL(z0)) 54.74/14.95 TAKE(mark(z0), z1) -> c99(TAKE(z0, z1)) 54.74/14.95 TAKE(z0, mark(z1)) -> c100(TAKE(z0, z1)) 54.74/14.95 TAKE(ok(z0), ok(z1)) -> c101(TAKE(z0, z1)) 54.74/14.95 SEL(mark(z0), z1) -> c102(SEL(z0, z1)) 54.74/14.95 SEL(z0, mark(z1)) -> c103(SEL(z0, z1)) 54.74/14.95 SEL(ok(z0), ok(z1)) -> c104(SEL(z0, z1)) 54.74/14.95 PROPER(tt) -> c105 54.74/14.95 PROPER(nil) -> c106 54.74/14.95 PROPER(0) -> c107 54.74/14.95 ISLNAT(ok(z0)) -> c108(ISLNAT(z0)) 54.74/14.95 ISNATURAL(ok(z0)) -> c109(ISNATURAL(z0)) 54.74/14.95 ISPLNAT(ok(z0)) -> c110(ISPLNAT(z0)) 54.74/14.95 TOP(mark(z0)) -> c111(TOP(proper(z0)), PROPER(z0)) 54.74/14.95 TOP(ok(z0)) -> c112(TOP(active(z0))) 54.74/14.95 K tuples:none 54.74/14.95 Defined Rule Symbols: U101_2, U102_1, U11_3, U12_3, U111_1, snd_1, splitAt_2, U121_1, U131_2, U132_1, U141_2, U142_1, U151_2, U152_1, U161_2, cons_2, natsFrom_1, s_1, U171_3, U172_3, head_1, afterNth_2, U181_2, U182_2, U191_2, pair_2, U201_4, U202_4, U203_4, U204_2, U21_3, U22_2, U211_2, U212_2, U221_3, U222_3, fst_1, U31_3, U32_2, U41_2, U42_1, U51_2, U52_1, U61_1, U71_1, U81_1, U91_1, tail_1, take_2, sel_2, proper_1, isLNat_1, isNatural_1, isPLNat_1, top_1 54.74/14.95 54.74/14.95 Defined Pair Symbols: U101'_2, U102'_1, U11'_3, U12'_3, U111'_1, SND_1, SPLITAT_2, U121'_1, U131'_2, U132'_1, U141'_2, U142'_1, U151'_2, U152'_1, U161'_2, CONS_2, NATSFROM_1, S_1, U171'_3, U172'_3, HEAD_1, AFTERNTH_2, U181'_2, U182'_2, U191'_2, PAIR_2, U201'_4, U202'_4, U203'_4, U204'_2, U21'_3, U22'_2, U211'_2, U212'_2, U221'_3, U222'_3, FST_1, U31'_3, U32'_2, U41'_2, U42'_1, U51'_2, U52'_1, U61'_1, U71'_1, U81'_1, U91'_1, TAIL_1, TAKE_2, SEL_2, PROPER_1, ISLNAT_1, ISNATURAL_1, ISPLNAT_1, TOP_1 54.74/14.95 54.74/14.95 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, c106, c107, c108_1, c109_1, c110_1, c111_2, c112_1 54.74/14.95 54.74/14.95 54.74/14.95 ---------------------------------------- 54.74/14.95 54.74/14.95 (7) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) 54.74/14.95 Removed 4 trailing nodes: 54.74/14.95 PROPER(0) -> c107 54.74/14.95 PROPER(nil) -> c106 54.74/14.95 PROPER(tt) -> c105 54.74/14.95 TOP(ok(z0)) -> c112(TOP(active(z0))) 54.74/14.95 54.74/14.95 ---------------------------------------- 54.74/14.95 54.74/14.95 (8) 54.74/14.95 Obligation: 54.74/14.95 Complexity Dependency Tuples Problem 54.74/14.95 54.74/14.95 Rules: 54.74/14.95 U101(mark(z0), z1) -> mark(U101(z0, z1)) 54.74/14.95 U101(ok(z0), ok(z1)) -> ok(U101(z0, z1)) 54.74/14.95 U102(mark(z0)) -> mark(U102(z0)) 54.74/14.95 U102(ok(z0)) -> ok(U102(z0)) 54.74/14.95 U11(mark(z0), z1, z2) -> mark(U11(z0, z1, z2)) 54.74/14.95 U11(ok(z0), ok(z1), ok(z2)) -> ok(U11(z0, z1, z2)) 54.74/14.95 U12(mark(z0), z1, z2) -> mark(U12(z0, z1, z2)) 54.74/14.95 U12(ok(z0), ok(z1), ok(z2)) -> ok(U12(z0, z1, z2)) 54.74/14.95 U111(mark(z0)) -> mark(U111(z0)) 54.74/14.95 U111(ok(z0)) -> ok(U111(z0)) 54.74/14.95 snd(mark(z0)) -> mark(snd(z0)) 54.74/14.95 snd(ok(z0)) -> ok(snd(z0)) 54.74/14.95 splitAt(mark(z0), z1) -> mark(splitAt(z0, z1)) 54.74/14.95 splitAt(z0, mark(z1)) -> mark(splitAt(z0, z1)) 54.74/14.95 splitAt(ok(z0), ok(z1)) -> ok(splitAt(z0, z1)) 54.74/14.95 U121(mark(z0)) -> mark(U121(z0)) 54.74/14.95 U121(ok(z0)) -> ok(U121(z0)) 54.74/14.95 U131(mark(z0), z1) -> mark(U131(z0, z1)) 54.74/14.95 U131(ok(z0), ok(z1)) -> ok(U131(z0, z1)) 54.74/14.95 U132(mark(z0)) -> mark(U132(z0)) 54.74/14.95 U132(ok(z0)) -> ok(U132(z0)) 54.74/14.95 U141(mark(z0), z1) -> mark(U141(z0, z1)) 54.74/14.95 U141(ok(z0), ok(z1)) -> ok(U141(z0, z1)) 54.74/14.95 U142(mark(z0)) -> mark(U142(z0)) 54.74/14.95 U142(ok(z0)) -> ok(U142(z0)) 54.74/14.95 U151(mark(z0), z1) -> mark(U151(z0, z1)) 54.74/14.95 U151(ok(z0), ok(z1)) -> ok(U151(z0, z1)) 54.74/14.95 U152(mark(z0)) -> mark(U152(z0)) 54.74/14.95 U152(ok(z0)) -> ok(U152(z0)) 54.74/14.95 U161(mark(z0), z1) -> mark(U161(z0, z1)) 54.74/14.95 U161(ok(z0), ok(z1)) -> ok(U161(z0, z1)) 54.74/14.95 cons(mark(z0), z1) -> mark(cons(z0, z1)) 54.74/14.95 cons(ok(z0), ok(z1)) -> ok(cons(z0, z1)) 54.74/14.95 natsFrom(mark(z0)) -> mark(natsFrom(z0)) 54.74/14.95 natsFrom(ok(z0)) -> ok(natsFrom(z0)) 54.74/14.95 s(mark(z0)) -> mark(s(z0)) 54.74/14.95 s(ok(z0)) -> ok(s(z0)) 54.74/14.95 U171(mark(z0), z1, z2) -> mark(U171(z0, z1, z2)) 54.74/14.95 U171(ok(z0), ok(z1), ok(z2)) -> ok(U171(z0, z1, z2)) 54.74/14.95 U172(mark(z0), z1, z2) -> mark(U172(z0, z1, z2)) 54.74/14.95 U172(ok(z0), ok(z1), ok(z2)) -> ok(U172(z0, z1, z2)) 54.74/14.95 head(mark(z0)) -> mark(head(z0)) 54.74/14.95 head(ok(z0)) -> ok(head(z0)) 54.74/14.95 afterNth(mark(z0), z1) -> mark(afterNth(z0, z1)) 54.74/14.95 afterNth(z0, mark(z1)) -> mark(afterNth(z0, z1)) 54.74/14.95 afterNth(ok(z0), ok(z1)) -> ok(afterNth(z0, z1)) 54.74/14.95 U181(mark(z0), z1) -> mark(U181(z0, z1)) 54.74/14.95 U181(ok(z0), ok(z1)) -> ok(U181(z0, z1)) 54.74/14.95 U182(mark(z0), z1) -> mark(U182(z0, z1)) 54.74/14.95 U182(ok(z0), ok(z1)) -> ok(U182(z0, z1)) 54.74/14.95 U191(mark(z0), z1) -> mark(U191(z0, z1)) 54.74/14.95 U191(ok(z0), ok(z1)) -> ok(U191(z0, z1)) 54.74/14.95 pair(mark(z0), z1) -> mark(pair(z0, z1)) 54.74/14.95 pair(z0, mark(z1)) -> mark(pair(z0, z1)) 54.74/14.95 pair(ok(z0), ok(z1)) -> ok(pair(z0, z1)) 54.74/14.95 U201(mark(z0), z1, z2, z3) -> mark(U201(z0, z1, z2, z3)) 54.74/14.95 U201(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U201(z0, z1, z2, z3)) 54.74/14.95 U202(mark(z0), z1, z2, z3) -> mark(U202(z0, z1, z2, z3)) 54.74/14.95 U202(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U202(z0, z1, z2, z3)) 54.74/14.95 U203(mark(z0), z1, z2, z3) -> mark(U203(z0, z1, z2, z3)) 54.74/14.95 U203(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U203(z0, z1, z2, z3)) 54.74/14.95 U204(mark(z0), z1) -> mark(U204(z0, z1)) 54.74/14.95 U204(ok(z0), ok(z1)) -> ok(U204(z0, z1)) 54.74/14.95 U21(mark(z0), z1, z2) -> mark(U21(z0, z1, z2)) 54.74/14.95 U21(ok(z0), ok(z1), ok(z2)) -> ok(U21(z0, z1, z2)) 54.74/14.95 U22(mark(z0), z1) -> mark(U22(z0, z1)) 54.74/14.95 U22(ok(z0), ok(z1)) -> ok(U22(z0, z1)) 54.74/14.95 U211(mark(z0), z1) -> mark(U211(z0, z1)) 54.74/14.95 U211(ok(z0), ok(z1)) -> ok(U211(z0, z1)) 54.74/14.95 U212(mark(z0), z1) -> mark(U212(z0, z1)) 54.74/14.95 U212(ok(z0), ok(z1)) -> ok(U212(z0, z1)) 54.74/14.95 U221(mark(z0), z1, z2) -> mark(U221(z0, z1, z2)) 54.74/14.95 U221(ok(z0), ok(z1), ok(z2)) -> ok(U221(z0, z1, z2)) 54.74/14.95 U222(mark(z0), z1, z2) -> mark(U222(z0, z1, z2)) 54.74/14.95 U222(ok(z0), ok(z1), ok(z2)) -> ok(U222(z0, z1, z2)) 54.74/14.95 fst(mark(z0)) -> mark(fst(z0)) 54.74/14.95 fst(ok(z0)) -> ok(fst(z0)) 54.74/14.95 U31(mark(z0), z1, z2) -> mark(U31(z0, z1, z2)) 54.74/14.95 U31(ok(z0), ok(z1), ok(z2)) -> ok(U31(z0, z1, z2)) 54.74/14.95 U32(mark(z0), z1) -> mark(U32(z0, z1)) 54.74/14.95 U32(ok(z0), ok(z1)) -> ok(U32(z0, z1)) 54.74/14.95 U41(mark(z0), z1) -> mark(U41(z0, z1)) 54.74/14.95 U41(ok(z0), ok(z1)) -> ok(U41(z0, z1)) 54.74/14.95 U42(mark(z0)) -> mark(U42(z0)) 54.74/14.95 U42(ok(z0)) -> ok(U42(z0)) 54.74/14.95 U51(mark(z0), z1) -> mark(U51(z0, z1)) 54.74/14.95 U51(ok(z0), ok(z1)) -> ok(U51(z0, z1)) 54.74/14.95 U52(mark(z0)) -> mark(U52(z0)) 54.74/14.95 U52(ok(z0)) -> ok(U52(z0)) 54.74/14.95 U61(mark(z0)) -> mark(U61(z0)) 54.74/14.95 U61(ok(z0)) -> ok(U61(z0)) 54.74/14.95 U71(mark(z0)) -> mark(U71(z0)) 54.74/14.95 U71(ok(z0)) -> ok(U71(z0)) 54.74/14.95 U81(mark(z0)) -> mark(U81(z0)) 54.74/14.95 U81(ok(z0)) -> ok(U81(z0)) 54.74/14.95 U91(mark(z0)) -> mark(U91(z0)) 54.74/14.95 U91(ok(z0)) -> ok(U91(z0)) 54.74/14.95 tail(mark(z0)) -> mark(tail(z0)) 54.74/14.95 tail(ok(z0)) -> ok(tail(z0)) 54.74/14.95 take(mark(z0), z1) -> mark(take(z0, z1)) 54.74/14.95 take(z0, mark(z1)) -> mark(take(z0, z1)) 54.74/14.95 take(ok(z0), ok(z1)) -> ok(take(z0, z1)) 54.74/14.95 sel(mark(z0), z1) -> mark(sel(z0, z1)) 54.74/14.95 sel(z0, mark(z1)) -> mark(sel(z0, z1)) 54.74/14.95 sel(ok(z0), ok(z1)) -> ok(sel(z0, z1)) 54.74/14.95 proper(tt) -> ok(tt) 54.74/14.95 proper(nil) -> ok(nil) 54.74/14.95 proper(0) -> ok(0) 54.74/14.95 isLNat(ok(z0)) -> ok(isLNat(z0)) 54.74/14.95 isNatural(ok(z0)) -> ok(isNatural(z0)) 54.74/14.95 isPLNat(ok(z0)) -> ok(isPLNat(z0)) 54.74/14.95 top(mark(z0)) -> top(proper(z0)) 54.74/14.95 top(ok(z0)) -> top(active(z0)) 54.74/14.95 Tuples: 54.74/14.95 U101'(mark(z0), z1) -> c(U101'(z0, z1)) 54.74/14.95 U101'(ok(z0), ok(z1)) -> c1(U101'(z0, z1)) 54.74/14.95 U102'(mark(z0)) -> c2(U102'(z0)) 54.74/14.95 U102'(ok(z0)) -> c3(U102'(z0)) 54.74/14.95 U11'(mark(z0), z1, z2) -> c4(U11'(z0, z1, z2)) 54.74/14.95 U11'(ok(z0), ok(z1), ok(z2)) -> c5(U11'(z0, z1, z2)) 54.74/14.95 U12'(mark(z0), z1, z2) -> c6(U12'(z0, z1, z2)) 54.74/14.95 U12'(ok(z0), ok(z1), ok(z2)) -> c7(U12'(z0, z1, z2)) 54.74/14.95 U111'(mark(z0)) -> c8(U111'(z0)) 54.74/14.95 U111'(ok(z0)) -> c9(U111'(z0)) 54.74/14.95 SND(mark(z0)) -> c10(SND(z0)) 54.74/14.95 SND(ok(z0)) -> c11(SND(z0)) 54.74/14.95 SPLITAT(mark(z0), z1) -> c12(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(z0, mark(z1)) -> c13(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(ok(z0), ok(z1)) -> c14(SPLITAT(z0, z1)) 54.74/14.95 U121'(mark(z0)) -> c15(U121'(z0)) 54.74/14.95 U121'(ok(z0)) -> c16(U121'(z0)) 54.74/14.95 U131'(mark(z0), z1) -> c17(U131'(z0, z1)) 54.74/14.95 U131'(ok(z0), ok(z1)) -> c18(U131'(z0, z1)) 54.74/14.95 U132'(mark(z0)) -> c19(U132'(z0)) 54.74/14.95 U132'(ok(z0)) -> c20(U132'(z0)) 54.74/14.95 U141'(mark(z0), z1) -> c21(U141'(z0, z1)) 54.74/14.95 U141'(ok(z0), ok(z1)) -> c22(U141'(z0, z1)) 54.74/14.95 U142'(mark(z0)) -> c23(U142'(z0)) 54.74/14.95 U142'(ok(z0)) -> c24(U142'(z0)) 54.74/14.95 U151'(mark(z0), z1) -> c25(U151'(z0, z1)) 54.74/14.95 U151'(ok(z0), ok(z1)) -> c26(U151'(z0, z1)) 54.74/14.95 U152'(mark(z0)) -> c27(U152'(z0)) 54.74/14.95 U152'(ok(z0)) -> c28(U152'(z0)) 54.74/14.95 U161'(mark(z0), z1) -> c29(U161'(z0, z1)) 54.74/14.95 U161'(ok(z0), ok(z1)) -> c30(U161'(z0, z1)) 54.74/14.95 CONS(mark(z0), z1) -> c31(CONS(z0, z1)) 54.74/14.95 CONS(ok(z0), ok(z1)) -> c32(CONS(z0, z1)) 54.74/14.95 NATSFROM(mark(z0)) -> c33(NATSFROM(z0)) 54.74/14.95 NATSFROM(ok(z0)) -> c34(NATSFROM(z0)) 54.74/14.95 S(mark(z0)) -> c35(S(z0)) 54.74/14.95 S(ok(z0)) -> c36(S(z0)) 54.74/14.95 U171'(mark(z0), z1, z2) -> c37(U171'(z0, z1, z2)) 54.74/14.95 U171'(ok(z0), ok(z1), ok(z2)) -> c38(U171'(z0, z1, z2)) 54.74/14.95 U172'(mark(z0), z1, z2) -> c39(U172'(z0, z1, z2)) 54.74/14.95 U172'(ok(z0), ok(z1), ok(z2)) -> c40(U172'(z0, z1, z2)) 54.74/14.95 HEAD(mark(z0)) -> c41(HEAD(z0)) 54.74/14.95 HEAD(ok(z0)) -> c42(HEAD(z0)) 54.74/14.95 AFTERNTH(mark(z0), z1) -> c43(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(z0, mark(z1)) -> c44(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(ok(z0), ok(z1)) -> c45(AFTERNTH(z0, z1)) 54.74/14.95 U181'(mark(z0), z1) -> c46(U181'(z0, z1)) 54.74/14.95 U181'(ok(z0), ok(z1)) -> c47(U181'(z0, z1)) 54.74/14.95 U182'(mark(z0), z1) -> c48(U182'(z0, z1)) 54.74/14.95 U182'(ok(z0), ok(z1)) -> c49(U182'(z0, z1)) 54.74/14.95 U191'(mark(z0), z1) -> c50(U191'(z0, z1)) 54.74/14.95 U191'(ok(z0), ok(z1)) -> c51(U191'(z0, z1)) 54.74/14.95 PAIR(mark(z0), z1) -> c52(PAIR(z0, z1)) 54.74/14.95 PAIR(z0, mark(z1)) -> c53(PAIR(z0, z1)) 54.74/14.95 PAIR(ok(z0), ok(z1)) -> c54(PAIR(z0, z1)) 54.74/14.95 U201'(mark(z0), z1, z2, z3) -> c55(U201'(z0, z1, z2, z3)) 54.74/14.95 U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c56(U201'(z0, z1, z2, z3)) 54.74/14.95 U202'(mark(z0), z1, z2, z3) -> c57(U202'(z0, z1, z2, z3)) 54.74/14.95 U202'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c58(U202'(z0, z1, z2, z3)) 54.74/14.95 U203'(mark(z0), z1, z2, z3) -> c59(U203'(z0, z1, z2, z3)) 54.74/14.95 U203'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c60(U203'(z0, z1, z2, z3)) 54.74/14.95 U204'(mark(z0), z1) -> c61(U204'(z0, z1)) 54.74/14.95 U204'(ok(z0), ok(z1)) -> c62(U204'(z0, z1)) 54.74/14.95 U21'(mark(z0), z1, z2) -> c63(U21'(z0, z1, z2)) 54.74/14.95 U21'(ok(z0), ok(z1), ok(z2)) -> c64(U21'(z0, z1, z2)) 54.74/14.95 U22'(mark(z0), z1) -> c65(U22'(z0, z1)) 54.74/14.95 U22'(ok(z0), ok(z1)) -> c66(U22'(z0, z1)) 54.74/14.95 U211'(mark(z0), z1) -> c67(U211'(z0, z1)) 54.74/14.95 U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) 54.74/14.95 U212'(mark(z0), z1) -> c69(U212'(z0, z1)) 54.74/14.95 U212'(ok(z0), ok(z1)) -> c70(U212'(z0, z1)) 54.74/14.95 U221'(mark(z0), z1, z2) -> c71(U221'(z0, z1, z2)) 54.74/14.95 U221'(ok(z0), ok(z1), ok(z2)) -> c72(U221'(z0, z1, z2)) 54.74/14.95 U222'(mark(z0), z1, z2) -> c73(U222'(z0, z1, z2)) 54.74/14.95 U222'(ok(z0), ok(z1), ok(z2)) -> c74(U222'(z0, z1, z2)) 54.74/14.95 FST(mark(z0)) -> c75(FST(z0)) 54.74/14.95 FST(ok(z0)) -> c76(FST(z0)) 54.74/14.95 U31'(mark(z0), z1, z2) -> c77(U31'(z0, z1, z2)) 54.74/14.95 U31'(ok(z0), ok(z1), ok(z2)) -> c78(U31'(z0, z1, z2)) 54.74/14.95 U32'(mark(z0), z1) -> c79(U32'(z0, z1)) 54.74/14.95 U32'(ok(z0), ok(z1)) -> c80(U32'(z0, z1)) 54.74/14.95 U41'(mark(z0), z1) -> c81(U41'(z0, z1)) 54.74/14.95 U41'(ok(z0), ok(z1)) -> c82(U41'(z0, z1)) 54.74/14.95 U42'(mark(z0)) -> c83(U42'(z0)) 54.74/14.95 U42'(ok(z0)) -> c84(U42'(z0)) 54.74/14.95 U51'(mark(z0), z1) -> c85(U51'(z0, z1)) 54.74/14.95 U51'(ok(z0), ok(z1)) -> c86(U51'(z0, z1)) 54.74/14.95 U52'(mark(z0)) -> c87(U52'(z0)) 54.74/14.95 U52'(ok(z0)) -> c88(U52'(z0)) 54.74/14.95 U61'(mark(z0)) -> c89(U61'(z0)) 54.74/14.95 U61'(ok(z0)) -> c90(U61'(z0)) 54.74/14.95 U71'(mark(z0)) -> c91(U71'(z0)) 54.74/14.95 U71'(ok(z0)) -> c92(U71'(z0)) 54.74/14.95 U81'(mark(z0)) -> c93(U81'(z0)) 54.74/14.95 U81'(ok(z0)) -> c94(U81'(z0)) 54.74/14.95 U91'(mark(z0)) -> c95(U91'(z0)) 54.74/14.95 U91'(ok(z0)) -> c96(U91'(z0)) 54.74/14.95 TAIL(mark(z0)) -> c97(TAIL(z0)) 54.74/14.95 TAIL(ok(z0)) -> c98(TAIL(z0)) 54.74/14.95 TAKE(mark(z0), z1) -> c99(TAKE(z0, z1)) 54.74/14.95 TAKE(z0, mark(z1)) -> c100(TAKE(z0, z1)) 54.74/14.95 TAKE(ok(z0), ok(z1)) -> c101(TAKE(z0, z1)) 54.74/14.95 SEL(mark(z0), z1) -> c102(SEL(z0, z1)) 54.74/14.95 SEL(z0, mark(z1)) -> c103(SEL(z0, z1)) 54.74/14.95 SEL(ok(z0), ok(z1)) -> c104(SEL(z0, z1)) 54.74/14.95 ISLNAT(ok(z0)) -> c108(ISLNAT(z0)) 54.74/14.95 ISNATURAL(ok(z0)) -> c109(ISNATURAL(z0)) 54.74/14.95 ISPLNAT(ok(z0)) -> c110(ISPLNAT(z0)) 54.74/14.95 TOP(mark(z0)) -> c111(TOP(proper(z0)), PROPER(z0)) 54.74/14.95 S tuples: 54.74/14.95 U101'(mark(z0), z1) -> c(U101'(z0, z1)) 54.74/14.95 U101'(ok(z0), ok(z1)) -> c1(U101'(z0, z1)) 54.74/14.95 U102'(mark(z0)) -> c2(U102'(z0)) 54.74/14.95 U102'(ok(z0)) -> c3(U102'(z0)) 54.74/14.95 U11'(mark(z0), z1, z2) -> c4(U11'(z0, z1, z2)) 54.74/14.95 U11'(ok(z0), ok(z1), ok(z2)) -> c5(U11'(z0, z1, z2)) 54.74/14.95 U12'(mark(z0), z1, z2) -> c6(U12'(z0, z1, z2)) 54.74/14.95 U12'(ok(z0), ok(z1), ok(z2)) -> c7(U12'(z0, z1, z2)) 54.74/14.95 U111'(mark(z0)) -> c8(U111'(z0)) 54.74/14.95 U111'(ok(z0)) -> c9(U111'(z0)) 54.74/14.95 SND(mark(z0)) -> c10(SND(z0)) 54.74/14.95 SND(ok(z0)) -> c11(SND(z0)) 54.74/14.95 SPLITAT(mark(z0), z1) -> c12(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(z0, mark(z1)) -> c13(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(ok(z0), ok(z1)) -> c14(SPLITAT(z0, z1)) 54.74/14.95 U121'(mark(z0)) -> c15(U121'(z0)) 54.74/14.95 U121'(ok(z0)) -> c16(U121'(z0)) 54.74/14.95 U131'(mark(z0), z1) -> c17(U131'(z0, z1)) 54.74/14.95 U131'(ok(z0), ok(z1)) -> c18(U131'(z0, z1)) 54.74/14.95 U132'(mark(z0)) -> c19(U132'(z0)) 54.74/14.95 U132'(ok(z0)) -> c20(U132'(z0)) 54.74/14.95 U141'(mark(z0), z1) -> c21(U141'(z0, z1)) 54.74/14.95 U141'(ok(z0), ok(z1)) -> c22(U141'(z0, z1)) 54.74/14.95 U142'(mark(z0)) -> c23(U142'(z0)) 54.74/14.95 U142'(ok(z0)) -> c24(U142'(z0)) 54.74/14.95 U151'(mark(z0), z1) -> c25(U151'(z0, z1)) 54.74/14.95 U151'(ok(z0), ok(z1)) -> c26(U151'(z0, z1)) 54.74/14.95 U152'(mark(z0)) -> c27(U152'(z0)) 54.74/14.95 U152'(ok(z0)) -> c28(U152'(z0)) 54.74/14.95 U161'(mark(z0), z1) -> c29(U161'(z0, z1)) 54.74/14.95 U161'(ok(z0), ok(z1)) -> c30(U161'(z0, z1)) 54.74/14.95 CONS(mark(z0), z1) -> c31(CONS(z0, z1)) 54.74/14.95 CONS(ok(z0), ok(z1)) -> c32(CONS(z0, z1)) 54.74/14.95 NATSFROM(mark(z0)) -> c33(NATSFROM(z0)) 54.74/14.95 NATSFROM(ok(z0)) -> c34(NATSFROM(z0)) 54.74/14.95 S(mark(z0)) -> c35(S(z0)) 54.74/14.95 S(ok(z0)) -> c36(S(z0)) 54.74/14.95 U171'(mark(z0), z1, z2) -> c37(U171'(z0, z1, z2)) 54.74/14.95 U171'(ok(z0), ok(z1), ok(z2)) -> c38(U171'(z0, z1, z2)) 54.74/14.95 U172'(mark(z0), z1, z2) -> c39(U172'(z0, z1, z2)) 54.74/14.95 U172'(ok(z0), ok(z1), ok(z2)) -> c40(U172'(z0, z1, z2)) 54.74/14.95 HEAD(mark(z0)) -> c41(HEAD(z0)) 54.74/14.95 HEAD(ok(z0)) -> c42(HEAD(z0)) 54.74/14.95 AFTERNTH(mark(z0), z1) -> c43(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(z0, mark(z1)) -> c44(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(ok(z0), ok(z1)) -> c45(AFTERNTH(z0, z1)) 54.74/14.95 U181'(mark(z0), z1) -> c46(U181'(z0, z1)) 54.74/14.95 U181'(ok(z0), ok(z1)) -> c47(U181'(z0, z1)) 54.74/14.95 U182'(mark(z0), z1) -> c48(U182'(z0, z1)) 54.74/14.95 U182'(ok(z0), ok(z1)) -> c49(U182'(z0, z1)) 54.74/14.95 U191'(mark(z0), z1) -> c50(U191'(z0, z1)) 54.74/14.95 U191'(ok(z0), ok(z1)) -> c51(U191'(z0, z1)) 54.74/14.95 PAIR(mark(z0), z1) -> c52(PAIR(z0, z1)) 54.74/14.95 PAIR(z0, mark(z1)) -> c53(PAIR(z0, z1)) 54.74/14.95 PAIR(ok(z0), ok(z1)) -> c54(PAIR(z0, z1)) 54.74/14.95 U201'(mark(z0), z1, z2, z3) -> c55(U201'(z0, z1, z2, z3)) 54.74/14.95 U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c56(U201'(z0, z1, z2, z3)) 54.74/14.95 U202'(mark(z0), z1, z2, z3) -> c57(U202'(z0, z1, z2, z3)) 54.74/14.95 U202'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c58(U202'(z0, z1, z2, z3)) 54.74/14.95 U203'(mark(z0), z1, z2, z3) -> c59(U203'(z0, z1, z2, z3)) 54.74/14.95 U203'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c60(U203'(z0, z1, z2, z3)) 54.74/14.95 U204'(mark(z0), z1) -> c61(U204'(z0, z1)) 54.74/14.95 U204'(ok(z0), ok(z1)) -> c62(U204'(z0, z1)) 54.74/14.95 U21'(mark(z0), z1, z2) -> c63(U21'(z0, z1, z2)) 54.74/14.95 U21'(ok(z0), ok(z1), ok(z2)) -> c64(U21'(z0, z1, z2)) 54.74/14.95 U22'(mark(z0), z1) -> c65(U22'(z0, z1)) 54.74/14.95 U22'(ok(z0), ok(z1)) -> c66(U22'(z0, z1)) 54.74/14.95 U211'(mark(z0), z1) -> c67(U211'(z0, z1)) 54.74/14.95 U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) 54.74/14.95 U212'(mark(z0), z1) -> c69(U212'(z0, z1)) 54.74/14.95 U212'(ok(z0), ok(z1)) -> c70(U212'(z0, z1)) 54.74/14.95 U221'(mark(z0), z1, z2) -> c71(U221'(z0, z1, z2)) 54.74/14.95 U221'(ok(z0), ok(z1), ok(z2)) -> c72(U221'(z0, z1, z2)) 54.74/14.95 U222'(mark(z0), z1, z2) -> c73(U222'(z0, z1, z2)) 54.74/14.95 U222'(ok(z0), ok(z1), ok(z2)) -> c74(U222'(z0, z1, z2)) 54.74/14.95 FST(mark(z0)) -> c75(FST(z0)) 54.74/14.95 FST(ok(z0)) -> c76(FST(z0)) 54.74/14.95 U31'(mark(z0), z1, z2) -> c77(U31'(z0, z1, z2)) 54.74/14.95 U31'(ok(z0), ok(z1), ok(z2)) -> c78(U31'(z0, z1, z2)) 54.74/14.95 U32'(mark(z0), z1) -> c79(U32'(z0, z1)) 54.74/14.95 U32'(ok(z0), ok(z1)) -> c80(U32'(z0, z1)) 54.74/14.95 U41'(mark(z0), z1) -> c81(U41'(z0, z1)) 54.74/14.95 U41'(ok(z0), ok(z1)) -> c82(U41'(z0, z1)) 54.74/14.95 U42'(mark(z0)) -> c83(U42'(z0)) 54.74/14.95 U42'(ok(z0)) -> c84(U42'(z0)) 54.74/14.95 U51'(mark(z0), z1) -> c85(U51'(z0, z1)) 54.74/14.95 U51'(ok(z0), ok(z1)) -> c86(U51'(z0, z1)) 54.74/14.95 U52'(mark(z0)) -> c87(U52'(z0)) 54.74/14.95 U52'(ok(z0)) -> c88(U52'(z0)) 54.74/14.95 U61'(mark(z0)) -> c89(U61'(z0)) 54.74/14.95 U61'(ok(z0)) -> c90(U61'(z0)) 54.74/14.95 U71'(mark(z0)) -> c91(U71'(z0)) 54.74/14.95 U71'(ok(z0)) -> c92(U71'(z0)) 54.74/14.95 U81'(mark(z0)) -> c93(U81'(z0)) 54.74/14.95 U81'(ok(z0)) -> c94(U81'(z0)) 54.74/14.95 U91'(mark(z0)) -> c95(U91'(z0)) 54.74/14.95 U91'(ok(z0)) -> c96(U91'(z0)) 54.74/14.95 TAIL(mark(z0)) -> c97(TAIL(z0)) 54.74/14.95 TAIL(ok(z0)) -> c98(TAIL(z0)) 54.74/14.95 TAKE(mark(z0), z1) -> c99(TAKE(z0, z1)) 54.74/14.95 TAKE(z0, mark(z1)) -> c100(TAKE(z0, z1)) 54.74/14.95 TAKE(ok(z0), ok(z1)) -> c101(TAKE(z0, z1)) 54.74/14.95 SEL(mark(z0), z1) -> c102(SEL(z0, z1)) 54.74/14.95 SEL(z0, mark(z1)) -> c103(SEL(z0, z1)) 54.74/14.95 SEL(ok(z0), ok(z1)) -> c104(SEL(z0, z1)) 54.74/14.95 ISLNAT(ok(z0)) -> c108(ISLNAT(z0)) 54.74/14.95 ISNATURAL(ok(z0)) -> c109(ISNATURAL(z0)) 54.74/14.95 ISPLNAT(ok(z0)) -> c110(ISPLNAT(z0)) 54.74/14.95 TOP(mark(z0)) -> c111(TOP(proper(z0)), PROPER(z0)) 54.74/14.95 K tuples:none 54.74/14.95 Defined Rule Symbols: U101_2, U102_1, U11_3, U12_3, U111_1, snd_1, splitAt_2, U121_1, U131_2, U132_1, U141_2, U142_1, U151_2, U152_1, U161_2, cons_2, natsFrom_1, s_1, U171_3, U172_3, head_1, afterNth_2, U181_2, U182_2, U191_2, pair_2, U201_4, U202_4, U203_4, U204_2, U21_3, U22_2, U211_2, U212_2, U221_3, U222_3, fst_1, U31_3, U32_2, U41_2, U42_1, U51_2, U52_1, U61_1, U71_1, U81_1, U91_1, tail_1, take_2, sel_2, proper_1, isLNat_1, isNatural_1, isPLNat_1, top_1 54.74/14.95 54.74/14.95 Defined Pair Symbols: U101'_2, U102'_1, U11'_3, U12'_3, U111'_1, SND_1, SPLITAT_2, U121'_1, U131'_2, U132'_1, U141'_2, U142'_1, U151'_2, U152'_1, U161'_2, CONS_2, NATSFROM_1, S_1, U171'_3, U172'_3, HEAD_1, AFTERNTH_2, U181'_2, U182'_2, U191'_2, PAIR_2, U201'_4, U202'_4, U203'_4, U204'_2, U21'_3, U22'_2, U211'_2, U212'_2, U221'_3, U222'_3, FST_1, U31'_3, U32'_2, U41'_2, U42'_1, U51'_2, U52'_1, U61'_1, U71'_1, U81'_1, U91'_1, TAIL_1, TAKE_2, SEL_2, ISLNAT_1, ISNATURAL_1, ISPLNAT_1, TOP_1 54.74/14.95 54.74/14.95 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, c108_1, c109_1, c110_1, c111_2 54.74/14.95 54.74/14.95 54.74/14.95 ---------------------------------------- 54.74/14.95 54.74/14.95 (9) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) 54.74/14.95 Removed 1 trailing tuple parts 54.74/14.95 ---------------------------------------- 54.74/14.95 54.74/14.95 (10) 54.74/14.95 Obligation: 54.74/14.95 Complexity Dependency Tuples Problem 54.74/14.95 54.74/14.95 Rules: 54.74/14.95 U101(mark(z0), z1) -> mark(U101(z0, z1)) 54.74/14.95 U101(ok(z0), ok(z1)) -> ok(U101(z0, z1)) 54.74/14.95 U102(mark(z0)) -> mark(U102(z0)) 54.74/14.95 U102(ok(z0)) -> ok(U102(z0)) 54.74/14.95 U11(mark(z0), z1, z2) -> mark(U11(z0, z1, z2)) 54.74/14.95 U11(ok(z0), ok(z1), ok(z2)) -> ok(U11(z0, z1, z2)) 54.74/14.95 U12(mark(z0), z1, z2) -> mark(U12(z0, z1, z2)) 54.74/14.95 U12(ok(z0), ok(z1), ok(z2)) -> ok(U12(z0, z1, z2)) 54.74/14.95 U111(mark(z0)) -> mark(U111(z0)) 54.74/14.95 U111(ok(z0)) -> ok(U111(z0)) 54.74/14.95 snd(mark(z0)) -> mark(snd(z0)) 54.74/14.95 snd(ok(z0)) -> ok(snd(z0)) 54.74/14.95 splitAt(mark(z0), z1) -> mark(splitAt(z0, z1)) 54.74/14.95 splitAt(z0, mark(z1)) -> mark(splitAt(z0, z1)) 54.74/14.95 splitAt(ok(z0), ok(z1)) -> ok(splitAt(z0, z1)) 54.74/14.95 U121(mark(z0)) -> mark(U121(z0)) 54.74/14.95 U121(ok(z0)) -> ok(U121(z0)) 54.74/14.95 U131(mark(z0), z1) -> mark(U131(z0, z1)) 54.74/14.95 U131(ok(z0), ok(z1)) -> ok(U131(z0, z1)) 54.74/14.95 U132(mark(z0)) -> mark(U132(z0)) 54.74/14.95 U132(ok(z0)) -> ok(U132(z0)) 54.74/14.95 U141(mark(z0), z1) -> mark(U141(z0, z1)) 54.74/14.95 U141(ok(z0), ok(z1)) -> ok(U141(z0, z1)) 54.74/14.95 U142(mark(z0)) -> mark(U142(z0)) 54.74/14.95 U142(ok(z0)) -> ok(U142(z0)) 54.74/14.95 U151(mark(z0), z1) -> mark(U151(z0, z1)) 54.74/14.95 U151(ok(z0), ok(z1)) -> ok(U151(z0, z1)) 54.74/14.95 U152(mark(z0)) -> mark(U152(z0)) 54.74/14.95 U152(ok(z0)) -> ok(U152(z0)) 54.74/14.95 U161(mark(z0), z1) -> mark(U161(z0, z1)) 54.74/14.95 U161(ok(z0), ok(z1)) -> ok(U161(z0, z1)) 54.74/14.95 cons(mark(z0), z1) -> mark(cons(z0, z1)) 54.74/14.95 cons(ok(z0), ok(z1)) -> ok(cons(z0, z1)) 54.74/14.95 natsFrom(mark(z0)) -> mark(natsFrom(z0)) 54.74/14.95 natsFrom(ok(z0)) -> ok(natsFrom(z0)) 54.74/14.95 s(mark(z0)) -> mark(s(z0)) 54.74/14.95 s(ok(z0)) -> ok(s(z0)) 54.74/14.95 U171(mark(z0), z1, z2) -> mark(U171(z0, z1, z2)) 54.74/14.95 U171(ok(z0), ok(z1), ok(z2)) -> ok(U171(z0, z1, z2)) 54.74/14.95 U172(mark(z0), z1, z2) -> mark(U172(z0, z1, z2)) 54.74/14.95 U172(ok(z0), ok(z1), ok(z2)) -> ok(U172(z0, z1, z2)) 54.74/14.95 head(mark(z0)) -> mark(head(z0)) 54.74/14.95 head(ok(z0)) -> ok(head(z0)) 54.74/14.95 afterNth(mark(z0), z1) -> mark(afterNth(z0, z1)) 54.74/14.95 afterNth(z0, mark(z1)) -> mark(afterNth(z0, z1)) 54.74/14.95 afterNth(ok(z0), ok(z1)) -> ok(afterNth(z0, z1)) 54.74/14.95 U181(mark(z0), z1) -> mark(U181(z0, z1)) 54.74/14.95 U181(ok(z0), ok(z1)) -> ok(U181(z0, z1)) 54.74/14.95 U182(mark(z0), z1) -> mark(U182(z0, z1)) 54.74/14.95 U182(ok(z0), ok(z1)) -> ok(U182(z0, z1)) 54.74/14.95 U191(mark(z0), z1) -> mark(U191(z0, z1)) 54.74/14.95 U191(ok(z0), ok(z1)) -> ok(U191(z0, z1)) 54.74/14.95 pair(mark(z0), z1) -> mark(pair(z0, z1)) 54.74/14.95 pair(z0, mark(z1)) -> mark(pair(z0, z1)) 54.74/14.95 pair(ok(z0), ok(z1)) -> ok(pair(z0, z1)) 54.74/14.95 U201(mark(z0), z1, z2, z3) -> mark(U201(z0, z1, z2, z3)) 54.74/14.95 U201(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U201(z0, z1, z2, z3)) 54.74/14.95 U202(mark(z0), z1, z2, z3) -> mark(U202(z0, z1, z2, z3)) 54.74/14.95 U202(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U202(z0, z1, z2, z3)) 54.74/14.95 U203(mark(z0), z1, z2, z3) -> mark(U203(z0, z1, z2, z3)) 54.74/14.95 U203(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U203(z0, z1, z2, z3)) 54.74/14.95 U204(mark(z0), z1) -> mark(U204(z0, z1)) 54.74/14.95 U204(ok(z0), ok(z1)) -> ok(U204(z0, z1)) 54.74/14.95 U21(mark(z0), z1, z2) -> mark(U21(z0, z1, z2)) 54.74/14.95 U21(ok(z0), ok(z1), ok(z2)) -> ok(U21(z0, z1, z2)) 54.74/14.95 U22(mark(z0), z1) -> mark(U22(z0, z1)) 54.74/14.95 U22(ok(z0), ok(z1)) -> ok(U22(z0, z1)) 54.74/14.95 U211(mark(z0), z1) -> mark(U211(z0, z1)) 54.74/14.95 U211(ok(z0), ok(z1)) -> ok(U211(z0, z1)) 54.74/14.95 U212(mark(z0), z1) -> mark(U212(z0, z1)) 54.74/14.95 U212(ok(z0), ok(z1)) -> ok(U212(z0, z1)) 54.74/14.95 U221(mark(z0), z1, z2) -> mark(U221(z0, z1, z2)) 54.74/14.95 U221(ok(z0), ok(z1), ok(z2)) -> ok(U221(z0, z1, z2)) 54.74/14.95 U222(mark(z0), z1, z2) -> mark(U222(z0, z1, z2)) 54.74/14.95 U222(ok(z0), ok(z1), ok(z2)) -> ok(U222(z0, z1, z2)) 54.74/14.95 fst(mark(z0)) -> mark(fst(z0)) 54.74/14.95 fst(ok(z0)) -> ok(fst(z0)) 54.74/14.95 U31(mark(z0), z1, z2) -> mark(U31(z0, z1, z2)) 54.74/14.95 U31(ok(z0), ok(z1), ok(z2)) -> ok(U31(z0, z1, z2)) 54.74/14.95 U32(mark(z0), z1) -> mark(U32(z0, z1)) 54.74/14.95 U32(ok(z0), ok(z1)) -> ok(U32(z0, z1)) 54.74/14.95 U41(mark(z0), z1) -> mark(U41(z0, z1)) 54.74/14.95 U41(ok(z0), ok(z1)) -> ok(U41(z0, z1)) 54.74/14.95 U42(mark(z0)) -> mark(U42(z0)) 54.74/14.95 U42(ok(z0)) -> ok(U42(z0)) 54.74/14.95 U51(mark(z0), z1) -> mark(U51(z0, z1)) 54.74/14.95 U51(ok(z0), ok(z1)) -> ok(U51(z0, z1)) 54.74/14.95 U52(mark(z0)) -> mark(U52(z0)) 54.74/14.95 U52(ok(z0)) -> ok(U52(z0)) 54.74/14.95 U61(mark(z0)) -> mark(U61(z0)) 54.74/14.95 U61(ok(z0)) -> ok(U61(z0)) 54.74/14.95 U71(mark(z0)) -> mark(U71(z0)) 54.74/14.95 U71(ok(z0)) -> ok(U71(z0)) 54.74/14.95 U81(mark(z0)) -> mark(U81(z0)) 54.74/14.95 U81(ok(z0)) -> ok(U81(z0)) 54.74/14.95 U91(mark(z0)) -> mark(U91(z0)) 54.74/14.95 U91(ok(z0)) -> ok(U91(z0)) 54.74/14.95 tail(mark(z0)) -> mark(tail(z0)) 54.74/14.95 tail(ok(z0)) -> ok(tail(z0)) 54.74/14.95 take(mark(z0), z1) -> mark(take(z0, z1)) 54.74/14.95 take(z0, mark(z1)) -> mark(take(z0, z1)) 54.74/14.95 take(ok(z0), ok(z1)) -> ok(take(z0, z1)) 54.74/14.95 sel(mark(z0), z1) -> mark(sel(z0, z1)) 54.74/14.95 sel(z0, mark(z1)) -> mark(sel(z0, z1)) 54.74/14.95 sel(ok(z0), ok(z1)) -> ok(sel(z0, z1)) 54.74/14.95 proper(tt) -> ok(tt) 54.74/14.95 proper(nil) -> ok(nil) 54.74/14.95 proper(0) -> ok(0) 54.74/14.95 isLNat(ok(z0)) -> ok(isLNat(z0)) 54.74/14.95 isNatural(ok(z0)) -> ok(isNatural(z0)) 54.74/14.95 isPLNat(ok(z0)) -> ok(isPLNat(z0)) 54.74/14.95 top(mark(z0)) -> top(proper(z0)) 54.74/14.95 top(ok(z0)) -> top(active(z0)) 54.74/14.95 Tuples: 54.74/14.95 U101'(mark(z0), z1) -> c(U101'(z0, z1)) 54.74/14.95 U101'(ok(z0), ok(z1)) -> c1(U101'(z0, z1)) 54.74/14.95 U102'(mark(z0)) -> c2(U102'(z0)) 54.74/14.95 U102'(ok(z0)) -> c3(U102'(z0)) 54.74/14.95 U11'(mark(z0), z1, z2) -> c4(U11'(z0, z1, z2)) 54.74/14.95 U11'(ok(z0), ok(z1), ok(z2)) -> c5(U11'(z0, z1, z2)) 54.74/14.95 U12'(mark(z0), z1, z2) -> c6(U12'(z0, z1, z2)) 54.74/14.95 U12'(ok(z0), ok(z1), ok(z2)) -> c7(U12'(z0, z1, z2)) 54.74/14.95 U111'(mark(z0)) -> c8(U111'(z0)) 54.74/14.95 U111'(ok(z0)) -> c9(U111'(z0)) 54.74/14.95 SND(mark(z0)) -> c10(SND(z0)) 54.74/14.95 SND(ok(z0)) -> c11(SND(z0)) 54.74/14.95 SPLITAT(mark(z0), z1) -> c12(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(z0, mark(z1)) -> c13(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(ok(z0), ok(z1)) -> c14(SPLITAT(z0, z1)) 54.74/14.95 U121'(mark(z0)) -> c15(U121'(z0)) 54.74/14.95 U121'(ok(z0)) -> c16(U121'(z0)) 54.74/14.95 U131'(mark(z0), z1) -> c17(U131'(z0, z1)) 54.74/14.95 U131'(ok(z0), ok(z1)) -> c18(U131'(z0, z1)) 54.74/14.95 U132'(mark(z0)) -> c19(U132'(z0)) 54.74/14.95 U132'(ok(z0)) -> c20(U132'(z0)) 54.74/14.95 U141'(mark(z0), z1) -> c21(U141'(z0, z1)) 54.74/14.95 U141'(ok(z0), ok(z1)) -> c22(U141'(z0, z1)) 54.74/14.95 U142'(mark(z0)) -> c23(U142'(z0)) 54.74/14.95 U142'(ok(z0)) -> c24(U142'(z0)) 54.74/14.95 U151'(mark(z0), z1) -> c25(U151'(z0, z1)) 54.74/14.95 U151'(ok(z0), ok(z1)) -> c26(U151'(z0, z1)) 54.74/14.95 U152'(mark(z0)) -> c27(U152'(z0)) 54.74/14.95 U152'(ok(z0)) -> c28(U152'(z0)) 54.74/14.95 U161'(mark(z0), z1) -> c29(U161'(z0, z1)) 54.74/14.95 U161'(ok(z0), ok(z1)) -> c30(U161'(z0, z1)) 54.74/14.95 CONS(mark(z0), z1) -> c31(CONS(z0, z1)) 54.74/14.95 CONS(ok(z0), ok(z1)) -> c32(CONS(z0, z1)) 54.74/14.95 NATSFROM(mark(z0)) -> c33(NATSFROM(z0)) 54.74/14.95 NATSFROM(ok(z0)) -> c34(NATSFROM(z0)) 54.74/14.95 S(mark(z0)) -> c35(S(z0)) 54.74/14.95 S(ok(z0)) -> c36(S(z0)) 54.74/14.95 U171'(mark(z0), z1, z2) -> c37(U171'(z0, z1, z2)) 54.74/14.95 U171'(ok(z0), ok(z1), ok(z2)) -> c38(U171'(z0, z1, z2)) 54.74/14.95 U172'(mark(z0), z1, z2) -> c39(U172'(z0, z1, z2)) 54.74/14.95 U172'(ok(z0), ok(z1), ok(z2)) -> c40(U172'(z0, z1, z2)) 54.74/14.95 HEAD(mark(z0)) -> c41(HEAD(z0)) 54.74/14.95 HEAD(ok(z0)) -> c42(HEAD(z0)) 54.74/14.95 AFTERNTH(mark(z0), z1) -> c43(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(z0, mark(z1)) -> c44(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(ok(z0), ok(z1)) -> c45(AFTERNTH(z0, z1)) 54.74/14.95 U181'(mark(z0), z1) -> c46(U181'(z0, z1)) 54.74/14.95 U181'(ok(z0), ok(z1)) -> c47(U181'(z0, z1)) 54.74/14.95 U182'(mark(z0), z1) -> c48(U182'(z0, z1)) 54.74/14.95 U182'(ok(z0), ok(z1)) -> c49(U182'(z0, z1)) 54.74/14.95 U191'(mark(z0), z1) -> c50(U191'(z0, z1)) 54.74/14.95 U191'(ok(z0), ok(z1)) -> c51(U191'(z0, z1)) 54.74/14.95 PAIR(mark(z0), z1) -> c52(PAIR(z0, z1)) 54.74/14.95 PAIR(z0, mark(z1)) -> c53(PAIR(z0, z1)) 54.74/14.95 PAIR(ok(z0), ok(z1)) -> c54(PAIR(z0, z1)) 54.74/14.95 U201'(mark(z0), z1, z2, z3) -> c55(U201'(z0, z1, z2, z3)) 54.74/14.95 U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c56(U201'(z0, z1, z2, z3)) 54.74/14.95 U202'(mark(z0), z1, z2, z3) -> c57(U202'(z0, z1, z2, z3)) 54.74/14.95 U202'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c58(U202'(z0, z1, z2, z3)) 54.74/14.95 U203'(mark(z0), z1, z2, z3) -> c59(U203'(z0, z1, z2, z3)) 54.74/14.95 U203'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c60(U203'(z0, z1, z2, z3)) 54.74/14.95 U204'(mark(z0), z1) -> c61(U204'(z0, z1)) 54.74/14.95 U204'(ok(z0), ok(z1)) -> c62(U204'(z0, z1)) 54.74/14.95 U21'(mark(z0), z1, z2) -> c63(U21'(z0, z1, z2)) 54.74/14.95 U21'(ok(z0), ok(z1), ok(z2)) -> c64(U21'(z0, z1, z2)) 54.74/14.95 U22'(mark(z0), z1) -> c65(U22'(z0, z1)) 54.74/14.95 U22'(ok(z0), ok(z1)) -> c66(U22'(z0, z1)) 54.74/14.95 U211'(mark(z0), z1) -> c67(U211'(z0, z1)) 54.74/14.95 U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) 54.74/14.95 U212'(mark(z0), z1) -> c69(U212'(z0, z1)) 54.74/14.95 U212'(ok(z0), ok(z1)) -> c70(U212'(z0, z1)) 54.74/14.95 U221'(mark(z0), z1, z2) -> c71(U221'(z0, z1, z2)) 54.74/14.95 U221'(ok(z0), ok(z1), ok(z2)) -> c72(U221'(z0, z1, z2)) 54.74/14.95 U222'(mark(z0), z1, z2) -> c73(U222'(z0, z1, z2)) 54.74/14.95 U222'(ok(z0), ok(z1), ok(z2)) -> c74(U222'(z0, z1, z2)) 54.74/14.95 FST(mark(z0)) -> c75(FST(z0)) 54.74/14.95 FST(ok(z0)) -> c76(FST(z0)) 54.74/14.95 U31'(mark(z0), z1, z2) -> c77(U31'(z0, z1, z2)) 54.74/14.95 U31'(ok(z0), ok(z1), ok(z2)) -> c78(U31'(z0, z1, z2)) 54.74/14.95 U32'(mark(z0), z1) -> c79(U32'(z0, z1)) 54.74/14.95 U32'(ok(z0), ok(z1)) -> c80(U32'(z0, z1)) 54.74/14.95 U41'(mark(z0), z1) -> c81(U41'(z0, z1)) 54.74/14.95 U41'(ok(z0), ok(z1)) -> c82(U41'(z0, z1)) 54.74/14.95 U42'(mark(z0)) -> c83(U42'(z0)) 54.74/14.95 U42'(ok(z0)) -> c84(U42'(z0)) 54.74/14.95 U51'(mark(z0), z1) -> c85(U51'(z0, z1)) 54.74/14.95 U51'(ok(z0), ok(z1)) -> c86(U51'(z0, z1)) 54.74/14.95 U52'(mark(z0)) -> c87(U52'(z0)) 54.74/14.95 U52'(ok(z0)) -> c88(U52'(z0)) 54.74/14.95 U61'(mark(z0)) -> c89(U61'(z0)) 54.74/14.95 U61'(ok(z0)) -> c90(U61'(z0)) 54.74/14.95 U71'(mark(z0)) -> c91(U71'(z0)) 54.74/14.95 U71'(ok(z0)) -> c92(U71'(z0)) 54.74/14.95 U81'(mark(z0)) -> c93(U81'(z0)) 54.74/14.95 U81'(ok(z0)) -> c94(U81'(z0)) 54.74/14.95 U91'(mark(z0)) -> c95(U91'(z0)) 54.74/14.95 U91'(ok(z0)) -> c96(U91'(z0)) 54.74/14.95 TAIL(mark(z0)) -> c97(TAIL(z0)) 54.74/14.95 TAIL(ok(z0)) -> c98(TAIL(z0)) 54.74/14.95 TAKE(mark(z0), z1) -> c99(TAKE(z0, z1)) 54.74/14.95 TAKE(z0, mark(z1)) -> c100(TAKE(z0, z1)) 54.74/14.95 TAKE(ok(z0), ok(z1)) -> c101(TAKE(z0, z1)) 54.74/14.95 SEL(mark(z0), z1) -> c102(SEL(z0, z1)) 54.74/14.95 SEL(z0, mark(z1)) -> c103(SEL(z0, z1)) 54.74/14.95 SEL(ok(z0), ok(z1)) -> c104(SEL(z0, z1)) 54.74/14.95 ISLNAT(ok(z0)) -> c108(ISLNAT(z0)) 54.74/14.95 ISNATURAL(ok(z0)) -> c109(ISNATURAL(z0)) 54.74/14.95 ISPLNAT(ok(z0)) -> c110(ISPLNAT(z0)) 54.74/14.95 TOP(mark(z0)) -> c111(TOP(proper(z0))) 54.74/14.95 S tuples: 54.74/14.95 U101'(mark(z0), z1) -> c(U101'(z0, z1)) 54.74/14.95 U101'(ok(z0), ok(z1)) -> c1(U101'(z0, z1)) 54.74/14.95 U102'(mark(z0)) -> c2(U102'(z0)) 54.74/14.95 U102'(ok(z0)) -> c3(U102'(z0)) 54.74/14.95 U11'(mark(z0), z1, z2) -> c4(U11'(z0, z1, z2)) 54.74/14.95 U11'(ok(z0), ok(z1), ok(z2)) -> c5(U11'(z0, z1, z2)) 54.74/14.95 U12'(mark(z0), z1, z2) -> c6(U12'(z0, z1, z2)) 54.74/14.95 U12'(ok(z0), ok(z1), ok(z2)) -> c7(U12'(z0, z1, z2)) 54.74/14.95 U111'(mark(z0)) -> c8(U111'(z0)) 54.74/14.95 U111'(ok(z0)) -> c9(U111'(z0)) 54.74/14.95 SND(mark(z0)) -> c10(SND(z0)) 54.74/14.95 SND(ok(z0)) -> c11(SND(z0)) 54.74/14.95 SPLITAT(mark(z0), z1) -> c12(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(z0, mark(z1)) -> c13(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(ok(z0), ok(z1)) -> c14(SPLITAT(z0, z1)) 54.74/14.95 U121'(mark(z0)) -> c15(U121'(z0)) 54.74/14.95 U121'(ok(z0)) -> c16(U121'(z0)) 54.74/14.95 U131'(mark(z0), z1) -> c17(U131'(z0, z1)) 54.74/14.95 U131'(ok(z0), ok(z1)) -> c18(U131'(z0, z1)) 54.74/14.95 U132'(mark(z0)) -> c19(U132'(z0)) 54.74/14.95 U132'(ok(z0)) -> c20(U132'(z0)) 54.74/14.95 U141'(mark(z0), z1) -> c21(U141'(z0, z1)) 54.74/14.95 U141'(ok(z0), ok(z1)) -> c22(U141'(z0, z1)) 54.74/14.95 U142'(mark(z0)) -> c23(U142'(z0)) 54.74/14.95 U142'(ok(z0)) -> c24(U142'(z0)) 54.74/14.95 U151'(mark(z0), z1) -> c25(U151'(z0, z1)) 54.74/14.95 U151'(ok(z0), ok(z1)) -> c26(U151'(z0, z1)) 54.74/14.95 U152'(mark(z0)) -> c27(U152'(z0)) 54.74/14.95 U152'(ok(z0)) -> c28(U152'(z0)) 54.74/14.95 U161'(mark(z0), z1) -> c29(U161'(z0, z1)) 54.74/14.95 U161'(ok(z0), ok(z1)) -> c30(U161'(z0, z1)) 54.74/14.95 CONS(mark(z0), z1) -> c31(CONS(z0, z1)) 54.74/14.95 CONS(ok(z0), ok(z1)) -> c32(CONS(z0, z1)) 54.74/14.95 NATSFROM(mark(z0)) -> c33(NATSFROM(z0)) 54.74/14.95 NATSFROM(ok(z0)) -> c34(NATSFROM(z0)) 54.74/14.95 S(mark(z0)) -> c35(S(z0)) 54.74/14.95 S(ok(z0)) -> c36(S(z0)) 54.74/14.95 U171'(mark(z0), z1, z2) -> c37(U171'(z0, z1, z2)) 54.74/14.95 U171'(ok(z0), ok(z1), ok(z2)) -> c38(U171'(z0, z1, z2)) 54.74/14.95 U172'(mark(z0), z1, z2) -> c39(U172'(z0, z1, z2)) 54.74/14.95 U172'(ok(z0), ok(z1), ok(z2)) -> c40(U172'(z0, z1, z2)) 54.74/14.95 HEAD(mark(z0)) -> c41(HEAD(z0)) 54.74/14.95 HEAD(ok(z0)) -> c42(HEAD(z0)) 54.74/14.95 AFTERNTH(mark(z0), z1) -> c43(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(z0, mark(z1)) -> c44(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(ok(z0), ok(z1)) -> c45(AFTERNTH(z0, z1)) 54.74/14.95 U181'(mark(z0), z1) -> c46(U181'(z0, z1)) 54.74/14.95 U181'(ok(z0), ok(z1)) -> c47(U181'(z0, z1)) 54.74/14.95 U182'(mark(z0), z1) -> c48(U182'(z0, z1)) 54.74/14.95 U182'(ok(z0), ok(z1)) -> c49(U182'(z0, z1)) 54.74/14.95 U191'(mark(z0), z1) -> c50(U191'(z0, z1)) 54.74/14.95 U191'(ok(z0), ok(z1)) -> c51(U191'(z0, z1)) 54.74/14.95 PAIR(mark(z0), z1) -> c52(PAIR(z0, z1)) 54.74/14.95 PAIR(z0, mark(z1)) -> c53(PAIR(z0, z1)) 54.74/14.95 PAIR(ok(z0), ok(z1)) -> c54(PAIR(z0, z1)) 54.74/14.95 U201'(mark(z0), z1, z2, z3) -> c55(U201'(z0, z1, z2, z3)) 54.74/14.95 U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c56(U201'(z0, z1, z2, z3)) 54.74/14.95 U202'(mark(z0), z1, z2, z3) -> c57(U202'(z0, z1, z2, z3)) 54.74/14.95 U202'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c58(U202'(z0, z1, z2, z3)) 54.74/14.95 U203'(mark(z0), z1, z2, z3) -> c59(U203'(z0, z1, z2, z3)) 54.74/14.95 U203'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c60(U203'(z0, z1, z2, z3)) 54.74/14.95 U204'(mark(z0), z1) -> c61(U204'(z0, z1)) 54.74/14.95 U204'(ok(z0), ok(z1)) -> c62(U204'(z0, z1)) 54.74/14.95 U21'(mark(z0), z1, z2) -> c63(U21'(z0, z1, z2)) 54.74/14.95 U21'(ok(z0), ok(z1), ok(z2)) -> c64(U21'(z0, z1, z2)) 54.74/14.95 U22'(mark(z0), z1) -> c65(U22'(z0, z1)) 54.74/14.95 U22'(ok(z0), ok(z1)) -> c66(U22'(z0, z1)) 54.74/14.95 U211'(mark(z0), z1) -> c67(U211'(z0, z1)) 54.74/14.95 U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) 54.74/14.95 U212'(mark(z0), z1) -> c69(U212'(z0, z1)) 54.74/14.95 U212'(ok(z0), ok(z1)) -> c70(U212'(z0, z1)) 54.74/14.95 U221'(mark(z0), z1, z2) -> c71(U221'(z0, z1, z2)) 54.74/14.95 U221'(ok(z0), ok(z1), ok(z2)) -> c72(U221'(z0, z1, z2)) 54.74/14.95 U222'(mark(z0), z1, z2) -> c73(U222'(z0, z1, z2)) 54.74/14.95 U222'(ok(z0), ok(z1), ok(z2)) -> c74(U222'(z0, z1, z2)) 54.74/14.95 FST(mark(z0)) -> c75(FST(z0)) 54.74/14.95 FST(ok(z0)) -> c76(FST(z0)) 54.74/14.95 U31'(mark(z0), z1, z2) -> c77(U31'(z0, z1, z2)) 54.74/14.95 U31'(ok(z0), ok(z1), ok(z2)) -> c78(U31'(z0, z1, z2)) 54.74/14.95 U32'(mark(z0), z1) -> c79(U32'(z0, z1)) 54.74/14.95 U32'(ok(z0), ok(z1)) -> c80(U32'(z0, z1)) 54.74/14.95 U41'(mark(z0), z1) -> c81(U41'(z0, z1)) 54.74/14.95 U41'(ok(z0), ok(z1)) -> c82(U41'(z0, z1)) 54.74/14.95 U42'(mark(z0)) -> c83(U42'(z0)) 54.74/14.95 U42'(ok(z0)) -> c84(U42'(z0)) 54.74/14.95 U51'(mark(z0), z1) -> c85(U51'(z0, z1)) 54.74/14.95 U51'(ok(z0), ok(z1)) -> c86(U51'(z0, z1)) 54.74/14.95 U52'(mark(z0)) -> c87(U52'(z0)) 54.74/14.95 U52'(ok(z0)) -> c88(U52'(z0)) 54.74/14.95 U61'(mark(z0)) -> c89(U61'(z0)) 54.74/14.95 U61'(ok(z0)) -> c90(U61'(z0)) 54.74/14.95 U71'(mark(z0)) -> c91(U71'(z0)) 54.74/14.95 U71'(ok(z0)) -> c92(U71'(z0)) 54.74/14.95 U81'(mark(z0)) -> c93(U81'(z0)) 54.74/14.95 U81'(ok(z0)) -> c94(U81'(z0)) 54.74/14.95 U91'(mark(z0)) -> c95(U91'(z0)) 54.74/14.95 U91'(ok(z0)) -> c96(U91'(z0)) 54.74/14.95 TAIL(mark(z0)) -> c97(TAIL(z0)) 54.74/14.95 TAIL(ok(z0)) -> c98(TAIL(z0)) 54.74/14.95 TAKE(mark(z0), z1) -> c99(TAKE(z0, z1)) 54.74/14.95 TAKE(z0, mark(z1)) -> c100(TAKE(z0, z1)) 54.74/14.95 TAKE(ok(z0), ok(z1)) -> c101(TAKE(z0, z1)) 54.74/14.95 SEL(mark(z0), z1) -> c102(SEL(z0, z1)) 54.74/14.95 SEL(z0, mark(z1)) -> c103(SEL(z0, z1)) 54.74/14.95 SEL(ok(z0), ok(z1)) -> c104(SEL(z0, z1)) 54.74/14.95 ISLNAT(ok(z0)) -> c108(ISLNAT(z0)) 54.74/14.95 ISNATURAL(ok(z0)) -> c109(ISNATURAL(z0)) 54.74/14.95 ISPLNAT(ok(z0)) -> c110(ISPLNAT(z0)) 54.74/14.95 TOP(mark(z0)) -> c111(TOP(proper(z0))) 54.74/14.95 K tuples:none 54.74/14.95 Defined Rule Symbols: U101_2, U102_1, U11_3, U12_3, U111_1, snd_1, splitAt_2, U121_1, U131_2, U132_1, U141_2, U142_1, U151_2, U152_1, U161_2, cons_2, natsFrom_1, s_1, U171_3, U172_3, head_1, afterNth_2, U181_2, U182_2, U191_2, pair_2, U201_4, U202_4, U203_4, U204_2, U21_3, U22_2, U211_2, U212_2, U221_3, U222_3, fst_1, U31_3, U32_2, U41_2, U42_1, U51_2, U52_1, U61_1, U71_1, U81_1, U91_1, tail_1, take_2, sel_2, proper_1, isLNat_1, isNatural_1, isPLNat_1, top_1 54.74/14.95 54.74/14.95 Defined Pair Symbols: U101'_2, U102'_1, U11'_3, U12'_3, U111'_1, SND_1, SPLITAT_2, U121'_1, U131'_2, U132'_1, U141'_2, U142'_1, U151'_2, U152'_1, U161'_2, CONS_2, NATSFROM_1, S_1, U171'_3, U172'_3, HEAD_1, AFTERNTH_2, U181'_2, U182'_2, U191'_2, PAIR_2, U201'_4, U202'_4, U203'_4, U204'_2, U21'_3, U22'_2, U211'_2, U212'_2, U221'_3, U222'_3, FST_1, U31'_3, U32'_2, U41'_2, U42'_1, U51'_2, U52'_1, U61'_1, U71'_1, U81'_1, U91'_1, TAIL_1, TAKE_2, SEL_2, ISLNAT_1, ISNATURAL_1, ISPLNAT_1, TOP_1 54.74/14.95 54.74/14.95 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, c108_1, c109_1, c110_1, c111_1 54.74/14.95 54.74/14.95 54.74/14.95 ---------------------------------------- 54.74/14.95 54.74/14.95 (11) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) 54.74/14.95 The following rules are not usable and were removed: 54.74/14.95 U101(mark(z0), z1) -> mark(U101(z0, z1)) 54.74/14.95 U101(ok(z0), ok(z1)) -> ok(U101(z0, z1)) 54.74/14.95 U102(mark(z0)) -> mark(U102(z0)) 54.74/14.95 U102(ok(z0)) -> ok(U102(z0)) 54.74/14.95 U11(mark(z0), z1, z2) -> mark(U11(z0, z1, z2)) 54.74/14.95 U11(ok(z0), ok(z1), ok(z2)) -> ok(U11(z0, z1, z2)) 54.74/14.95 U12(mark(z0), z1, z2) -> mark(U12(z0, z1, z2)) 54.74/14.95 U12(ok(z0), ok(z1), ok(z2)) -> ok(U12(z0, z1, z2)) 54.74/14.95 U111(mark(z0)) -> mark(U111(z0)) 54.74/14.95 U111(ok(z0)) -> ok(U111(z0)) 54.74/14.95 snd(mark(z0)) -> mark(snd(z0)) 54.74/14.95 snd(ok(z0)) -> ok(snd(z0)) 54.74/14.95 splitAt(mark(z0), z1) -> mark(splitAt(z0, z1)) 54.74/14.95 splitAt(z0, mark(z1)) -> mark(splitAt(z0, z1)) 54.74/14.95 splitAt(ok(z0), ok(z1)) -> ok(splitAt(z0, z1)) 54.74/14.95 U121(mark(z0)) -> mark(U121(z0)) 54.74/14.95 U121(ok(z0)) -> ok(U121(z0)) 54.74/14.95 U131(mark(z0), z1) -> mark(U131(z0, z1)) 54.74/14.95 U131(ok(z0), ok(z1)) -> ok(U131(z0, z1)) 54.74/14.95 U132(mark(z0)) -> mark(U132(z0)) 54.74/14.95 U132(ok(z0)) -> ok(U132(z0)) 54.74/14.95 U141(mark(z0), z1) -> mark(U141(z0, z1)) 54.74/14.95 U141(ok(z0), ok(z1)) -> ok(U141(z0, z1)) 54.74/14.95 U142(mark(z0)) -> mark(U142(z0)) 54.74/14.95 U142(ok(z0)) -> ok(U142(z0)) 54.74/14.95 U151(mark(z0), z1) -> mark(U151(z0, z1)) 54.74/14.95 U151(ok(z0), ok(z1)) -> ok(U151(z0, z1)) 54.74/14.95 U152(mark(z0)) -> mark(U152(z0)) 54.74/14.95 U152(ok(z0)) -> ok(U152(z0)) 54.74/14.95 U161(mark(z0), z1) -> mark(U161(z0, z1)) 54.74/14.95 U161(ok(z0), ok(z1)) -> ok(U161(z0, z1)) 54.74/14.95 cons(mark(z0), z1) -> mark(cons(z0, z1)) 54.74/14.95 cons(ok(z0), ok(z1)) -> ok(cons(z0, z1)) 54.74/14.95 natsFrom(mark(z0)) -> mark(natsFrom(z0)) 54.74/14.95 natsFrom(ok(z0)) -> ok(natsFrom(z0)) 54.74/14.95 s(mark(z0)) -> mark(s(z0)) 54.74/14.95 s(ok(z0)) -> ok(s(z0)) 54.74/14.95 U171(mark(z0), z1, z2) -> mark(U171(z0, z1, z2)) 54.74/14.95 U171(ok(z0), ok(z1), ok(z2)) -> ok(U171(z0, z1, z2)) 54.74/14.95 U172(mark(z0), z1, z2) -> mark(U172(z0, z1, z2)) 54.74/14.95 U172(ok(z0), ok(z1), ok(z2)) -> ok(U172(z0, z1, z2)) 54.74/14.95 head(mark(z0)) -> mark(head(z0)) 54.74/14.95 head(ok(z0)) -> ok(head(z0)) 54.74/14.95 afterNth(mark(z0), z1) -> mark(afterNth(z0, z1)) 54.74/14.95 afterNth(z0, mark(z1)) -> mark(afterNth(z0, z1)) 54.74/14.95 afterNth(ok(z0), ok(z1)) -> ok(afterNth(z0, z1)) 54.74/14.95 U181(mark(z0), z1) -> mark(U181(z0, z1)) 54.74/14.95 U181(ok(z0), ok(z1)) -> ok(U181(z0, z1)) 54.74/14.95 U182(mark(z0), z1) -> mark(U182(z0, z1)) 54.74/14.95 U182(ok(z0), ok(z1)) -> ok(U182(z0, z1)) 54.74/14.95 U191(mark(z0), z1) -> mark(U191(z0, z1)) 54.74/14.95 U191(ok(z0), ok(z1)) -> ok(U191(z0, z1)) 54.74/14.95 pair(mark(z0), z1) -> mark(pair(z0, z1)) 54.74/14.95 pair(z0, mark(z1)) -> mark(pair(z0, z1)) 54.74/14.95 pair(ok(z0), ok(z1)) -> ok(pair(z0, z1)) 54.74/14.95 U201(mark(z0), z1, z2, z3) -> mark(U201(z0, z1, z2, z3)) 54.74/14.95 U201(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U201(z0, z1, z2, z3)) 54.74/14.95 U202(mark(z0), z1, z2, z3) -> mark(U202(z0, z1, z2, z3)) 54.74/14.95 U202(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U202(z0, z1, z2, z3)) 54.74/14.95 U203(mark(z0), z1, z2, z3) -> mark(U203(z0, z1, z2, z3)) 54.74/14.95 U203(ok(z0), ok(z1), ok(z2), ok(z3)) -> ok(U203(z0, z1, z2, z3)) 54.74/14.95 U204(mark(z0), z1) -> mark(U204(z0, z1)) 54.74/14.95 U204(ok(z0), ok(z1)) -> ok(U204(z0, z1)) 54.74/14.95 U21(mark(z0), z1, z2) -> mark(U21(z0, z1, z2)) 54.74/14.95 U21(ok(z0), ok(z1), ok(z2)) -> ok(U21(z0, z1, z2)) 54.74/14.95 U22(mark(z0), z1) -> mark(U22(z0, z1)) 54.74/14.95 U22(ok(z0), ok(z1)) -> ok(U22(z0, z1)) 54.74/14.95 U211(mark(z0), z1) -> mark(U211(z0, z1)) 54.74/14.95 U211(ok(z0), ok(z1)) -> ok(U211(z0, z1)) 54.74/14.95 U212(mark(z0), z1) -> mark(U212(z0, z1)) 54.74/14.95 U212(ok(z0), ok(z1)) -> ok(U212(z0, z1)) 54.74/14.95 U221(mark(z0), z1, z2) -> mark(U221(z0, z1, z2)) 54.74/14.95 U221(ok(z0), ok(z1), ok(z2)) -> ok(U221(z0, z1, z2)) 54.74/14.95 U222(mark(z0), z1, z2) -> mark(U222(z0, z1, z2)) 54.74/14.95 U222(ok(z0), ok(z1), ok(z2)) -> ok(U222(z0, z1, z2)) 54.74/14.95 fst(mark(z0)) -> mark(fst(z0)) 54.74/14.95 fst(ok(z0)) -> ok(fst(z0)) 54.74/14.95 U31(mark(z0), z1, z2) -> mark(U31(z0, z1, z2)) 54.74/14.95 U31(ok(z0), ok(z1), ok(z2)) -> ok(U31(z0, z1, z2)) 54.74/14.95 U32(mark(z0), z1) -> mark(U32(z0, z1)) 54.74/14.95 U32(ok(z0), ok(z1)) -> ok(U32(z0, z1)) 54.74/14.95 U41(mark(z0), z1) -> mark(U41(z0, z1)) 54.74/14.95 U41(ok(z0), ok(z1)) -> ok(U41(z0, z1)) 54.74/14.95 U42(mark(z0)) -> mark(U42(z0)) 54.74/14.95 U42(ok(z0)) -> ok(U42(z0)) 54.74/14.95 U51(mark(z0), z1) -> mark(U51(z0, z1)) 54.74/14.95 U51(ok(z0), ok(z1)) -> ok(U51(z0, z1)) 54.74/14.95 U52(mark(z0)) -> mark(U52(z0)) 54.74/14.95 U52(ok(z0)) -> ok(U52(z0)) 54.74/14.95 U61(mark(z0)) -> mark(U61(z0)) 54.74/14.95 U61(ok(z0)) -> ok(U61(z0)) 54.74/14.95 U71(mark(z0)) -> mark(U71(z0)) 54.74/14.95 U71(ok(z0)) -> ok(U71(z0)) 54.74/14.95 U81(mark(z0)) -> mark(U81(z0)) 54.74/14.95 U81(ok(z0)) -> ok(U81(z0)) 54.74/14.95 U91(mark(z0)) -> mark(U91(z0)) 54.74/14.95 U91(ok(z0)) -> ok(U91(z0)) 54.74/14.95 tail(mark(z0)) -> mark(tail(z0)) 54.74/14.95 tail(ok(z0)) -> ok(tail(z0)) 54.74/14.95 take(mark(z0), z1) -> mark(take(z0, z1)) 54.74/14.95 take(z0, mark(z1)) -> mark(take(z0, z1)) 54.74/14.95 take(ok(z0), ok(z1)) -> ok(take(z0, z1)) 54.74/14.95 sel(mark(z0), z1) -> mark(sel(z0, z1)) 54.74/14.95 sel(z0, mark(z1)) -> mark(sel(z0, z1)) 54.74/14.95 sel(ok(z0), ok(z1)) -> ok(sel(z0, z1)) 54.74/14.95 isLNat(ok(z0)) -> ok(isLNat(z0)) 54.74/14.95 isNatural(ok(z0)) -> ok(isNatural(z0)) 54.74/14.95 isPLNat(ok(z0)) -> ok(isPLNat(z0)) 54.74/14.95 top(mark(z0)) -> top(proper(z0)) 54.74/14.95 top(ok(z0)) -> top(active(z0)) 54.74/14.95 54.74/14.95 ---------------------------------------- 54.74/14.95 54.74/14.95 (12) 54.74/14.95 Obligation: 54.74/14.95 Complexity Dependency Tuples Problem 54.74/14.95 54.74/14.95 Rules: 54.74/14.95 proper(tt) -> ok(tt) 54.74/14.95 proper(nil) -> ok(nil) 54.74/14.95 proper(0) -> ok(0) 54.74/14.95 Tuples: 54.74/14.95 U101'(mark(z0), z1) -> c(U101'(z0, z1)) 54.74/14.95 U101'(ok(z0), ok(z1)) -> c1(U101'(z0, z1)) 54.74/14.95 U102'(mark(z0)) -> c2(U102'(z0)) 54.74/14.95 U102'(ok(z0)) -> c3(U102'(z0)) 54.74/14.95 U11'(mark(z0), z1, z2) -> c4(U11'(z0, z1, z2)) 54.74/14.95 U11'(ok(z0), ok(z1), ok(z2)) -> c5(U11'(z0, z1, z2)) 54.74/14.95 U12'(mark(z0), z1, z2) -> c6(U12'(z0, z1, z2)) 54.74/14.95 U12'(ok(z0), ok(z1), ok(z2)) -> c7(U12'(z0, z1, z2)) 54.74/14.95 U111'(mark(z0)) -> c8(U111'(z0)) 54.74/14.95 U111'(ok(z0)) -> c9(U111'(z0)) 54.74/14.95 SND(mark(z0)) -> c10(SND(z0)) 54.74/14.95 SND(ok(z0)) -> c11(SND(z0)) 54.74/14.95 SPLITAT(mark(z0), z1) -> c12(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(z0, mark(z1)) -> c13(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(ok(z0), ok(z1)) -> c14(SPLITAT(z0, z1)) 54.74/14.95 U121'(mark(z0)) -> c15(U121'(z0)) 54.74/14.95 U121'(ok(z0)) -> c16(U121'(z0)) 54.74/14.95 U131'(mark(z0), z1) -> c17(U131'(z0, z1)) 54.74/14.95 U131'(ok(z0), ok(z1)) -> c18(U131'(z0, z1)) 54.74/14.95 U132'(mark(z0)) -> c19(U132'(z0)) 54.74/14.95 U132'(ok(z0)) -> c20(U132'(z0)) 54.74/14.95 U141'(mark(z0), z1) -> c21(U141'(z0, z1)) 54.74/14.95 U141'(ok(z0), ok(z1)) -> c22(U141'(z0, z1)) 54.74/14.95 U142'(mark(z0)) -> c23(U142'(z0)) 54.74/14.95 U142'(ok(z0)) -> c24(U142'(z0)) 54.74/14.95 U151'(mark(z0), z1) -> c25(U151'(z0, z1)) 54.74/14.95 U151'(ok(z0), ok(z1)) -> c26(U151'(z0, z1)) 54.74/14.95 U152'(mark(z0)) -> c27(U152'(z0)) 54.74/14.95 U152'(ok(z0)) -> c28(U152'(z0)) 54.74/14.95 U161'(mark(z0), z1) -> c29(U161'(z0, z1)) 54.74/14.95 U161'(ok(z0), ok(z1)) -> c30(U161'(z0, z1)) 54.74/14.95 CONS(mark(z0), z1) -> c31(CONS(z0, z1)) 54.74/14.95 CONS(ok(z0), ok(z1)) -> c32(CONS(z0, z1)) 54.74/14.95 NATSFROM(mark(z0)) -> c33(NATSFROM(z0)) 54.74/14.95 NATSFROM(ok(z0)) -> c34(NATSFROM(z0)) 54.74/14.95 S(mark(z0)) -> c35(S(z0)) 54.74/14.95 S(ok(z0)) -> c36(S(z0)) 54.74/14.95 U171'(mark(z0), z1, z2) -> c37(U171'(z0, z1, z2)) 54.74/14.95 U171'(ok(z0), ok(z1), ok(z2)) -> c38(U171'(z0, z1, z2)) 54.74/14.95 U172'(mark(z0), z1, z2) -> c39(U172'(z0, z1, z2)) 54.74/14.95 U172'(ok(z0), ok(z1), ok(z2)) -> c40(U172'(z0, z1, z2)) 54.74/14.95 HEAD(mark(z0)) -> c41(HEAD(z0)) 54.74/14.95 HEAD(ok(z0)) -> c42(HEAD(z0)) 54.74/14.95 AFTERNTH(mark(z0), z1) -> c43(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(z0, mark(z1)) -> c44(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(ok(z0), ok(z1)) -> c45(AFTERNTH(z0, z1)) 54.74/14.95 U181'(mark(z0), z1) -> c46(U181'(z0, z1)) 54.74/14.95 U181'(ok(z0), ok(z1)) -> c47(U181'(z0, z1)) 54.74/14.95 U182'(mark(z0), z1) -> c48(U182'(z0, z1)) 54.74/14.95 U182'(ok(z0), ok(z1)) -> c49(U182'(z0, z1)) 54.74/14.95 U191'(mark(z0), z1) -> c50(U191'(z0, z1)) 54.74/14.95 U191'(ok(z0), ok(z1)) -> c51(U191'(z0, z1)) 54.74/14.95 PAIR(mark(z0), z1) -> c52(PAIR(z0, z1)) 54.74/14.95 PAIR(z0, mark(z1)) -> c53(PAIR(z0, z1)) 54.74/14.95 PAIR(ok(z0), ok(z1)) -> c54(PAIR(z0, z1)) 54.74/14.95 U201'(mark(z0), z1, z2, z3) -> c55(U201'(z0, z1, z2, z3)) 54.74/14.95 U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c56(U201'(z0, z1, z2, z3)) 54.74/14.95 U202'(mark(z0), z1, z2, z3) -> c57(U202'(z0, z1, z2, z3)) 54.74/14.95 U202'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c58(U202'(z0, z1, z2, z3)) 54.74/14.95 U203'(mark(z0), z1, z2, z3) -> c59(U203'(z0, z1, z2, z3)) 54.74/14.95 U203'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c60(U203'(z0, z1, z2, z3)) 54.74/14.95 U204'(mark(z0), z1) -> c61(U204'(z0, z1)) 54.74/14.95 U204'(ok(z0), ok(z1)) -> c62(U204'(z0, z1)) 54.74/14.95 U21'(mark(z0), z1, z2) -> c63(U21'(z0, z1, z2)) 54.74/14.95 U21'(ok(z0), ok(z1), ok(z2)) -> c64(U21'(z0, z1, z2)) 54.74/14.95 U22'(mark(z0), z1) -> c65(U22'(z0, z1)) 54.74/14.95 U22'(ok(z0), ok(z1)) -> c66(U22'(z0, z1)) 54.74/14.95 U211'(mark(z0), z1) -> c67(U211'(z0, z1)) 54.74/14.95 U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) 54.74/14.95 U212'(mark(z0), z1) -> c69(U212'(z0, z1)) 54.74/14.95 U212'(ok(z0), ok(z1)) -> c70(U212'(z0, z1)) 54.74/14.95 U221'(mark(z0), z1, z2) -> c71(U221'(z0, z1, z2)) 54.74/14.95 U221'(ok(z0), ok(z1), ok(z2)) -> c72(U221'(z0, z1, z2)) 54.74/14.95 U222'(mark(z0), z1, z2) -> c73(U222'(z0, z1, z2)) 54.74/14.95 U222'(ok(z0), ok(z1), ok(z2)) -> c74(U222'(z0, z1, z2)) 54.74/14.95 FST(mark(z0)) -> c75(FST(z0)) 54.74/14.95 FST(ok(z0)) -> c76(FST(z0)) 54.74/14.95 U31'(mark(z0), z1, z2) -> c77(U31'(z0, z1, z2)) 54.74/14.95 U31'(ok(z0), ok(z1), ok(z2)) -> c78(U31'(z0, z1, z2)) 54.74/14.95 U32'(mark(z0), z1) -> c79(U32'(z0, z1)) 54.74/14.95 U32'(ok(z0), ok(z1)) -> c80(U32'(z0, z1)) 54.74/14.95 U41'(mark(z0), z1) -> c81(U41'(z0, z1)) 54.74/14.95 U41'(ok(z0), ok(z1)) -> c82(U41'(z0, z1)) 54.74/14.95 U42'(mark(z0)) -> c83(U42'(z0)) 54.74/14.95 U42'(ok(z0)) -> c84(U42'(z0)) 54.74/14.95 U51'(mark(z0), z1) -> c85(U51'(z0, z1)) 54.74/14.95 U51'(ok(z0), ok(z1)) -> c86(U51'(z0, z1)) 54.74/14.95 U52'(mark(z0)) -> c87(U52'(z0)) 54.74/14.95 U52'(ok(z0)) -> c88(U52'(z0)) 54.74/14.95 U61'(mark(z0)) -> c89(U61'(z0)) 54.74/14.95 U61'(ok(z0)) -> c90(U61'(z0)) 54.74/14.95 U71'(mark(z0)) -> c91(U71'(z0)) 54.74/14.95 U71'(ok(z0)) -> c92(U71'(z0)) 54.74/14.95 U81'(mark(z0)) -> c93(U81'(z0)) 54.74/14.95 U81'(ok(z0)) -> c94(U81'(z0)) 54.74/14.95 U91'(mark(z0)) -> c95(U91'(z0)) 54.74/14.95 U91'(ok(z0)) -> c96(U91'(z0)) 54.74/14.95 TAIL(mark(z0)) -> c97(TAIL(z0)) 54.74/14.95 TAIL(ok(z0)) -> c98(TAIL(z0)) 54.74/14.95 TAKE(mark(z0), z1) -> c99(TAKE(z0, z1)) 54.74/14.95 TAKE(z0, mark(z1)) -> c100(TAKE(z0, z1)) 54.74/14.95 TAKE(ok(z0), ok(z1)) -> c101(TAKE(z0, z1)) 54.74/14.95 SEL(mark(z0), z1) -> c102(SEL(z0, z1)) 54.74/14.95 SEL(z0, mark(z1)) -> c103(SEL(z0, z1)) 54.74/14.95 SEL(ok(z0), ok(z1)) -> c104(SEL(z0, z1)) 54.74/14.95 ISLNAT(ok(z0)) -> c108(ISLNAT(z0)) 54.74/14.95 ISNATURAL(ok(z0)) -> c109(ISNATURAL(z0)) 54.74/14.95 ISPLNAT(ok(z0)) -> c110(ISPLNAT(z0)) 54.74/14.95 TOP(mark(z0)) -> c111(TOP(proper(z0))) 54.74/14.95 S tuples: 54.74/14.95 U101'(mark(z0), z1) -> c(U101'(z0, z1)) 54.74/14.95 U101'(ok(z0), ok(z1)) -> c1(U101'(z0, z1)) 54.74/14.95 U102'(mark(z0)) -> c2(U102'(z0)) 54.74/14.95 U102'(ok(z0)) -> c3(U102'(z0)) 54.74/14.95 U11'(mark(z0), z1, z2) -> c4(U11'(z0, z1, z2)) 54.74/14.95 U11'(ok(z0), ok(z1), ok(z2)) -> c5(U11'(z0, z1, z2)) 54.74/14.95 U12'(mark(z0), z1, z2) -> c6(U12'(z0, z1, z2)) 54.74/14.95 U12'(ok(z0), ok(z1), ok(z2)) -> c7(U12'(z0, z1, z2)) 54.74/14.95 U111'(mark(z0)) -> c8(U111'(z0)) 54.74/14.95 U111'(ok(z0)) -> c9(U111'(z0)) 54.74/14.95 SND(mark(z0)) -> c10(SND(z0)) 54.74/14.95 SND(ok(z0)) -> c11(SND(z0)) 54.74/14.95 SPLITAT(mark(z0), z1) -> c12(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(z0, mark(z1)) -> c13(SPLITAT(z0, z1)) 54.74/14.95 SPLITAT(ok(z0), ok(z1)) -> c14(SPLITAT(z0, z1)) 54.74/14.95 U121'(mark(z0)) -> c15(U121'(z0)) 54.74/14.95 U121'(ok(z0)) -> c16(U121'(z0)) 54.74/14.95 U131'(mark(z0), z1) -> c17(U131'(z0, z1)) 54.74/14.95 U131'(ok(z0), ok(z1)) -> c18(U131'(z0, z1)) 54.74/14.95 U132'(mark(z0)) -> c19(U132'(z0)) 54.74/14.95 U132'(ok(z0)) -> c20(U132'(z0)) 54.74/14.95 U141'(mark(z0), z1) -> c21(U141'(z0, z1)) 54.74/14.95 U141'(ok(z0), ok(z1)) -> c22(U141'(z0, z1)) 54.74/14.95 U142'(mark(z0)) -> c23(U142'(z0)) 54.74/14.95 U142'(ok(z0)) -> c24(U142'(z0)) 54.74/14.95 U151'(mark(z0), z1) -> c25(U151'(z0, z1)) 54.74/14.95 U151'(ok(z0), ok(z1)) -> c26(U151'(z0, z1)) 54.74/14.95 U152'(mark(z0)) -> c27(U152'(z0)) 54.74/14.95 U152'(ok(z0)) -> c28(U152'(z0)) 54.74/14.95 U161'(mark(z0), z1) -> c29(U161'(z0, z1)) 54.74/14.95 U161'(ok(z0), ok(z1)) -> c30(U161'(z0, z1)) 54.74/14.95 CONS(mark(z0), z1) -> c31(CONS(z0, z1)) 54.74/14.95 CONS(ok(z0), ok(z1)) -> c32(CONS(z0, z1)) 54.74/14.95 NATSFROM(mark(z0)) -> c33(NATSFROM(z0)) 54.74/14.95 NATSFROM(ok(z0)) -> c34(NATSFROM(z0)) 54.74/14.95 S(mark(z0)) -> c35(S(z0)) 54.74/14.95 S(ok(z0)) -> c36(S(z0)) 54.74/14.95 U171'(mark(z0), z1, z2) -> c37(U171'(z0, z1, z2)) 54.74/14.95 U171'(ok(z0), ok(z1), ok(z2)) -> c38(U171'(z0, z1, z2)) 54.74/14.95 U172'(mark(z0), z1, z2) -> c39(U172'(z0, z1, z2)) 54.74/14.95 U172'(ok(z0), ok(z1), ok(z2)) -> c40(U172'(z0, z1, z2)) 54.74/14.95 HEAD(mark(z0)) -> c41(HEAD(z0)) 54.74/14.95 HEAD(ok(z0)) -> c42(HEAD(z0)) 54.74/14.95 AFTERNTH(mark(z0), z1) -> c43(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(z0, mark(z1)) -> c44(AFTERNTH(z0, z1)) 54.74/14.95 AFTERNTH(ok(z0), ok(z1)) -> c45(AFTERNTH(z0, z1)) 54.74/14.95 U181'(mark(z0), z1) -> c46(U181'(z0, z1)) 54.74/14.95 U181'(ok(z0), ok(z1)) -> c47(U181'(z0, z1)) 54.74/14.95 U182'(mark(z0), z1) -> c48(U182'(z0, z1)) 54.74/14.95 U182'(ok(z0), ok(z1)) -> c49(U182'(z0, z1)) 54.74/14.95 U191'(mark(z0), z1) -> c50(U191'(z0, z1)) 54.74/14.95 U191'(ok(z0), ok(z1)) -> c51(U191'(z0, z1)) 54.74/14.95 PAIR(mark(z0), z1) -> c52(PAIR(z0, z1)) 54.74/14.95 PAIR(z0, mark(z1)) -> c53(PAIR(z0, z1)) 54.74/14.95 PAIR(ok(z0), ok(z1)) -> c54(PAIR(z0, z1)) 54.74/14.95 U201'(mark(z0), z1, z2, z3) -> c55(U201'(z0, z1, z2, z3)) 54.74/14.95 U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c56(U201'(z0, z1, z2, z3)) 54.74/14.95 U202'(mark(z0), z1, z2, z3) -> c57(U202'(z0, z1, z2, z3)) 54.74/14.95 U202'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c58(U202'(z0, z1, z2, z3)) 54.74/14.95 U203'(mark(z0), z1, z2, z3) -> c59(U203'(z0, z1, z2, z3)) 54.74/14.95 U203'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c60(U203'(z0, z1, z2, z3)) 54.74/14.95 U204'(mark(z0), z1) -> c61(U204'(z0, z1)) 54.74/14.95 U204'(ok(z0), ok(z1)) -> c62(U204'(z0, z1)) 54.74/14.95 U21'(mark(z0), z1, z2) -> c63(U21'(z0, z1, z2)) 54.74/14.95 U21'(ok(z0), ok(z1), ok(z2)) -> c64(U21'(z0, z1, z2)) 54.74/14.95 U22'(mark(z0), z1) -> c65(U22'(z0, z1)) 54.74/14.95 U22'(ok(z0), ok(z1)) -> c66(U22'(z0, z1)) 54.74/14.95 U211'(mark(z0), z1) -> c67(U211'(z0, z1)) 54.74/14.95 U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) 54.74/14.95 U212'(mark(z0), z1) -> c69(U212'(z0, z1)) 54.74/14.95 U212'(ok(z0), ok(z1)) -> c70(U212'(z0, z1)) 54.74/14.95 U221'(mark(z0), z1, z2) -> c71(U221'(z0, z1, z2)) 54.74/14.95 U221'(ok(z0), ok(z1), ok(z2)) -> c72(U221'(z0, z1, z2)) 54.74/14.95 U222'(mark(z0), z1, z2) -> c73(U222'(z0, z1, z2)) 54.74/14.95 U222'(ok(z0), ok(z1), ok(z2)) -> c74(U222'(z0, z1, z2)) 54.74/14.95 FST(mark(z0)) -> c75(FST(z0)) 54.74/14.95 FST(ok(z0)) -> c76(FST(z0)) 54.74/14.95 U31'(mark(z0), z1, z2) -> c77(U31'(z0, z1, z2)) 54.74/14.95 U31'(ok(z0), ok(z1), ok(z2)) -> c78(U31'(z0, z1, z2)) 54.74/14.95 U32'(mark(z0), z1) -> c79(U32'(z0, z1)) 54.74/14.95 U32'(ok(z0), ok(z1)) -> c80(U32'(z0, z1)) 54.74/14.95 U41'(mark(z0), z1) -> c81(U41'(z0, z1)) 54.74/14.95 U41'(ok(z0), ok(z1)) -> c82(U41'(z0, z1)) 54.74/14.95 U42'(mark(z0)) -> c83(U42'(z0)) 54.74/14.95 U42'(ok(z0)) -> c84(U42'(z0)) 54.74/14.95 U51'(mark(z0), z1) -> c85(U51'(z0, z1)) 54.74/14.95 U51'(ok(z0), ok(z1)) -> c86(U51'(z0, z1)) 54.74/14.95 U52'(mark(z0)) -> c87(U52'(z0)) 54.74/14.95 U52'(ok(z0)) -> c88(U52'(z0)) 54.74/14.95 U61'(mark(z0)) -> c89(U61'(z0)) 54.74/14.95 U61'(ok(z0)) -> c90(U61'(z0)) 54.74/14.95 U71'(mark(z0)) -> c91(U71'(z0)) 54.74/14.95 U71'(ok(z0)) -> c92(U71'(z0)) 54.74/14.95 U81'(mark(z0)) -> c93(U81'(z0)) 54.74/14.95 U81'(ok(z0)) -> c94(U81'(z0)) 54.74/14.95 U91'(mark(z0)) -> c95(U91'(z0)) 54.74/14.95 U91'(ok(z0)) -> c96(U91'(z0)) 54.74/14.95 TAIL(mark(z0)) -> c97(TAIL(z0)) 54.74/14.95 TAIL(ok(z0)) -> c98(TAIL(z0)) 54.74/14.95 TAKE(mark(z0), z1) -> c99(TAKE(z0, z1)) 54.74/14.95 TAKE(z0, mark(z1)) -> c100(TAKE(z0, z1)) 54.74/14.95 TAKE(ok(z0), ok(z1)) -> c101(TAKE(z0, z1)) 54.74/14.95 SEL(mark(z0), z1) -> c102(SEL(z0, z1)) 54.74/14.95 SEL(z0, mark(z1)) -> c103(SEL(z0, z1)) 54.74/14.95 SEL(ok(z0), ok(z1)) -> c104(SEL(z0, z1)) 54.74/14.95 ISLNAT(ok(z0)) -> c108(ISLNAT(z0)) 54.74/14.95 ISNATURAL(ok(z0)) -> c109(ISNATURAL(z0)) 54.74/14.95 ISPLNAT(ok(z0)) -> c110(ISPLNAT(z0)) 54.74/14.95 TOP(mark(z0)) -> c111(TOP(proper(z0))) 54.74/14.95 K tuples:none 54.74/14.95 Defined Rule Symbols: proper_1 54.74/14.95 54.74/14.95 Defined Pair Symbols: U101'_2, U102'_1, U11'_3, U12'_3, U111'_1, SND_1, SPLITAT_2, U121'_1, U131'_2, U132'_1, U141'_2, U142'_1, U151'_2, U152'_1, U161'_2, CONS_2, NATSFROM_1, S_1, U171'_3, U172'_3, HEAD_1, AFTERNTH_2, U181'_2, U182'_2, U191'_2, PAIR_2, U201'_4, U202'_4, U203'_4, U204'_2, U21'_3, U22'_2, U211'_2, U212'_2, U221'_3, U222'_3, FST_1, U31'_3, U32'_2, U41'_2, U42'_1, U51'_2, U52'_1, U61'_1, U71'_1, U81'_1, U91'_1, TAIL_1, TAKE_2, SEL_2, ISLNAT_1, ISNATURAL_1, ISPLNAT_1, TOP_1 54.74/14.95 54.74/14.95 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, c108_1, c109_1, c110_1, c111_1 54.74/14.95 54.74/14.95 54.74/14.95 ---------------------------------------- 54.74/14.95 54.74/14.95 (13) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) 54.74/14.95 Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. 54.74/14.95 U101'(mark(z0), z1) -> c(U101'(z0, z1)) 54.74/14.95 U101'(ok(z0), ok(z1)) -> c1(U101'(z0, z1)) 54.74/14.95 U102'(mark(z0)) -> c2(U102'(z0)) 54.74/14.95 U102'(ok(z0)) -> c3(U102'(z0)) 54.74/14.95 U11'(mark(z0), z1, z2) -> c4(U11'(z0, z1, z2)) 54.74/14.95 U11'(ok(z0), ok(z1), ok(z2)) -> c5(U11'(z0, z1, z2)) 54.74/14.95 U12'(mark(z0), z1, z2) -> c6(U12'(z0, z1, z2)) 54.74/14.96 U12'(ok(z0), ok(z1), ok(z2)) -> c7(U12'(z0, z1, z2)) 54.74/14.96 U111'(mark(z0)) -> c8(U111'(z0)) 54.74/14.96 U111'(ok(z0)) -> c9(U111'(z0)) 54.74/14.96 SND(mark(z0)) -> c10(SND(z0)) 54.74/14.96 SND(ok(z0)) -> c11(SND(z0)) 54.74/14.96 SPLITAT(mark(z0), z1) -> c12(SPLITAT(z0, z1)) 54.74/14.96 SPLITAT(z0, mark(z1)) -> c13(SPLITAT(z0, z1)) 54.74/14.96 SPLITAT(ok(z0), ok(z1)) -> c14(SPLITAT(z0, z1)) 54.74/14.96 U121'(mark(z0)) -> c15(U121'(z0)) 54.74/14.96 U121'(ok(z0)) -> c16(U121'(z0)) 54.74/14.96 U131'(mark(z0), z1) -> c17(U131'(z0, z1)) 54.74/14.96 U131'(ok(z0), ok(z1)) -> c18(U131'(z0, z1)) 54.74/14.96 U132'(mark(z0)) -> c19(U132'(z0)) 54.74/14.96 U132'(ok(z0)) -> c20(U132'(z0)) 54.74/14.96 U141'(mark(z0), z1) -> c21(U141'(z0, z1)) 54.74/14.96 U141'(ok(z0), ok(z1)) -> c22(U141'(z0, z1)) 54.74/14.96 U142'(mark(z0)) -> c23(U142'(z0)) 54.74/14.96 U142'(ok(z0)) -> c24(U142'(z0)) 54.74/14.96 U151'(mark(z0), z1) -> c25(U151'(z0, z1)) 54.74/14.96 U151'(ok(z0), ok(z1)) -> c26(U151'(z0, z1)) 54.74/14.96 U152'(mark(z0)) -> c27(U152'(z0)) 54.74/14.96 U152'(ok(z0)) -> c28(U152'(z0)) 54.74/14.96 U161'(mark(z0), z1) -> c29(U161'(z0, z1)) 54.74/14.96 U161'(ok(z0), ok(z1)) -> c30(U161'(z0, z1)) 54.74/14.96 CONS(mark(z0), z1) -> c31(CONS(z0, z1)) 54.74/14.96 CONS(ok(z0), ok(z1)) -> c32(CONS(z0, z1)) 54.74/14.96 NATSFROM(mark(z0)) -> c33(NATSFROM(z0)) 54.74/14.96 NATSFROM(ok(z0)) -> c34(NATSFROM(z0)) 54.74/14.96 S(mark(z0)) -> c35(S(z0)) 54.74/14.96 S(ok(z0)) -> c36(S(z0)) 54.74/14.96 U171'(mark(z0), z1, z2) -> c37(U171'(z0, z1, z2)) 54.74/14.96 U171'(ok(z0), ok(z1), ok(z2)) -> c38(U171'(z0, z1, z2)) 54.74/14.96 U172'(mark(z0), z1, z2) -> c39(U172'(z0, z1, z2)) 54.74/14.96 U172'(ok(z0), ok(z1), ok(z2)) -> c40(U172'(z0, z1, z2)) 54.74/14.96 HEAD(mark(z0)) -> c41(HEAD(z0)) 54.74/14.96 HEAD(ok(z0)) -> c42(HEAD(z0)) 54.74/14.96 AFTERNTH(mark(z0), z1) -> c43(AFTERNTH(z0, z1)) 54.74/14.96 AFTERNTH(z0, mark(z1)) -> c44(AFTERNTH(z0, z1)) 54.74/14.96 AFTERNTH(ok(z0), ok(z1)) -> c45(AFTERNTH(z0, z1)) 54.74/14.96 U181'(mark(z0), z1) -> c46(U181'(z0, z1)) 54.74/14.96 U181'(ok(z0), ok(z1)) -> c47(U181'(z0, z1)) 54.74/14.96 U182'(mark(z0), z1) -> c48(U182'(z0, z1)) 54.74/14.96 U182'(ok(z0), ok(z1)) -> c49(U182'(z0, z1)) 54.74/14.96 U191'(mark(z0), z1) -> c50(U191'(z0, z1)) 54.74/14.96 U191'(ok(z0), ok(z1)) -> c51(U191'(z0, z1)) 54.74/14.96 PAIR(mark(z0), z1) -> c52(PAIR(z0, z1)) 54.74/14.96 PAIR(z0, mark(z1)) -> c53(PAIR(z0, z1)) 54.74/14.96 PAIR(ok(z0), ok(z1)) -> c54(PAIR(z0, z1)) 54.74/14.96 U201'(mark(z0), z1, z2, z3) -> c55(U201'(z0, z1, z2, z3)) 54.74/14.96 U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c56(U201'(z0, z1, z2, z3)) 54.74/14.96 U202'(mark(z0), z1, z2, z3) -> c57(U202'(z0, z1, z2, z3)) 54.74/14.96 U202'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c58(U202'(z0, z1, z2, z3)) 54.74/14.96 U203'(mark(z0), z1, z2, z3) -> c59(U203'(z0, z1, z2, z3)) 54.74/14.96 U203'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c60(U203'(z0, z1, z2, z3)) 54.74/14.96 U204'(mark(z0), z1) -> c61(U204'(z0, z1)) 54.74/14.96 U204'(ok(z0), ok(z1)) -> c62(U204'(z0, z1)) 54.74/14.96 U21'(mark(z0), z1, z2) -> c63(U21'(z0, z1, z2)) 54.74/14.96 U21'(ok(z0), ok(z1), ok(z2)) -> c64(U21'(z0, z1, z2)) 54.74/14.96 U22'(mark(z0), z1) -> c65(U22'(z0, z1)) 54.74/14.96 U22'(ok(z0), ok(z1)) -> c66(U22'(z0, z1)) 54.74/14.96 U211'(mark(z0), z1) -> c67(U211'(z0, z1)) 54.74/14.96 U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) 54.74/14.96 U212'(mark(z0), z1) -> c69(U212'(z0, z1)) 54.74/14.96 U212'(ok(z0), ok(z1)) -> c70(U212'(z0, z1)) 54.74/14.96 U221'(mark(z0), z1, z2) -> c71(U221'(z0, z1, z2)) 54.74/14.96 U221'(ok(z0), ok(z1), ok(z2)) -> c72(U221'(z0, z1, z2)) 54.74/14.96 U222'(mark(z0), z1, z2) -> c73(U222'(z0, z1, z2)) 54.74/14.96 U222'(ok(z0), ok(z1), ok(z2)) -> c74(U222'(z0, z1, z2)) 54.74/14.96 FST(mark(z0)) -> c75(FST(z0)) 54.74/14.96 FST(ok(z0)) -> c76(FST(z0)) 54.74/14.96 U31'(mark(z0), z1, z2) -> c77(U31'(z0, z1, z2)) 54.74/14.96 U31'(ok(z0), ok(z1), ok(z2)) -> c78(U31'(z0, z1, z2)) 54.74/14.96 U32'(mark(z0), z1) -> c79(U32'(z0, z1)) 54.74/14.96 U32'(ok(z0), ok(z1)) -> c80(U32'(z0, z1)) 54.74/14.96 U41'(mark(z0), z1) -> c81(U41'(z0, z1)) 54.74/14.96 U41'(ok(z0), ok(z1)) -> c82(U41'(z0, z1)) 54.74/14.96 U42'(mark(z0)) -> c83(U42'(z0)) 54.74/14.96 U42'(ok(z0)) -> c84(U42'(z0)) 54.74/14.96 U51'(mark(z0), z1) -> c85(U51'(z0, z1)) 54.74/14.96 U51'(ok(z0), ok(z1)) -> c86(U51'(z0, z1)) 54.74/14.96 U52'(mark(z0)) -> c87(U52'(z0)) 54.74/14.96 U52'(ok(z0)) -> c88(U52'(z0)) 54.74/14.96 U61'(mark(z0)) -> c89(U61'(z0)) 54.74/14.96 U61'(ok(z0)) -> c90(U61'(z0)) 54.74/14.96 U71'(mark(z0)) -> c91(U71'(z0)) 54.74/14.96 U71'(ok(z0)) -> c92(U71'(z0)) 54.74/14.96 U81'(mark(z0)) -> c93(U81'(z0)) 54.74/14.96 U81'(ok(z0)) -> c94(U81'(z0)) 54.74/14.96 U91'(mark(z0)) -> c95(U91'(z0)) 54.74/14.96 U91'(ok(z0)) -> c96(U91'(z0)) 54.74/14.96 TAIL(mark(z0)) -> c97(TAIL(z0)) 54.74/14.96 TAIL(ok(z0)) -> c98(TAIL(z0)) 54.74/14.96 TAKE(mark(z0), z1) -> c99(TAKE(z0, z1)) 54.74/14.96 TAKE(z0, mark(z1)) -> c100(TAKE(z0, z1)) 54.74/14.96 TAKE(ok(z0), ok(z1)) -> c101(TAKE(z0, z1)) 54.74/14.96 SEL(mark(z0), z1) -> c102(SEL(z0, z1)) 54.74/14.96 SEL(z0, mark(z1)) -> c103(SEL(z0, z1)) 54.74/14.96 SEL(ok(z0), ok(z1)) -> c104(SEL(z0, z1)) 54.74/14.96 ISLNAT(ok(z0)) -> c108(ISLNAT(z0)) 54.74/14.96 ISNATURAL(ok(z0)) -> c109(ISNATURAL(z0)) 54.74/14.96 ISPLNAT(ok(z0)) -> c110(ISPLNAT(z0)) 54.74/14.96 We considered the (Usable) Rules: 54.74/14.96 proper(tt) -> ok(tt) 54.74/14.96 proper(nil) -> ok(nil) 54.74/14.96 proper(0) -> ok(0) 54.74/14.96 And the Tuples: 54.74/14.96 U101'(mark(z0), z1) -> c(U101'(z0, z1)) 54.74/14.96 U101'(ok(z0), ok(z1)) -> c1(U101'(z0, z1)) 54.74/14.96 U102'(mark(z0)) -> c2(U102'(z0)) 54.74/14.96 U102'(ok(z0)) -> c3(U102'(z0)) 54.74/14.96 U11'(mark(z0), z1, z2) -> c4(U11'(z0, z1, z2)) 54.74/14.96 U11'(ok(z0), ok(z1), ok(z2)) -> c5(U11'(z0, z1, z2)) 54.74/14.96 U12'(mark(z0), z1, z2) -> c6(U12'(z0, z1, z2)) 54.74/14.96 U12'(ok(z0), ok(z1), ok(z2)) -> c7(U12'(z0, z1, z2)) 54.74/14.96 U111'(mark(z0)) -> c8(U111'(z0)) 54.74/14.96 U111'(ok(z0)) -> c9(U111'(z0)) 54.74/14.96 SND(mark(z0)) -> c10(SND(z0)) 54.74/14.96 SND(ok(z0)) -> c11(SND(z0)) 54.74/14.96 SPLITAT(mark(z0), z1) -> c12(SPLITAT(z0, z1)) 54.74/14.96 SPLITAT(z0, mark(z1)) -> c13(SPLITAT(z0, z1)) 54.74/14.96 SPLITAT(ok(z0), ok(z1)) -> c14(SPLITAT(z0, z1)) 54.74/14.96 U121'(mark(z0)) -> c15(U121'(z0)) 54.74/14.96 U121'(ok(z0)) -> c16(U121'(z0)) 54.74/14.96 U131'(mark(z0), z1) -> c17(U131'(z0, z1)) 54.74/14.96 U131'(ok(z0), ok(z1)) -> c18(U131'(z0, z1)) 54.74/14.96 U132'(mark(z0)) -> c19(U132'(z0)) 54.74/14.96 U132'(ok(z0)) -> c20(U132'(z0)) 54.74/14.96 U141'(mark(z0), z1) -> c21(U141'(z0, z1)) 54.74/14.96 U141'(ok(z0), ok(z1)) -> c22(U141'(z0, z1)) 54.74/14.96 U142'(mark(z0)) -> c23(U142'(z0)) 54.74/14.96 U142'(ok(z0)) -> c24(U142'(z0)) 54.74/14.96 U151'(mark(z0), z1) -> c25(U151'(z0, z1)) 54.74/14.96 U151'(ok(z0), ok(z1)) -> c26(U151'(z0, z1)) 54.74/14.96 U152'(mark(z0)) -> c27(U152'(z0)) 54.74/14.96 U152'(ok(z0)) -> c28(U152'(z0)) 54.74/14.96 U161'(mark(z0), z1) -> c29(U161'(z0, z1)) 54.74/14.96 U161'(ok(z0), ok(z1)) -> c30(U161'(z0, z1)) 54.74/14.96 CONS(mark(z0), z1) -> c31(CONS(z0, z1)) 54.74/14.96 CONS(ok(z0), ok(z1)) -> c32(CONS(z0, z1)) 54.74/14.96 NATSFROM(mark(z0)) -> c33(NATSFROM(z0)) 54.74/14.96 NATSFROM(ok(z0)) -> c34(NATSFROM(z0)) 54.74/14.96 S(mark(z0)) -> c35(S(z0)) 54.74/14.96 S(ok(z0)) -> c36(S(z0)) 54.74/14.96 U171'(mark(z0), z1, z2) -> c37(U171'(z0, z1, z2)) 54.74/14.96 U171'(ok(z0), ok(z1), ok(z2)) -> c38(U171'(z0, z1, z2)) 54.74/14.96 U172'(mark(z0), z1, z2) -> c39(U172'(z0, z1, z2)) 54.74/14.96 U172'(ok(z0), ok(z1), ok(z2)) -> c40(U172'(z0, z1, z2)) 54.74/14.96 HEAD(mark(z0)) -> c41(HEAD(z0)) 54.74/14.96 HEAD(ok(z0)) -> c42(HEAD(z0)) 54.74/14.96 AFTERNTH(mark(z0), z1) -> c43(AFTERNTH(z0, z1)) 54.74/14.96 AFTERNTH(z0, mark(z1)) -> c44(AFTERNTH(z0, z1)) 54.74/14.96 AFTERNTH(ok(z0), ok(z1)) -> c45(AFTERNTH(z0, z1)) 54.74/14.96 U181'(mark(z0), z1) -> c46(U181'(z0, z1)) 54.74/14.96 U181'(ok(z0), ok(z1)) -> c47(U181'(z0, z1)) 54.74/14.96 U182'(mark(z0), z1) -> c48(U182'(z0, z1)) 54.74/14.96 U182'(ok(z0), ok(z1)) -> c49(U182'(z0, z1)) 54.74/14.96 U191'(mark(z0), z1) -> c50(U191'(z0, z1)) 54.74/14.96 U191'(ok(z0), ok(z1)) -> c51(U191'(z0, z1)) 54.74/14.96 PAIR(mark(z0), z1) -> c52(PAIR(z0, z1)) 54.74/14.96 PAIR(z0, mark(z1)) -> c53(PAIR(z0, z1)) 54.74/14.96 PAIR(ok(z0), ok(z1)) -> c54(PAIR(z0, z1)) 54.74/14.96 U201'(mark(z0), z1, z2, z3) -> c55(U201'(z0, z1, z2, z3)) 54.74/14.96 U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c56(U201'(z0, z1, z2, z3)) 54.74/14.96 U202'(mark(z0), z1, z2, z3) -> c57(U202'(z0, z1, z2, z3)) 54.74/14.96 U202'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c58(U202'(z0, z1, z2, z3)) 54.74/14.96 U203'(mark(z0), z1, z2, z3) -> c59(U203'(z0, z1, z2, z3)) 54.74/14.96 U203'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c60(U203'(z0, z1, z2, z3)) 54.74/14.96 U204'(mark(z0), z1) -> c61(U204'(z0, z1)) 54.74/14.96 U204'(ok(z0), ok(z1)) -> c62(U204'(z0, z1)) 54.74/14.96 U21'(mark(z0), z1, z2) -> c63(U21'(z0, z1, z2)) 54.74/14.96 U21'(ok(z0), ok(z1), ok(z2)) -> c64(U21'(z0, z1, z2)) 54.74/14.96 U22'(mark(z0), z1) -> c65(U22'(z0, z1)) 54.74/14.96 U22'(ok(z0), ok(z1)) -> c66(U22'(z0, z1)) 54.74/14.96 U211'(mark(z0), z1) -> c67(U211'(z0, z1)) 54.74/14.96 U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) 54.74/14.96 U212'(mark(z0), z1) -> c69(U212'(z0, z1)) 54.74/14.96 U212'(ok(z0), ok(z1)) -> c70(U212'(z0, z1)) 54.74/14.96 U221'(mark(z0), z1, z2) -> c71(U221'(z0, z1, z2)) 54.74/14.96 U221'(ok(z0), ok(z1), ok(z2)) -> c72(U221'(z0, z1, z2)) 54.74/14.96 U222'(mark(z0), z1, z2) -> c73(U222'(z0, z1, z2)) 54.74/14.96 U222'(ok(z0), ok(z1), ok(z2)) -> c74(U222'(z0, z1, z2)) 54.74/14.96 FST(mark(z0)) -> c75(FST(z0)) 54.74/14.96 FST(ok(z0)) -> c76(FST(z0)) 54.74/14.96 U31'(mark(z0), z1, z2) -> c77(U31'(z0, z1, z2)) 54.74/14.96 U31'(ok(z0), ok(z1), ok(z2)) -> c78(U31'(z0, z1, z2)) 54.74/14.96 U32'(mark(z0), z1) -> c79(U32'(z0, z1)) 54.74/14.96 U32'(ok(z0), ok(z1)) -> c80(U32'(z0, z1)) 54.74/14.96 U41'(mark(z0), z1) -> c81(U41'(z0, z1)) 54.74/14.96 U41'(ok(z0), ok(z1)) -> c82(U41'(z0, z1)) 54.74/14.96 U42'(mark(z0)) -> c83(U42'(z0)) 54.74/14.96 U42'(ok(z0)) -> c84(U42'(z0)) 54.74/14.96 U51'(mark(z0), z1) -> c85(U51'(z0, z1)) 54.74/14.96 U51'(ok(z0), ok(z1)) -> c86(U51'(z0, z1)) 54.74/14.96 U52'(mark(z0)) -> c87(U52'(z0)) 54.74/14.96 U52'(ok(z0)) -> c88(U52'(z0)) 54.74/14.96 U61'(mark(z0)) -> c89(U61'(z0)) 54.74/14.96 U61'(ok(z0)) -> c90(U61'(z0)) 54.74/14.96 U71'(mark(z0)) -> c91(U71'(z0)) 54.74/14.96 U71'(ok(z0)) -> c92(U71'(z0)) 54.74/14.96 U81'(mark(z0)) -> c93(U81'(z0)) 54.74/14.96 U81'(ok(z0)) -> c94(U81'(z0)) 54.74/14.96 U91'(mark(z0)) -> c95(U91'(z0)) 54.74/14.96 U91'(ok(z0)) -> c96(U91'(z0)) 54.74/14.96 TAIL(mark(z0)) -> c97(TAIL(z0)) 54.74/14.96 TAIL(ok(z0)) -> c98(TAIL(z0)) 54.74/14.96 TAKE(mark(z0), z1) -> c99(TAKE(z0, z1)) 54.74/14.96 TAKE(z0, mark(z1)) -> c100(TAKE(z0, z1)) 54.74/14.96 TAKE(ok(z0), ok(z1)) -> c101(TAKE(z0, z1)) 54.74/14.96 SEL(mark(z0), z1) -> c102(SEL(z0, z1)) 54.74/14.96 SEL(z0, mark(z1)) -> c103(SEL(z0, z1)) 54.74/14.96 SEL(ok(z0), ok(z1)) -> c104(SEL(z0, z1)) 54.74/14.96 ISLNAT(ok(z0)) -> c108(ISLNAT(z0)) 54.74/14.96 ISNATURAL(ok(z0)) -> c109(ISNATURAL(z0)) 54.74/14.96 ISPLNAT(ok(z0)) -> c110(ISPLNAT(z0)) 54.74/14.96 TOP(mark(z0)) -> c111(TOP(proper(z0))) 54.74/14.96 The order we found is given by the following interpretation: 54.74/14.96 54.74/14.96 Polynomial interpretation : 54.74/14.96 54.74/14.96 POL(0) = [1] 54.74/14.96 POL(AFTERNTH(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(CONS(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(FST(x_1)) = x_1 54.74/14.96 POL(HEAD(x_1)) = x_1 54.74/14.96 POL(ISLNAT(x_1)) = x_1 54.74/14.96 POL(ISNATURAL(x_1)) = x_1 54.74/14.96 POL(ISPLNAT(x_1)) = x_1 54.74/14.96 POL(NATSFROM(x_1)) = x_1 54.74/14.96 POL(PAIR(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(S(x_1)) = x_1 54.74/14.96 POL(SEL(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(SND(x_1)) = x_1 54.74/14.96 POL(SPLITAT(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(TAIL(x_1)) = x_1 54.74/14.96 POL(TAKE(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(TOP(x_1)) = x_1 54.74/14.96 POL(U101'(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(U102'(x_1)) = x_1 54.74/14.96 POL(U11'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 54.74/14.96 POL(U111'(x_1)) = x_1 54.74/14.96 POL(U12'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 54.74/14.96 POL(U121'(x_1)) = x_1 54.74/14.96 POL(U131'(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(U132'(x_1)) = x_1 54.74/14.96 POL(U141'(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(U142'(x_1)) = x_1 54.74/14.96 POL(U151'(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(U152'(x_1)) = x_1 54.74/14.96 POL(U161'(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(U171'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 54.74/14.96 POL(U172'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 54.74/14.96 POL(U181'(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(U182'(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(U191'(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(U201'(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 54.74/14.96 POL(U202'(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 54.74/14.96 POL(U203'(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 54.74/14.96 POL(U204'(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(U21'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 54.74/14.96 POL(U211'(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(U212'(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(U22'(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(U221'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 54.74/14.96 POL(U222'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 54.74/14.96 POL(U31'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 54.74/14.96 POL(U32'(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(U41'(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(U42'(x_1)) = x_1 54.74/14.96 POL(U51'(x_1, x_2)) = x_1 + x_2 54.74/14.96 POL(U52'(x_1)) = x_1 54.74/14.96 POL(U61'(x_1)) = x_1 54.74/14.96 POL(U71'(x_1)) = x_1 54.74/14.96 POL(U81'(x_1)) = x_1 54.74/14.96 POL(U91'(x_1)) = x_1 54.74/14.96 POL(c(x_1)) = x_1 54.74/14.96 POL(c1(x_1)) = x_1 54.74/14.96 POL(c10(x_1)) = x_1 54.74/14.96 POL(c100(x_1)) = x_1 54.74/14.96 POL(c101(x_1)) = x_1 54.74/14.96 POL(c102(x_1)) = x_1 54.74/14.96 POL(c103(x_1)) = x_1 54.74/14.96 POL(c104(x_1)) = x_1 54.74/14.96 POL(c108(x_1)) = x_1 54.74/14.96 POL(c109(x_1)) = x_1 54.74/14.96 POL(c11(x_1)) = x_1 54.74/14.96 POL(c110(x_1)) = x_1 54.74/14.96 POL(c111(x_1)) = x_1 54.74/14.96 POL(c12(x_1)) = x_1 54.74/14.96 POL(c13(x_1)) = x_1 54.74/14.96 POL(c14(x_1)) = x_1 54.74/14.96 POL(c15(x_1)) = x_1 54.74/14.96 POL(c16(x_1)) = x_1 54.74/14.96 POL(c17(x_1)) = x_1 54.74/14.96 POL(c18(x_1)) = x_1 54.74/14.96 POL(c19(x_1)) = x_1 54.74/14.96 POL(c2(x_1)) = x_1 54.74/14.96 POL(c20(x_1)) = x_1 54.74/14.96 POL(c21(x_1)) = x_1 54.74/14.96 POL(c22(x_1)) = x_1 54.74/14.96 POL(c23(x_1)) = x_1 54.74/14.96 POL(c24(x_1)) = x_1 54.74/14.96 POL(c25(x_1)) = x_1 54.74/14.96 POL(c26(x_1)) = x_1 54.74/14.96 POL(c27(x_1)) = x_1 54.74/14.96 POL(c28(x_1)) = x_1 54.74/14.96 POL(c29(x_1)) = x_1 54.74/14.96 POL(c3(x_1)) = x_1 54.74/14.96 POL(c30(x_1)) = x_1 54.74/14.96 POL(c31(x_1)) = x_1 54.74/14.96 POL(c32(x_1)) = x_1 54.74/14.96 POL(c33(x_1)) = x_1 54.74/14.96 POL(c34(x_1)) = x_1 54.74/14.96 POL(c35(x_1)) = x_1 55.16/14.98 POL(c36(x_1)) = x_1 55.16/14.98 POL(c37(x_1)) = x_1 55.16/14.98 POL(c38(x_1)) = x_1 55.16/14.98 POL(c39(x_1)) = x_1 55.16/14.98 POL(c4(x_1)) = x_1 55.16/14.98 POL(c40(x_1)) = x_1 55.16/14.98 POL(c41(x_1)) = x_1 55.16/14.98 POL(c42(x_1)) = x_1 55.16/14.98 POL(c43(x_1)) = x_1 55.16/14.98 POL(c44(x_1)) = x_1 55.16/14.98 POL(c45(x_1)) = x_1 55.16/14.98 POL(c46(x_1)) = x_1 55.16/14.98 POL(c47(x_1)) = x_1 55.16/14.98 POL(c48(x_1)) = x_1 55.16/14.98 POL(c49(x_1)) = x_1 55.16/14.98 POL(c5(x_1)) = x_1 55.16/14.98 POL(c50(x_1)) = x_1 55.16/14.98 POL(c51(x_1)) = x_1 55.16/14.98 POL(c52(x_1)) = x_1 55.16/14.98 POL(c53(x_1)) = x_1 55.16/14.98 POL(c54(x_1)) = x_1 55.16/14.98 POL(c55(x_1)) = x_1 55.16/14.98 POL(c56(x_1)) = x_1 55.16/14.98 POL(c57(x_1)) = x_1 55.16/14.98 POL(c58(x_1)) = x_1 55.16/14.98 POL(c59(x_1)) = x_1 55.16/14.98 POL(c6(x_1)) = x_1 55.16/14.98 POL(c60(x_1)) = x_1 55.16/14.98 POL(c61(x_1)) = x_1 55.16/14.98 POL(c62(x_1)) = x_1 55.16/14.98 POL(c63(x_1)) = x_1 55.16/14.98 POL(c64(x_1)) = x_1 55.16/14.98 POL(c65(x_1)) = x_1 55.16/14.98 POL(c66(x_1)) = x_1 55.16/14.98 POL(c67(x_1)) = x_1 55.16/14.98 POL(c68(x_1)) = x_1 55.16/14.98 POL(c69(x_1)) = x_1 55.16/14.98 POL(c7(x_1)) = x_1 55.16/14.98 POL(c70(x_1)) = x_1 55.16/14.98 POL(c71(x_1)) = x_1 55.16/14.98 POL(c72(x_1)) = x_1 55.16/14.98 POL(c73(x_1)) = x_1 55.16/14.98 POL(c74(x_1)) = x_1 55.16/14.98 POL(c75(x_1)) = x_1 55.16/14.98 POL(c76(x_1)) = x_1 55.16/14.98 POL(c77(x_1)) = x_1 55.16/14.98 POL(c78(x_1)) = x_1 55.16/14.98 POL(c79(x_1)) = x_1 55.16/14.98 POL(c8(x_1)) = x_1 55.16/14.98 POL(c80(x_1)) = x_1 55.16/14.98 POL(c81(x_1)) = x_1 55.16/14.98 POL(c82(x_1)) = x_1 55.16/14.98 POL(c83(x_1)) = x_1 55.16/14.98 POL(c84(x_1)) = x_1 55.16/14.98 POL(c85(x_1)) = x_1 55.16/14.98 POL(c86(x_1)) = x_1 55.16/14.98 POL(c87(x_1)) = x_1 55.16/14.98 POL(c88(x_1)) = x_1 55.16/14.98 POL(c89(x_1)) = x_1 55.16/14.98 POL(c9(x_1)) = x_1 55.16/14.98 POL(c90(x_1)) = x_1 55.16/14.98 POL(c91(x_1)) = x_1 55.16/14.98 POL(c92(x_1)) = x_1 55.16/14.98 POL(c93(x_1)) = x_1 55.16/14.98 POL(c94(x_1)) = x_1 55.16/14.98 POL(c95(x_1)) = x_1 55.16/14.98 POL(c96(x_1)) = x_1 55.16/14.98 POL(c97(x_1)) = x_1 55.16/14.98 POL(c98(x_1)) = x_1 55.16/14.98 POL(c99(x_1)) = x_1 55.16/14.98 POL(mark(x_1)) = [1] + x_1 55.16/14.98 POL(nil) = [1] 55.16/14.98 POL(ok(x_1)) = [1] + x_1 55.16/14.98 POL(proper(x_1)) = [1] + x_1 55.16/14.98 POL(tt) = [1] 55.16/14.98 55.16/14.98 ---------------------------------------- 55.16/14.98 55.16/14.98 (14) 55.16/14.98 Obligation: 55.16/14.98 Complexity Dependency Tuples Problem 55.16/14.98 55.16/14.98 Rules: 55.16/14.98 proper(tt) -> ok(tt) 55.16/14.98 proper(nil) -> ok(nil) 55.16/14.98 proper(0) -> ok(0) 55.16/14.98 Tuples: 55.16/14.98 U101'(mark(z0), z1) -> c(U101'(z0, z1)) 55.16/14.98 U101'(ok(z0), ok(z1)) -> c1(U101'(z0, z1)) 55.16/14.98 U102'(mark(z0)) -> c2(U102'(z0)) 55.16/14.98 U102'(ok(z0)) -> c3(U102'(z0)) 55.16/14.98 U11'(mark(z0), z1, z2) -> c4(U11'(z0, z1, z2)) 55.16/14.98 U11'(ok(z0), ok(z1), ok(z2)) -> c5(U11'(z0, z1, z2)) 55.16/14.98 U12'(mark(z0), z1, z2) -> c6(U12'(z0, z1, z2)) 55.16/14.98 U12'(ok(z0), ok(z1), ok(z2)) -> c7(U12'(z0, z1, z2)) 55.16/14.98 U111'(mark(z0)) -> c8(U111'(z0)) 55.16/14.98 U111'(ok(z0)) -> c9(U111'(z0)) 55.16/14.98 SND(mark(z0)) -> c10(SND(z0)) 55.16/14.98 SND(ok(z0)) -> c11(SND(z0)) 55.16/14.98 SPLITAT(mark(z0), z1) -> c12(SPLITAT(z0, z1)) 55.16/14.98 SPLITAT(z0, mark(z1)) -> c13(SPLITAT(z0, z1)) 55.16/14.98 SPLITAT(ok(z0), ok(z1)) -> c14(SPLITAT(z0, z1)) 55.16/14.98 U121'(mark(z0)) -> c15(U121'(z0)) 55.16/14.98 U121'(ok(z0)) -> c16(U121'(z0)) 55.16/14.98 U131'(mark(z0), z1) -> c17(U131'(z0, z1)) 55.16/14.98 U131'(ok(z0), ok(z1)) -> c18(U131'(z0, z1)) 55.16/14.98 U132'(mark(z0)) -> c19(U132'(z0)) 55.16/14.98 U132'(ok(z0)) -> c20(U132'(z0)) 55.16/14.98 U141'(mark(z0), z1) -> c21(U141'(z0, z1)) 55.16/14.98 U141'(ok(z0), ok(z1)) -> c22(U141'(z0, z1)) 55.16/14.98 U142'(mark(z0)) -> c23(U142'(z0)) 55.16/14.98 U142'(ok(z0)) -> c24(U142'(z0)) 55.16/14.98 U151'(mark(z0), z1) -> c25(U151'(z0, z1)) 55.16/14.98 U151'(ok(z0), ok(z1)) -> c26(U151'(z0, z1)) 55.16/14.98 U152'(mark(z0)) -> c27(U152'(z0)) 55.16/14.98 U152'(ok(z0)) -> c28(U152'(z0)) 55.16/14.98 U161'(mark(z0), z1) -> c29(U161'(z0, z1)) 55.16/14.98 U161'(ok(z0), ok(z1)) -> c30(U161'(z0, z1)) 55.16/14.98 CONS(mark(z0), z1) -> c31(CONS(z0, z1)) 55.16/14.98 CONS(ok(z0), ok(z1)) -> c32(CONS(z0, z1)) 55.16/14.98 NATSFROM(mark(z0)) -> c33(NATSFROM(z0)) 55.16/14.98 NATSFROM(ok(z0)) -> c34(NATSFROM(z0)) 55.16/14.98 S(mark(z0)) -> c35(S(z0)) 55.16/14.98 S(ok(z0)) -> c36(S(z0)) 55.16/14.98 U171'(mark(z0), z1, z2) -> c37(U171'(z0, z1, z2)) 55.16/14.98 U171'(ok(z0), ok(z1), ok(z2)) -> c38(U171'(z0, z1, z2)) 55.16/14.98 U172'(mark(z0), z1, z2) -> c39(U172'(z0, z1, z2)) 55.16/14.98 U172'(ok(z0), ok(z1), ok(z2)) -> c40(U172'(z0, z1, z2)) 55.16/14.98 HEAD(mark(z0)) -> c41(HEAD(z0)) 55.16/14.98 HEAD(ok(z0)) -> c42(HEAD(z0)) 55.16/14.98 AFTERNTH(mark(z0), z1) -> c43(AFTERNTH(z0, z1)) 55.16/14.98 AFTERNTH(z0, mark(z1)) -> c44(AFTERNTH(z0, z1)) 55.16/14.98 AFTERNTH(ok(z0), ok(z1)) -> c45(AFTERNTH(z0, z1)) 55.16/14.98 U181'(mark(z0), z1) -> c46(U181'(z0, z1)) 55.16/14.98 U181'(ok(z0), ok(z1)) -> c47(U181'(z0, z1)) 55.16/14.98 U182'(mark(z0), z1) -> c48(U182'(z0, z1)) 55.16/14.98 U182'(ok(z0), ok(z1)) -> c49(U182'(z0, z1)) 55.16/14.98 U191'(mark(z0), z1) -> c50(U191'(z0, z1)) 55.16/14.98 U191'(ok(z0), ok(z1)) -> c51(U191'(z0, z1)) 55.16/14.98 PAIR(mark(z0), z1) -> c52(PAIR(z0, z1)) 55.16/14.98 PAIR(z0, mark(z1)) -> c53(PAIR(z0, z1)) 55.16/14.98 PAIR(ok(z0), ok(z1)) -> c54(PAIR(z0, z1)) 55.16/14.98 U201'(mark(z0), z1, z2, z3) -> c55(U201'(z0, z1, z2, z3)) 55.16/14.98 U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c56(U201'(z0, z1, z2, z3)) 55.16/14.98 U202'(mark(z0), z1, z2, z3) -> c57(U202'(z0, z1, z2, z3)) 55.16/14.98 U202'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c58(U202'(z0, z1, z2, z3)) 55.16/14.98 U203'(mark(z0), z1, z2, z3) -> c59(U203'(z0, z1, z2, z3)) 55.16/14.98 U203'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c60(U203'(z0, z1, z2, z3)) 55.16/14.98 U204'(mark(z0), z1) -> c61(U204'(z0, z1)) 55.16/14.98 U204'(ok(z0), ok(z1)) -> c62(U204'(z0, z1)) 55.16/14.98 U21'(mark(z0), z1, z2) -> c63(U21'(z0, z1, z2)) 55.16/14.98 U21'(ok(z0), ok(z1), ok(z2)) -> c64(U21'(z0, z1, z2)) 55.16/14.98 U22'(mark(z0), z1) -> c65(U22'(z0, z1)) 55.16/14.98 U22'(ok(z0), ok(z1)) -> c66(U22'(z0, z1)) 55.16/14.98 U211'(mark(z0), z1) -> c67(U211'(z0, z1)) 55.16/14.98 U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) 55.16/14.98 U212'(mark(z0), z1) -> c69(U212'(z0, z1)) 55.16/14.98 U212'(ok(z0), ok(z1)) -> c70(U212'(z0, z1)) 55.16/14.98 U221'(mark(z0), z1, z2) -> c71(U221'(z0, z1, z2)) 55.16/14.98 U221'(ok(z0), ok(z1), ok(z2)) -> c72(U221'(z0, z1, z2)) 55.16/14.98 U222'(mark(z0), z1, z2) -> c73(U222'(z0, z1, z2)) 55.16/14.98 U222'(ok(z0), ok(z1), ok(z2)) -> c74(U222'(z0, z1, z2)) 55.16/14.98 FST(mark(z0)) -> c75(FST(z0)) 55.16/14.98 FST(ok(z0)) -> c76(FST(z0)) 55.16/14.98 U31'(mark(z0), z1, z2) -> c77(U31'(z0, z1, z2)) 55.16/14.98 U31'(ok(z0), ok(z1), ok(z2)) -> c78(U31'(z0, z1, z2)) 55.16/14.98 U32'(mark(z0), z1) -> c79(U32'(z0, z1)) 55.16/14.98 U32'(ok(z0), ok(z1)) -> c80(U32'(z0, z1)) 55.16/14.98 U41'(mark(z0), z1) -> c81(U41'(z0, z1)) 55.16/14.98 U41'(ok(z0), ok(z1)) -> c82(U41'(z0, z1)) 55.16/14.98 U42'(mark(z0)) -> c83(U42'(z0)) 55.16/14.98 U42'(ok(z0)) -> c84(U42'(z0)) 55.16/14.98 U51'(mark(z0), z1) -> c85(U51'(z0, z1)) 55.16/14.98 U51'(ok(z0), ok(z1)) -> c86(U51'(z0, z1)) 55.16/14.98 U52'(mark(z0)) -> c87(U52'(z0)) 55.16/14.98 U52'(ok(z0)) -> c88(U52'(z0)) 55.16/14.98 U61'(mark(z0)) -> c89(U61'(z0)) 55.16/14.98 U61'(ok(z0)) -> c90(U61'(z0)) 55.16/14.98 U71'(mark(z0)) -> c91(U71'(z0)) 55.16/14.98 U71'(ok(z0)) -> c92(U71'(z0)) 55.16/14.98 U81'(mark(z0)) -> c93(U81'(z0)) 55.16/14.98 U81'(ok(z0)) -> c94(U81'(z0)) 55.16/14.98 U91'(mark(z0)) -> c95(U91'(z0)) 55.16/14.98 U91'(ok(z0)) -> c96(U91'(z0)) 55.16/14.98 TAIL(mark(z0)) -> c97(TAIL(z0)) 55.16/14.98 TAIL(ok(z0)) -> c98(TAIL(z0)) 55.16/14.98 TAKE(mark(z0), z1) -> c99(TAKE(z0, z1)) 55.16/14.98 TAKE(z0, mark(z1)) -> c100(TAKE(z0, z1)) 55.16/14.98 TAKE(ok(z0), ok(z1)) -> c101(TAKE(z0, z1)) 55.16/14.98 SEL(mark(z0), z1) -> c102(SEL(z0, z1)) 55.16/14.98 SEL(z0, mark(z1)) -> c103(SEL(z0, z1)) 55.16/14.98 SEL(ok(z0), ok(z1)) -> c104(SEL(z0, z1)) 55.16/14.98 ISLNAT(ok(z0)) -> c108(ISLNAT(z0)) 55.16/14.98 ISNATURAL(ok(z0)) -> c109(ISNATURAL(z0)) 55.16/14.98 ISPLNAT(ok(z0)) -> c110(ISPLNAT(z0)) 55.16/14.98 TOP(mark(z0)) -> c111(TOP(proper(z0))) 55.16/14.98 S tuples: 55.16/14.98 TOP(mark(z0)) -> c111(TOP(proper(z0))) 55.16/14.98 K tuples: 55.16/14.98 U101'(mark(z0), z1) -> c(U101'(z0, z1)) 55.16/14.98 U101'(ok(z0), ok(z1)) -> c1(U101'(z0, z1)) 55.16/14.98 U102'(mark(z0)) -> c2(U102'(z0)) 55.16/14.98 U102'(ok(z0)) -> c3(U102'(z0)) 55.16/14.98 U11'(mark(z0), z1, z2) -> c4(U11'(z0, z1, z2)) 55.16/14.98 U11'(ok(z0), ok(z1), ok(z2)) -> c5(U11'(z0, z1, z2)) 55.16/14.98 U12'(mark(z0), z1, z2) -> c6(U12'(z0, z1, z2)) 55.16/14.98 U12'(ok(z0), ok(z1), ok(z2)) -> c7(U12'(z0, z1, z2)) 55.16/14.98 U111'(mark(z0)) -> c8(U111'(z0)) 55.16/14.98 U111'(ok(z0)) -> c9(U111'(z0)) 55.16/14.98 SND(mark(z0)) -> c10(SND(z0)) 55.16/14.98 SND(ok(z0)) -> c11(SND(z0)) 55.16/14.98 SPLITAT(mark(z0), z1) -> c12(SPLITAT(z0, z1)) 55.16/14.98 SPLITAT(z0, mark(z1)) -> c13(SPLITAT(z0, z1)) 55.16/14.98 SPLITAT(ok(z0), ok(z1)) -> c14(SPLITAT(z0, z1)) 55.16/14.98 U121'(mark(z0)) -> c15(U121'(z0)) 55.16/14.98 U121'(ok(z0)) -> c16(U121'(z0)) 55.16/14.98 U131'(mark(z0), z1) -> c17(U131'(z0, z1)) 55.16/14.98 U131'(ok(z0), ok(z1)) -> c18(U131'(z0, z1)) 55.16/14.98 U132'(mark(z0)) -> c19(U132'(z0)) 55.16/14.98 U132'(ok(z0)) -> c20(U132'(z0)) 55.16/14.98 U141'(mark(z0), z1) -> c21(U141'(z0, z1)) 55.16/14.98 U141'(ok(z0), ok(z1)) -> c22(U141'(z0, z1)) 55.16/14.98 U142'(mark(z0)) -> c23(U142'(z0)) 55.16/14.98 U142'(ok(z0)) -> c24(U142'(z0)) 55.16/14.98 U151'(mark(z0), z1) -> c25(U151'(z0, z1)) 55.16/14.98 U151'(ok(z0), ok(z1)) -> c26(U151'(z0, z1)) 55.16/14.98 U152'(mark(z0)) -> c27(U152'(z0)) 55.16/14.98 U152'(ok(z0)) -> c28(U152'(z0)) 55.16/14.98 U161'(mark(z0), z1) -> c29(U161'(z0, z1)) 55.16/14.98 U161'(ok(z0), ok(z1)) -> c30(U161'(z0, z1)) 55.16/14.98 CONS(mark(z0), z1) -> c31(CONS(z0, z1)) 55.16/14.98 CONS(ok(z0), ok(z1)) -> c32(CONS(z0, z1)) 55.16/14.98 NATSFROM(mark(z0)) -> c33(NATSFROM(z0)) 55.16/14.98 NATSFROM(ok(z0)) -> c34(NATSFROM(z0)) 55.16/14.98 S(mark(z0)) -> c35(S(z0)) 55.16/14.98 S(ok(z0)) -> c36(S(z0)) 55.16/14.98 U171'(mark(z0), z1, z2) -> c37(U171'(z0, z1, z2)) 55.16/14.98 U171'(ok(z0), ok(z1), ok(z2)) -> c38(U171'(z0, z1, z2)) 55.16/14.98 U172'(mark(z0), z1, z2) -> c39(U172'(z0, z1, z2)) 55.16/14.98 U172'(ok(z0), ok(z1), ok(z2)) -> c40(U172'(z0, z1, z2)) 55.16/14.98 HEAD(mark(z0)) -> c41(HEAD(z0)) 55.16/14.98 HEAD(ok(z0)) -> c42(HEAD(z0)) 55.16/14.98 AFTERNTH(mark(z0), z1) -> c43(AFTERNTH(z0, z1)) 55.16/14.98 AFTERNTH(z0, mark(z1)) -> c44(AFTERNTH(z0, z1)) 55.16/14.98 AFTERNTH(ok(z0), ok(z1)) -> c45(AFTERNTH(z0, z1)) 55.16/14.98 U181'(mark(z0), z1) -> c46(U181'(z0, z1)) 55.16/14.98 U181'(ok(z0), ok(z1)) -> c47(U181'(z0, z1)) 55.16/14.98 U182'(mark(z0), z1) -> c48(U182'(z0, z1)) 55.16/14.98 U182'(ok(z0), ok(z1)) -> c49(U182'(z0, z1)) 55.16/14.98 U191'(mark(z0), z1) -> c50(U191'(z0, z1)) 55.16/14.98 U191'(ok(z0), ok(z1)) -> c51(U191'(z0, z1)) 55.16/14.98 PAIR(mark(z0), z1) -> c52(PAIR(z0, z1)) 55.16/14.98 PAIR(z0, mark(z1)) -> c53(PAIR(z0, z1)) 55.16/14.98 PAIR(ok(z0), ok(z1)) -> c54(PAIR(z0, z1)) 55.16/14.98 U201'(mark(z0), z1, z2, z3) -> c55(U201'(z0, z1, z2, z3)) 55.16/14.98 U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c56(U201'(z0, z1, z2, z3)) 55.16/14.98 U202'(mark(z0), z1, z2, z3) -> c57(U202'(z0, z1, z2, z3)) 55.16/14.98 U202'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c58(U202'(z0, z1, z2, z3)) 55.16/14.98 U203'(mark(z0), z1, z2, z3) -> c59(U203'(z0, z1, z2, z3)) 55.16/14.98 U203'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c60(U203'(z0, z1, z2, z3)) 55.16/14.98 U204'(mark(z0), z1) -> c61(U204'(z0, z1)) 55.16/14.98 U204'(ok(z0), ok(z1)) -> c62(U204'(z0, z1)) 55.16/14.98 U21'(mark(z0), z1, z2) -> c63(U21'(z0, z1, z2)) 55.16/14.98 U21'(ok(z0), ok(z1), ok(z2)) -> c64(U21'(z0, z1, z2)) 55.16/14.98 U22'(mark(z0), z1) -> c65(U22'(z0, z1)) 55.16/14.98 U22'(ok(z0), ok(z1)) -> c66(U22'(z0, z1)) 55.16/14.98 U211'(mark(z0), z1) -> c67(U211'(z0, z1)) 55.16/14.98 U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) 55.16/14.98 U212'(mark(z0), z1) -> c69(U212'(z0, z1)) 55.16/14.98 U212'(ok(z0), ok(z1)) -> c70(U212'(z0, z1)) 55.16/14.98 U221'(mark(z0), z1, z2) -> c71(U221'(z0, z1, z2)) 55.16/14.98 U221'(ok(z0), ok(z1), ok(z2)) -> c72(U221'(z0, z1, z2)) 55.16/14.98 U222'(mark(z0), z1, z2) -> c73(U222'(z0, z1, z2)) 55.16/14.98 U222'(ok(z0), ok(z1), ok(z2)) -> c74(U222'(z0, z1, z2)) 55.16/14.98 FST(mark(z0)) -> c75(FST(z0)) 55.16/14.98 FST(ok(z0)) -> c76(FST(z0)) 55.16/14.98 U31'(mark(z0), z1, z2) -> c77(U31'(z0, z1, z2)) 55.16/14.98 U31'(ok(z0), ok(z1), ok(z2)) -> c78(U31'(z0, z1, z2)) 55.16/14.98 U32'(mark(z0), z1) -> c79(U32'(z0, z1)) 55.16/14.98 U32'(ok(z0), ok(z1)) -> c80(U32'(z0, z1)) 55.16/14.98 U41'(mark(z0), z1) -> c81(U41'(z0, z1)) 55.16/14.98 U41'(ok(z0), ok(z1)) -> c82(U41'(z0, z1)) 55.16/14.98 U42'(mark(z0)) -> c83(U42'(z0)) 55.16/14.98 U42'(ok(z0)) -> c84(U42'(z0)) 55.16/14.98 U51'(mark(z0), z1) -> c85(U51'(z0, z1)) 55.16/14.98 U51'(ok(z0), ok(z1)) -> c86(U51'(z0, z1)) 55.16/14.98 U52'(mark(z0)) -> c87(U52'(z0)) 55.16/14.98 U52'(ok(z0)) -> c88(U52'(z0)) 55.16/14.98 U61'(mark(z0)) -> c89(U61'(z0)) 55.16/14.98 U61'(ok(z0)) -> c90(U61'(z0)) 55.16/14.98 U71'(mark(z0)) -> c91(U71'(z0)) 55.16/14.98 U71'(ok(z0)) -> c92(U71'(z0)) 55.16/14.98 U81'(mark(z0)) -> c93(U81'(z0)) 55.16/14.98 U81'(ok(z0)) -> c94(U81'(z0)) 55.16/14.98 U91'(mark(z0)) -> c95(U91'(z0)) 55.16/14.98 U91'(ok(z0)) -> c96(U91'(z0)) 55.16/14.98 TAIL(mark(z0)) -> c97(TAIL(z0)) 55.16/14.98 TAIL(ok(z0)) -> c98(TAIL(z0)) 55.16/14.98 TAKE(mark(z0), z1) -> c99(TAKE(z0, z1)) 55.16/14.98 TAKE(z0, mark(z1)) -> c100(TAKE(z0, z1)) 55.16/14.98 TAKE(ok(z0), ok(z1)) -> c101(TAKE(z0, z1)) 55.16/14.98 SEL(mark(z0), z1) -> c102(SEL(z0, z1)) 55.16/14.98 SEL(z0, mark(z1)) -> c103(SEL(z0, z1)) 55.16/14.98 SEL(ok(z0), ok(z1)) -> c104(SEL(z0, z1)) 55.16/14.98 ISLNAT(ok(z0)) -> c108(ISLNAT(z0)) 55.16/14.98 ISNATURAL(ok(z0)) -> c109(ISNATURAL(z0)) 55.16/14.98 ISPLNAT(ok(z0)) -> c110(ISPLNAT(z0)) 55.16/14.98 Defined Rule Symbols: proper_1 55.16/14.98 55.16/14.98 Defined Pair Symbols: U101'_2, U102'_1, U11'_3, U12'_3, U111'_1, SND_1, SPLITAT_2, U121'_1, U131'_2, U132'_1, U141'_2, U142'_1, U151'_2, U152'_1, U161'_2, CONS_2, NATSFROM_1, S_1, U171'_3, U172'_3, HEAD_1, AFTERNTH_2, U181'_2, U182'_2, U191'_2, PAIR_2, U201'_4, U202'_4, U203'_4, U204'_2, U21'_3, U22'_2, U211'_2, U212'_2, U221'_3, U222'_3, FST_1, U31'_3, U32'_2, U41'_2, U42'_1, U51'_2, U52'_1, U61'_1, U71'_1, U81'_1, U91'_1, TAIL_1, TAKE_2, SEL_2, ISLNAT_1, ISNATURAL_1, ISPLNAT_1, TOP_1 55.16/14.98 55.16/14.98 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, c108_1, c109_1, c110_1, c111_1 55.16/14.98 55.16/14.98 55.16/14.98 ---------------------------------------- 55.16/14.98 55.16/14.98 (15) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) 55.16/14.98 Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. 55.16/14.98 TOP(mark(z0)) -> c111(TOP(proper(z0))) 55.16/14.98 We considered the (Usable) Rules: 55.16/14.98 proper(tt) -> ok(tt) 55.16/14.98 proper(nil) -> ok(nil) 55.16/14.98 proper(0) -> ok(0) 55.16/14.98 And the Tuples: 55.16/14.98 U101'(mark(z0), z1) -> c(U101'(z0, z1)) 55.16/14.98 U101'(ok(z0), ok(z1)) -> c1(U101'(z0, z1)) 55.16/14.98 U102'(mark(z0)) -> c2(U102'(z0)) 55.16/14.98 U102'(ok(z0)) -> c3(U102'(z0)) 55.16/14.98 U11'(mark(z0), z1, z2) -> c4(U11'(z0, z1, z2)) 55.16/14.98 U11'(ok(z0), ok(z1), ok(z2)) -> c5(U11'(z0, z1, z2)) 55.16/14.98 U12'(mark(z0), z1, z2) -> c6(U12'(z0, z1, z2)) 55.16/14.98 U12'(ok(z0), ok(z1), ok(z2)) -> c7(U12'(z0, z1, z2)) 55.16/14.98 U111'(mark(z0)) -> c8(U111'(z0)) 55.16/14.98 U111'(ok(z0)) -> c9(U111'(z0)) 55.16/14.98 SND(mark(z0)) -> c10(SND(z0)) 55.16/14.98 SND(ok(z0)) -> c11(SND(z0)) 55.16/14.98 SPLITAT(mark(z0), z1) -> c12(SPLITAT(z0, z1)) 55.16/14.98 SPLITAT(z0, mark(z1)) -> c13(SPLITAT(z0, z1)) 55.16/14.98 SPLITAT(ok(z0), ok(z1)) -> c14(SPLITAT(z0, z1)) 55.16/14.98 U121'(mark(z0)) -> c15(U121'(z0)) 55.16/14.98 U121'(ok(z0)) -> c16(U121'(z0)) 55.16/14.98 U131'(mark(z0), z1) -> c17(U131'(z0, z1)) 55.16/14.98 U131'(ok(z0), ok(z1)) -> c18(U131'(z0, z1)) 55.16/14.98 U132'(mark(z0)) -> c19(U132'(z0)) 55.16/14.98 U132'(ok(z0)) -> c20(U132'(z0)) 55.16/14.98 U141'(mark(z0), z1) -> c21(U141'(z0, z1)) 55.16/14.98 U141'(ok(z0), ok(z1)) -> c22(U141'(z0, z1)) 55.16/14.98 U142'(mark(z0)) -> c23(U142'(z0)) 55.16/14.98 U142'(ok(z0)) -> c24(U142'(z0)) 55.16/14.98 U151'(mark(z0), z1) -> c25(U151'(z0, z1)) 55.16/14.98 U151'(ok(z0), ok(z1)) -> c26(U151'(z0, z1)) 55.16/14.98 U152'(mark(z0)) -> c27(U152'(z0)) 55.16/14.98 U152'(ok(z0)) -> c28(U152'(z0)) 55.16/14.98 U161'(mark(z0), z1) -> c29(U161'(z0, z1)) 55.16/14.98 U161'(ok(z0), ok(z1)) -> c30(U161'(z0, z1)) 55.16/14.98 CONS(mark(z0), z1) -> c31(CONS(z0, z1)) 55.16/14.98 CONS(ok(z0), ok(z1)) -> c32(CONS(z0, z1)) 55.16/14.98 NATSFROM(mark(z0)) -> c33(NATSFROM(z0)) 55.16/14.98 NATSFROM(ok(z0)) -> c34(NATSFROM(z0)) 55.16/14.98 S(mark(z0)) -> c35(S(z0)) 55.16/14.98 S(ok(z0)) -> c36(S(z0)) 55.16/14.98 U171'(mark(z0), z1, z2) -> c37(U171'(z0, z1, z2)) 55.16/14.98 U171'(ok(z0), ok(z1), ok(z2)) -> c38(U171'(z0, z1, z2)) 55.16/14.98 U172'(mark(z0), z1, z2) -> c39(U172'(z0, z1, z2)) 55.16/14.98 U172'(ok(z0), ok(z1), ok(z2)) -> c40(U172'(z0, z1, z2)) 55.16/14.98 HEAD(mark(z0)) -> c41(HEAD(z0)) 55.16/14.98 HEAD(ok(z0)) -> c42(HEAD(z0)) 55.16/14.98 AFTERNTH(mark(z0), z1) -> c43(AFTERNTH(z0, z1)) 55.16/14.98 AFTERNTH(z0, mark(z1)) -> c44(AFTERNTH(z0, z1)) 55.16/14.98 AFTERNTH(ok(z0), ok(z1)) -> c45(AFTERNTH(z0, z1)) 55.16/14.98 U181'(mark(z0), z1) -> c46(U181'(z0, z1)) 55.16/14.98 U181'(ok(z0), ok(z1)) -> c47(U181'(z0, z1)) 55.16/14.98 U182'(mark(z0), z1) -> c48(U182'(z0, z1)) 55.16/14.98 U182'(ok(z0), ok(z1)) -> c49(U182'(z0, z1)) 55.16/14.98 U191'(mark(z0), z1) -> c50(U191'(z0, z1)) 55.16/14.98 U191'(ok(z0), ok(z1)) -> c51(U191'(z0, z1)) 55.16/14.98 PAIR(mark(z0), z1) -> c52(PAIR(z0, z1)) 55.16/14.98 PAIR(z0, mark(z1)) -> c53(PAIR(z0, z1)) 55.16/14.98 PAIR(ok(z0), ok(z1)) -> c54(PAIR(z0, z1)) 55.16/14.98 U201'(mark(z0), z1, z2, z3) -> c55(U201'(z0, z1, z2, z3)) 55.16/14.98 U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c56(U201'(z0, z1, z2, z3)) 55.16/14.98 U202'(mark(z0), z1, z2, z3) -> c57(U202'(z0, z1, z2, z3)) 55.16/14.98 U202'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c58(U202'(z0, z1, z2, z3)) 55.16/14.98 U203'(mark(z0), z1, z2, z3) -> c59(U203'(z0, z1, z2, z3)) 55.16/14.98 U203'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c60(U203'(z0, z1, z2, z3)) 55.16/14.98 U204'(mark(z0), z1) -> c61(U204'(z0, z1)) 55.16/14.98 U204'(ok(z0), ok(z1)) -> c62(U204'(z0, z1)) 55.16/14.98 U21'(mark(z0), z1, z2) -> c63(U21'(z0, z1, z2)) 55.16/14.98 U21'(ok(z0), ok(z1), ok(z2)) -> c64(U21'(z0, z1, z2)) 55.16/14.98 U22'(mark(z0), z1) -> c65(U22'(z0, z1)) 55.16/14.98 U22'(ok(z0), ok(z1)) -> c66(U22'(z0, z1)) 55.16/14.98 U211'(mark(z0), z1) -> c67(U211'(z0, z1)) 55.16/14.98 U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) 55.16/14.98 U212'(mark(z0), z1) -> c69(U212'(z0, z1)) 55.16/14.98 U212'(ok(z0), ok(z1)) -> c70(U212'(z0, z1)) 55.16/14.98 U221'(mark(z0), z1, z2) -> c71(U221'(z0, z1, z2)) 55.16/14.98 U221'(ok(z0), ok(z1), ok(z2)) -> c72(U221'(z0, z1, z2)) 55.16/14.98 U222'(mark(z0), z1, z2) -> c73(U222'(z0, z1, z2)) 55.16/14.98 U222'(ok(z0), ok(z1), ok(z2)) -> c74(U222'(z0, z1, z2)) 55.16/14.98 FST(mark(z0)) -> c75(FST(z0)) 55.16/14.98 FST(ok(z0)) -> c76(FST(z0)) 55.16/14.98 U31'(mark(z0), z1, z2) -> c77(U31'(z0, z1, z2)) 55.16/14.98 U31'(ok(z0), ok(z1), ok(z2)) -> c78(U31'(z0, z1, z2)) 55.16/14.98 U32'(mark(z0), z1) -> c79(U32'(z0, z1)) 55.16/14.98 U32'(ok(z0), ok(z1)) -> c80(U32'(z0, z1)) 55.16/14.98 U41'(mark(z0), z1) -> c81(U41'(z0, z1)) 55.16/14.98 U41'(ok(z0), ok(z1)) -> c82(U41'(z0, z1)) 55.16/14.98 U42'(mark(z0)) -> c83(U42'(z0)) 55.16/14.98 U42'(ok(z0)) -> c84(U42'(z0)) 55.16/14.98 U51'(mark(z0), z1) -> c85(U51'(z0, z1)) 55.16/14.98 U51'(ok(z0), ok(z1)) -> c86(U51'(z0, z1)) 55.16/14.98 U52'(mark(z0)) -> c87(U52'(z0)) 55.16/14.98 U52'(ok(z0)) -> c88(U52'(z0)) 55.16/14.98 U61'(mark(z0)) -> c89(U61'(z0)) 55.16/14.98 U61'(ok(z0)) -> c90(U61'(z0)) 55.16/14.98 U71'(mark(z0)) -> c91(U71'(z0)) 55.16/14.98 U71'(ok(z0)) -> c92(U71'(z0)) 55.16/14.98 U81'(mark(z0)) -> c93(U81'(z0)) 55.16/14.98 U81'(ok(z0)) -> c94(U81'(z0)) 55.16/14.98 U91'(mark(z0)) -> c95(U91'(z0)) 55.16/14.98 U91'(ok(z0)) -> c96(U91'(z0)) 55.16/14.98 TAIL(mark(z0)) -> c97(TAIL(z0)) 55.16/14.98 TAIL(ok(z0)) -> c98(TAIL(z0)) 55.16/14.98 TAKE(mark(z0), z1) -> c99(TAKE(z0, z1)) 55.16/14.98 TAKE(z0, mark(z1)) -> c100(TAKE(z0, z1)) 55.16/14.98 TAKE(ok(z0), ok(z1)) -> c101(TAKE(z0, z1)) 55.16/14.98 SEL(mark(z0), z1) -> c102(SEL(z0, z1)) 55.16/14.98 SEL(z0, mark(z1)) -> c103(SEL(z0, z1)) 55.16/14.98 SEL(ok(z0), ok(z1)) -> c104(SEL(z0, z1)) 55.16/14.98 ISLNAT(ok(z0)) -> c108(ISLNAT(z0)) 55.16/14.98 ISNATURAL(ok(z0)) -> c109(ISNATURAL(z0)) 55.16/14.98 ISPLNAT(ok(z0)) -> c110(ISPLNAT(z0)) 55.16/14.98 TOP(mark(z0)) -> c111(TOP(proper(z0))) 55.16/14.98 The order we found is given by the following interpretation: 55.16/14.98 55.16/14.98 Polynomial interpretation : 55.16/14.98 55.16/14.98 POL(0) = [1] 55.16/14.98 POL(AFTERNTH(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(CONS(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(FST(x_1)) = x_1 55.16/14.98 POL(HEAD(x_1)) = x_1 55.16/14.98 POL(ISLNAT(x_1)) = x_1 55.16/14.98 POL(ISNATURAL(x_1)) = x_1 55.16/14.98 POL(ISPLNAT(x_1)) = x_1 55.16/14.98 POL(NATSFROM(x_1)) = x_1 55.16/14.98 POL(PAIR(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(S(x_1)) = x_1 55.16/14.98 POL(SEL(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(SND(x_1)) = x_1 55.16/14.98 POL(SPLITAT(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(TAIL(x_1)) = x_1 55.16/14.98 POL(TAKE(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(TOP(x_1)) = x_1 55.16/14.98 POL(U101'(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(U102'(x_1)) = x_1 55.16/14.98 POL(U11'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 55.16/14.98 POL(U111'(x_1)) = x_1 55.16/14.98 POL(U12'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 55.16/14.98 POL(U121'(x_1)) = x_1 55.16/14.98 POL(U131'(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(U132'(x_1)) = x_1 55.16/14.98 POL(U141'(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(U142'(x_1)) = x_1 55.16/14.98 POL(U151'(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(U152'(x_1)) = x_1 55.16/14.98 POL(U161'(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(U171'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 55.16/14.98 POL(U172'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 55.16/14.98 POL(U181'(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(U182'(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(U191'(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(U201'(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 55.16/14.98 POL(U202'(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 55.16/14.98 POL(U203'(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 55.16/14.98 POL(U204'(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(U21'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 55.16/14.98 POL(U211'(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(U212'(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(U22'(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(U221'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 55.16/14.98 POL(U222'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 55.16/14.98 POL(U31'(x_1, x_2, x_3)) = x_1 + x_2 + x_3 55.16/14.98 POL(U32'(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(U41'(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(U42'(x_1)) = x_1 55.16/14.98 POL(U51'(x_1, x_2)) = x_1 + x_2 55.16/14.98 POL(U52'(x_1)) = x_1 55.16/14.98 POL(U61'(x_1)) = x_1 55.16/14.98 POL(U71'(x_1)) = x_1 55.16/14.98 POL(U81'(x_1)) = x_1 55.16/14.98 POL(U91'(x_1)) = x_1 55.16/14.98 POL(c(x_1)) = x_1 55.16/14.98 POL(c1(x_1)) = x_1 55.16/14.98 POL(c10(x_1)) = x_1 55.16/14.98 POL(c100(x_1)) = x_1 55.16/14.98 POL(c101(x_1)) = x_1 55.16/14.98 POL(c102(x_1)) = x_1 55.16/14.98 POL(c103(x_1)) = x_1 55.16/14.98 POL(c104(x_1)) = x_1 55.16/14.98 POL(c108(x_1)) = x_1 55.16/14.98 POL(c109(x_1)) = x_1 55.16/14.98 POL(c11(x_1)) = x_1 55.16/14.98 POL(c110(x_1)) = x_1 55.16/14.98 POL(c111(x_1)) = x_1 55.16/14.98 POL(c12(x_1)) = x_1 55.16/14.98 POL(c13(x_1)) = x_1 55.16/14.98 POL(c14(x_1)) = x_1 55.16/14.98 POL(c15(x_1)) = x_1 55.16/14.98 POL(c16(x_1)) = x_1 55.16/14.98 POL(c17(x_1)) = x_1 55.16/14.98 POL(c18(x_1)) = x_1 55.16/14.98 POL(c19(x_1)) = x_1 55.16/14.98 POL(c2(x_1)) = x_1 55.16/14.98 POL(c20(x_1)) = x_1 55.16/14.98 POL(c21(x_1)) = x_1 55.16/14.98 POL(c22(x_1)) = x_1 55.16/14.98 POL(c23(x_1)) = x_1 55.16/14.98 POL(c24(x_1)) = x_1 55.16/14.98 POL(c25(x_1)) = x_1 55.16/14.98 POL(c26(x_1)) = x_1 55.16/14.98 POL(c27(x_1)) = x_1 55.16/14.98 POL(c28(x_1)) = x_1 55.16/14.98 POL(c29(x_1)) = x_1 55.16/14.98 POL(c3(x_1)) = x_1 55.16/14.98 POL(c30(x_1)) = x_1 55.16/14.98 POL(c31(x_1)) = x_1 55.16/14.98 POL(c32(x_1)) = x_1 55.16/14.98 POL(c33(x_1)) = x_1 55.16/14.98 POL(c34(x_1)) = x_1 55.16/14.98 POL(c35(x_1)) = x_1 55.16/14.98 POL(c36(x_1)) = x_1 55.16/14.98 POL(c37(x_1)) = x_1 55.16/14.98 POL(c38(x_1)) = x_1 55.16/14.98 POL(c39(x_1)) = x_1 55.16/14.98 POL(c4(x_1)) = x_1 55.16/14.98 POL(c40(x_1)) = x_1 55.16/14.98 POL(c41(x_1)) = x_1 55.16/14.98 POL(c42(x_1)) = x_1 55.16/14.98 POL(c43(x_1)) = x_1 55.16/14.98 POL(c44(x_1)) = x_1 55.16/14.98 POL(c45(x_1)) = x_1 55.16/14.98 POL(c46(x_1)) = x_1 55.16/14.98 POL(c47(x_1)) = x_1 55.16/14.98 POL(c48(x_1)) = x_1 55.16/14.98 POL(c49(x_1)) = x_1 55.16/14.98 POL(c5(x_1)) = x_1 55.16/14.98 POL(c50(x_1)) = x_1 55.16/14.98 POL(c51(x_1)) = x_1 55.16/14.98 POL(c52(x_1)) = x_1 55.16/14.98 POL(c53(x_1)) = x_1 55.16/14.98 POL(c54(x_1)) = x_1 55.16/14.98 POL(c55(x_1)) = x_1 55.16/14.98 POL(c56(x_1)) = x_1 55.16/14.98 POL(c57(x_1)) = x_1 55.16/14.98 POL(c58(x_1)) = x_1 55.16/14.98 POL(c59(x_1)) = x_1 55.16/14.98 POL(c6(x_1)) = x_1 55.16/14.98 POL(c60(x_1)) = x_1 55.16/14.98 POL(c61(x_1)) = x_1 55.16/14.98 POL(c62(x_1)) = x_1 55.16/14.98 POL(c63(x_1)) = x_1 55.16/14.98 POL(c64(x_1)) = x_1 55.16/14.98 POL(c65(x_1)) = x_1 55.16/14.98 POL(c66(x_1)) = x_1 55.16/14.98 POL(c67(x_1)) = x_1 55.16/14.98 POL(c68(x_1)) = x_1 55.16/14.98 POL(c69(x_1)) = x_1 55.16/14.98 POL(c7(x_1)) = x_1 55.16/14.98 POL(c70(x_1)) = x_1 55.16/14.98 POL(c71(x_1)) = x_1 55.16/14.98 POL(c72(x_1)) = x_1 55.16/14.98 POL(c73(x_1)) = x_1 55.16/14.98 POL(c74(x_1)) = x_1 55.16/14.98 POL(c75(x_1)) = x_1 55.16/14.98 POL(c76(x_1)) = x_1 55.16/14.98 POL(c77(x_1)) = x_1 55.16/14.98 POL(c78(x_1)) = x_1 55.16/14.98 POL(c79(x_1)) = x_1 55.16/14.98 POL(c8(x_1)) = x_1 55.16/14.98 POL(c80(x_1)) = x_1 55.16/14.98 POL(c81(x_1)) = x_1 55.16/14.98 POL(c82(x_1)) = x_1 55.16/14.98 POL(c83(x_1)) = x_1 55.16/14.98 POL(c84(x_1)) = x_1 55.16/14.98 POL(c85(x_1)) = x_1 55.16/14.98 POL(c86(x_1)) = x_1 55.16/14.98 POL(c87(x_1)) = x_1 55.16/14.98 POL(c88(x_1)) = x_1 55.16/14.98 POL(c89(x_1)) = x_1 55.16/14.98 POL(c9(x_1)) = x_1 55.16/14.98 POL(c90(x_1)) = x_1 55.16/14.98 POL(c91(x_1)) = x_1 55.16/14.98 POL(c92(x_1)) = x_1 55.16/14.98 POL(c93(x_1)) = x_1 55.16/14.98 POL(c94(x_1)) = x_1 55.16/14.98 POL(c95(x_1)) = x_1 55.16/14.98 POL(c96(x_1)) = x_1 55.16/14.98 POL(c97(x_1)) = x_1 55.16/14.98 POL(c98(x_1)) = x_1 55.16/14.98 POL(c99(x_1)) = x_1 55.16/14.98 POL(mark(x_1)) = [1] + x_1 55.16/14.98 POL(nil) = [1] 55.16/14.98 POL(ok(x_1)) = x_1 55.16/14.98 POL(proper(x_1)) = x_1 55.16/14.98 POL(tt) = [1] 55.16/14.98 55.16/14.98 ---------------------------------------- 55.16/14.98 55.16/14.98 (16) 55.16/14.98 Obligation: 55.16/14.98 Complexity Dependency Tuples Problem 55.16/14.98 55.16/14.98 Rules: 55.16/14.98 proper(tt) -> ok(tt) 55.16/14.98 proper(nil) -> ok(nil) 55.16/14.98 proper(0) -> ok(0) 55.16/14.98 Tuples: 55.16/14.98 U101'(mark(z0), z1) -> c(U101'(z0, z1)) 55.16/14.98 U101'(ok(z0), ok(z1)) -> c1(U101'(z0, z1)) 55.16/14.98 U102'(mark(z0)) -> c2(U102'(z0)) 55.16/14.98 U102'(ok(z0)) -> c3(U102'(z0)) 55.16/14.98 U11'(mark(z0), z1, z2) -> c4(U11'(z0, z1, z2)) 55.16/14.98 U11'(ok(z0), ok(z1), ok(z2)) -> c5(U11'(z0, z1, z2)) 55.16/14.98 U12'(mark(z0), z1, z2) -> c6(U12'(z0, z1, z2)) 55.16/14.98 U12'(ok(z0), ok(z1), ok(z2)) -> c7(U12'(z0, z1, z2)) 55.16/14.98 U111'(mark(z0)) -> c8(U111'(z0)) 55.16/14.98 U111'(ok(z0)) -> c9(U111'(z0)) 55.16/14.98 SND(mark(z0)) -> c10(SND(z0)) 55.16/14.98 SND(ok(z0)) -> c11(SND(z0)) 55.16/14.98 SPLITAT(mark(z0), z1) -> c12(SPLITAT(z0, z1)) 55.16/14.98 SPLITAT(z0, mark(z1)) -> c13(SPLITAT(z0, z1)) 55.16/14.98 SPLITAT(ok(z0), ok(z1)) -> c14(SPLITAT(z0, z1)) 55.16/14.98 U121'(mark(z0)) -> c15(U121'(z0)) 55.16/14.98 U121'(ok(z0)) -> c16(U121'(z0)) 55.16/14.98 U131'(mark(z0), z1) -> c17(U131'(z0, z1)) 55.16/14.98 U131'(ok(z0), ok(z1)) -> c18(U131'(z0, z1)) 55.16/14.98 U132'(mark(z0)) -> c19(U132'(z0)) 55.16/14.98 U132'(ok(z0)) -> c20(U132'(z0)) 55.16/14.98 U141'(mark(z0), z1) -> c21(U141'(z0, z1)) 55.16/14.98 U141'(ok(z0), ok(z1)) -> c22(U141'(z0, z1)) 55.16/14.98 U142'(mark(z0)) -> c23(U142'(z0)) 55.16/14.98 U142'(ok(z0)) -> c24(U142'(z0)) 55.16/14.98 U151'(mark(z0), z1) -> c25(U151'(z0, z1)) 55.16/14.98 U151'(ok(z0), ok(z1)) -> c26(U151'(z0, z1)) 55.16/14.98 U152'(mark(z0)) -> c27(U152'(z0)) 55.16/14.98 U152'(ok(z0)) -> c28(U152'(z0)) 55.16/14.98 U161'(mark(z0), z1) -> c29(U161'(z0, z1)) 55.16/14.98 U161'(ok(z0), ok(z1)) -> c30(U161'(z0, z1)) 55.16/14.98 CONS(mark(z0), z1) -> c31(CONS(z0, z1)) 55.16/14.98 CONS(ok(z0), ok(z1)) -> c32(CONS(z0, z1)) 55.16/14.98 NATSFROM(mark(z0)) -> c33(NATSFROM(z0)) 55.16/14.98 NATSFROM(ok(z0)) -> c34(NATSFROM(z0)) 55.16/14.98 S(mark(z0)) -> c35(S(z0)) 55.16/14.98 S(ok(z0)) -> c36(S(z0)) 55.16/14.98 U171'(mark(z0), z1, z2) -> c37(U171'(z0, z1, z2)) 55.16/14.98 U171'(ok(z0), ok(z1), ok(z2)) -> c38(U171'(z0, z1, z2)) 55.16/14.98 U172'(mark(z0), z1, z2) -> c39(U172'(z0, z1, z2)) 55.16/14.98 U172'(ok(z0), ok(z1), ok(z2)) -> c40(U172'(z0, z1, z2)) 55.16/14.98 HEAD(mark(z0)) -> c41(HEAD(z0)) 55.16/14.98 HEAD(ok(z0)) -> c42(HEAD(z0)) 55.16/14.98 AFTERNTH(mark(z0), z1) -> c43(AFTERNTH(z0, z1)) 55.16/14.98 AFTERNTH(z0, mark(z1)) -> c44(AFTERNTH(z0, z1)) 55.16/14.98 AFTERNTH(ok(z0), ok(z1)) -> c45(AFTERNTH(z0, z1)) 55.16/14.98 U181'(mark(z0), z1) -> c46(U181'(z0, z1)) 55.16/14.98 U181'(ok(z0), ok(z1)) -> c47(U181'(z0, z1)) 55.16/14.98 U182'(mark(z0), z1) -> c48(U182'(z0, z1)) 55.16/14.98 U182'(ok(z0), ok(z1)) -> c49(U182'(z0, z1)) 55.16/14.98 U191'(mark(z0), z1) -> c50(U191'(z0, z1)) 55.16/14.98 U191'(ok(z0), ok(z1)) -> c51(U191'(z0, z1)) 55.16/14.98 PAIR(mark(z0), z1) -> c52(PAIR(z0, z1)) 55.16/14.98 PAIR(z0, mark(z1)) -> c53(PAIR(z0, z1)) 55.16/14.98 PAIR(ok(z0), ok(z1)) -> c54(PAIR(z0, z1)) 55.16/14.98 U201'(mark(z0), z1, z2, z3) -> c55(U201'(z0, z1, z2, z3)) 55.16/14.98 U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c56(U201'(z0, z1, z2, z3)) 55.16/14.98 U202'(mark(z0), z1, z2, z3) -> c57(U202'(z0, z1, z2, z3)) 55.16/14.98 U202'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c58(U202'(z0, z1, z2, z3)) 55.16/14.98 U203'(mark(z0), z1, z2, z3) -> c59(U203'(z0, z1, z2, z3)) 55.16/14.98 U203'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c60(U203'(z0, z1, z2, z3)) 55.16/14.98 U204'(mark(z0), z1) -> c61(U204'(z0, z1)) 55.16/14.98 U204'(ok(z0), ok(z1)) -> c62(U204'(z0, z1)) 55.16/14.98 U21'(mark(z0), z1, z2) -> c63(U21'(z0, z1, z2)) 55.16/14.98 U21'(ok(z0), ok(z1), ok(z2)) -> c64(U21'(z0, z1, z2)) 55.16/14.98 U22'(mark(z0), z1) -> c65(U22'(z0, z1)) 55.16/14.98 U22'(ok(z0), ok(z1)) -> c66(U22'(z0, z1)) 55.16/14.98 U211'(mark(z0), z1) -> c67(U211'(z0, z1)) 55.16/14.98 U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) 55.16/14.98 U212'(mark(z0), z1) -> c69(U212'(z0, z1)) 55.16/14.98 U212'(ok(z0), ok(z1)) -> c70(U212'(z0, z1)) 55.16/14.98 U221'(mark(z0), z1, z2) -> c71(U221'(z0, z1, z2)) 55.16/14.98 U221'(ok(z0), ok(z1), ok(z2)) -> c72(U221'(z0, z1, z2)) 55.16/14.98 U222'(mark(z0), z1, z2) -> c73(U222'(z0, z1, z2)) 55.16/14.98 U222'(ok(z0), ok(z1), ok(z2)) -> c74(U222'(z0, z1, z2)) 55.16/14.98 FST(mark(z0)) -> c75(FST(z0)) 55.16/14.98 FST(ok(z0)) -> c76(FST(z0)) 55.16/14.98 U31'(mark(z0), z1, z2) -> c77(U31'(z0, z1, z2)) 55.16/14.98 U31'(ok(z0), ok(z1), ok(z2)) -> c78(U31'(z0, z1, z2)) 55.16/14.98 U32'(mark(z0), z1) -> c79(U32'(z0, z1)) 55.16/14.98 U32'(ok(z0), ok(z1)) -> c80(U32'(z0, z1)) 55.16/14.98 U41'(mark(z0), z1) -> c81(U41'(z0, z1)) 55.16/14.98 U41'(ok(z0), ok(z1)) -> c82(U41'(z0, z1)) 55.16/14.98 U42'(mark(z0)) -> c83(U42'(z0)) 55.16/14.98 U42'(ok(z0)) -> c84(U42'(z0)) 55.16/14.98 U51'(mark(z0), z1) -> c85(U51'(z0, z1)) 55.16/14.98 U51'(ok(z0), ok(z1)) -> c86(U51'(z0, z1)) 55.16/14.98 U52'(mark(z0)) -> c87(U52'(z0)) 55.16/14.98 U52'(ok(z0)) -> c88(U52'(z0)) 55.16/14.98 U61'(mark(z0)) -> c89(U61'(z0)) 55.16/14.98 U61'(ok(z0)) -> c90(U61'(z0)) 55.16/14.98 U71'(mark(z0)) -> c91(U71'(z0)) 55.16/14.98 U71'(ok(z0)) -> c92(U71'(z0)) 55.16/14.98 U81'(mark(z0)) -> c93(U81'(z0)) 55.16/14.98 U81'(ok(z0)) -> c94(U81'(z0)) 55.16/14.98 U91'(mark(z0)) -> c95(U91'(z0)) 55.16/14.98 U91'(ok(z0)) -> c96(U91'(z0)) 55.16/14.98 TAIL(mark(z0)) -> c97(TAIL(z0)) 55.16/14.98 TAIL(ok(z0)) -> c98(TAIL(z0)) 55.16/14.98 TAKE(mark(z0), z1) -> c99(TAKE(z0, z1)) 55.16/14.98 TAKE(z0, mark(z1)) -> c100(TAKE(z0, z1)) 55.16/14.98 TAKE(ok(z0), ok(z1)) -> c101(TAKE(z0, z1)) 55.16/14.98 SEL(mark(z0), z1) -> c102(SEL(z0, z1)) 55.16/14.98 SEL(z0, mark(z1)) -> c103(SEL(z0, z1)) 55.16/14.98 SEL(ok(z0), ok(z1)) -> c104(SEL(z0, z1)) 55.16/14.98 ISLNAT(ok(z0)) -> c108(ISLNAT(z0)) 55.16/14.98 ISNATURAL(ok(z0)) -> c109(ISNATURAL(z0)) 55.16/14.98 ISPLNAT(ok(z0)) -> c110(ISPLNAT(z0)) 55.16/14.98 TOP(mark(z0)) -> c111(TOP(proper(z0))) 55.16/14.98 S tuples:none 55.16/14.98 K tuples: 55.16/14.98 U101'(mark(z0), z1) -> c(U101'(z0, z1)) 55.16/14.98 U101'(ok(z0), ok(z1)) -> c1(U101'(z0, z1)) 55.16/14.98 U102'(mark(z0)) -> c2(U102'(z0)) 55.16/14.98 U102'(ok(z0)) -> c3(U102'(z0)) 55.16/14.98 U11'(mark(z0), z1, z2) -> c4(U11'(z0, z1, z2)) 55.16/14.98 U11'(ok(z0), ok(z1), ok(z2)) -> c5(U11'(z0, z1, z2)) 55.16/14.98 U12'(mark(z0), z1, z2) -> c6(U12'(z0, z1, z2)) 55.16/14.98 U12'(ok(z0), ok(z1), ok(z2)) -> c7(U12'(z0, z1, z2)) 55.16/14.98 U111'(mark(z0)) -> c8(U111'(z0)) 55.16/14.98 U111'(ok(z0)) -> c9(U111'(z0)) 55.16/14.98 SND(mark(z0)) -> c10(SND(z0)) 55.16/14.98 SND(ok(z0)) -> c11(SND(z0)) 55.16/14.98 SPLITAT(mark(z0), z1) -> c12(SPLITAT(z0, z1)) 55.16/14.98 SPLITAT(z0, mark(z1)) -> c13(SPLITAT(z0, z1)) 55.16/14.98 SPLITAT(ok(z0), ok(z1)) -> c14(SPLITAT(z0, z1)) 55.16/14.98 U121'(mark(z0)) -> c15(U121'(z0)) 55.16/14.98 U121'(ok(z0)) -> c16(U121'(z0)) 55.16/14.98 U131'(mark(z0), z1) -> c17(U131'(z0, z1)) 55.16/14.98 U131'(ok(z0), ok(z1)) -> c18(U131'(z0, z1)) 55.16/14.98 U132'(mark(z0)) -> c19(U132'(z0)) 55.16/14.98 U132'(ok(z0)) -> c20(U132'(z0)) 55.16/14.98 U141'(mark(z0), z1) -> c21(U141'(z0, z1)) 55.16/14.98 U141'(ok(z0), ok(z1)) -> c22(U141'(z0, z1)) 55.16/14.98 U142'(mark(z0)) -> c23(U142'(z0)) 55.16/14.98 U142'(ok(z0)) -> c24(U142'(z0)) 55.16/14.98 U151'(mark(z0), z1) -> c25(U151'(z0, z1)) 55.16/14.98 U151'(ok(z0), ok(z1)) -> c26(U151'(z0, z1)) 55.16/14.98 U152'(mark(z0)) -> c27(U152'(z0)) 55.16/14.98 U152'(ok(z0)) -> c28(U152'(z0)) 55.16/14.98 U161'(mark(z0), z1) -> c29(U161'(z0, z1)) 55.16/14.98 U161'(ok(z0), ok(z1)) -> c30(U161'(z0, z1)) 55.16/14.98 CONS(mark(z0), z1) -> c31(CONS(z0, z1)) 55.16/14.98 CONS(ok(z0), ok(z1)) -> c32(CONS(z0, z1)) 55.16/14.98 NATSFROM(mark(z0)) -> c33(NATSFROM(z0)) 55.16/14.98 NATSFROM(ok(z0)) -> c34(NATSFROM(z0)) 55.16/14.98 S(mark(z0)) -> c35(S(z0)) 55.16/14.98 S(ok(z0)) -> c36(S(z0)) 55.16/14.98 U171'(mark(z0), z1, z2) -> c37(U171'(z0, z1, z2)) 55.16/14.98 U171'(ok(z0), ok(z1), ok(z2)) -> c38(U171'(z0, z1, z2)) 55.16/14.98 U172'(mark(z0), z1, z2) -> c39(U172'(z0, z1, z2)) 55.16/14.98 U172'(ok(z0), ok(z1), ok(z2)) -> c40(U172'(z0, z1, z2)) 55.16/14.98 HEAD(mark(z0)) -> c41(HEAD(z0)) 55.16/14.98 HEAD(ok(z0)) -> c42(HEAD(z0)) 55.16/14.98 AFTERNTH(mark(z0), z1) -> c43(AFTERNTH(z0, z1)) 55.16/14.98 AFTERNTH(z0, mark(z1)) -> c44(AFTERNTH(z0, z1)) 55.16/14.98 AFTERNTH(ok(z0), ok(z1)) -> c45(AFTERNTH(z0, z1)) 55.16/14.98 U181'(mark(z0), z1) -> c46(U181'(z0, z1)) 55.16/14.98 U181'(ok(z0), ok(z1)) -> c47(U181'(z0, z1)) 55.16/14.98 U182'(mark(z0), z1) -> c48(U182'(z0, z1)) 55.16/14.98 U182'(ok(z0), ok(z1)) -> c49(U182'(z0, z1)) 55.16/14.98 U191'(mark(z0), z1) -> c50(U191'(z0, z1)) 55.16/14.98 U191'(ok(z0), ok(z1)) -> c51(U191'(z0, z1)) 55.16/14.98 PAIR(mark(z0), z1) -> c52(PAIR(z0, z1)) 55.16/14.98 PAIR(z0, mark(z1)) -> c53(PAIR(z0, z1)) 55.16/14.98 PAIR(ok(z0), ok(z1)) -> c54(PAIR(z0, z1)) 55.16/14.98 U201'(mark(z0), z1, z2, z3) -> c55(U201'(z0, z1, z2, z3)) 55.16/14.98 U201'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c56(U201'(z0, z1, z2, z3)) 55.16/14.98 U202'(mark(z0), z1, z2, z3) -> c57(U202'(z0, z1, z2, z3)) 55.16/14.98 U202'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c58(U202'(z0, z1, z2, z3)) 55.16/14.98 U203'(mark(z0), z1, z2, z3) -> c59(U203'(z0, z1, z2, z3)) 55.16/14.98 U203'(ok(z0), ok(z1), ok(z2), ok(z3)) -> c60(U203'(z0, z1, z2, z3)) 55.16/14.98 U204'(mark(z0), z1) -> c61(U204'(z0, z1)) 55.16/14.98 U204'(ok(z0), ok(z1)) -> c62(U204'(z0, z1)) 55.16/14.98 U21'(mark(z0), z1, z2) -> c63(U21'(z0, z1, z2)) 55.16/14.98 U21'(ok(z0), ok(z1), ok(z2)) -> c64(U21'(z0, z1, z2)) 55.16/14.98 U22'(mark(z0), z1) -> c65(U22'(z0, z1)) 55.16/14.98 U22'(ok(z0), ok(z1)) -> c66(U22'(z0, z1)) 55.16/14.98 U211'(mark(z0), z1) -> c67(U211'(z0, z1)) 55.16/14.98 U211'(ok(z0), ok(z1)) -> c68(U211'(z0, z1)) 55.16/14.98 U212'(mark(z0), z1) -> c69(U212'(z0, z1)) 55.16/14.98 U212'(ok(z0), ok(z1)) -> c70(U212'(z0, z1)) 55.16/14.98 U221'(mark(z0), z1, z2) -> c71(U221'(z0, z1, z2)) 55.16/14.98 U221'(ok(z0), ok(z1), ok(z2)) -> c72(U221'(z0, z1, z2)) 55.16/14.98 U222'(mark(z0), z1, z2) -> c73(U222'(z0, z1, z2)) 55.16/14.98 U222'(ok(z0), ok(z1), ok(z2)) -> c74(U222'(z0, z1, z2)) 55.16/14.98 FST(mark(z0)) -> c75(FST(z0)) 55.16/14.98 FST(ok(z0)) -> c76(FST(z0)) 55.16/14.98 U31'(mark(z0), z1, z2) -> c77(U31'(z0, z1, z2)) 55.16/14.98 U31'(ok(z0), ok(z1), ok(z2)) -> c78(U31'(z0, z1, z2)) 55.16/14.98 U32'(mark(z0), z1) -> c79(U32'(z0, z1)) 55.16/14.98 U32'(ok(z0), ok(z1)) -> c80(U32'(z0, z1)) 55.16/14.98 U41'(mark(z0), z1) -> c81(U41'(z0, z1)) 55.16/14.98 U41'(ok(z0), ok(z1)) -> c82(U41'(z0, z1)) 55.16/14.98 U42'(mark(z0)) -> c83(U42'(z0)) 55.16/14.98 U42'(ok(z0)) -> c84(U42'(z0)) 55.16/14.98 U51'(mark(z0), z1) -> c85(U51'(z0, z1)) 55.16/14.98 U51'(ok(z0), ok(z1)) -> c86(U51'(z0, z1)) 55.16/14.98 U52'(mark(z0)) -> c87(U52'(z0)) 55.16/14.98 U52'(ok(z0)) -> c88(U52'(z0)) 55.16/14.98 U61'(mark(z0)) -> c89(U61'(z0)) 55.16/14.99 U61'(ok(z0)) -> c90(U61'(z0)) 55.16/14.99 U71'(mark(z0)) -> c91(U71'(z0)) 55.16/14.99 U71'(ok(z0)) -> c92(U71'(z0)) 55.16/14.99 U81'(mark(z0)) -> c93(U81'(z0)) 55.16/14.99 U81'(ok(z0)) -> c94(U81'(z0)) 55.16/14.99 U91'(mark(z0)) -> c95(U91'(z0)) 55.16/14.99 U91'(ok(z0)) -> c96(U91'(z0)) 55.16/14.99 TAIL(mark(z0)) -> c97(TAIL(z0)) 55.16/14.99 TAIL(ok(z0)) -> c98(TAIL(z0)) 55.16/14.99 TAKE(mark(z0), z1) -> c99(TAKE(z0, z1)) 55.16/14.99 TAKE(z0, mark(z1)) -> c100(TAKE(z0, z1)) 55.16/14.99 TAKE(ok(z0), ok(z1)) -> c101(TAKE(z0, z1)) 55.16/14.99 SEL(mark(z0), z1) -> c102(SEL(z0, z1)) 55.16/14.99 SEL(z0, mark(z1)) -> c103(SEL(z0, z1)) 55.16/14.99 SEL(ok(z0), ok(z1)) -> c104(SEL(z0, z1)) 55.16/14.99 ISLNAT(ok(z0)) -> c108(ISLNAT(z0)) 55.16/14.99 ISNATURAL(ok(z0)) -> c109(ISNATURAL(z0)) 55.16/14.99 ISPLNAT(ok(z0)) -> c110(ISPLNAT(z0)) 55.16/14.99 TOP(mark(z0)) -> c111(TOP(proper(z0))) 55.16/14.99 Defined Rule Symbols: proper_1 55.16/14.99 55.16/14.99 Defined Pair Symbols: U101'_2, U102'_1, U11'_3, U12'_3, U111'_1, SND_1, SPLITAT_2, U121'_1, U131'_2, U132'_1, U141'_2, U142'_1, U151'_2, U152'_1, U161'_2, CONS_2, NATSFROM_1, S_1, U171'_3, U172'_3, HEAD_1, AFTERNTH_2, U181'_2, U182'_2, U191'_2, PAIR_2, U201'_4, U202'_4, U203'_4, U204'_2, U21'_3, U22'_2, U211'_2, U212'_2, U221'_3, U222'_3, FST_1, U31'_3, U32'_2, U41'_2, U42'_1, U51'_2, U52'_1, U61'_1, U71'_1, U81'_1, U91'_1, TAIL_1, TAKE_2, SEL_2, ISLNAT_1, ISNATURAL_1, ISPLNAT_1, TOP_1 55.16/14.99 55.16/14.99 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, c108_1, c109_1, c110_1, c111_1 55.16/14.99 55.16/14.99 55.16/14.99 ---------------------------------------- 55.16/14.99 55.16/14.99 (17) SIsEmptyProof (BOTH BOUNDS(ID, ID)) 55.16/14.99 The set S is empty 55.16/14.99 ---------------------------------------- 55.16/14.99 55.16/14.99 (18) 55.16/14.99 BOUNDS(1, 1) 55.16/14.99 55.16/14.99 ---------------------------------------- 55.16/14.99 55.16/14.99 (19) RenamingProof (BOTH BOUNDS(ID, ID)) 55.16/14.99 Renamed function symbols to avoid clashes with predefined symbol. 55.16/14.99 ---------------------------------------- 55.16/14.99 55.16/14.99 (20) 55.16/14.99 Obligation: 55.16/14.99 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 55.16/14.99 55.16/14.99 55.16/14.99 The TRS R consists of the following rules: 55.16/14.99 55.16/14.99 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.16/14.99 active(U102(tt)) -> mark(tt) 55.16/14.99 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.16/14.99 active(U111(tt)) -> mark(tt) 55.16/14.99 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.16/14.99 active(U121(tt)) -> mark(tt) 55.16/14.99 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.16/14.99 active(U132(tt)) -> mark(tt) 55.16/14.99 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.16/14.99 active(U142(tt)) -> mark(tt) 55.16/14.99 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.16/14.99 active(U152(tt)) -> mark(tt) 55.16/14.99 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.16/14.99 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.16/14.99 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.16/14.99 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.16/14.99 active(U182(tt, Y)) -> mark(Y) 55.16/14.99 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.16/14.99 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.16/14.99 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.16/14.99 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.16/14.99 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.16/14.99 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.16/14.99 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.16/14.99 active(U212(tt, XS)) -> mark(XS) 55.16/14.99 active(U22(tt, X)) -> mark(X) 55.16/14.99 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.16/14.99 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.16/14.99 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.16/14.99 active(U32(tt, N)) -> mark(N) 55.16/14.99 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.16/14.99 active(U42(tt)) -> mark(tt) 55.16/14.99 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.16/14.99 active(U52(tt)) -> mark(tt) 55.16/14.99 active(U61(tt)) -> mark(tt) 55.16/14.99 active(U71(tt)) -> mark(tt) 55.16/14.99 active(U81(tt)) -> mark(tt) 55.16/14.99 active(U91(tt)) -> mark(tt) 55.16/14.99 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.16/14.99 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.16/14.99 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.16/14.99 active(isLNat(nil)) -> mark(tt) 55.16/14.99 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.16/14.99 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.16/14.99 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.16/14.99 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.16/14.99 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.16/14.99 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.16/14.99 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.16/14.99 active(isNatural(0')) -> mark(tt) 55.16/14.99 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.16/14.99 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.16/14.99 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.16/14.99 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.16/14.99 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.16/14.99 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.16/14.99 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.16/14.99 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.16/14.99 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.16/14.99 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.16/14.99 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.16/14.99 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.16/14.99 active(U101(X1, X2)) -> U101(active(X1), X2) 55.16/14.99 active(U102(X)) -> U102(active(X)) 55.16/14.99 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.16/14.99 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.16/14.99 active(U111(X)) -> U111(active(X)) 55.16/14.99 active(snd(X)) -> snd(active(X)) 55.16/14.99 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.16/14.99 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.16/14.99 active(U121(X)) -> U121(active(X)) 55.16/14.99 active(U131(X1, X2)) -> U131(active(X1), X2) 55.16/14.99 active(U132(X)) -> U132(active(X)) 55.16/14.99 active(U141(X1, X2)) -> U141(active(X1), X2) 55.16/14.99 active(U142(X)) -> U142(active(X)) 55.16/14.99 active(U151(X1, X2)) -> U151(active(X1), X2) 55.16/14.99 active(U152(X)) -> U152(active(X)) 55.16/14.99 active(U161(X1, X2)) -> U161(active(X1), X2) 55.16/14.99 active(cons(X1, X2)) -> cons(active(X1), X2) 55.16/14.99 active(natsFrom(X)) -> natsFrom(active(X)) 55.16/14.99 active(s(X)) -> s(active(X)) 55.16/14.99 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.16/14.99 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.16/14.99 active(head(X)) -> head(active(X)) 55.16/14.99 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.16/14.99 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.16/14.99 active(U181(X1, X2)) -> U181(active(X1), X2) 55.16/14.99 active(U182(X1, X2)) -> U182(active(X1), X2) 55.16/14.99 active(U191(X1, X2)) -> U191(active(X1), X2) 55.16/14.99 active(pair(X1, X2)) -> pair(active(X1), X2) 55.16/14.99 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.16/14.99 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.16/14.99 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.16/14.99 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.16/14.99 active(U204(X1, X2)) -> U204(active(X1), X2) 55.16/14.99 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.16/14.99 active(U22(X1, X2)) -> U22(active(X1), X2) 55.16/14.99 active(U211(X1, X2)) -> U211(active(X1), X2) 55.16/14.99 active(U212(X1, X2)) -> U212(active(X1), X2) 55.16/14.99 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.16/14.99 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.16/14.99 active(fst(X)) -> fst(active(X)) 55.16/14.99 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.16/14.99 active(U32(X1, X2)) -> U32(active(X1), X2) 55.16/14.99 active(U41(X1, X2)) -> U41(active(X1), X2) 55.16/14.99 active(U42(X)) -> U42(active(X)) 55.16/14.99 active(U51(X1, X2)) -> U51(active(X1), X2) 55.16/14.99 active(U52(X)) -> U52(active(X)) 55.16/14.99 active(U61(X)) -> U61(active(X)) 55.16/14.99 active(U71(X)) -> U71(active(X)) 55.16/14.99 active(U81(X)) -> U81(active(X)) 55.16/14.99 active(U91(X)) -> U91(active(X)) 55.16/14.99 active(tail(X)) -> tail(active(X)) 55.16/14.99 active(take(X1, X2)) -> take(active(X1), X2) 55.16/14.99 active(take(X1, X2)) -> take(X1, active(X2)) 55.16/14.99 active(sel(X1, X2)) -> sel(active(X1), X2) 55.16/14.99 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.16/14.99 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.16/14.99 U102(mark(X)) -> mark(U102(X)) 55.16/14.99 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.16/14.99 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.16/14.99 U111(mark(X)) -> mark(U111(X)) 55.16/14.99 snd(mark(X)) -> mark(snd(X)) 55.16/14.99 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.16/14.99 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.16/14.99 U121(mark(X)) -> mark(U121(X)) 55.16/14.99 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.16/14.99 U132(mark(X)) -> mark(U132(X)) 55.16/14.99 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.16/14.99 U142(mark(X)) -> mark(U142(X)) 55.16/14.99 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.16/14.99 U152(mark(X)) -> mark(U152(X)) 55.16/14.99 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.16/14.99 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.16/14.99 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.16/14.99 s(mark(X)) -> mark(s(X)) 55.16/14.99 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.16/14.99 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.16/14.99 head(mark(X)) -> mark(head(X)) 55.16/14.99 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.16/14.99 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.16/14.99 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.16/14.99 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.16/14.99 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.16/14.99 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.16/14.99 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.16/14.99 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.16/14.99 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.16/14.99 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.16/14.99 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.16/14.99 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.16/14.99 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.16/14.99 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.16/14.99 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.16/14.99 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.16/14.99 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.16/14.99 fst(mark(X)) -> mark(fst(X)) 55.16/14.99 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.16/14.99 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.16/14.99 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.16/14.99 U42(mark(X)) -> mark(U42(X)) 55.16/14.99 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.16/14.99 U52(mark(X)) -> mark(U52(X)) 55.16/14.99 U61(mark(X)) -> mark(U61(X)) 55.16/14.99 U71(mark(X)) -> mark(U71(X)) 55.16/14.99 U81(mark(X)) -> mark(U81(X)) 55.16/14.99 U91(mark(X)) -> mark(U91(X)) 55.16/14.99 tail(mark(X)) -> mark(tail(X)) 55.16/14.99 take(mark(X1), X2) -> mark(take(X1, X2)) 55.16/14.99 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.16/14.99 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.16/14.99 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.16/14.99 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.16/14.99 proper(tt) -> ok(tt) 55.16/14.99 proper(U102(X)) -> U102(proper(X)) 55.16/14.99 proper(isLNat(X)) -> isLNat(proper(X)) 55.16/14.99 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.16/14.99 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.16/14.99 proper(U111(X)) -> U111(proper(X)) 55.16/14.99 proper(snd(X)) -> snd(proper(X)) 55.16/14.99 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.16/14.99 proper(U121(X)) -> U121(proper(X)) 55.16/14.99 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.16/14.99 proper(U132(X)) -> U132(proper(X)) 55.16/14.99 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.16/14.99 proper(U142(X)) -> U142(proper(X)) 55.16/14.99 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.16/14.99 proper(U152(X)) -> U152(proper(X)) 55.16/14.99 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.16/14.99 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.16/14.99 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.16/14.99 proper(s(X)) -> s(proper(X)) 55.16/14.99 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.16/14.99 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.16/14.99 proper(head(X)) -> head(proper(X)) 55.16/14.99 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.16/14.99 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.16/14.99 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.16/14.99 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.16/14.99 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.16/14.99 proper(nil) -> ok(nil) 55.16/14.99 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.16/14.99 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.16/14.99 proper(isNatural(X)) -> isNatural(proper(X)) 55.16/14.99 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.16/14.99 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.16/14.99 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.16/14.99 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.16/14.99 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.16/14.99 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.16/14.99 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.16/14.99 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.16/14.99 proper(fst(X)) -> fst(proper(X)) 55.16/14.99 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.16/14.99 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.16/14.99 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.16/14.99 proper(U42(X)) -> U42(proper(X)) 55.16/14.99 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.16/14.99 proper(U52(X)) -> U52(proper(X)) 55.16/14.99 proper(U61(X)) -> U61(proper(X)) 55.16/14.99 proper(U71(X)) -> U71(proper(X)) 55.16/14.99 proper(U81(X)) -> U81(proper(X)) 55.16/14.99 proper(U91(X)) -> U91(proper(X)) 55.16/14.99 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.16/14.99 proper(tail(X)) -> tail(proper(X)) 55.16/14.99 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.16/14.99 proper(0') -> ok(0') 55.16/14.99 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.16/14.99 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.16/14.99 U102(ok(X)) -> ok(U102(X)) 55.16/14.99 isLNat(ok(X)) -> ok(isLNat(X)) 55.16/14.99 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.16/14.99 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.16/14.99 U111(ok(X)) -> ok(U111(X)) 55.16/14.99 snd(ok(X)) -> ok(snd(X)) 55.16/14.99 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.16/14.99 U121(ok(X)) -> ok(U121(X)) 55.16/14.99 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.16/14.99 U132(ok(X)) -> ok(U132(X)) 55.16/14.99 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.16/14.99 U142(ok(X)) -> ok(U142(X)) 55.16/14.99 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.16/14.99 U152(ok(X)) -> ok(U152(X)) 55.16/14.99 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.16/14.99 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.16/14.99 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.16/14.99 s(ok(X)) -> ok(s(X)) 55.16/14.99 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.16/14.99 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.16/14.99 head(ok(X)) -> ok(head(X)) 55.16/14.99 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.16/14.99 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.16/14.99 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.16/14.99 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.16/14.99 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.16/14.99 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.16/14.99 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.16/14.99 isNatural(ok(X)) -> ok(isNatural(X)) 55.16/14.99 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.16/14.99 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.16/14.99 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.16/14.99 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.16/14.99 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.16/14.99 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.16/14.99 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.16/14.99 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.16/14.99 fst(ok(X)) -> ok(fst(X)) 55.16/14.99 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.16/14.99 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.16/14.99 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.16/14.99 U42(ok(X)) -> ok(U42(X)) 55.16/14.99 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.16/14.99 U52(ok(X)) -> ok(U52(X)) 55.16/14.99 U61(ok(X)) -> ok(U61(X)) 55.16/14.99 U71(ok(X)) -> ok(U71(X)) 55.16/14.99 U81(ok(X)) -> ok(U81(X)) 55.16/14.99 U91(ok(X)) -> ok(U91(X)) 55.16/14.99 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.16/14.99 tail(ok(X)) -> ok(tail(X)) 55.16/14.99 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.16/14.99 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.16/14.99 top(mark(X)) -> top(proper(X)) 55.16/14.99 top(ok(X)) -> top(active(X)) 55.16/14.99 55.16/14.99 S is empty. 55.16/14.99 Rewrite Strategy: FULL 55.16/14.99 ---------------------------------------- 55.16/14.99 55.16/14.99 (21) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 55.16/14.99 Infered types. 55.16/14.99 ---------------------------------------- 55.16/14.99 55.16/14.99 (22) 55.16/14.99 Obligation: 55.16/14.99 TRS: 55.16/14.99 Rules: 55.16/14.99 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.16/14.99 active(U102(tt)) -> mark(tt) 55.16/14.99 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.16/14.99 active(U111(tt)) -> mark(tt) 55.16/14.99 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.16/14.99 active(U121(tt)) -> mark(tt) 55.16/14.99 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.16/14.99 active(U132(tt)) -> mark(tt) 55.16/14.99 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.16/14.99 active(U142(tt)) -> mark(tt) 55.16/14.99 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.16/14.99 active(U152(tt)) -> mark(tt) 55.16/14.99 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.16/14.99 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.16/14.99 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.16/14.99 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.16/14.99 active(U182(tt, Y)) -> mark(Y) 55.16/14.99 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.16/14.99 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.16/14.99 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.16/14.99 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.16/14.99 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.16/14.99 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.16/14.99 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.16/14.99 active(U212(tt, XS)) -> mark(XS) 55.16/14.99 active(U22(tt, X)) -> mark(X) 55.16/14.99 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.16/14.99 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.16/14.99 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.16/14.99 active(U32(tt, N)) -> mark(N) 55.16/14.99 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.16/14.99 active(U42(tt)) -> mark(tt) 55.16/14.99 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.16/14.99 active(U52(tt)) -> mark(tt) 55.16/14.99 active(U61(tt)) -> mark(tt) 55.16/14.99 active(U71(tt)) -> mark(tt) 55.16/14.99 active(U81(tt)) -> mark(tt) 55.16/14.99 active(U91(tt)) -> mark(tt) 55.16/14.99 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.16/14.99 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.16/14.99 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.16/14.99 active(isLNat(nil)) -> mark(tt) 55.16/14.99 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.16/14.99 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.16/14.99 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.16/14.99 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.16/14.99 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.16/14.99 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.16/14.99 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.16/14.99 active(isNatural(0')) -> mark(tt) 55.16/14.99 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.16/14.99 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.16/14.99 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.16/14.99 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.16/14.99 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.16/14.99 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.16/14.99 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.16/14.99 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.16/14.99 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.16/14.99 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.16/14.99 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.16/14.99 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.16/14.99 active(U101(X1, X2)) -> U101(active(X1), X2) 55.16/14.99 active(U102(X)) -> U102(active(X)) 55.16/14.99 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.16/14.99 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.16/14.99 active(U111(X)) -> U111(active(X)) 55.16/14.99 active(snd(X)) -> snd(active(X)) 55.16/14.99 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.16/14.99 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.16/14.99 active(U121(X)) -> U121(active(X)) 55.16/14.99 active(U131(X1, X2)) -> U131(active(X1), X2) 55.16/14.99 active(U132(X)) -> U132(active(X)) 55.16/14.99 active(U141(X1, X2)) -> U141(active(X1), X2) 55.16/14.99 active(U142(X)) -> U142(active(X)) 55.16/14.99 active(U151(X1, X2)) -> U151(active(X1), X2) 55.16/14.99 active(U152(X)) -> U152(active(X)) 55.16/14.99 active(U161(X1, X2)) -> U161(active(X1), X2) 55.16/14.99 active(cons(X1, X2)) -> cons(active(X1), X2) 55.16/14.99 active(natsFrom(X)) -> natsFrom(active(X)) 55.16/14.99 active(s(X)) -> s(active(X)) 55.16/14.99 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.16/14.99 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.16/14.99 active(head(X)) -> head(active(X)) 55.16/14.99 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.16/14.99 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.16/14.99 active(U181(X1, X2)) -> U181(active(X1), X2) 55.16/14.99 active(U182(X1, X2)) -> U182(active(X1), X2) 55.16/14.99 active(U191(X1, X2)) -> U191(active(X1), X2) 55.16/14.99 active(pair(X1, X2)) -> pair(active(X1), X2) 55.16/14.99 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.16/14.99 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.16/14.99 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.16/14.99 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.16/14.99 active(U204(X1, X2)) -> U204(active(X1), X2) 55.16/14.99 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.16/14.99 active(U22(X1, X2)) -> U22(active(X1), X2) 55.16/14.99 active(U211(X1, X2)) -> U211(active(X1), X2) 55.16/14.99 active(U212(X1, X2)) -> U212(active(X1), X2) 55.16/14.99 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.16/14.99 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.16/14.99 active(fst(X)) -> fst(active(X)) 55.16/14.99 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.16/14.99 active(U32(X1, X2)) -> U32(active(X1), X2) 55.16/14.99 active(U41(X1, X2)) -> U41(active(X1), X2) 55.16/14.99 active(U42(X)) -> U42(active(X)) 55.16/14.99 active(U51(X1, X2)) -> U51(active(X1), X2) 55.16/14.99 active(U52(X)) -> U52(active(X)) 55.16/14.99 active(U61(X)) -> U61(active(X)) 55.16/14.99 active(U71(X)) -> U71(active(X)) 55.16/14.99 active(U81(X)) -> U81(active(X)) 55.16/14.99 active(U91(X)) -> U91(active(X)) 55.16/14.99 active(tail(X)) -> tail(active(X)) 55.16/14.99 active(take(X1, X2)) -> take(active(X1), X2) 55.16/14.99 active(take(X1, X2)) -> take(X1, active(X2)) 55.16/14.99 active(sel(X1, X2)) -> sel(active(X1), X2) 55.16/14.99 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.16/14.99 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.16/14.99 U102(mark(X)) -> mark(U102(X)) 55.16/14.99 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.16/14.99 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.16/14.99 U111(mark(X)) -> mark(U111(X)) 55.16/14.99 snd(mark(X)) -> mark(snd(X)) 55.16/14.99 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.16/14.99 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.16/14.99 U121(mark(X)) -> mark(U121(X)) 55.16/14.99 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.16/14.99 U132(mark(X)) -> mark(U132(X)) 55.16/14.99 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.16/14.99 U142(mark(X)) -> mark(U142(X)) 55.16/14.99 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.16/14.99 U152(mark(X)) -> mark(U152(X)) 55.16/14.99 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.16/14.99 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.16/14.99 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.16/14.99 s(mark(X)) -> mark(s(X)) 55.16/14.99 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.16/14.99 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.16/14.99 head(mark(X)) -> mark(head(X)) 55.16/14.99 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.16/14.99 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.16/14.99 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.16/14.99 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.16/14.99 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.16/14.99 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.16/14.99 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.16/14.99 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.16/14.99 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.16/14.99 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.16/14.99 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.16/14.99 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.16/14.99 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.16/14.99 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.16/14.99 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.16/14.99 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.16/14.99 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.16/14.99 fst(mark(X)) -> mark(fst(X)) 55.16/14.99 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.16/14.99 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.16/14.99 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.16/14.99 U42(mark(X)) -> mark(U42(X)) 55.16/14.99 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.16/14.99 U52(mark(X)) -> mark(U52(X)) 55.16/14.99 U61(mark(X)) -> mark(U61(X)) 55.16/14.99 U71(mark(X)) -> mark(U71(X)) 55.16/14.99 U81(mark(X)) -> mark(U81(X)) 55.16/14.99 U91(mark(X)) -> mark(U91(X)) 55.16/14.99 tail(mark(X)) -> mark(tail(X)) 55.16/14.99 take(mark(X1), X2) -> mark(take(X1, X2)) 55.16/14.99 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.16/14.99 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.16/14.99 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.16/14.99 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.23/14.99 proper(tt) -> ok(tt) 55.23/14.99 proper(U102(X)) -> U102(proper(X)) 55.23/14.99 proper(isLNat(X)) -> isLNat(proper(X)) 55.23/14.99 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.23/14.99 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.23/14.99 proper(U111(X)) -> U111(proper(X)) 55.23/14.99 proper(snd(X)) -> snd(proper(X)) 55.23/14.99 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.23/14.99 proper(U121(X)) -> U121(proper(X)) 55.23/14.99 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.23/14.99 proper(U132(X)) -> U132(proper(X)) 55.23/14.99 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.23/14.99 proper(U142(X)) -> U142(proper(X)) 55.23/14.99 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.23/14.99 proper(U152(X)) -> U152(proper(X)) 55.23/14.99 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.23/14.99 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.23/14.99 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.23/14.99 proper(s(X)) -> s(proper(X)) 55.23/14.99 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.23/14.99 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.23/14.99 proper(head(X)) -> head(proper(X)) 55.23/14.99 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.23/14.99 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.23/14.99 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.23/14.99 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.23/14.99 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.23/14.99 proper(nil) -> ok(nil) 55.23/14.99 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/14.99 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/14.99 proper(isNatural(X)) -> isNatural(proper(X)) 55.23/14.99 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/14.99 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.23/14.99 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.23/14.99 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.23/14.99 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.23/14.99 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.23/14.99 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.23/14.99 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.23/14.99 proper(fst(X)) -> fst(proper(X)) 55.23/14.99 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.23/14.99 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.23/14.99 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.23/14.99 proper(U42(X)) -> U42(proper(X)) 55.23/14.99 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.23/14.99 proper(U52(X)) -> U52(proper(X)) 55.23/14.99 proper(U61(X)) -> U61(proper(X)) 55.23/14.99 proper(U71(X)) -> U71(proper(X)) 55.23/14.99 proper(U81(X)) -> U81(proper(X)) 55.23/14.99 proper(U91(X)) -> U91(proper(X)) 55.23/14.99 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.23/14.99 proper(tail(X)) -> tail(proper(X)) 55.23/14.99 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.23/14.99 proper(0') -> ok(0') 55.23/14.99 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.23/14.99 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.23/14.99 U102(ok(X)) -> ok(U102(X)) 55.23/14.99 isLNat(ok(X)) -> ok(isLNat(X)) 55.23/14.99 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.23/14.99 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.23/14.99 U111(ok(X)) -> ok(U111(X)) 55.23/14.99 snd(ok(X)) -> ok(snd(X)) 55.23/14.99 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.23/14.99 U121(ok(X)) -> ok(U121(X)) 55.23/14.99 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.23/14.99 U132(ok(X)) -> ok(U132(X)) 55.23/14.99 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.23/14.99 U142(ok(X)) -> ok(U142(X)) 55.23/14.99 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.23/14.99 U152(ok(X)) -> ok(U152(X)) 55.23/14.99 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.23/14.99 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.23/14.99 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.23/14.99 s(ok(X)) -> ok(s(X)) 55.23/14.99 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.23/14.99 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.23/14.99 head(ok(X)) -> ok(head(X)) 55.23/14.99 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.23/14.99 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.23/14.99 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.23/14.99 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.23/14.99 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.23/14.99 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.23/14.99 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.23/14.99 isNatural(ok(X)) -> ok(isNatural(X)) 55.23/14.99 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.23/14.99 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.23/14.99 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.23/14.99 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.23/14.99 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.23/14.99 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.23/14.99 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.23/14.99 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.23/14.99 fst(ok(X)) -> ok(fst(X)) 55.23/14.99 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.23/14.99 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.23/14.99 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.23/14.99 U42(ok(X)) -> ok(U42(X)) 55.23/14.99 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.23/14.99 U52(ok(X)) -> ok(U52(X)) 55.23/14.99 U61(ok(X)) -> ok(U61(X)) 55.23/14.99 U71(ok(X)) -> ok(U71(X)) 55.23/14.99 U81(ok(X)) -> ok(U81(X)) 55.23/14.99 U91(ok(X)) -> ok(U91(X)) 55.23/14.99 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.23/14.99 tail(ok(X)) -> ok(tail(X)) 55.23/14.99 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.23/14.99 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.23/14.99 top(mark(X)) -> top(proper(X)) 55.23/14.99 top(ok(X)) -> top(active(X)) 55.23/14.99 55.23/14.99 Types: 55.23/14.99 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 tt :: tt:mark:nil:0':ok 55.23/14.99 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 nil :: tt:mark:nil:0':ok 55.23/14.99 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 55.23/14.99 U202 :: 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 55.23/14.99 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U203 :: 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 55.23/14.99 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 0' :: tt:mark:nil:0':ok 55.23/14.99 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/14.99 top :: tt:mark:nil:0':ok -> top 55.23/14.99 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.23/14.99 hole_top2_0 :: top 55.23/14.99 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.23/14.99 55.23/14.99 ---------------------------------------- 55.23/14.99 55.23/14.99 (23) OrderProof (LOWER BOUND(ID)) 55.23/14.99 Heuristically decided to analyse the following defined symbols: 55.23/14.99 active, U102, isLNat, U12, snd, splitAt, U132, U142, U152, cons, natsFrom, s, U172, head, afterNth, U182, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.23/14.99 55.23/14.99 They will be analysed ascendingly in the following order: 55.23/14.99 U102 < active 55.23/14.99 isLNat < active 55.23/14.99 U12 < active 55.23/14.99 snd < active 55.23/14.99 splitAt < active 55.23/14.99 U132 < active 55.23/14.99 U142 < active 55.23/14.99 U152 < active 55.23/14.99 cons < active 55.23/14.99 natsFrom < active 55.23/14.99 s < active 55.23/14.99 U172 < active 55.23/14.99 head < active 55.23/14.99 afterNth < active 55.23/14.99 U182 < active 55.23/14.99 pair < active 55.23/14.99 U202 < active 55.23/14.99 isNatural < active 55.23/14.99 U203 < active 55.23/14.99 U204 < active 55.23/14.99 U22 < active 55.23/14.99 U212 < active 55.23/14.99 U222 < active 55.23/14.99 fst < active 55.23/14.99 U32 < active 55.23/14.99 U42 < active 55.23/14.99 U52 < active 55.23/14.99 U11 < active 55.23/14.99 U21 < active 55.23/14.99 U31 < active 55.23/14.99 U41 < active 55.23/14.99 U51 < active 55.23/14.99 U61 < active 55.23/14.99 isPLNat < active 55.23/14.99 U71 < active 55.23/14.99 U81 < active 55.23/14.99 U91 < active 55.23/14.99 U101 < active 55.23/14.99 U111 < active 55.23/14.99 U121 < active 55.23/14.99 U131 < active 55.23/14.99 U141 < active 55.23/14.99 U151 < active 55.23/14.99 U161 < active 55.23/14.99 U171 < active 55.23/14.99 U181 < active 55.23/14.99 U191 < active 55.23/14.99 U201 < active 55.23/14.99 U211 < active 55.23/14.99 U221 < active 55.23/14.99 tail < active 55.23/14.99 take < active 55.23/14.99 sel < active 55.23/14.99 active < top 55.23/14.99 U102 < proper 55.23/14.99 isLNat < proper 55.23/14.99 U12 < proper 55.23/14.99 snd < proper 55.23/14.99 splitAt < proper 55.23/14.99 U132 < proper 55.23/14.99 U142 < proper 55.23/14.99 U152 < proper 55.23/14.99 cons < proper 55.23/14.99 natsFrom < proper 55.23/14.99 s < proper 55.23/14.99 U172 < proper 55.23/14.99 head < proper 55.23/14.99 afterNth < proper 55.23/14.99 U182 < proper 55.23/14.99 pair < proper 55.23/14.99 U202 < proper 55.23/14.99 isNatural < proper 55.23/14.99 U203 < proper 55.23/15.00 U204 < proper 55.23/15.00 U22 < proper 55.23/15.00 U212 < proper 55.23/15.00 U222 < proper 55.23/15.00 fst < proper 55.23/15.00 U32 < proper 55.23/15.00 U42 < proper 55.23/15.00 U52 < proper 55.23/15.00 U11 < proper 55.23/15.00 U21 < proper 55.23/15.00 U31 < proper 55.23/15.00 U41 < proper 55.23/15.00 U51 < proper 55.23/15.00 U61 < proper 55.23/15.00 isPLNat < proper 55.23/15.00 U71 < proper 55.23/15.00 U81 < proper 55.23/15.00 U91 < proper 55.23/15.00 U101 < proper 55.23/15.00 U111 < proper 55.23/15.00 U121 < proper 55.23/15.00 U131 < proper 55.23/15.00 U141 < proper 55.23/15.00 U151 < proper 55.23/15.00 U161 < proper 55.23/15.00 U171 < proper 55.23/15.00 U181 < proper 55.23/15.00 U191 < proper 55.23/15.00 U201 < proper 55.23/15.00 U211 < proper 55.23/15.00 U221 < proper 55.23/15.00 tail < proper 55.23/15.00 take < proper 55.23/15.00 sel < proper 55.23/15.00 proper < top 55.23/15.00 55.23/15.00 ---------------------------------------- 55.23/15.00 55.23/15.00 (24) 55.23/15.00 Obligation: 55.23/15.00 TRS: 55.23/15.00 Rules: 55.23/15.00 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.23/15.00 active(U102(tt)) -> mark(tt) 55.23/15.00 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.23/15.00 active(U111(tt)) -> mark(tt) 55.23/15.00 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.23/15.00 active(U121(tt)) -> mark(tt) 55.23/15.00 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.23/15.00 active(U132(tt)) -> mark(tt) 55.23/15.00 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.23/15.00 active(U142(tt)) -> mark(tt) 55.23/15.00 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.23/15.00 active(U152(tt)) -> mark(tt) 55.23/15.00 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.23/15.00 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.23/15.00 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.23/15.00 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.23/15.00 active(U182(tt, Y)) -> mark(Y) 55.23/15.00 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.23/15.00 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.23/15.00 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.23/15.00 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.23/15.00 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.23/15.00 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.23/15.00 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.23/15.00 active(U212(tt, XS)) -> mark(XS) 55.23/15.00 active(U22(tt, X)) -> mark(X) 55.23/15.00 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.23/15.00 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.23/15.00 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.23/15.00 active(U32(tt, N)) -> mark(N) 55.23/15.00 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.23/15.00 active(U42(tt)) -> mark(tt) 55.23/15.00 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.23/15.00 active(U52(tt)) -> mark(tt) 55.23/15.00 active(U61(tt)) -> mark(tt) 55.23/15.00 active(U71(tt)) -> mark(tt) 55.23/15.00 active(U81(tt)) -> mark(tt) 55.23/15.00 active(U91(tt)) -> mark(tt) 55.23/15.00 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.23/15.00 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.23/15.00 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.23/15.00 active(isLNat(nil)) -> mark(tt) 55.23/15.00 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.23/15.00 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.23/15.00 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.23/15.00 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.23/15.00 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.23/15.00 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.23/15.00 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.23/15.00 active(isNatural(0')) -> mark(tt) 55.23/15.00 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.23/15.00 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.23/15.00 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.23/15.00 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.23/15.00 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.23/15.00 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.23/15.00 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.23/15.00 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.23/15.00 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.23/15.00 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.23/15.00 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.23/15.00 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.23/15.00 active(U101(X1, X2)) -> U101(active(X1), X2) 55.23/15.00 active(U102(X)) -> U102(active(X)) 55.23/15.00 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.23/15.00 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.23/15.00 active(U111(X)) -> U111(active(X)) 55.23/15.00 active(snd(X)) -> snd(active(X)) 55.23/15.00 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.23/15.00 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.23/15.00 active(U121(X)) -> U121(active(X)) 55.23/15.00 active(U131(X1, X2)) -> U131(active(X1), X2) 55.23/15.00 active(U132(X)) -> U132(active(X)) 55.23/15.00 active(U141(X1, X2)) -> U141(active(X1), X2) 55.23/15.00 active(U142(X)) -> U142(active(X)) 55.23/15.00 active(U151(X1, X2)) -> U151(active(X1), X2) 55.23/15.00 active(U152(X)) -> U152(active(X)) 55.23/15.00 active(U161(X1, X2)) -> U161(active(X1), X2) 55.23/15.00 active(cons(X1, X2)) -> cons(active(X1), X2) 55.23/15.00 active(natsFrom(X)) -> natsFrom(active(X)) 55.23/15.00 active(s(X)) -> s(active(X)) 55.23/15.00 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.23/15.00 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.23/15.00 active(head(X)) -> head(active(X)) 55.23/15.00 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.23/15.00 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.23/15.00 active(U181(X1, X2)) -> U181(active(X1), X2) 55.23/15.00 active(U182(X1, X2)) -> U182(active(X1), X2) 55.23/15.00 active(U191(X1, X2)) -> U191(active(X1), X2) 55.23/15.00 active(pair(X1, X2)) -> pair(active(X1), X2) 55.23/15.00 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.23/15.00 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.23/15.00 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.23/15.00 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.23/15.00 active(U204(X1, X2)) -> U204(active(X1), X2) 55.23/15.00 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.23/15.00 active(U22(X1, X2)) -> U22(active(X1), X2) 55.23/15.00 active(U211(X1, X2)) -> U211(active(X1), X2) 55.23/15.00 active(U212(X1, X2)) -> U212(active(X1), X2) 55.23/15.00 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.23/15.00 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.23/15.00 active(fst(X)) -> fst(active(X)) 55.23/15.00 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.23/15.00 active(U32(X1, X2)) -> U32(active(X1), X2) 55.23/15.00 active(U41(X1, X2)) -> U41(active(X1), X2) 55.23/15.00 active(U42(X)) -> U42(active(X)) 55.23/15.00 active(U51(X1, X2)) -> U51(active(X1), X2) 55.23/15.00 active(U52(X)) -> U52(active(X)) 55.23/15.00 active(U61(X)) -> U61(active(X)) 55.23/15.00 active(U71(X)) -> U71(active(X)) 55.23/15.00 active(U81(X)) -> U81(active(X)) 55.23/15.00 active(U91(X)) -> U91(active(X)) 55.23/15.00 active(tail(X)) -> tail(active(X)) 55.23/15.00 active(take(X1, X2)) -> take(active(X1), X2) 55.23/15.00 active(take(X1, X2)) -> take(X1, active(X2)) 55.23/15.00 active(sel(X1, X2)) -> sel(active(X1), X2) 55.23/15.00 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.23/15.00 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.23/15.00 U102(mark(X)) -> mark(U102(X)) 55.23/15.00 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.23/15.00 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.23/15.00 U111(mark(X)) -> mark(U111(X)) 55.23/15.00 snd(mark(X)) -> mark(snd(X)) 55.23/15.00 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.23/15.00 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.23/15.00 U121(mark(X)) -> mark(U121(X)) 55.23/15.00 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.23/15.00 U132(mark(X)) -> mark(U132(X)) 55.23/15.00 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.23/15.00 U142(mark(X)) -> mark(U142(X)) 55.23/15.00 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.23/15.00 U152(mark(X)) -> mark(U152(X)) 55.23/15.00 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.23/15.00 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.23/15.00 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.23/15.00 s(mark(X)) -> mark(s(X)) 55.23/15.00 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.23/15.00 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.23/15.00 head(mark(X)) -> mark(head(X)) 55.23/15.00 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.23/15.00 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.23/15.00 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.23/15.00 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.23/15.00 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.23/15.00 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.23/15.00 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.23/15.00 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.23/15.00 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.23/15.00 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.23/15.00 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.23/15.00 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.23/15.00 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.23/15.00 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.23/15.00 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.23/15.00 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.23/15.00 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.23/15.00 fst(mark(X)) -> mark(fst(X)) 55.23/15.00 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.23/15.00 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.23/15.00 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.23/15.00 U42(mark(X)) -> mark(U42(X)) 55.23/15.00 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.23/15.00 U52(mark(X)) -> mark(U52(X)) 55.23/15.00 U61(mark(X)) -> mark(U61(X)) 55.23/15.00 U71(mark(X)) -> mark(U71(X)) 55.23/15.00 U81(mark(X)) -> mark(U81(X)) 55.23/15.00 U91(mark(X)) -> mark(U91(X)) 55.23/15.00 tail(mark(X)) -> mark(tail(X)) 55.23/15.00 take(mark(X1), X2) -> mark(take(X1, X2)) 55.23/15.00 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.23/15.00 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.23/15.00 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.23/15.00 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.23/15.00 proper(tt) -> ok(tt) 55.23/15.00 proper(U102(X)) -> U102(proper(X)) 55.23/15.00 proper(isLNat(X)) -> isLNat(proper(X)) 55.23/15.00 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U111(X)) -> U111(proper(X)) 55.23/15.00 proper(snd(X)) -> snd(proper(X)) 55.23/15.00 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.23/15.00 proper(U121(X)) -> U121(proper(X)) 55.23/15.00 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.23/15.00 proper(U132(X)) -> U132(proper(X)) 55.23/15.00 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.23/15.00 proper(U142(X)) -> U142(proper(X)) 55.23/15.00 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.23/15.00 proper(U152(X)) -> U152(proper(X)) 55.23/15.00 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.23/15.00 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.23/15.00 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.23/15.00 proper(s(X)) -> s(proper(X)) 55.23/15.00 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(head(X)) -> head(proper(X)) 55.23/15.00 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.23/15.00 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.23/15.00 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.23/15.00 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.23/15.00 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.23/15.00 proper(nil) -> ok(nil) 55.23/15.00 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/15.00 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/15.00 proper(isNatural(X)) -> isNatural(proper(X)) 55.23/15.00 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/15.00 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.23/15.00 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.23/15.00 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.23/15.00 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.23/15.00 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(fst(X)) -> fst(proper(X)) 55.23/15.00 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.23/15.00 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.23/15.00 proper(U42(X)) -> U42(proper(X)) 55.23/15.00 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.23/15.00 proper(U52(X)) -> U52(proper(X)) 55.23/15.00 proper(U61(X)) -> U61(proper(X)) 55.23/15.00 proper(U71(X)) -> U71(proper(X)) 55.23/15.00 proper(U81(X)) -> U81(proper(X)) 55.23/15.00 proper(U91(X)) -> U91(proper(X)) 55.23/15.00 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.23/15.00 proper(tail(X)) -> tail(proper(X)) 55.23/15.00 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.23/15.00 proper(0') -> ok(0') 55.23/15.00 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.23/15.00 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.23/15.00 U102(ok(X)) -> ok(U102(X)) 55.23/15.00 isLNat(ok(X)) -> ok(isLNat(X)) 55.23/15.00 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.23/15.00 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.23/15.00 U111(ok(X)) -> ok(U111(X)) 55.23/15.00 snd(ok(X)) -> ok(snd(X)) 55.23/15.00 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.23/15.00 U121(ok(X)) -> ok(U121(X)) 55.23/15.00 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.23/15.00 U132(ok(X)) -> ok(U132(X)) 55.23/15.00 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.23/15.00 U142(ok(X)) -> ok(U142(X)) 55.23/15.00 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.23/15.00 U152(ok(X)) -> ok(U152(X)) 55.23/15.00 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.23/15.00 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.23/15.00 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.23/15.00 s(ok(X)) -> ok(s(X)) 55.23/15.00 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.23/15.00 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.23/15.00 head(ok(X)) -> ok(head(X)) 55.23/15.00 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.23/15.00 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.23/15.00 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.23/15.00 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.23/15.00 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.23/15.00 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.23/15.00 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.23/15.00 isNatural(ok(X)) -> ok(isNatural(X)) 55.23/15.00 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.23/15.00 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.23/15.00 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.23/15.00 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.23/15.00 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.23/15.00 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.23/15.00 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.23/15.00 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.23/15.00 fst(ok(X)) -> ok(fst(X)) 55.23/15.00 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.23/15.00 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.23/15.00 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.23/15.00 U42(ok(X)) -> ok(U42(X)) 55.23/15.00 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.23/15.00 U52(ok(X)) -> ok(U52(X)) 55.23/15.00 U61(ok(X)) -> ok(U61(X)) 55.23/15.00 U71(ok(X)) -> ok(U71(X)) 55.23/15.00 U81(ok(X)) -> ok(U81(X)) 55.23/15.00 U91(ok(X)) -> ok(U91(X)) 55.23/15.00 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.23/15.00 tail(ok(X)) -> ok(tail(X)) 55.23/15.00 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.23/15.00 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.23/15.00 top(mark(X)) -> top(proper(X)) 55.23/15.00 top(ok(X)) -> top(active(X)) 55.23/15.00 55.23/15.00 Types: 55.23/15.00 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 tt :: tt:mark:nil:0':ok 55.23/15.00 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 nil :: tt:mark:nil:0':ok 55.23/15.00 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 55.23/15.00 U202 :: 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 55.23/15.00 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U203 :: 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 55.23/15.00 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 0' :: tt:mark:nil:0':ok 55.23/15.00 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 top :: tt:mark:nil:0':ok -> top 55.23/15.00 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.23/15.00 hole_top2_0 :: top 55.23/15.00 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.23/15.00 55.23/15.00 55.23/15.00 Generator Equations: 55.23/15.00 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.23/15.00 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.23/15.00 55.23/15.00 55.23/15.00 The following defined symbols remain to be analysed: 55.23/15.00 U102, active, isLNat, U12, snd, splitAt, U132, U142, U152, cons, natsFrom, s, U172, head, afterNth, U182, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.23/15.00 55.23/15.00 They will be analysed ascendingly in the following order: 55.23/15.00 U102 < active 55.23/15.00 isLNat < active 55.23/15.00 U12 < active 55.23/15.00 snd < active 55.23/15.00 splitAt < active 55.23/15.00 U132 < active 55.23/15.00 U142 < active 55.23/15.00 U152 < active 55.23/15.00 cons < active 55.23/15.00 natsFrom < active 55.23/15.00 s < active 55.23/15.00 U172 < active 55.23/15.00 head < active 55.23/15.00 afterNth < active 55.23/15.00 U182 < active 55.23/15.00 pair < active 55.23/15.00 U202 < active 55.23/15.00 isNatural < active 55.23/15.00 U203 < active 55.23/15.00 U204 < active 55.23/15.00 U22 < active 55.23/15.00 U212 < active 55.23/15.00 U222 < active 55.23/15.00 fst < active 55.23/15.00 U32 < active 55.23/15.00 U42 < active 55.23/15.00 U52 < active 55.23/15.00 U11 < active 55.23/15.00 U21 < active 55.23/15.00 U31 < active 55.23/15.00 U41 < active 55.23/15.00 U51 < active 55.23/15.00 U61 < active 55.23/15.00 isPLNat < active 55.23/15.00 U71 < active 55.23/15.00 U81 < active 55.23/15.00 U91 < active 55.23/15.00 U101 < active 55.23/15.00 U111 < active 55.23/15.00 U121 < active 55.23/15.00 U131 < active 55.23/15.00 U141 < active 55.23/15.00 U151 < active 55.23/15.00 U161 < active 55.23/15.00 U171 < active 55.23/15.00 U181 < active 55.23/15.00 U191 < active 55.23/15.00 U201 < active 55.23/15.00 U211 < active 55.23/15.00 U221 < active 55.23/15.00 tail < active 55.23/15.00 take < active 55.23/15.00 sel < active 55.23/15.00 active < top 55.23/15.00 U102 < proper 55.23/15.00 isLNat < proper 55.23/15.00 U12 < proper 55.23/15.00 snd < proper 55.23/15.00 splitAt < proper 55.23/15.00 U132 < proper 55.23/15.00 U142 < proper 55.23/15.00 U152 < proper 55.23/15.00 cons < proper 55.23/15.00 natsFrom < proper 55.23/15.00 s < proper 55.23/15.00 U172 < proper 55.23/15.00 head < proper 55.23/15.00 afterNth < proper 55.23/15.00 U182 < proper 55.23/15.00 pair < proper 55.23/15.00 U202 < proper 55.23/15.00 isNatural < proper 55.23/15.00 U203 < proper 55.23/15.00 U204 < proper 55.23/15.00 U22 < proper 55.23/15.00 U212 < proper 55.23/15.00 U222 < proper 55.23/15.00 fst < proper 55.23/15.00 U32 < proper 55.23/15.00 U42 < proper 55.23/15.00 U52 < proper 55.23/15.00 U11 < proper 55.23/15.00 U21 < proper 55.23/15.00 U31 < proper 55.23/15.00 U41 < proper 55.23/15.00 U51 < proper 55.23/15.00 U61 < proper 55.23/15.00 isPLNat < proper 55.23/15.00 U71 < proper 55.23/15.00 U81 < proper 55.23/15.00 U91 < proper 55.23/15.00 U101 < proper 55.23/15.00 U111 < proper 55.23/15.00 U121 < proper 55.23/15.00 U131 < proper 55.23/15.00 U141 < proper 55.23/15.00 U151 < proper 55.23/15.00 U161 < proper 55.23/15.00 U171 < proper 55.23/15.00 U181 < proper 55.23/15.00 U191 < proper 55.23/15.00 U201 < proper 55.23/15.00 U211 < proper 55.23/15.00 U221 < proper 55.23/15.00 tail < proper 55.23/15.00 take < proper 55.23/15.00 sel < proper 55.23/15.00 proper < top 55.23/15.00 55.23/15.00 ---------------------------------------- 55.23/15.00 55.23/15.00 (25) RewriteLemmaProof (LOWER BOUND(ID)) 55.23/15.00 Proved the following rewrite lemma: 55.23/15.00 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.23/15.00 55.23/15.00 Induction Base: 55.23/15.00 U102(gen_tt:mark:nil:0':ok3_0(+(1, 0))) 55.23/15.00 55.23/15.00 Induction Step: 55.23/15.00 U102(gen_tt:mark:nil:0':ok3_0(+(1, +(n5_0, 1)))) ->_R^Omega(1) 55.23/15.00 mark(U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0)))) ->_IH 55.23/15.00 mark(*4_0) 55.23/15.00 55.23/15.00 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.23/15.00 ---------------------------------------- 55.23/15.00 55.23/15.00 (26) 55.23/15.00 Complex Obligation (BEST) 55.23/15.00 55.23/15.00 ---------------------------------------- 55.23/15.00 55.23/15.00 (27) 55.23/15.00 Obligation: 55.23/15.00 Proved the lower bound n^1 for the following obligation: 55.23/15.00 55.23/15.00 TRS: 55.23/15.00 Rules: 55.23/15.00 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.23/15.00 active(U102(tt)) -> mark(tt) 55.23/15.00 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.23/15.00 active(U111(tt)) -> mark(tt) 55.23/15.00 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.23/15.00 active(U121(tt)) -> mark(tt) 55.23/15.00 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.23/15.00 active(U132(tt)) -> mark(tt) 55.23/15.00 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.23/15.00 active(U142(tt)) -> mark(tt) 55.23/15.00 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.23/15.00 active(U152(tt)) -> mark(tt) 55.23/15.00 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.23/15.00 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.23/15.00 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.23/15.00 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.23/15.00 active(U182(tt, Y)) -> mark(Y) 55.23/15.00 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.23/15.00 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.23/15.00 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.23/15.00 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.23/15.00 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.23/15.00 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.23/15.00 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.23/15.00 active(U212(tt, XS)) -> mark(XS) 55.23/15.00 active(U22(tt, X)) -> mark(X) 55.23/15.00 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.23/15.00 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.23/15.00 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.23/15.00 active(U32(tt, N)) -> mark(N) 55.23/15.00 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.23/15.00 active(U42(tt)) -> mark(tt) 55.23/15.00 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.23/15.00 active(U52(tt)) -> mark(tt) 55.23/15.00 active(U61(tt)) -> mark(tt) 55.23/15.00 active(U71(tt)) -> mark(tt) 55.23/15.00 active(U81(tt)) -> mark(tt) 55.23/15.00 active(U91(tt)) -> mark(tt) 55.23/15.00 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.23/15.00 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.23/15.00 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.23/15.00 active(isLNat(nil)) -> mark(tt) 55.23/15.00 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.23/15.00 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.23/15.00 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.23/15.00 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.23/15.00 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.23/15.00 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.23/15.00 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.23/15.00 active(isNatural(0')) -> mark(tt) 55.23/15.00 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.23/15.00 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.23/15.00 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.23/15.00 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.23/15.00 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.23/15.00 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.23/15.00 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.23/15.00 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.23/15.00 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.23/15.00 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.23/15.00 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.23/15.00 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.23/15.00 active(U101(X1, X2)) -> U101(active(X1), X2) 55.23/15.00 active(U102(X)) -> U102(active(X)) 55.23/15.00 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.23/15.00 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.23/15.00 active(U111(X)) -> U111(active(X)) 55.23/15.00 active(snd(X)) -> snd(active(X)) 55.23/15.00 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.23/15.00 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.23/15.00 active(U121(X)) -> U121(active(X)) 55.23/15.00 active(U131(X1, X2)) -> U131(active(X1), X2) 55.23/15.00 active(U132(X)) -> U132(active(X)) 55.23/15.00 active(U141(X1, X2)) -> U141(active(X1), X2) 55.23/15.00 active(U142(X)) -> U142(active(X)) 55.23/15.00 active(U151(X1, X2)) -> U151(active(X1), X2) 55.23/15.00 active(U152(X)) -> U152(active(X)) 55.23/15.00 active(U161(X1, X2)) -> U161(active(X1), X2) 55.23/15.00 active(cons(X1, X2)) -> cons(active(X1), X2) 55.23/15.00 active(natsFrom(X)) -> natsFrom(active(X)) 55.23/15.00 active(s(X)) -> s(active(X)) 55.23/15.00 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.23/15.00 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.23/15.00 active(head(X)) -> head(active(X)) 55.23/15.00 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.23/15.00 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.23/15.00 active(U181(X1, X2)) -> U181(active(X1), X2) 55.23/15.00 active(U182(X1, X2)) -> U182(active(X1), X2) 55.23/15.00 active(U191(X1, X2)) -> U191(active(X1), X2) 55.23/15.00 active(pair(X1, X2)) -> pair(active(X1), X2) 55.23/15.00 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.23/15.00 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.23/15.00 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.23/15.00 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.23/15.00 active(U204(X1, X2)) -> U204(active(X1), X2) 55.23/15.00 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.23/15.00 active(U22(X1, X2)) -> U22(active(X1), X2) 55.23/15.00 active(U211(X1, X2)) -> U211(active(X1), X2) 55.23/15.00 active(U212(X1, X2)) -> U212(active(X1), X2) 55.23/15.00 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.23/15.00 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.23/15.00 active(fst(X)) -> fst(active(X)) 55.23/15.00 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.23/15.00 active(U32(X1, X2)) -> U32(active(X1), X2) 55.23/15.00 active(U41(X1, X2)) -> U41(active(X1), X2) 55.23/15.00 active(U42(X)) -> U42(active(X)) 55.23/15.00 active(U51(X1, X2)) -> U51(active(X1), X2) 55.23/15.00 active(U52(X)) -> U52(active(X)) 55.23/15.00 active(U61(X)) -> U61(active(X)) 55.23/15.00 active(U71(X)) -> U71(active(X)) 55.23/15.00 active(U81(X)) -> U81(active(X)) 55.23/15.00 active(U91(X)) -> U91(active(X)) 55.23/15.00 active(tail(X)) -> tail(active(X)) 55.23/15.00 active(take(X1, X2)) -> take(active(X1), X2) 55.23/15.00 active(take(X1, X2)) -> take(X1, active(X2)) 55.23/15.00 active(sel(X1, X2)) -> sel(active(X1), X2) 55.23/15.00 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.23/15.00 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.23/15.00 U102(mark(X)) -> mark(U102(X)) 55.23/15.00 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.23/15.00 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.23/15.00 U111(mark(X)) -> mark(U111(X)) 55.23/15.00 snd(mark(X)) -> mark(snd(X)) 55.23/15.00 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.23/15.00 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.23/15.00 U121(mark(X)) -> mark(U121(X)) 55.23/15.00 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.23/15.00 U132(mark(X)) -> mark(U132(X)) 55.23/15.00 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.23/15.00 U142(mark(X)) -> mark(U142(X)) 55.23/15.00 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.23/15.00 U152(mark(X)) -> mark(U152(X)) 55.23/15.00 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.23/15.00 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.23/15.00 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.23/15.00 s(mark(X)) -> mark(s(X)) 55.23/15.00 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.23/15.00 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.23/15.00 head(mark(X)) -> mark(head(X)) 55.23/15.00 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.23/15.00 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.23/15.00 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.23/15.00 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.23/15.00 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.23/15.00 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.23/15.00 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.23/15.00 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.23/15.00 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.23/15.00 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.23/15.00 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.23/15.00 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.23/15.00 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.23/15.00 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.23/15.00 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.23/15.00 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.23/15.00 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.23/15.00 fst(mark(X)) -> mark(fst(X)) 55.23/15.00 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.23/15.00 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.23/15.00 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.23/15.00 U42(mark(X)) -> mark(U42(X)) 55.23/15.00 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.23/15.00 U52(mark(X)) -> mark(U52(X)) 55.23/15.00 U61(mark(X)) -> mark(U61(X)) 55.23/15.00 U71(mark(X)) -> mark(U71(X)) 55.23/15.00 U81(mark(X)) -> mark(U81(X)) 55.23/15.00 U91(mark(X)) -> mark(U91(X)) 55.23/15.00 tail(mark(X)) -> mark(tail(X)) 55.23/15.00 take(mark(X1), X2) -> mark(take(X1, X2)) 55.23/15.00 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.23/15.00 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.23/15.00 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.23/15.00 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.23/15.00 proper(tt) -> ok(tt) 55.23/15.00 proper(U102(X)) -> U102(proper(X)) 55.23/15.00 proper(isLNat(X)) -> isLNat(proper(X)) 55.23/15.00 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U111(X)) -> U111(proper(X)) 55.23/15.00 proper(snd(X)) -> snd(proper(X)) 55.23/15.00 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.23/15.00 proper(U121(X)) -> U121(proper(X)) 55.23/15.00 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.23/15.00 proper(U132(X)) -> U132(proper(X)) 55.23/15.00 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.23/15.00 proper(U142(X)) -> U142(proper(X)) 55.23/15.00 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.23/15.00 proper(U152(X)) -> U152(proper(X)) 55.23/15.00 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.23/15.00 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.23/15.00 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.23/15.00 proper(s(X)) -> s(proper(X)) 55.23/15.00 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(head(X)) -> head(proper(X)) 55.23/15.00 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.23/15.00 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.23/15.00 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.23/15.00 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.23/15.00 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.23/15.00 proper(nil) -> ok(nil) 55.23/15.00 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/15.00 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/15.00 proper(isNatural(X)) -> isNatural(proper(X)) 55.23/15.00 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/15.00 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.23/15.00 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.23/15.00 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.23/15.00 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.23/15.00 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(fst(X)) -> fst(proper(X)) 55.23/15.00 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.23/15.00 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.23/15.00 proper(U42(X)) -> U42(proper(X)) 55.23/15.00 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.23/15.00 proper(U52(X)) -> U52(proper(X)) 55.23/15.00 proper(U61(X)) -> U61(proper(X)) 55.23/15.00 proper(U71(X)) -> U71(proper(X)) 55.23/15.00 proper(U81(X)) -> U81(proper(X)) 55.23/15.00 proper(U91(X)) -> U91(proper(X)) 55.23/15.00 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.23/15.00 proper(tail(X)) -> tail(proper(X)) 55.23/15.00 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.23/15.00 proper(0') -> ok(0') 55.23/15.00 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.23/15.00 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.23/15.00 U102(ok(X)) -> ok(U102(X)) 55.23/15.00 isLNat(ok(X)) -> ok(isLNat(X)) 55.23/15.00 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.23/15.00 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.23/15.00 U111(ok(X)) -> ok(U111(X)) 55.23/15.00 snd(ok(X)) -> ok(snd(X)) 55.23/15.00 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.23/15.00 U121(ok(X)) -> ok(U121(X)) 55.23/15.00 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.23/15.00 U132(ok(X)) -> ok(U132(X)) 55.23/15.00 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.23/15.00 U142(ok(X)) -> ok(U142(X)) 55.23/15.00 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.23/15.00 U152(ok(X)) -> ok(U152(X)) 55.23/15.00 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.23/15.00 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.23/15.00 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.23/15.00 s(ok(X)) -> ok(s(X)) 55.23/15.00 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.23/15.00 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.23/15.00 head(ok(X)) -> ok(head(X)) 55.23/15.00 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.23/15.00 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.23/15.00 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.23/15.00 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.23/15.00 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.23/15.00 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.23/15.00 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.23/15.00 isNatural(ok(X)) -> ok(isNatural(X)) 55.23/15.00 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.23/15.00 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.23/15.00 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.23/15.00 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.23/15.00 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.23/15.00 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.23/15.00 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.23/15.00 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.23/15.00 fst(ok(X)) -> ok(fst(X)) 55.23/15.00 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.23/15.00 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.23/15.00 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.23/15.00 U42(ok(X)) -> ok(U42(X)) 55.23/15.00 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.23/15.00 U52(ok(X)) -> ok(U52(X)) 55.23/15.00 U61(ok(X)) -> ok(U61(X)) 55.23/15.00 U71(ok(X)) -> ok(U71(X)) 55.23/15.00 U81(ok(X)) -> ok(U81(X)) 55.23/15.00 U91(ok(X)) -> ok(U91(X)) 55.23/15.00 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.23/15.00 tail(ok(X)) -> ok(tail(X)) 55.23/15.00 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.23/15.00 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.23/15.00 top(mark(X)) -> top(proper(X)) 55.23/15.00 top(ok(X)) -> top(active(X)) 55.23/15.00 55.23/15.00 Types: 55.23/15.00 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 tt :: tt:mark:nil:0':ok 55.23/15.00 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 nil :: tt:mark:nil:0':ok 55.23/15.00 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 55.23/15.00 U202 :: 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 55.23/15.00 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U203 :: 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 55.23/15.00 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 0' :: tt:mark:nil:0':ok 55.23/15.00 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 top :: tt:mark:nil:0':ok -> top 55.23/15.00 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.23/15.00 hole_top2_0 :: top 55.23/15.00 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.23/15.00 55.23/15.00 55.23/15.00 Generator Equations: 55.23/15.00 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.23/15.00 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.23/15.00 55.23/15.00 55.23/15.00 The following defined symbols remain to be analysed: 55.23/15.00 U102, active, isLNat, U12, snd, splitAt, U132, U142, U152, cons, natsFrom, s, U172, head, afterNth, U182, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.23/15.00 55.23/15.00 They will be analysed ascendingly in the following order: 55.23/15.00 U102 < active 55.23/15.00 isLNat < active 55.23/15.00 U12 < active 55.23/15.00 snd < active 55.23/15.00 splitAt < active 55.23/15.00 U132 < active 55.23/15.00 U142 < active 55.23/15.00 U152 < active 55.23/15.00 cons < active 55.23/15.00 natsFrom < active 55.23/15.00 s < active 55.23/15.00 U172 < active 55.23/15.00 head < active 55.23/15.00 afterNth < active 55.23/15.00 U182 < active 55.23/15.00 pair < active 55.23/15.00 U202 < active 55.23/15.00 isNatural < active 55.23/15.00 U203 < active 55.23/15.00 U204 < active 55.23/15.00 U22 < active 55.23/15.00 U212 < active 55.23/15.00 U222 < active 55.23/15.00 fst < active 55.23/15.00 U32 < active 55.23/15.00 U42 < active 55.23/15.00 U52 < active 55.23/15.00 U11 < active 55.23/15.00 U21 < active 55.23/15.00 U31 < active 55.23/15.00 U41 < active 55.23/15.00 U51 < active 55.23/15.00 U61 < active 55.23/15.00 isPLNat < active 55.23/15.00 U71 < active 55.23/15.00 U81 < active 55.23/15.00 U91 < active 55.23/15.00 U101 < active 55.23/15.00 U111 < active 55.23/15.00 U121 < active 55.23/15.00 U131 < active 55.23/15.00 U141 < active 55.23/15.00 U151 < active 55.23/15.00 U161 < active 55.23/15.00 U171 < active 55.23/15.00 U181 < active 55.23/15.00 U191 < active 55.23/15.00 U201 < active 55.23/15.00 U211 < active 55.23/15.00 U221 < active 55.23/15.00 tail < active 55.23/15.00 take < active 55.23/15.00 sel < active 55.23/15.00 active < top 55.23/15.00 U102 < proper 55.23/15.00 isLNat < proper 55.23/15.00 U12 < proper 55.23/15.00 snd < proper 55.23/15.00 splitAt < proper 55.23/15.00 U132 < proper 55.23/15.00 U142 < proper 55.23/15.00 U152 < proper 55.23/15.00 cons < proper 55.23/15.00 natsFrom < proper 55.23/15.00 s < proper 55.23/15.00 U172 < proper 55.23/15.00 head < proper 55.23/15.00 afterNth < proper 55.23/15.00 U182 < proper 55.23/15.00 pair < proper 55.23/15.00 U202 < proper 55.23/15.00 isNatural < proper 55.23/15.00 U203 < proper 55.23/15.00 U204 < proper 55.23/15.00 U22 < proper 55.23/15.00 U212 < proper 55.23/15.00 U222 < proper 55.23/15.00 fst < proper 55.23/15.00 U32 < proper 55.23/15.00 U42 < proper 55.23/15.00 U52 < proper 55.23/15.00 U11 < proper 55.23/15.00 U21 < proper 55.23/15.00 U31 < proper 55.23/15.00 U41 < proper 55.23/15.00 U51 < proper 55.23/15.00 U61 < proper 55.23/15.00 isPLNat < proper 55.23/15.00 U71 < proper 55.23/15.00 U81 < proper 55.23/15.00 U91 < proper 55.23/15.00 U101 < proper 55.23/15.00 U111 < proper 55.23/15.00 U121 < proper 55.23/15.00 U131 < proper 55.23/15.00 U141 < proper 55.23/15.00 U151 < proper 55.23/15.00 U161 < proper 55.23/15.00 U171 < proper 55.23/15.00 U181 < proper 55.23/15.00 U191 < proper 55.23/15.00 U201 < proper 55.23/15.00 U211 < proper 55.23/15.00 U221 < proper 55.23/15.00 tail < proper 55.23/15.00 take < proper 55.23/15.00 sel < proper 55.23/15.00 proper < top 55.23/15.00 55.23/15.00 ---------------------------------------- 55.23/15.00 55.23/15.00 (28) LowerBoundPropagationProof (FINISHED) 55.23/15.00 Propagated lower bound. 55.23/15.00 ---------------------------------------- 55.23/15.00 55.23/15.00 (29) 55.23/15.00 BOUNDS(n^1, INF) 55.23/15.00 55.23/15.00 ---------------------------------------- 55.23/15.00 55.23/15.00 (30) 55.23/15.00 Obligation: 55.23/15.00 TRS: 55.23/15.00 Rules: 55.23/15.00 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.23/15.00 active(U102(tt)) -> mark(tt) 55.23/15.00 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.23/15.00 active(U111(tt)) -> mark(tt) 55.23/15.00 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.23/15.00 active(U121(tt)) -> mark(tt) 55.23/15.00 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.23/15.00 active(U132(tt)) -> mark(tt) 55.23/15.00 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.23/15.00 active(U142(tt)) -> mark(tt) 55.23/15.00 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.23/15.00 active(U152(tt)) -> mark(tt) 55.23/15.00 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.23/15.00 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.23/15.00 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.23/15.00 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.23/15.00 active(U182(tt, Y)) -> mark(Y) 55.23/15.00 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.23/15.00 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.23/15.00 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.23/15.00 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.23/15.00 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.23/15.00 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.23/15.00 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.23/15.00 active(U212(tt, XS)) -> mark(XS) 55.23/15.00 active(U22(tt, X)) -> mark(X) 55.23/15.00 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.23/15.00 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.23/15.00 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.23/15.00 active(U32(tt, N)) -> mark(N) 55.23/15.00 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.23/15.00 active(U42(tt)) -> mark(tt) 55.23/15.00 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.23/15.00 active(U52(tt)) -> mark(tt) 55.23/15.00 active(U61(tt)) -> mark(tt) 55.23/15.00 active(U71(tt)) -> mark(tt) 55.23/15.00 active(U81(tt)) -> mark(tt) 55.23/15.00 active(U91(tt)) -> mark(tt) 55.23/15.00 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.23/15.00 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.23/15.00 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.23/15.00 active(isLNat(nil)) -> mark(tt) 55.23/15.00 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.23/15.00 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.23/15.00 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.23/15.00 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.23/15.00 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.23/15.00 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.23/15.00 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.23/15.00 active(isNatural(0')) -> mark(tt) 55.23/15.00 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.23/15.00 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.23/15.00 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.23/15.00 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.23/15.00 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.23/15.00 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.23/15.00 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.23/15.00 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.23/15.00 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.23/15.00 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.23/15.00 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.23/15.00 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.23/15.00 active(U101(X1, X2)) -> U101(active(X1), X2) 55.23/15.00 active(U102(X)) -> U102(active(X)) 55.23/15.00 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.23/15.00 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.23/15.00 active(U111(X)) -> U111(active(X)) 55.23/15.00 active(snd(X)) -> snd(active(X)) 55.23/15.00 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.23/15.00 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.23/15.00 active(U121(X)) -> U121(active(X)) 55.23/15.00 active(U131(X1, X2)) -> U131(active(X1), X2) 55.23/15.00 active(U132(X)) -> U132(active(X)) 55.23/15.00 active(U141(X1, X2)) -> U141(active(X1), X2) 55.23/15.00 active(U142(X)) -> U142(active(X)) 55.23/15.00 active(U151(X1, X2)) -> U151(active(X1), X2) 55.23/15.00 active(U152(X)) -> U152(active(X)) 55.23/15.00 active(U161(X1, X2)) -> U161(active(X1), X2) 55.23/15.00 active(cons(X1, X2)) -> cons(active(X1), X2) 55.23/15.00 active(natsFrom(X)) -> natsFrom(active(X)) 55.23/15.00 active(s(X)) -> s(active(X)) 55.23/15.00 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.23/15.00 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.23/15.00 active(head(X)) -> head(active(X)) 55.23/15.00 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.23/15.00 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.23/15.00 active(U181(X1, X2)) -> U181(active(X1), X2) 55.23/15.00 active(U182(X1, X2)) -> U182(active(X1), X2) 55.23/15.00 active(U191(X1, X2)) -> U191(active(X1), X2) 55.23/15.00 active(pair(X1, X2)) -> pair(active(X1), X2) 55.23/15.00 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.23/15.00 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.23/15.00 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.23/15.00 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.23/15.00 active(U204(X1, X2)) -> U204(active(X1), X2) 55.23/15.00 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.23/15.00 active(U22(X1, X2)) -> U22(active(X1), X2) 55.23/15.00 active(U211(X1, X2)) -> U211(active(X1), X2) 55.23/15.00 active(U212(X1, X2)) -> U212(active(X1), X2) 55.23/15.00 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.23/15.00 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.23/15.00 active(fst(X)) -> fst(active(X)) 55.23/15.00 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.23/15.00 active(U32(X1, X2)) -> U32(active(X1), X2) 55.23/15.00 active(U41(X1, X2)) -> U41(active(X1), X2) 55.23/15.00 active(U42(X)) -> U42(active(X)) 55.23/15.00 active(U51(X1, X2)) -> U51(active(X1), X2) 55.23/15.00 active(U52(X)) -> U52(active(X)) 55.23/15.00 active(U61(X)) -> U61(active(X)) 55.23/15.00 active(U71(X)) -> U71(active(X)) 55.23/15.00 active(U81(X)) -> U81(active(X)) 55.23/15.00 active(U91(X)) -> U91(active(X)) 55.23/15.00 active(tail(X)) -> tail(active(X)) 55.23/15.00 active(take(X1, X2)) -> take(active(X1), X2) 55.23/15.00 active(take(X1, X2)) -> take(X1, active(X2)) 55.23/15.00 active(sel(X1, X2)) -> sel(active(X1), X2) 55.23/15.00 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.23/15.00 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.23/15.00 U102(mark(X)) -> mark(U102(X)) 55.23/15.00 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.23/15.00 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.23/15.00 U111(mark(X)) -> mark(U111(X)) 55.23/15.00 snd(mark(X)) -> mark(snd(X)) 55.23/15.00 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.23/15.00 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.23/15.00 U121(mark(X)) -> mark(U121(X)) 55.23/15.00 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.23/15.00 U132(mark(X)) -> mark(U132(X)) 55.23/15.00 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.23/15.00 U142(mark(X)) -> mark(U142(X)) 55.23/15.00 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.23/15.00 U152(mark(X)) -> mark(U152(X)) 55.23/15.00 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.23/15.00 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.23/15.00 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.23/15.00 s(mark(X)) -> mark(s(X)) 55.23/15.00 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.23/15.00 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.23/15.00 head(mark(X)) -> mark(head(X)) 55.23/15.00 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.23/15.00 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.23/15.00 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.23/15.00 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.23/15.00 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.23/15.00 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.23/15.00 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.23/15.00 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.23/15.00 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.23/15.00 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.23/15.00 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.23/15.00 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.23/15.00 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.23/15.00 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.23/15.00 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.23/15.00 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.23/15.00 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.23/15.00 fst(mark(X)) -> mark(fst(X)) 55.23/15.00 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.23/15.00 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.23/15.00 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.23/15.00 U42(mark(X)) -> mark(U42(X)) 55.23/15.00 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.23/15.00 U52(mark(X)) -> mark(U52(X)) 55.23/15.00 U61(mark(X)) -> mark(U61(X)) 55.23/15.00 U71(mark(X)) -> mark(U71(X)) 55.23/15.00 U81(mark(X)) -> mark(U81(X)) 55.23/15.00 U91(mark(X)) -> mark(U91(X)) 55.23/15.00 tail(mark(X)) -> mark(tail(X)) 55.23/15.00 take(mark(X1), X2) -> mark(take(X1, X2)) 55.23/15.00 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.23/15.00 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.23/15.00 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.23/15.00 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.23/15.00 proper(tt) -> ok(tt) 55.23/15.00 proper(U102(X)) -> U102(proper(X)) 55.23/15.00 proper(isLNat(X)) -> isLNat(proper(X)) 55.23/15.00 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U111(X)) -> U111(proper(X)) 55.23/15.00 proper(snd(X)) -> snd(proper(X)) 55.23/15.00 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.23/15.00 proper(U121(X)) -> U121(proper(X)) 55.23/15.00 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.23/15.00 proper(U132(X)) -> U132(proper(X)) 55.23/15.00 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.23/15.00 proper(U142(X)) -> U142(proper(X)) 55.23/15.00 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.23/15.00 proper(U152(X)) -> U152(proper(X)) 55.23/15.00 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.23/15.00 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.23/15.00 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.23/15.00 proper(s(X)) -> s(proper(X)) 55.23/15.00 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(head(X)) -> head(proper(X)) 55.23/15.00 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.23/15.00 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.23/15.00 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.23/15.00 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.23/15.00 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.23/15.00 proper(nil) -> ok(nil) 55.23/15.00 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/15.00 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/15.00 proper(isNatural(X)) -> isNatural(proper(X)) 55.23/15.00 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/15.00 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.23/15.00 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.23/15.00 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.23/15.00 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.23/15.00 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(fst(X)) -> fst(proper(X)) 55.23/15.00 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.23/15.00 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.23/15.00 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.23/15.00 proper(U42(X)) -> U42(proper(X)) 55.23/15.00 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.23/15.00 proper(U52(X)) -> U52(proper(X)) 55.23/15.00 proper(U61(X)) -> U61(proper(X)) 55.23/15.00 proper(U71(X)) -> U71(proper(X)) 55.23/15.00 proper(U81(X)) -> U81(proper(X)) 55.23/15.00 proper(U91(X)) -> U91(proper(X)) 55.23/15.00 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.23/15.00 proper(tail(X)) -> tail(proper(X)) 55.23/15.00 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.23/15.00 proper(0') -> ok(0') 55.23/15.00 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.23/15.00 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.23/15.00 U102(ok(X)) -> ok(U102(X)) 55.23/15.00 isLNat(ok(X)) -> ok(isLNat(X)) 55.23/15.00 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.23/15.00 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.23/15.00 U111(ok(X)) -> ok(U111(X)) 55.23/15.00 snd(ok(X)) -> ok(snd(X)) 55.23/15.00 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.23/15.00 U121(ok(X)) -> ok(U121(X)) 55.23/15.00 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.23/15.00 U132(ok(X)) -> ok(U132(X)) 55.23/15.00 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.23/15.00 U142(ok(X)) -> ok(U142(X)) 55.23/15.00 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.23/15.00 U152(ok(X)) -> ok(U152(X)) 55.23/15.00 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.23/15.00 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.23/15.00 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.23/15.00 s(ok(X)) -> ok(s(X)) 55.23/15.00 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.23/15.00 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.23/15.00 head(ok(X)) -> ok(head(X)) 55.23/15.00 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.23/15.00 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.23/15.00 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.23/15.00 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.23/15.00 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.23/15.00 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.23/15.00 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.23/15.00 isNatural(ok(X)) -> ok(isNatural(X)) 55.23/15.00 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.23/15.00 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.23/15.00 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.23/15.00 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.23/15.00 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.23/15.00 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.23/15.00 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.23/15.00 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.23/15.00 fst(ok(X)) -> ok(fst(X)) 55.23/15.00 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.23/15.00 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.23/15.00 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.23/15.00 U42(ok(X)) -> ok(U42(X)) 55.23/15.00 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.23/15.00 U52(ok(X)) -> ok(U52(X)) 55.23/15.00 U61(ok(X)) -> ok(U61(X)) 55.23/15.00 U71(ok(X)) -> ok(U71(X)) 55.23/15.00 U81(ok(X)) -> ok(U81(X)) 55.23/15.00 U91(ok(X)) -> ok(U91(X)) 55.23/15.00 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.23/15.00 tail(ok(X)) -> ok(tail(X)) 55.23/15.00 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.23/15.00 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.23/15.00 top(mark(X)) -> top(proper(X)) 55.23/15.00 top(ok(X)) -> top(active(X)) 55.23/15.00 55.23/15.00 Types: 55.23/15.00 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 tt :: tt:mark:nil:0':ok 55.23/15.00 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 nil :: tt:mark:nil:0':ok 55.23/15.00 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 55.23/15.00 U202 :: 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 55.23/15.00 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U203 :: 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 55.23/15.00 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 0' :: tt:mark:nil:0':ok 55.23/15.00 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.00 top :: tt:mark:nil:0':ok -> top 55.23/15.00 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.23/15.00 hole_top2_0 :: top 55.23/15.00 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.23/15.00 55.23/15.00 55.23/15.00 Lemmas: 55.23/15.00 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.23/15.00 55.23/15.00 55.23/15.00 Generator Equations: 55.23/15.00 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.23/15.00 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.23/15.00 55.23/15.00 55.23/15.00 The following defined symbols remain to be analysed: 55.23/15.00 isLNat, active, U12, snd, splitAt, U132, U142, U152, cons, natsFrom, s, U172, head, afterNth, U182, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.23/15.00 55.23/15.00 They will be analysed ascendingly in the following order: 55.23/15.00 isLNat < active 55.23/15.00 U12 < active 55.23/15.00 snd < active 55.23/15.00 splitAt < active 55.23/15.00 U132 < active 55.23/15.00 U142 < active 55.23/15.00 U152 < active 55.23/15.00 cons < active 55.23/15.00 natsFrom < active 55.23/15.00 s < active 55.23/15.00 U172 < active 55.23/15.00 head < active 55.23/15.00 afterNth < active 55.23/15.00 U182 < active 55.23/15.00 pair < active 55.23/15.00 U202 < active 55.23/15.00 isNatural < active 55.23/15.00 U203 < active 55.23/15.00 U204 < active 55.23/15.00 U22 < active 55.23/15.00 U212 < active 55.23/15.00 U222 < active 55.23/15.00 fst < active 55.23/15.00 U32 < active 55.23/15.00 U42 < active 55.23/15.00 U52 < active 55.23/15.00 U11 < active 55.23/15.00 U21 < active 55.23/15.00 U31 < active 55.23/15.00 U41 < active 55.23/15.00 U51 < active 55.23/15.00 U61 < active 55.23/15.00 isPLNat < active 55.23/15.00 U71 < active 55.23/15.00 U81 < active 55.23/15.00 U91 < active 55.23/15.00 U101 < active 55.23/15.00 U111 < active 55.23/15.00 U121 < active 55.23/15.00 U131 < active 55.23/15.00 U141 < active 55.23/15.00 U151 < active 55.23/15.00 U161 < active 55.23/15.00 U171 < active 55.23/15.00 U181 < active 55.23/15.00 U191 < active 55.23/15.00 U201 < active 55.23/15.00 U211 < active 55.23/15.00 U221 < active 55.23/15.00 tail < active 55.23/15.00 take < active 55.23/15.00 sel < active 55.23/15.00 active < top 55.23/15.00 isLNat < proper 55.23/15.00 U12 < proper 55.23/15.00 snd < proper 55.23/15.00 splitAt < proper 55.23/15.00 U132 < proper 55.23/15.00 U142 < proper 55.23/15.00 U152 < proper 55.23/15.00 cons < proper 55.23/15.00 natsFrom < proper 55.23/15.00 s < proper 55.23/15.00 U172 < proper 55.23/15.00 head < proper 55.23/15.00 afterNth < proper 55.23/15.00 U182 < proper 55.23/15.00 pair < proper 55.23/15.00 U202 < proper 55.23/15.00 isNatural < proper 55.23/15.00 U203 < proper 55.23/15.00 U204 < proper 55.23/15.00 U22 < proper 55.23/15.00 U212 < proper 55.23/15.00 U222 < proper 55.23/15.00 fst < proper 55.23/15.00 U32 < proper 55.23/15.00 U42 < proper 55.23/15.00 U52 < proper 55.23/15.00 U11 < proper 55.23/15.00 U21 < proper 55.23/15.00 U31 < proper 55.23/15.00 U41 < proper 55.23/15.00 U51 < proper 55.23/15.00 U61 < proper 55.23/15.00 isPLNat < proper 55.23/15.00 U71 < proper 55.23/15.00 U81 < proper 55.23/15.00 U91 < proper 55.23/15.00 U101 < proper 55.23/15.00 U111 < proper 55.23/15.00 U121 < proper 55.23/15.00 U131 < proper 55.23/15.00 U141 < proper 55.23/15.00 U151 < proper 55.23/15.00 U161 < proper 55.23/15.00 U171 < proper 55.23/15.00 U181 < proper 55.23/15.00 U191 < proper 55.23/15.00 U201 < proper 55.23/15.00 U211 < proper 55.23/15.00 U221 < proper 55.23/15.00 tail < proper 55.23/15.00 take < proper 55.23/15.00 sel < proper 55.23/15.00 proper < top 55.23/15.00 55.23/15.00 ---------------------------------------- 55.23/15.00 55.23/15.00 (31) RewriteLemmaProof (LOWER BOUND(ID)) 55.23/15.00 Proved the following rewrite lemma: 55.23/15.00 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.23/15.00 55.23/15.00 Induction Base: 55.23/15.00 U12(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)) 55.23/15.00 55.23/15.00 Induction Step: 55.23/15.00 U12(gen_tt:mark:nil:0':ok3_0(+(1, +(n1128_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) ->_R^Omega(1) 55.23/15.00 mark(U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c))) ->_IH 55.23/15.00 mark(*4_0) 55.23/15.00 55.23/15.00 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.23/15.00 ---------------------------------------- 55.23/15.00 55.23/15.00 (32) 55.23/15.00 Obligation: 55.23/15.00 TRS: 55.23/15.00 Rules: 55.23/15.00 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.23/15.01 active(U102(tt)) -> mark(tt) 55.23/15.01 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.23/15.01 active(U111(tt)) -> mark(tt) 55.23/15.01 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.23/15.01 active(U121(tt)) -> mark(tt) 55.23/15.01 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.23/15.01 active(U132(tt)) -> mark(tt) 55.23/15.01 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.23/15.01 active(U142(tt)) -> mark(tt) 55.23/15.01 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.23/15.01 active(U152(tt)) -> mark(tt) 55.23/15.01 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.23/15.01 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.23/15.01 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.23/15.01 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.23/15.01 active(U182(tt, Y)) -> mark(Y) 55.23/15.01 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.23/15.01 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.23/15.01 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.23/15.01 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.23/15.01 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.23/15.01 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.23/15.01 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.23/15.01 active(U212(tt, XS)) -> mark(XS) 55.23/15.01 active(U22(tt, X)) -> mark(X) 55.23/15.01 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.23/15.01 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.23/15.01 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.23/15.01 active(U32(tt, N)) -> mark(N) 55.23/15.01 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.23/15.01 active(U42(tt)) -> mark(tt) 55.23/15.01 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.23/15.01 active(U52(tt)) -> mark(tt) 55.23/15.01 active(U61(tt)) -> mark(tt) 55.23/15.01 active(U71(tt)) -> mark(tt) 55.23/15.01 active(U81(tt)) -> mark(tt) 55.23/15.01 active(U91(tt)) -> mark(tt) 55.23/15.01 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.23/15.01 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.23/15.01 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.23/15.01 active(isLNat(nil)) -> mark(tt) 55.23/15.01 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.23/15.01 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.23/15.01 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.23/15.01 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.23/15.01 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.23/15.01 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.23/15.01 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.23/15.01 active(isNatural(0')) -> mark(tt) 55.23/15.01 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.23/15.01 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.23/15.01 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.23/15.01 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.23/15.01 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.23/15.01 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.23/15.01 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.23/15.01 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.23/15.01 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.23/15.01 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.23/15.01 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.23/15.01 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.23/15.01 active(U101(X1, X2)) -> U101(active(X1), X2) 55.23/15.01 active(U102(X)) -> U102(active(X)) 55.23/15.01 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.23/15.01 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.23/15.01 active(U111(X)) -> U111(active(X)) 55.23/15.01 active(snd(X)) -> snd(active(X)) 55.23/15.01 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.23/15.01 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.23/15.01 active(U121(X)) -> U121(active(X)) 55.23/15.01 active(U131(X1, X2)) -> U131(active(X1), X2) 55.23/15.01 active(U132(X)) -> U132(active(X)) 55.23/15.01 active(U141(X1, X2)) -> U141(active(X1), X2) 55.23/15.01 active(U142(X)) -> U142(active(X)) 55.23/15.01 active(U151(X1, X2)) -> U151(active(X1), X2) 55.23/15.01 active(U152(X)) -> U152(active(X)) 55.23/15.01 active(U161(X1, X2)) -> U161(active(X1), X2) 55.23/15.01 active(cons(X1, X2)) -> cons(active(X1), X2) 55.23/15.01 active(natsFrom(X)) -> natsFrom(active(X)) 55.23/15.01 active(s(X)) -> s(active(X)) 55.23/15.01 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.23/15.01 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.23/15.01 active(head(X)) -> head(active(X)) 55.23/15.01 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.23/15.01 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.23/15.01 active(U181(X1, X2)) -> U181(active(X1), X2) 55.23/15.01 active(U182(X1, X2)) -> U182(active(X1), X2) 55.23/15.01 active(U191(X1, X2)) -> U191(active(X1), X2) 55.23/15.01 active(pair(X1, X2)) -> pair(active(X1), X2) 55.23/15.01 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.23/15.01 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.23/15.01 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.23/15.01 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.23/15.01 active(U204(X1, X2)) -> U204(active(X1), X2) 55.23/15.01 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.23/15.01 active(U22(X1, X2)) -> U22(active(X1), X2) 55.23/15.01 active(U211(X1, X2)) -> U211(active(X1), X2) 55.23/15.01 active(U212(X1, X2)) -> U212(active(X1), X2) 55.23/15.01 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.23/15.01 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.23/15.01 active(fst(X)) -> fst(active(X)) 55.23/15.01 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.23/15.01 active(U32(X1, X2)) -> U32(active(X1), X2) 55.23/15.01 active(U41(X1, X2)) -> U41(active(X1), X2) 55.23/15.01 active(U42(X)) -> U42(active(X)) 55.23/15.01 active(U51(X1, X2)) -> U51(active(X1), X2) 55.23/15.01 active(U52(X)) -> U52(active(X)) 55.23/15.01 active(U61(X)) -> U61(active(X)) 55.23/15.01 active(U71(X)) -> U71(active(X)) 55.23/15.01 active(U81(X)) -> U81(active(X)) 55.23/15.01 active(U91(X)) -> U91(active(X)) 55.23/15.01 active(tail(X)) -> tail(active(X)) 55.23/15.01 active(take(X1, X2)) -> take(active(X1), X2) 55.23/15.01 active(take(X1, X2)) -> take(X1, active(X2)) 55.23/15.01 active(sel(X1, X2)) -> sel(active(X1), X2) 55.23/15.01 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.23/15.01 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.23/15.01 U102(mark(X)) -> mark(U102(X)) 55.23/15.01 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.23/15.01 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.23/15.01 U111(mark(X)) -> mark(U111(X)) 55.23/15.01 snd(mark(X)) -> mark(snd(X)) 55.23/15.01 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.23/15.01 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.23/15.01 U121(mark(X)) -> mark(U121(X)) 55.23/15.01 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.23/15.01 U132(mark(X)) -> mark(U132(X)) 55.23/15.01 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.23/15.01 U142(mark(X)) -> mark(U142(X)) 55.23/15.01 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.23/15.01 U152(mark(X)) -> mark(U152(X)) 55.23/15.01 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.23/15.01 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.23/15.01 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.23/15.01 s(mark(X)) -> mark(s(X)) 55.23/15.01 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.23/15.01 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.23/15.01 head(mark(X)) -> mark(head(X)) 55.23/15.01 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.23/15.01 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.23/15.01 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.23/15.01 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.23/15.01 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.23/15.01 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.23/15.01 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.23/15.01 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.23/15.01 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.23/15.01 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.23/15.01 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.23/15.01 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.23/15.01 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.23/15.01 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.23/15.01 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.23/15.01 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.23/15.01 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.23/15.01 fst(mark(X)) -> mark(fst(X)) 55.23/15.01 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.23/15.01 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.23/15.01 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.23/15.01 U42(mark(X)) -> mark(U42(X)) 55.23/15.01 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.23/15.01 U52(mark(X)) -> mark(U52(X)) 55.23/15.01 U61(mark(X)) -> mark(U61(X)) 55.23/15.01 U71(mark(X)) -> mark(U71(X)) 55.23/15.01 U81(mark(X)) -> mark(U81(X)) 55.23/15.01 U91(mark(X)) -> mark(U91(X)) 55.23/15.01 tail(mark(X)) -> mark(tail(X)) 55.23/15.01 take(mark(X1), X2) -> mark(take(X1, X2)) 55.23/15.01 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.23/15.01 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.23/15.01 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.23/15.01 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.23/15.01 proper(tt) -> ok(tt) 55.23/15.01 proper(U102(X)) -> U102(proper(X)) 55.23/15.01 proper(isLNat(X)) -> isLNat(proper(X)) 55.23/15.01 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(U111(X)) -> U111(proper(X)) 55.23/15.01 proper(snd(X)) -> snd(proper(X)) 55.23/15.01 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.23/15.01 proper(U121(X)) -> U121(proper(X)) 55.23/15.01 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.23/15.01 proper(U132(X)) -> U132(proper(X)) 55.23/15.01 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.23/15.01 proper(U142(X)) -> U142(proper(X)) 55.23/15.01 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.23/15.01 proper(U152(X)) -> U152(proper(X)) 55.23/15.01 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.23/15.01 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.23/15.01 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.23/15.01 proper(s(X)) -> s(proper(X)) 55.23/15.01 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(head(X)) -> head(proper(X)) 55.23/15.01 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.23/15.01 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.23/15.01 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.23/15.01 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.23/15.01 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.23/15.01 proper(nil) -> ok(nil) 55.23/15.01 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/15.01 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/15.01 proper(isNatural(X)) -> isNatural(proper(X)) 55.23/15.01 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/15.01 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.23/15.01 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.23/15.01 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.23/15.01 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.23/15.01 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(fst(X)) -> fst(proper(X)) 55.23/15.01 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.23/15.01 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.23/15.01 proper(U42(X)) -> U42(proper(X)) 55.23/15.01 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.23/15.01 proper(U52(X)) -> U52(proper(X)) 55.23/15.01 proper(U61(X)) -> U61(proper(X)) 55.23/15.01 proper(U71(X)) -> U71(proper(X)) 55.23/15.01 proper(U81(X)) -> U81(proper(X)) 55.23/15.01 proper(U91(X)) -> U91(proper(X)) 55.23/15.01 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.23/15.01 proper(tail(X)) -> tail(proper(X)) 55.23/15.01 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.23/15.01 proper(0') -> ok(0') 55.23/15.01 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.23/15.01 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.23/15.01 U102(ok(X)) -> ok(U102(X)) 55.23/15.01 isLNat(ok(X)) -> ok(isLNat(X)) 55.23/15.01 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.23/15.01 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.23/15.01 U111(ok(X)) -> ok(U111(X)) 55.23/15.01 snd(ok(X)) -> ok(snd(X)) 55.23/15.01 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.23/15.01 U121(ok(X)) -> ok(U121(X)) 55.23/15.01 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.23/15.01 U132(ok(X)) -> ok(U132(X)) 55.23/15.01 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.23/15.01 U142(ok(X)) -> ok(U142(X)) 55.23/15.01 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.23/15.01 U152(ok(X)) -> ok(U152(X)) 55.23/15.01 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.23/15.01 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.23/15.01 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.23/15.01 s(ok(X)) -> ok(s(X)) 55.23/15.01 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.23/15.01 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.23/15.01 head(ok(X)) -> ok(head(X)) 55.23/15.01 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.23/15.01 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.23/15.01 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.23/15.01 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.23/15.01 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.23/15.01 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.23/15.01 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.23/15.01 isNatural(ok(X)) -> ok(isNatural(X)) 55.23/15.01 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.23/15.01 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.23/15.01 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.23/15.01 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.23/15.01 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.23/15.01 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.23/15.01 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.23/15.01 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.23/15.01 fst(ok(X)) -> ok(fst(X)) 55.23/15.01 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.23/15.01 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.23/15.01 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.23/15.01 U42(ok(X)) -> ok(U42(X)) 55.23/15.01 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.23/15.01 U52(ok(X)) -> ok(U52(X)) 55.23/15.01 U61(ok(X)) -> ok(U61(X)) 55.23/15.01 U71(ok(X)) -> ok(U71(X)) 55.23/15.01 U81(ok(X)) -> ok(U81(X)) 55.23/15.01 U91(ok(X)) -> ok(U91(X)) 55.23/15.01 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.23/15.01 tail(ok(X)) -> ok(tail(X)) 55.23/15.01 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.23/15.01 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.23/15.01 top(mark(X)) -> top(proper(X)) 55.23/15.01 top(ok(X)) -> top(active(X)) 55.23/15.01 55.23/15.01 Types: 55.23/15.01 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 tt :: tt:mark:nil:0':ok 55.23/15.01 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 nil :: tt:mark:nil:0':ok 55.23/15.01 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 55.23/15.01 U202 :: 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 55.23/15.01 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U203 :: 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 55.23/15.01 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 0' :: tt:mark:nil:0':ok 55.23/15.01 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 top :: tt:mark:nil:0':ok -> top 55.23/15.01 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.23/15.01 hole_top2_0 :: top 55.23/15.01 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.23/15.01 55.23/15.01 55.23/15.01 Lemmas: 55.23/15.01 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.23/15.01 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.23/15.01 55.23/15.01 55.23/15.01 Generator Equations: 55.23/15.01 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.23/15.01 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.23/15.01 55.23/15.01 55.23/15.01 The following defined symbols remain to be analysed: 55.23/15.01 snd, active, splitAt, U132, U142, U152, cons, natsFrom, s, U172, head, afterNth, U182, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.23/15.01 55.23/15.01 They will be analysed ascendingly in the following order: 55.23/15.01 snd < active 55.23/15.01 splitAt < active 55.23/15.01 U132 < active 55.23/15.01 U142 < active 55.23/15.01 U152 < active 55.23/15.01 cons < active 55.23/15.01 natsFrom < active 55.23/15.01 s < active 55.23/15.01 U172 < active 55.23/15.01 head < active 55.23/15.01 afterNth < active 55.23/15.01 U182 < active 55.23/15.01 pair < active 55.23/15.01 U202 < active 55.23/15.01 isNatural < active 55.23/15.01 U203 < active 55.23/15.01 U204 < active 55.23/15.01 U22 < active 55.23/15.01 U212 < active 55.23/15.01 U222 < active 55.23/15.01 fst < active 55.23/15.01 U32 < active 55.23/15.01 U42 < active 55.23/15.01 U52 < active 55.23/15.01 U11 < active 55.23/15.01 U21 < active 55.23/15.01 U31 < active 55.23/15.01 U41 < active 55.23/15.01 U51 < active 55.23/15.01 U61 < active 55.23/15.01 isPLNat < active 55.23/15.01 U71 < active 55.23/15.01 U81 < active 55.23/15.01 U91 < active 55.23/15.01 U101 < active 55.23/15.01 U111 < active 55.23/15.01 U121 < active 55.23/15.01 U131 < active 55.23/15.01 U141 < active 55.23/15.01 U151 < active 55.23/15.01 U161 < active 55.23/15.01 U171 < active 55.23/15.01 U181 < active 55.23/15.01 U191 < active 55.23/15.01 U201 < active 55.23/15.01 U211 < active 55.23/15.01 U221 < active 55.23/15.01 tail < active 55.23/15.01 take < active 55.23/15.01 sel < active 55.23/15.01 active < top 55.23/15.01 snd < proper 55.23/15.01 splitAt < proper 55.23/15.01 U132 < proper 55.23/15.01 U142 < proper 55.23/15.01 U152 < proper 55.23/15.01 cons < proper 55.23/15.01 natsFrom < proper 55.23/15.01 s < proper 55.23/15.01 U172 < proper 55.23/15.01 head < proper 55.23/15.01 afterNth < proper 55.23/15.01 U182 < proper 55.23/15.01 pair < proper 55.23/15.01 U202 < proper 55.23/15.01 isNatural < proper 55.23/15.01 U203 < proper 55.23/15.01 U204 < proper 55.23/15.01 U22 < proper 55.23/15.01 U212 < proper 55.23/15.01 U222 < proper 55.23/15.01 fst < proper 55.23/15.01 U32 < proper 55.23/15.01 U42 < proper 55.23/15.01 U52 < proper 55.23/15.01 U11 < proper 55.23/15.01 U21 < proper 55.23/15.01 U31 < proper 55.23/15.01 U41 < proper 55.23/15.01 U51 < proper 55.23/15.01 U61 < proper 55.23/15.01 isPLNat < proper 55.23/15.01 U71 < proper 55.23/15.01 U81 < proper 55.23/15.01 U91 < proper 55.23/15.01 U101 < proper 55.23/15.01 U111 < proper 55.23/15.01 U121 < proper 55.23/15.01 U131 < proper 55.23/15.01 U141 < proper 55.23/15.01 U151 < proper 55.23/15.01 U161 < proper 55.23/15.01 U171 < proper 55.23/15.01 U181 < proper 55.23/15.01 U191 < proper 55.23/15.01 U201 < proper 55.23/15.01 U211 < proper 55.23/15.01 U221 < proper 55.23/15.01 tail < proper 55.23/15.01 take < proper 55.23/15.01 sel < proper 55.23/15.01 proper < top 55.23/15.01 55.23/15.01 ---------------------------------------- 55.23/15.01 55.23/15.01 (33) RewriteLemmaProof (LOWER BOUND(ID)) 55.23/15.01 Proved the following rewrite lemma: 55.23/15.01 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.23/15.01 55.23/15.01 Induction Base: 55.23/15.01 snd(gen_tt:mark:nil:0':ok3_0(+(1, 0))) 55.23/15.01 55.23/15.01 Induction Step: 55.23/15.01 snd(gen_tt:mark:nil:0':ok3_0(+(1, +(n9121_0, 1)))) ->_R^Omega(1) 55.23/15.01 mark(snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0)))) ->_IH 55.23/15.01 mark(*4_0) 55.23/15.01 55.23/15.01 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.23/15.01 ---------------------------------------- 55.23/15.01 55.23/15.01 (34) 55.23/15.01 Obligation: 55.23/15.01 TRS: 55.23/15.01 Rules: 55.23/15.01 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.23/15.01 active(U102(tt)) -> mark(tt) 55.23/15.01 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.23/15.01 active(U111(tt)) -> mark(tt) 55.23/15.01 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.23/15.01 active(U121(tt)) -> mark(tt) 55.23/15.01 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.23/15.01 active(U132(tt)) -> mark(tt) 55.23/15.01 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.23/15.01 active(U142(tt)) -> mark(tt) 55.23/15.01 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.23/15.01 active(U152(tt)) -> mark(tt) 55.23/15.01 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.23/15.01 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.23/15.01 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.23/15.01 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.23/15.01 active(U182(tt, Y)) -> mark(Y) 55.23/15.01 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.23/15.01 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.23/15.01 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.23/15.01 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.23/15.01 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.23/15.01 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.23/15.01 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.23/15.01 active(U212(tt, XS)) -> mark(XS) 55.23/15.01 active(U22(tt, X)) -> mark(X) 55.23/15.01 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.23/15.01 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.23/15.01 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.23/15.01 active(U32(tt, N)) -> mark(N) 55.23/15.01 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.23/15.01 active(U42(tt)) -> mark(tt) 55.23/15.01 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.23/15.01 active(U52(tt)) -> mark(tt) 55.23/15.01 active(U61(tt)) -> mark(tt) 55.23/15.01 active(U71(tt)) -> mark(tt) 55.23/15.01 active(U81(tt)) -> mark(tt) 55.23/15.01 active(U91(tt)) -> mark(tt) 55.23/15.01 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.23/15.01 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.23/15.01 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.23/15.01 active(isLNat(nil)) -> mark(tt) 55.23/15.01 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.23/15.01 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.23/15.01 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.23/15.01 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.23/15.01 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.23/15.01 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.23/15.01 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.23/15.01 active(isNatural(0')) -> mark(tt) 55.23/15.01 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.23/15.01 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.23/15.01 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.23/15.01 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.23/15.01 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.23/15.01 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.23/15.01 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.23/15.01 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.23/15.01 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.23/15.01 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.23/15.01 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.23/15.01 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.23/15.01 active(U101(X1, X2)) -> U101(active(X1), X2) 55.23/15.01 active(U102(X)) -> U102(active(X)) 55.23/15.01 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.23/15.01 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.23/15.01 active(U111(X)) -> U111(active(X)) 55.23/15.01 active(snd(X)) -> snd(active(X)) 55.23/15.01 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.23/15.01 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.23/15.01 active(U121(X)) -> U121(active(X)) 55.23/15.01 active(U131(X1, X2)) -> U131(active(X1), X2) 55.23/15.01 active(U132(X)) -> U132(active(X)) 55.23/15.01 active(U141(X1, X2)) -> U141(active(X1), X2) 55.23/15.01 active(U142(X)) -> U142(active(X)) 55.23/15.01 active(U151(X1, X2)) -> U151(active(X1), X2) 55.23/15.01 active(U152(X)) -> U152(active(X)) 55.23/15.01 active(U161(X1, X2)) -> U161(active(X1), X2) 55.23/15.01 active(cons(X1, X2)) -> cons(active(X1), X2) 55.23/15.01 active(natsFrom(X)) -> natsFrom(active(X)) 55.23/15.01 active(s(X)) -> s(active(X)) 55.23/15.01 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.23/15.01 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.23/15.01 active(head(X)) -> head(active(X)) 55.23/15.01 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.23/15.01 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.23/15.01 active(U181(X1, X2)) -> U181(active(X1), X2) 55.23/15.01 active(U182(X1, X2)) -> U182(active(X1), X2) 55.23/15.01 active(U191(X1, X2)) -> U191(active(X1), X2) 55.23/15.01 active(pair(X1, X2)) -> pair(active(X1), X2) 55.23/15.01 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.23/15.01 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.23/15.01 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.23/15.01 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.23/15.01 active(U204(X1, X2)) -> U204(active(X1), X2) 55.23/15.01 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.23/15.01 active(U22(X1, X2)) -> U22(active(X1), X2) 55.23/15.01 active(U211(X1, X2)) -> U211(active(X1), X2) 55.23/15.01 active(U212(X1, X2)) -> U212(active(X1), X2) 55.23/15.01 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.23/15.01 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.23/15.01 active(fst(X)) -> fst(active(X)) 55.23/15.01 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.23/15.01 active(U32(X1, X2)) -> U32(active(X1), X2) 55.23/15.01 active(U41(X1, X2)) -> U41(active(X1), X2) 55.23/15.01 active(U42(X)) -> U42(active(X)) 55.23/15.01 active(U51(X1, X2)) -> U51(active(X1), X2) 55.23/15.01 active(U52(X)) -> U52(active(X)) 55.23/15.01 active(U61(X)) -> U61(active(X)) 55.23/15.01 active(U71(X)) -> U71(active(X)) 55.23/15.01 active(U81(X)) -> U81(active(X)) 55.23/15.01 active(U91(X)) -> U91(active(X)) 55.23/15.01 active(tail(X)) -> tail(active(X)) 55.23/15.01 active(take(X1, X2)) -> take(active(X1), X2) 55.23/15.01 active(take(X1, X2)) -> take(X1, active(X2)) 55.23/15.01 active(sel(X1, X2)) -> sel(active(X1), X2) 55.23/15.01 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.23/15.01 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.23/15.01 U102(mark(X)) -> mark(U102(X)) 55.23/15.01 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.23/15.01 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.23/15.01 U111(mark(X)) -> mark(U111(X)) 55.23/15.01 snd(mark(X)) -> mark(snd(X)) 55.23/15.01 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.23/15.01 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.23/15.01 U121(mark(X)) -> mark(U121(X)) 55.23/15.01 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.23/15.01 U132(mark(X)) -> mark(U132(X)) 55.23/15.01 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.23/15.01 U142(mark(X)) -> mark(U142(X)) 55.23/15.01 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.23/15.01 U152(mark(X)) -> mark(U152(X)) 55.23/15.01 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.23/15.01 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.23/15.01 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.23/15.01 s(mark(X)) -> mark(s(X)) 55.23/15.01 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.23/15.01 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.23/15.01 head(mark(X)) -> mark(head(X)) 55.23/15.01 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.23/15.01 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.23/15.01 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.23/15.01 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.23/15.01 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.23/15.01 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.23/15.01 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.23/15.01 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.23/15.01 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.23/15.01 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.23/15.01 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.23/15.01 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.23/15.01 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.23/15.01 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.23/15.01 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.23/15.01 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.23/15.01 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.23/15.01 fst(mark(X)) -> mark(fst(X)) 55.23/15.01 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.23/15.01 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.23/15.01 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.23/15.01 U42(mark(X)) -> mark(U42(X)) 55.23/15.01 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.23/15.01 U52(mark(X)) -> mark(U52(X)) 55.23/15.01 U61(mark(X)) -> mark(U61(X)) 55.23/15.01 U71(mark(X)) -> mark(U71(X)) 55.23/15.01 U81(mark(X)) -> mark(U81(X)) 55.23/15.01 U91(mark(X)) -> mark(U91(X)) 55.23/15.01 tail(mark(X)) -> mark(tail(X)) 55.23/15.01 take(mark(X1), X2) -> mark(take(X1, X2)) 55.23/15.01 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.23/15.01 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.23/15.01 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.23/15.01 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.23/15.01 proper(tt) -> ok(tt) 55.23/15.01 proper(U102(X)) -> U102(proper(X)) 55.23/15.01 proper(isLNat(X)) -> isLNat(proper(X)) 55.23/15.01 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(U111(X)) -> U111(proper(X)) 55.23/15.01 proper(snd(X)) -> snd(proper(X)) 55.23/15.01 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.23/15.01 proper(U121(X)) -> U121(proper(X)) 55.23/15.01 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.23/15.01 proper(U132(X)) -> U132(proper(X)) 55.23/15.01 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.23/15.01 proper(U142(X)) -> U142(proper(X)) 55.23/15.01 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.23/15.01 proper(U152(X)) -> U152(proper(X)) 55.23/15.01 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.23/15.01 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.23/15.01 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.23/15.01 proper(s(X)) -> s(proper(X)) 55.23/15.01 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(head(X)) -> head(proper(X)) 55.23/15.01 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.23/15.01 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.23/15.01 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.23/15.01 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.23/15.01 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.23/15.01 proper(nil) -> ok(nil) 55.23/15.01 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/15.01 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/15.01 proper(isNatural(X)) -> isNatural(proper(X)) 55.23/15.01 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.23/15.01 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.23/15.01 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.23/15.01 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.23/15.01 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.23/15.01 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(fst(X)) -> fst(proper(X)) 55.23/15.01 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.23/15.01 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.23/15.01 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.23/15.01 proper(U42(X)) -> U42(proper(X)) 55.23/15.01 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.23/15.01 proper(U52(X)) -> U52(proper(X)) 55.23/15.01 proper(U61(X)) -> U61(proper(X)) 55.23/15.01 proper(U71(X)) -> U71(proper(X)) 55.23/15.01 proper(U81(X)) -> U81(proper(X)) 55.23/15.01 proper(U91(X)) -> U91(proper(X)) 55.23/15.01 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.23/15.01 proper(tail(X)) -> tail(proper(X)) 55.23/15.01 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.23/15.01 proper(0') -> ok(0') 55.23/15.01 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.23/15.01 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.23/15.01 U102(ok(X)) -> ok(U102(X)) 55.23/15.01 isLNat(ok(X)) -> ok(isLNat(X)) 55.23/15.01 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.23/15.01 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.23/15.01 U111(ok(X)) -> ok(U111(X)) 55.23/15.01 snd(ok(X)) -> ok(snd(X)) 55.23/15.01 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.23/15.01 U121(ok(X)) -> ok(U121(X)) 55.23/15.01 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.23/15.01 U132(ok(X)) -> ok(U132(X)) 55.23/15.01 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.23/15.01 U142(ok(X)) -> ok(U142(X)) 55.23/15.01 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.23/15.01 U152(ok(X)) -> ok(U152(X)) 55.23/15.01 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.23/15.01 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.23/15.01 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.23/15.01 s(ok(X)) -> ok(s(X)) 55.23/15.01 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.23/15.01 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.23/15.01 head(ok(X)) -> ok(head(X)) 55.23/15.01 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.23/15.01 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.23/15.01 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.23/15.01 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.23/15.01 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.23/15.01 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.23/15.01 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.23/15.01 isNatural(ok(X)) -> ok(isNatural(X)) 55.23/15.01 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.23/15.01 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.23/15.01 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.23/15.01 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.23/15.01 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.23/15.01 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.23/15.01 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.23/15.01 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.23/15.01 fst(ok(X)) -> ok(fst(X)) 55.23/15.01 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.23/15.01 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.23/15.01 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.23/15.01 U42(ok(X)) -> ok(U42(X)) 55.23/15.01 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.23/15.01 U52(ok(X)) -> ok(U52(X)) 55.23/15.01 U61(ok(X)) -> ok(U61(X)) 55.23/15.01 U71(ok(X)) -> ok(U71(X)) 55.23/15.01 U81(ok(X)) -> ok(U81(X)) 55.23/15.01 U91(ok(X)) -> ok(U91(X)) 55.23/15.01 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.23/15.01 tail(ok(X)) -> ok(tail(X)) 55.23/15.01 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.23/15.01 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.23/15.01 top(mark(X)) -> top(proper(X)) 55.23/15.01 top(ok(X)) -> top(active(X)) 55.23/15.01 55.23/15.01 Types: 55.23/15.01 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 tt :: tt:mark:nil:0':ok 55.23/15.01 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 nil :: tt:mark:nil:0':ok 55.23/15.01 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 55.23/15.01 U202 :: 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 55.23/15.01 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U203 :: 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 55.23/15.01 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 0' :: tt:mark:nil:0':ok 55.23/15.01 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.23/15.01 top :: tt:mark:nil:0':ok -> top 55.23/15.01 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.23/15.01 hole_top2_0 :: top 55.23/15.01 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.23/15.01 55.23/15.01 55.23/15.01 Lemmas: 55.23/15.01 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.23/15.01 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.23/15.01 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.23/15.01 55.23/15.01 55.23/15.01 Generator Equations: 55.23/15.01 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.23/15.01 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.23/15.01 55.23/15.01 55.23/15.01 The following defined symbols remain to be analysed: 55.23/15.01 splitAt, active, U132, U142, U152, cons, natsFrom, s, U172, head, afterNth, U182, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.23/15.01 55.23/15.01 They will be analysed ascendingly in the following order: 55.23/15.01 splitAt < active 55.23/15.01 U132 < active 55.23/15.01 U142 < active 55.23/15.01 U152 < active 55.23/15.01 cons < active 55.23/15.01 natsFrom < active 55.23/15.01 s < active 55.23/15.01 U172 < active 55.23/15.01 head < active 55.23/15.01 afterNth < active 55.23/15.01 U182 < active 55.23/15.01 pair < active 55.23/15.01 U202 < active 55.23/15.01 isNatural < active 55.23/15.01 U203 < active 55.23/15.01 U204 < active 55.23/15.01 U22 < active 55.23/15.01 U212 < active 55.23/15.01 U222 < active 55.23/15.01 fst < active 55.23/15.01 U32 < active 55.23/15.01 U42 < active 55.23/15.01 U52 < active 55.23/15.01 U11 < active 55.23/15.01 U21 < active 55.23/15.01 U31 < active 55.23/15.01 U41 < active 55.23/15.01 U51 < active 55.23/15.01 U61 < active 55.23/15.01 isPLNat < active 55.23/15.01 U71 < active 55.23/15.01 U81 < active 55.23/15.01 U91 < active 55.23/15.01 U101 < active 55.23/15.01 U111 < active 55.23/15.01 U121 < active 55.23/15.01 U131 < active 55.23/15.01 U141 < active 55.23/15.01 U151 < active 55.23/15.01 U161 < active 55.23/15.01 U171 < active 55.23/15.01 U181 < active 55.23/15.01 U191 < active 55.23/15.01 U201 < active 55.23/15.01 U211 < active 55.23/15.01 U221 < active 55.23/15.01 tail < active 55.23/15.01 take < active 55.23/15.01 sel < active 55.23/15.01 active < top 55.23/15.01 splitAt < proper 55.23/15.01 U132 < proper 55.23/15.01 U142 < proper 55.23/15.01 U152 < proper 55.23/15.01 cons < proper 55.23/15.01 natsFrom < proper 55.23/15.01 s < proper 55.23/15.01 U172 < proper 55.23/15.01 head < proper 55.23/15.01 afterNth < proper 55.23/15.01 U182 < proper 55.23/15.01 pair < proper 55.23/15.01 U202 < proper 55.23/15.01 isNatural < proper 55.23/15.01 U203 < proper 55.23/15.01 U204 < proper 55.23/15.01 U22 < proper 55.23/15.01 U212 < proper 55.23/15.01 U222 < proper 55.23/15.01 fst < proper 55.23/15.01 U32 < proper 55.23/15.01 U42 < proper 55.23/15.01 U52 < proper 55.23/15.01 U11 < proper 55.23/15.01 U21 < proper 55.23/15.01 U31 < proper 55.23/15.01 U41 < proper 55.23/15.01 U51 < proper 55.23/15.01 U61 < proper 55.23/15.01 isPLNat < proper 55.23/15.01 U71 < proper 55.23/15.01 U81 < proper 55.23/15.01 U91 < proper 55.23/15.01 U101 < proper 55.23/15.01 U111 < proper 55.23/15.01 U121 < proper 55.23/15.01 U131 < proper 55.23/15.01 U141 < proper 55.23/15.01 U151 < proper 55.23/15.01 U161 < proper 55.23/15.01 U171 < proper 55.23/15.01 U181 < proper 55.23/15.01 U191 < proper 55.23/15.01 U201 < proper 55.23/15.01 U211 < proper 55.23/15.01 U221 < proper 55.23/15.01 tail < proper 55.23/15.01 take < proper 55.23/15.01 sel < proper 55.23/15.01 proper < top 55.23/15.01 55.23/15.01 ---------------------------------------- 55.23/15.01 55.23/15.01 (35) RewriteLemmaProof (LOWER BOUND(ID)) 55.23/15.01 Proved the following rewrite lemma: 55.23/15.01 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.23/15.01 55.23/15.01 Induction Base: 55.23/15.01 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) 55.23/15.01 55.23/15.01 Induction Step: 55.23/15.01 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, +(n10537_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) 55.23/15.01 mark(splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH 55.23/15.01 mark(*4_0) 55.23/15.01 55.23/15.01 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.23/15.01 ---------------------------------------- 55.23/15.01 55.23/15.01 (36) 55.23/15.01 Obligation: 55.23/15.01 TRS: 55.23/15.01 Rules: 55.23/15.01 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.23/15.01 active(U102(tt)) -> mark(tt) 55.23/15.01 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.23/15.01 active(U111(tt)) -> mark(tt) 55.23/15.01 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.23/15.01 active(U121(tt)) -> mark(tt) 55.23/15.01 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.23/15.01 active(U132(tt)) -> mark(tt) 55.23/15.01 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.23/15.01 active(U142(tt)) -> mark(tt) 55.23/15.01 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.23/15.01 active(U152(tt)) -> mark(tt) 55.23/15.01 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.23/15.01 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.23/15.01 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.23/15.01 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.23/15.01 active(U182(tt, Y)) -> mark(Y) 55.23/15.01 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.23/15.01 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.23/15.01 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.23/15.01 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.23/15.01 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.23/15.01 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.23/15.01 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.23/15.01 active(U212(tt, XS)) -> mark(XS) 55.23/15.01 active(U22(tt, X)) -> mark(X) 55.23/15.01 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.23/15.01 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.23/15.01 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.23/15.01 active(U32(tt, N)) -> mark(N) 55.23/15.01 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.23/15.01 active(U42(tt)) -> mark(tt) 55.23/15.01 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.23/15.01 active(U52(tt)) -> mark(tt) 55.23/15.01 active(U61(tt)) -> mark(tt) 55.23/15.01 active(U71(tt)) -> mark(tt) 55.23/15.01 active(U81(tt)) -> mark(tt) 55.23/15.01 active(U91(tt)) -> mark(tt) 55.23/15.01 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.23/15.01 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.23/15.01 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.23/15.01 active(isLNat(nil)) -> mark(tt) 55.23/15.01 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.23/15.01 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.23/15.01 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.23/15.01 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.23/15.01 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.23/15.01 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.23/15.01 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.23/15.01 active(isNatural(0')) -> mark(tt) 55.23/15.01 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.23/15.01 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.23/15.01 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.23/15.01 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.23/15.01 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.23/15.01 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.23/15.01 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.23/15.01 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.23/15.01 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.23/15.01 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.23/15.01 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.37/15.03 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.37/15.03 active(U101(X1, X2)) -> U101(active(X1), X2) 55.37/15.03 active(U102(X)) -> U102(active(X)) 55.37/15.03 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.37/15.03 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.37/15.03 active(U111(X)) -> U111(active(X)) 55.37/15.03 active(snd(X)) -> snd(active(X)) 55.37/15.03 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.37/15.03 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.37/15.03 active(U121(X)) -> U121(active(X)) 55.37/15.03 active(U131(X1, X2)) -> U131(active(X1), X2) 55.37/15.03 active(U132(X)) -> U132(active(X)) 55.37/15.03 active(U141(X1, X2)) -> U141(active(X1), X2) 55.37/15.03 active(U142(X)) -> U142(active(X)) 55.37/15.03 active(U151(X1, X2)) -> U151(active(X1), X2) 55.37/15.03 active(U152(X)) -> U152(active(X)) 55.37/15.03 active(U161(X1, X2)) -> U161(active(X1), X2) 55.37/15.03 active(cons(X1, X2)) -> cons(active(X1), X2) 55.37/15.03 active(natsFrom(X)) -> natsFrom(active(X)) 55.37/15.03 active(s(X)) -> s(active(X)) 55.37/15.03 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.37/15.03 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.37/15.03 active(head(X)) -> head(active(X)) 55.37/15.03 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.37/15.03 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.37/15.03 active(U181(X1, X2)) -> U181(active(X1), X2) 55.37/15.03 active(U182(X1, X2)) -> U182(active(X1), X2) 55.37/15.03 active(U191(X1, X2)) -> U191(active(X1), X2) 55.37/15.03 active(pair(X1, X2)) -> pair(active(X1), X2) 55.37/15.03 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.37/15.03 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.37/15.03 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.37/15.03 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.37/15.03 active(U204(X1, X2)) -> U204(active(X1), X2) 55.37/15.03 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.37/15.03 active(U22(X1, X2)) -> U22(active(X1), X2) 55.37/15.03 active(U211(X1, X2)) -> U211(active(X1), X2) 55.37/15.03 active(U212(X1, X2)) -> U212(active(X1), X2) 55.37/15.03 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.37/15.03 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.37/15.03 active(fst(X)) -> fst(active(X)) 55.37/15.03 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.37/15.03 active(U32(X1, X2)) -> U32(active(X1), X2) 55.37/15.03 active(U41(X1, X2)) -> U41(active(X1), X2) 55.37/15.03 active(U42(X)) -> U42(active(X)) 55.37/15.03 active(U51(X1, X2)) -> U51(active(X1), X2) 55.37/15.03 active(U52(X)) -> U52(active(X)) 55.37/15.03 active(U61(X)) -> U61(active(X)) 55.37/15.03 active(U71(X)) -> U71(active(X)) 55.37/15.03 active(U81(X)) -> U81(active(X)) 55.37/15.03 active(U91(X)) -> U91(active(X)) 55.37/15.03 active(tail(X)) -> tail(active(X)) 55.37/15.03 active(take(X1, X2)) -> take(active(X1), X2) 55.37/15.03 active(take(X1, X2)) -> take(X1, active(X2)) 55.37/15.03 active(sel(X1, X2)) -> sel(active(X1), X2) 55.37/15.03 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.37/15.03 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.37/15.03 U102(mark(X)) -> mark(U102(X)) 55.37/15.03 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.37/15.03 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.37/15.03 U111(mark(X)) -> mark(U111(X)) 55.37/15.03 snd(mark(X)) -> mark(snd(X)) 55.37/15.03 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.37/15.03 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.37/15.03 U121(mark(X)) -> mark(U121(X)) 55.37/15.03 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.37/15.03 U132(mark(X)) -> mark(U132(X)) 55.37/15.03 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.37/15.03 U142(mark(X)) -> mark(U142(X)) 55.37/15.03 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.37/15.03 U152(mark(X)) -> mark(U152(X)) 55.37/15.03 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.37/15.03 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.37/15.03 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.37/15.03 s(mark(X)) -> mark(s(X)) 55.37/15.03 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.37/15.03 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.37/15.03 head(mark(X)) -> mark(head(X)) 55.37/15.03 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.37/15.03 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.37/15.03 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.37/15.03 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.37/15.03 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.37/15.03 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.37/15.03 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.37/15.03 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.37/15.03 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.37/15.03 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.37/15.03 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.37/15.03 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.37/15.03 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.37/15.03 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.37/15.03 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.37/15.03 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.37/15.03 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.37/15.03 fst(mark(X)) -> mark(fst(X)) 55.37/15.03 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.37/15.03 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.37/15.03 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.37/15.03 U42(mark(X)) -> mark(U42(X)) 55.37/15.03 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.37/15.03 U52(mark(X)) -> mark(U52(X)) 55.37/15.03 U61(mark(X)) -> mark(U61(X)) 55.37/15.03 U71(mark(X)) -> mark(U71(X)) 55.37/15.03 U81(mark(X)) -> mark(U81(X)) 55.37/15.03 U91(mark(X)) -> mark(U91(X)) 55.37/15.03 tail(mark(X)) -> mark(tail(X)) 55.37/15.03 take(mark(X1), X2) -> mark(take(X1, X2)) 55.37/15.03 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.37/15.03 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.37/15.03 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.37/15.03 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.37/15.03 proper(tt) -> ok(tt) 55.37/15.03 proper(U102(X)) -> U102(proper(X)) 55.37/15.03 proper(isLNat(X)) -> isLNat(proper(X)) 55.37/15.03 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.37/15.03 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.37/15.03 proper(U111(X)) -> U111(proper(X)) 55.37/15.03 proper(snd(X)) -> snd(proper(X)) 55.37/15.03 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.37/15.03 proper(U121(X)) -> U121(proper(X)) 55.37/15.03 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.37/15.03 proper(U132(X)) -> U132(proper(X)) 55.37/15.03 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.37/15.03 proper(U142(X)) -> U142(proper(X)) 55.37/15.03 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.37/15.03 proper(U152(X)) -> U152(proper(X)) 55.37/15.03 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.37/15.03 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.37/15.03 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.37/15.03 proper(s(X)) -> s(proper(X)) 55.37/15.03 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.37/15.03 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.37/15.03 proper(head(X)) -> head(proper(X)) 55.37/15.03 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.37/15.03 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.37/15.03 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.37/15.03 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.37/15.03 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.37/15.03 proper(nil) -> ok(nil) 55.37/15.03 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.37/15.03 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.37/15.03 proper(isNatural(X)) -> isNatural(proper(X)) 55.37/15.03 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.37/15.03 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.37/15.03 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.37/15.03 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.37/15.03 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.37/15.03 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.37/15.03 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.37/15.03 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.37/15.03 proper(fst(X)) -> fst(proper(X)) 55.37/15.03 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.37/15.03 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.37/15.03 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.37/15.03 proper(U42(X)) -> U42(proper(X)) 55.37/15.03 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.37/15.03 proper(U52(X)) -> U52(proper(X)) 55.37/15.03 proper(U61(X)) -> U61(proper(X)) 55.37/15.03 proper(U71(X)) -> U71(proper(X)) 55.37/15.03 proper(U81(X)) -> U81(proper(X)) 55.37/15.03 proper(U91(X)) -> U91(proper(X)) 55.37/15.03 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.37/15.03 proper(tail(X)) -> tail(proper(X)) 55.37/15.03 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.37/15.03 proper(0') -> ok(0') 55.37/15.03 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.37/15.03 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.37/15.03 U102(ok(X)) -> ok(U102(X)) 55.37/15.03 isLNat(ok(X)) -> ok(isLNat(X)) 55.37/15.03 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.37/15.03 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.37/15.03 U111(ok(X)) -> ok(U111(X)) 55.37/15.03 snd(ok(X)) -> ok(snd(X)) 55.37/15.03 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.37/15.03 U121(ok(X)) -> ok(U121(X)) 55.37/15.03 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.37/15.03 U132(ok(X)) -> ok(U132(X)) 55.37/15.03 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.37/15.03 U142(ok(X)) -> ok(U142(X)) 55.37/15.03 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.37/15.03 U152(ok(X)) -> ok(U152(X)) 55.37/15.03 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.37/15.03 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.37/15.03 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.37/15.03 s(ok(X)) -> ok(s(X)) 55.37/15.03 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.37/15.03 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.37/15.03 head(ok(X)) -> ok(head(X)) 55.37/15.03 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.37/15.03 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.37/15.03 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.37/15.03 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.37/15.03 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.37/15.03 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.37/15.03 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.37/15.03 isNatural(ok(X)) -> ok(isNatural(X)) 55.37/15.03 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.37/15.03 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.37/15.03 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.37/15.03 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.37/15.03 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.37/15.03 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.37/15.03 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.37/15.03 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.37/15.03 fst(ok(X)) -> ok(fst(X)) 55.37/15.03 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.37/15.03 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.37/15.03 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.37/15.03 U42(ok(X)) -> ok(U42(X)) 55.37/15.03 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.37/15.03 U52(ok(X)) -> ok(U52(X)) 55.37/15.03 U61(ok(X)) -> ok(U61(X)) 55.37/15.03 U71(ok(X)) -> ok(U71(X)) 55.37/15.03 U81(ok(X)) -> ok(U81(X)) 55.37/15.03 U91(ok(X)) -> ok(U91(X)) 55.37/15.03 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.37/15.03 tail(ok(X)) -> ok(tail(X)) 55.37/15.03 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.37/15.03 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.37/15.03 top(mark(X)) -> top(proper(X)) 55.37/15.03 top(ok(X)) -> top(active(X)) 55.37/15.03 55.37/15.03 Types: 55.37/15.03 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 tt :: tt:mark:nil:0':ok 55.37/15.03 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 nil :: tt:mark:nil:0':ok 55.37/15.03 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 55.37/15.03 U202 :: 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 55.37/15.03 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U203 :: 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 55.37/15.03 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 0' :: tt:mark:nil:0':ok 55.37/15.03 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.03 top :: tt:mark:nil:0':ok -> top 55.37/15.03 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.37/15.03 hole_top2_0 :: top 55.37/15.03 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.37/15.03 55.37/15.03 55.37/15.03 Lemmas: 55.37/15.03 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.37/15.03 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.37/15.03 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.37/15.03 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.37/15.03 55.37/15.03 55.37/15.03 Generator Equations: 55.37/15.03 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.37/15.03 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.37/15.03 55.37/15.03 55.37/15.03 The following defined symbols remain to be analysed: 55.37/15.03 U132, active, U142, U152, cons, natsFrom, s, U172, head, afterNth, U182, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.37/15.03 55.37/15.03 They will be analysed ascendingly in the following order: 55.37/15.03 U132 < active 55.37/15.03 U142 < active 55.37/15.03 U152 < active 55.37/15.03 cons < active 55.37/15.03 natsFrom < active 55.37/15.03 s < active 55.37/15.03 U172 < active 55.37/15.03 head < active 55.37/15.03 afterNth < active 55.37/15.03 U182 < active 55.37/15.03 pair < active 55.37/15.03 U202 < active 55.37/15.03 isNatural < active 55.37/15.03 U203 < active 55.37/15.03 U204 < active 55.37/15.03 U22 < active 55.37/15.03 U212 < active 55.37/15.03 U222 < active 55.37/15.03 fst < active 55.37/15.03 U32 < active 55.37/15.03 U42 < active 55.37/15.03 U52 < active 55.37/15.03 U11 < active 55.37/15.03 U21 < active 55.37/15.03 U31 < active 55.37/15.03 U41 < active 55.37/15.03 U51 < active 55.37/15.03 U61 < active 55.37/15.03 isPLNat < active 55.37/15.03 U71 < active 55.37/15.03 U81 < active 55.37/15.03 U91 < active 55.37/15.03 U101 < active 55.37/15.03 U111 < active 55.37/15.03 U121 < active 55.37/15.03 U131 < active 55.37/15.03 U141 < active 55.37/15.03 U151 < active 55.37/15.03 U161 < active 55.37/15.03 U171 < active 55.37/15.03 U181 < active 55.37/15.03 U191 < active 55.37/15.03 U201 < active 55.37/15.03 U211 < active 55.37/15.03 U221 < active 55.37/15.03 tail < active 55.37/15.03 take < active 55.37/15.03 sel < active 55.37/15.03 active < top 55.37/15.03 U132 < proper 55.37/15.03 U142 < proper 55.37/15.03 U152 < proper 55.37/15.03 cons < proper 55.37/15.03 natsFrom < proper 55.37/15.03 s < proper 55.37/15.03 U172 < proper 55.37/15.03 head < proper 55.37/15.03 afterNth < proper 55.37/15.03 U182 < proper 55.37/15.03 pair < proper 55.37/15.03 U202 < proper 55.37/15.03 isNatural < proper 55.37/15.03 U203 < proper 55.37/15.03 U204 < proper 55.37/15.03 U22 < proper 55.37/15.03 U212 < proper 55.37/15.03 U222 < proper 55.37/15.03 fst < proper 55.37/15.03 U32 < proper 55.37/15.03 U42 < proper 55.37/15.03 U52 < proper 55.37/15.03 U11 < proper 55.37/15.03 U21 < proper 55.37/15.03 U31 < proper 55.37/15.03 U41 < proper 55.37/15.03 U51 < proper 55.37/15.03 U61 < proper 55.37/15.03 isPLNat < proper 55.37/15.03 U71 < proper 55.37/15.03 U81 < proper 55.37/15.03 U91 < proper 55.37/15.03 U101 < proper 55.37/15.03 U111 < proper 55.37/15.03 U121 < proper 55.37/15.03 U131 < proper 55.37/15.03 U141 < proper 55.37/15.03 U151 < proper 55.37/15.03 U161 < proper 55.37/15.03 U171 < proper 55.37/15.03 U181 < proper 55.37/15.03 U191 < proper 55.37/15.03 U201 < proper 55.37/15.03 U211 < proper 55.37/15.03 U221 < proper 55.37/15.03 tail < proper 55.37/15.03 take < proper 55.37/15.03 sel < proper 55.37/15.03 proper < top 55.37/15.03 55.37/15.03 ---------------------------------------- 55.37/15.03 55.37/15.03 (37) RewriteLemmaProof (LOWER BOUND(ID)) 55.37/15.03 Proved the following rewrite lemma: 55.37/15.03 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.37/15.03 55.37/15.03 Induction Base: 55.37/15.03 U132(gen_tt:mark:nil:0':ok3_0(+(1, 0))) 55.37/15.03 55.37/15.03 Induction Step: 55.37/15.03 U132(gen_tt:mark:nil:0':ok3_0(+(1, +(n15953_0, 1)))) ->_R^Omega(1) 55.37/15.03 mark(U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0)))) ->_IH 55.37/15.03 mark(*4_0) 55.37/15.03 55.37/15.03 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.37/15.03 ---------------------------------------- 55.37/15.03 55.37/15.03 (38) 55.37/15.03 Obligation: 55.37/15.03 TRS: 55.37/15.03 Rules: 55.37/15.03 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.37/15.03 active(U102(tt)) -> mark(tt) 55.37/15.03 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.37/15.03 active(U111(tt)) -> mark(tt) 55.37/15.03 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.37/15.03 active(U121(tt)) -> mark(tt) 55.37/15.03 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.37/15.03 active(U132(tt)) -> mark(tt) 55.37/15.03 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.37/15.03 active(U142(tt)) -> mark(tt) 55.37/15.03 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.37/15.03 active(U152(tt)) -> mark(tt) 55.37/15.03 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.37/15.03 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.37/15.03 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.37/15.03 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.37/15.03 active(U182(tt, Y)) -> mark(Y) 55.37/15.03 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.37/15.03 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.37/15.03 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.37/15.03 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.37/15.03 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.37/15.03 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.37/15.03 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.37/15.03 active(U212(tt, XS)) -> mark(XS) 55.37/15.03 active(U22(tt, X)) -> mark(X) 55.37/15.03 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.37/15.03 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.37/15.03 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.37/15.03 active(U32(tt, N)) -> mark(N) 55.37/15.03 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.37/15.03 active(U42(tt)) -> mark(tt) 55.37/15.03 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.37/15.03 active(U52(tt)) -> mark(tt) 55.37/15.03 active(U61(tt)) -> mark(tt) 55.37/15.03 active(U71(tt)) -> mark(tt) 55.37/15.03 active(U81(tt)) -> mark(tt) 55.37/15.03 active(U91(tt)) -> mark(tt) 55.37/15.03 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.37/15.03 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.37/15.03 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.37/15.03 active(isLNat(nil)) -> mark(tt) 55.37/15.03 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.37/15.03 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.37/15.03 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.37/15.03 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.37/15.03 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.37/15.03 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.37/15.03 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.37/15.04 active(isNatural(0')) -> mark(tt) 55.37/15.04 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.37/15.04 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.37/15.04 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.37/15.04 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.37/15.04 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.37/15.04 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.37/15.04 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.37/15.04 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.37/15.04 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.37/15.04 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.37/15.04 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.37/15.04 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.37/15.04 active(U101(X1, X2)) -> U101(active(X1), X2) 55.37/15.04 active(U102(X)) -> U102(active(X)) 55.37/15.04 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.37/15.04 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.37/15.04 active(U111(X)) -> U111(active(X)) 55.37/15.04 active(snd(X)) -> snd(active(X)) 55.37/15.04 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.37/15.04 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.37/15.04 active(U121(X)) -> U121(active(X)) 55.37/15.04 active(U131(X1, X2)) -> U131(active(X1), X2) 55.37/15.04 active(U132(X)) -> U132(active(X)) 55.37/15.04 active(U141(X1, X2)) -> U141(active(X1), X2) 55.37/15.04 active(U142(X)) -> U142(active(X)) 55.37/15.04 active(U151(X1, X2)) -> U151(active(X1), X2) 55.37/15.04 active(U152(X)) -> U152(active(X)) 55.37/15.04 active(U161(X1, X2)) -> U161(active(X1), X2) 55.37/15.04 active(cons(X1, X2)) -> cons(active(X1), X2) 55.37/15.04 active(natsFrom(X)) -> natsFrom(active(X)) 55.37/15.04 active(s(X)) -> s(active(X)) 55.37/15.04 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.37/15.04 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.37/15.04 active(head(X)) -> head(active(X)) 55.37/15.04 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.37/15.04 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.37/15.04 active(U181(X1, X2)) -> U181(active(X1), X2) 55.37/15.04 active(U182(X1, X2)) -> U182(active(X1), X2) 55.37/15.04 active(U191(X1, X2)) -> U191(active(X1), X2) 55.37/15.04 active(pair(X1, X2)) -> pair(active(X1), X2) 55.37/15.04 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.37/15.04 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.37/15.04 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.37/15.04 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.37/15.04 active(U204(X1, X2)) -> U204(active(X1), X2) 55.37/15.04 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.37/15.04 active(U22(X1, X2)) -> U22(active(X1), X2) 55.37/15.04 active(U211(X1, X2)) -> U211(active(X1), X2) 55.37/15.04 active(U212(X1, X2)) -> U212(active(X1), X2) 55.37/15.04 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.37/15.04 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.37/15.04 active(fst(X)) -> fst(active(X)) 55.37/15.04 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.37/15.04 active(U32(X1, X2)) -> U32(active(X1), X2) 55.37/15.04 active(U41(X1, X2)) -> U41(active(X1), X2) 55.37/15.04 active(U42(X)) -> U42(active(X)) 55.37/15.04 active(U51(X1, X2)) -> U51(active(X1), X2) 55.37/15.04 active(U52(X)) -> U52(active(X)) 55.37/15.04 active(U61(X)) -> U61(active(X)) 55.37/15.04 active(U71(X)) -> U71(active(X)) 55.37/15.04 active(U81(X)) -> U81(active(X)) 55.37/15.04 active(U91(X)) -> U91(active(X)) 55.37/15.04 active(tail(X)) -> tail(active(X)) 55.37/15.04 active(take(X1, X2)) -> take(active(X1), X2) 55.37/15.04 active(take(X1, X2)) -> take(X1, active(X2)) 55.37/15.04 active(sel(X1, X2)) -> sel(active(X1), X2) 55.37/15.04 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.37/15.04 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.37/15.04 U102(mark(X)) -> mark(U102(X)) 55.37/15.04 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.37/15.04 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.37/15.04 U111(mark(X)) -> mark(U111(X)) 55.37/15.04 snd(mark(X)) -> mark(snd(X)) 55.37/15.04 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.37/15.04 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.37/15.04 U121(mark(X)) -> mark(U121(X)) 55.37/15.04 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.37/15.04 U132(mark(X)) -> mark(U132(X)) 55.37/15.04 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.37/15.04 U142(mark(X)) -> mark(U142(X)) 55.37/15.04 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.37/15.04 U152(mark(X)) -> mark(U152(X)) 55.37/15.04 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.37/15.04 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.37/15.04 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.37/15.04 s(mark(X)) -> mark(s(X)) 55.37/15.04 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.37/15.04 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.37/15.04 head(mark(X)) -> mark(head(X)) 55.37/15.04 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.37/15.04 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.37/15.04 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.37/15.04 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.37/15.04 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.37/15.04 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.37/15.04 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.37/15.04 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.37/15.04 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.37/15.04 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.37/15.04 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.37/15.04 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.37/15.04 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.37/15.04 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.37/15.04 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.37/15.04 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.37/15.04 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.37/15.04 fst(mark(X)) -> mark(fst(X)) 55.37/15.04 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.37/15.04 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.37/15.04 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.37/15.04 U42(mark(X)) -> mark(U42(X)) 55.37/15.04 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.37/15.04 U52(mark(X)) -> mark(U52(X)) 55.37/15.04 U61(mark(X)) -> mark(U61(X)) 55.37/15.04 U71(mark(X)) -> mark(U71(X)) 55.37/15.04 U81(mark(X)) -> mark(U81(X)) 55.37/15.04 U91(mark(X)) -> mark(U91(X)) 55.37/15.04 tail(mark(X)) -> mark(tail(X)) 55.37/15.04 take(mark(X1), X2) -> mark(take(X1, X2)) 55.37/15.04 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.37/15.04 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.37/15.04 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.37/15.04 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.37/15.04 proper(tt) -> ok(tt) 55.37/15.04 proper(U102(X)) -> U102(proper(X)) 55.37/15.04 proper(isLNat(X)) -> isLNat(proper(X)) 55.37/15.04 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.37/15.04 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.37/15.04 proper(U111(X)) -> U111(proper(X)) 55.37/15.04 proper(snd(X)) -> snd(proper(X)) 55.37/15.04 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.37/15.04 proper(U121(X)) -> U121(proper(X)) 55.37/15.04 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.37/15.04 proper(U132(X)) -> U132(proper(X)) 55.37/15.04 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.37/15.04 proper(U142(X)) -> U142(proper(X)) 55.37/15.04 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.37/15.04 proper(U152(X)) -> U152(proper(X)) 55.37/15.04 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.37/15.04 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.37/15.04 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.37/15.04 proper(s(X)) -> s(proper(X)) 55.37/15.04 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.37/15.04 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.37/15.04 proper(head(X)) -> head(proper(X)) 55.37/15.04 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.37/15.04 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.37/15.04 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.37/15.04 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.37/15.04 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.37/15.04 proper(nil) -> ok(nil) 55.37/15.04 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.37/15.04 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.37/15.04 proper(isNatural(X)) -> isNatural(proper(X)) 55.37/15.04 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.37/15.04 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.37/15.04 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.37/15.04 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.37/15.04 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.37/15.04 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.37/15.04 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.37/15.04 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.37/15.04 proper(fst(X)) -> fst(proper(X)) 55.37/15.04 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.37/15.04 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.37/15.04 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.37/15.04 proper(U42(X)) -> U42(proper(X)) 55.37/15.04 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.37/15.04 proper(U52(X)) -> U52(proper(X)) 55.37/15.04 proper(U61(X)) -> U61(proper(X)) 55.37/15.04 proper(U71(X)) -> U71(proper(X)) 55.37/15.04 proper(U81(X)) -> U81(proper(X)) 55.37/15.04 proper(U91(X)) -> U91(proper(X)) 55.37/15.04 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.37/15.04 proper(tail(X)) -> tail(proper(X)) 55.37/15.04 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.37/15.04 proper(0') -> ok(0') 55.37/15.04 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.37/15.04 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.37/15.04 U102(ok(X)) -> ok(U102(X)) 55.37/15.04 isLNat(ok(X)) -> ok(isLNat(X)) 55.37/15.04 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.37/15.04 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.37/15.04 U111(ok(X)) -> ok(U111(X)) 55.37/15.04 snd(ok(X)) -> ok(snd(X)) 55.37/15.04 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.37/15.04 U121(ok(X)) -> ok(U121(X)) 55.37/15.04 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.37/15.04 U132(ok(X)) -> ok(U132(X)) 55.37/15.04 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.37/15.04 U142(ok(X)) -> ok(U142(X)) 55.37/15.04 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.37/15.04 U152(ok(X)) -> ok(U152(X)) 55.37/15.04 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.37/15.04 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.37/15.04 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.37/15.04 s(ok(X)) -> ok(s(X)) 55.37/15.04 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.37/15.04 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.37/15.04 head(ok(X)) -> ok(head(X)) 55.37/15.04 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.37/15.04 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.37/15.04 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.37/15.04 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.37/15.04 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.37/15.04 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.37/15.04 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.37/15.04 isNatural(ok(X)) -> ok(isNatural(X)) 55.37/15.04 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.37/15.04 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.37/15.04 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.37/15.04 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.37/15.04 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.37/15.04 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.37/15.04 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.37/15.04 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.37/15.04 fst(ok(X)) -> ok(fst(X)) 55.37/15.04 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.37/15.04 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.37/15.04 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.37/15.04 U42(ok(X)) -> ok(U42(X)) 55.37/15.04 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.37/15.04 U52(ok(X)) -> ok(U52(X)) 55.37/15.04 U61(ok(X)) -> ok(U61(X)) 55.37/15.04 U71(ok(X)) -> ok(U71(X)) 55.37/15.04 U81(ok(X)) -> ok(U81(X)) 55.37/15.04 U91(ok(X)) -> ok(U91(X)) 55.37/15.04 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.37/15.04 tail(ok(X)) -> ok(tail(X)) 55.37/15.04 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.37/15.04 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.37/15.04 top(mark(X)) -> top(proper(X)) 55.37/15.04 top(ok(X)) -> top(active(X)) 55.37/15.04 55.37/15.04 Types: 55.37/15.04 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 tt :: tt:mark:nil:0':ok 55.37/15.04 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 nil :: tt:mark:nil:0':ok 55.37/15.04 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 55.37/15.04 U202 :: 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 55.37/15.04 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U203 :: 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 55.37/15.04 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 0' :: tt:mark:nil:0':ok 55.37/15.04 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.37/15.04 top :: tt:mark:nil:0':ok -> top 55.37/15.04 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.37/15.04 hole_top2_0 :: top 55.37/15.04 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.37/15.04 55.37/15.04 55.37/15.04 Lemmas: 55.37/15.04 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.37/15.04 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.37/15.04 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.37/15.04 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.37/15.04 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.37/15.04 55.37/15.04 55.37/15.04 Generator Equations: 55.37/15.04 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.37/15.04 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.37/15.04 55.37/15.04 55.37/15.04 The following defined symbols remain to be analysed: 55.37/15.04 U142, active, U152, cons, natsFrom, s, U172, head, afterNth, U182, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.37/15.04 55.37/15.04 They will be analysed ascendingly in the following order: 55.37/15.04 U142 < active 55.37/15.04 U152 < active 55.37/15.04 cons < active 55.37/15.04 natsFrom < active 55.37/15.04 s < active 55.37/15.04 U172 < active 55.37/15.04 head < active 55.37/15.04 afterNth < active 55.37/15.04 U182 < active 55.37/15.04 pair < active 55.37/15.04 U202 < active 55.37/15.04 isNatural < active 55.37/15.04 U203 < active 55.37/15.04 U204 < active 55.37/15.04 U22 < active 55.37/15.04 U212 < active 55.37/15.04 U222 < active 55.37/15.04 fst < active 55.37/15.04 U32 < active 55.37/15.04 U42 < active 55.37/15.04 U52 < active 55.37/15.04 U11 < active 55.37/15.04 U21 < active 55.37/15.04 U31 < active 55.37/15.04 U41 < active 55.37/15.04 U51 < active 55.37/15.04 U61 < active 55.37/15.04 isPLNat < active 55.37/15.04 U71 < active 55.37/15.04 U81 < active 55.37/15.04 U91 < active 55.37/15.04 U101 < active 55.37/15.04 U111 < active 55.37/15.04 U121 < active 55.37/15.04 U131 < active 55.37/15.04 U141 < active 55.37/15.04 U151 < active 55.37/15.04 U161 < active 55.37/15.04 U171 < active 55.37/15.04 U181 < active 55.37/15.04 U191 < active 55.37/15.04 U201 < active 55.37/15.04 U211 < active 55.37/15.04 U221 < active 55.37/15.04 tail < active 55.37/15.04 take < active 55.37/15.04 sel < active 55.37/15.04 active < top 55.37/15.04 U142 < proper 55.37/15.04 U152 < proper 55.37/15.04 cons < proper 55.37/15.04 natsFrom < proper 55.37/15.04 s < proper 55.37/15.04 U172 < proper 55.37/15.04 head < proper 55.37/15.04 afterNth < proper 55.37/15.04 U182 < proper 55.37/15.04 pair < proper 55.37/15.04 U202 < proper 55.37/15.04 isNatural < proper 55.37/15.04 U203 < proper 55.37/15.04 U204 < proper 55.37/15.04 U22 < proper 55.37/15.04 U212 < proper 55.37/15.04 U222 < proper 55.37/15.04 fst < proper 55.37/15.04 U32 < proper 55.37/15.04 U42 < proper 55.37/15.04 U52 < proper 55.37/15.04 U11 < proper 55.37/15.04 U21 < proper 55.37/15.04 U31 < proper 55.37/15.04 U41 < proper 55.37/15.04 U51 < proper 55.37/15.04 U61 < proper 55.37/15.04 isPLNat < proper 55.37/15.04 U71 < proper 55.37/15.04 U81 < proper 55.37/15.04 U91 < proper 55.37/15.04 U101 < proper 55.37/15.04 U111 < proper 55.37/15.04 U121 < proper 55.37/15.04 U131 < proper 55.37/15.04 U141 < proper 55.37/15.04 U151 < proper 55.37/15.04 U161 < proper 55.37/15.04 U171 < proper 55.37/15.04 U181 < proper 55.37/15.04 U191 < proper 55.37/15.04 U201 < proper 55.37/15.04 U211 < proper 55.37/15.04 U221 < proper 55.37/15.04 tail < proper 55.37/15.04 take < proper 55.37/15.04 sel < proper 55.37/15.04 proper < top 55.37/15.04 55.37/15.04 ---------------------------------------- 55.37/15.04 55.37/15.04 (39) RewriteLemmaProof (LOWER BOUND(ID)) 55.37/15.04 Proved the following rewrite lemma: 55.37/15.04 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.37/15.04 55.37/15.04 Induction Base: 55.37/15.04 U142(gen_tt:mark:nil:0':ok3_0(+(1, 0))) 55.37/15.04 55.37/15.04 Induction Step: 55.37/15.04 U142(gen_tt:mark:nil:0':ok3_0(+(1, +(n17620_0, 1)))) ->_R^Omega(1) 55.37/15.04 mark(U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0)))) ->_IH 55.37/15.04 mark(*4_0) 55.37/15.04 55.37/15.04 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.37/15.04 ---------------------------------------- 55.37/15.04 55.37/15.04 (40) 55.37/15.04 Obligation: 55.37/15.04 TRS: 55.37/15.04 Rules: 55.37/15.04 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.37/15.04 active(U102(tt)) -> mark(tt) 55.37/15.04 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.37/15.04 active(U111(tt)) -> mark(tt) 55.37/15.04 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.37/15.04 active(U121(tt)) -> mark(tt) 55.37/15.04 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.37/15.04 active(U132(tt)) -> mark(tt) 55.37/15.04 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.37/15.04 active(U142(tt)) -> mark(tt) 55.37/15.04 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.37/15.04 active(U152(tt)) -> mark(tt) 55.37/15.04 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.37/15.04 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.37/15.04 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.37/15.04 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.37/15.04 active(U182(tt, Y)) -> mark(Y) 55.37/15.04 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.37/15.04 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.37/15.04 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.37/15.04 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.37/15.04 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.37/15.04 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.37/15.04 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.37/15.04 active(U212(tt, XS)) -> mark(XS) 55.37/15.04 active(U22(tt, X)) -> mark(X) 55.37/15.04 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.37/15.04 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.37/15.04 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.37/15.04 active(U32(tt, N)) -> mark(N) 55.37/15.04 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.37/15.04 active(U42(tt)) -> mark(tt) 55.37/15.04 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.37/15.04 active(U52(tt)) -> mark(tt) 55.37/15.04 active(U61(tt)) -> mark(tt) 55.37/15.04 active(U71(tt)) -> mark(tt) 55.37/15.04 active(U81(tt)) -> mark(tt) 55.37/15.04 active(U91(tt)) -> mark(tt) 55.37/15.04 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.37/15.04 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.37/15.04 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.37/15.04 active(isLNat(nil)) -> mark(tt) 55.37/15.04 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.37/15.04 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.37/15.04 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.37/15.04 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.37/15.04 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.37/15.04 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.37/15.04 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.37/15.04 active(isNatural(0')) -> mark(tt) 55.37/15.04 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.37/15.04 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.37/15.04 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.37/15.04 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.37/15.04 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.37/15.04 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.37/15.04 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.37/15.04 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.37/15.04 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.37/15.04 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.37/15.04 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.37/15.04 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.37/15.04 active(U101(X1, X2)) -> U101(active(X1), X2) 55.37/15.04 active(U102(X)) -> U102(active(X)) 55.37/15.04 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.37/15.04 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.37/15.04 active(U111(X)) -> U111(active(X)) 55.37/15.04 active(snd(X)) -> snd(active(X)) 55.37/15.04 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.37/15.04 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.37/15.04 active(U121(X)) -> U121(active(X)) 55.37/15.04 active(U131(X1, X2)) -> U131(active(X1), X2) 55.37/15.04 active(U132(X)) -> U132(active(X)) 55.37/15.04 active(U141(X1, X2)) -> U141(active(X1), X2) 55.37/15.04 active(U142(X)) -> U142(active(X)) 55.37/15.04 active(U151(X1, X2)) -> U151(active(X1), X2) 55.37/15.04 active(U152(X)) -> U152(active(X)) 55.37/15.04 active(U161(X1, X2)) -> U161(active(X1), X2) 55.37/15.04 active(cons(X1, X2)) -> cons(active(X1), X2) 55.37/15.04 active(natsFrom(X)) -> natsFrom(active(X)) 55.37/15.04 active(s(X)) -> s(active(X)) 55.37/15.04 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.37/15.04 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.37/15.04 active(head(X)) -> head(active(X)) 55.37/15.04 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.37/15.04 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.37/15.04 active(U181(X1, X2)) -> U181(active(X1), X2) 55.37/15.04 active(U182(X1, X2)) -> U182(active(X1), X2) 55.37/15.04 active(U191(X1, X2)) -> U191(active(X1), X2) 55.37/15.04 active(pair(X1, X2)) -> pair(active(X1), X2) 55.37/15.04 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.37/15.04 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.37/15.04 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.37/15.04 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.37/15.04 active(U204(X1, X2)) -> U204(active(X1), X2) 55.37/15.04 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.37/15.04 active(U22(X1, X2)) -> U22(active(X1), X2) 55.37/15.04 active(U211(X1, X2)) -> U211(active(X1), X2) 55.37/15.04 active(U212(X1, X2)) -> U212(active(X1), X2) 55.37/15.04 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.37/15.04 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.37/15.04 active(fst(X)) -> fst(active(X)) 55.37/15.04 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.37/15.04 active(U32(X1, X2)) -> U32(active(X1), X2) 55.37/15.04 active(U41(X1, X2)) -> U41(active(X1), X2) 55.37/15.04 active(U42(X)) -> U42(active(X)) 55.37/15.04 active(U51(X1, X2)) -> U51(active(X1), X2) 55.37/15.04 active(U52(X)) -> U52(active(X)) 55.37/15.04 active(U61(X)) -> U61(active(X)) 55.37/15.04 active(U71(X)) -> U71(active(X)) 55.37/15.04 active(U81(X)) -> U81(active(X)) 55.37/15.04 active(U91(X)) -> U91(active(X)) 55.37/15.04 active(tail(X)) -> tail(active(X)) 55.37/15.04 active(take(X1, X2)) -> take(active(X1), X2) 55.37/15.04 active(take(X1, X2)) -> take(X1, active(X2)) 55.37/15.04 active(sel(X1, X2)) -> sel(active(X1), X2) 55.37/15.04 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.37/15.04 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.37/15.04 U102(mark(X)) -> mark(U102(X)) 55.37/15.04 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.37/15.04 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.37/15.04 U111(mark(X)) -> mark(U111(X)) 55.37/15.04 snd(mark(X)) -> mark(snd(X)) 55.37/15.04 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.37/15.04 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.37/15.04 U121(mark(X)) -> mark(U121(X)) 55.37/15.04 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.37/15.04 U132(mark(X)) -> mark(U132(X)) 55.37/15.04 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.37/15.04 U142(mark(X)) -> mark(U142(X)) 55.37/15.04 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.37/15.04 U152(mark(X)) -> mark(U152(X)) 55.37/15.04 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.37/15.04 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.37/15.04 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.37/15.04 s(mark(X)) -> mark(s(X)) 55.37/15.04 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.37/15.04 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.37/15.04 head(mark(X)) -> mark(head(X)) 55.37/15.04 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.37/15.04 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.37/15.04 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.37/15.04 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.37/15.04 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.37/15.04 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.37/15.04 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.37/15.04 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.37/15.04 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.37/15.04 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.37/15.04 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.37/15.04 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.37/15.04 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.37/15.04 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.37/15.04 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.37/15.04 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.37/15.04 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.37/15.04 fst(mark(X)) -> mark(fst(X)) 55.37/15.04 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.37/15.04 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.37/15.04 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.37/15.04 U42(mark(X)) -> mark(U42(X)) 55.37/15.04 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.37/15.04 U52(mark(X)) -> mark(U52(X)) 55.37/15.04 U61(mark(X)) -> mark(U61(X)) 55.37/15.04 U71(mark(X)) -> mark(U71(X)) 55.37/15.04 U81(mark(X)) -> mark(U81(X)) 55.37/15.04 U91(mark(X)) -> mark(U91(X)) 55.37/15.04 tail(mark(X)) -> mark(tail(X)) 55.37/15.04 take(mark(X1), X2) -> mark(take(X1, X2)) 55.37/15.04 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.37/15.04 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.37/15.04 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.37/15.04 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.37/15.04 proper(tt) -> ok(tt) 55.37/15.04 proper(U102(X)) -> U102(proper(X)) 55.37/15.04 proper(isLNat(X)) -> isLNat(proper(X)) 55.37/15.04 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.37/15.04 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.37/15.04 proper(U111(X)) -> U111(proper(X)) 55.37/15.04 proper(snd(X)) -> snd(proper(X)) 55.37/15.04 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.37/15.04 proper(U121(X)) -> U121(proper(X)) 55.37/15.04 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.37/15.04 proper(U132(X)) -> U132(proper(X)) 55.37/15.04 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.37/15.04 proper(U142(X)) -> U142(proper(X)) 55.37/15.04 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.37/15.04 proper(U152(X)) -> U152(proper(X)) 55.37/15.04 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.37/15.04 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.37/15.04 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.37/15.04 proper(s(X)) -> s(proper(X)) 55.37/15.04 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.37/15.04 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.37/15.04 proper(head(X)) -> head(proper(X)) 55.37/15.04 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.37/15.04 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.37/15.04 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.37/15.04 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.37/15.04 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.37/15.04 proper(nil) -> ok(nil) 55.37/15.04 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.37/15.04 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.37/15.04 proper(isNatural(X)) -> isNatural(proper(X)) 55.37/15.04 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.37/15.04 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.37/15.04 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.37/15.04 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.37/15.04 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.37/15.04 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.37/15.04 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.37/15.04 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.37/15.04 proper(fst(X)) -> fst(proper(X)) 55.37/15.04 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.04 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.04 proper(U42(X)) -> U42(proper(X)) 55.41/15.04 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.04 proper(U52(X)) -> U52(proper(X)) 55.41/15.04 proper(U61(X)) -> U61(proper(X)) 55.41/15.04 proper(U71(X)) -> U71(proper(X)) 55.41/15.04 proper(U81(X)) -> U81(proper(X)) 55.41/15.04 proper(U91(X)) -> U91(proper(X)) 55.41/15.04 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.04 proper(tail(X)) -> tail(proper(X)) 55.41/15.04 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.04 proper(0') -> ok(0') 55.41/15.04 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.04 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.04 U102(ok(X)) -> ok(U102(X)) 55.41/15.04 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.04 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.04 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.04 U111(ok(X)) -> ok(U111(X)) 55.41/15.04 snd(ok(X)) -> ok(snd(X)) 55.41/15.04 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.04 U121(ok(X)) -> ok(U121(X)) 55.41/15.04 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.04 U132(ok(X)) -> ok(U132(X)) 55.41/15.04 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.04 U142(ok(X)) -> ok(U142(X)) 55.41/15.04 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.04 U152(ok(X)) -> ok(U152(X)) 55.41/15.04 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.04 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.04 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.04 s(ok(X)) -> ok(s(X)) 55.41/15.04 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.04 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.04 head(ok(X)) -> ok(head(X)) 55.41/15.04 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.04 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.04 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.04 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.04 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.04 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.04 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.04 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.04 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.04 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.04 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.04 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.04 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.04 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.04 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.04 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.04 fst(ok(X)) -> ok(fst(X)) 55.41/15.04 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.04 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.04 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.04 U42(ok(X)) -> ok(U42(X)) 55.41/15.04 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.04 U52(ok(X)) -> ok(U52(X)) 55.41/15.04 U61(ok(X)) -> ok(U61(X)) 55.41/15.04 U71(ok(X)) -> ok(U71(X)) 55.41/15.04 U81(ok(X)) -> ok(U81(X)) 55.41/15.04 U91(ok(X)) -> ok(U91(X)) 55.41/15.04 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.04 tail(ok(X)) -> ok(tail(X)) 55.41/15.04 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.04 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.04 top(mark(X)) -> top(proper(X)) 55.41/15.04 top(ok(X)) -> top(active(X)) 55.41/15.04 55.41/15.04 Types: 55.41/15.04 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 tt :: tt:mark:nil:0':ok 55.41/15.04 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 nil :: tt:mark:nil:0':ok 55.41/15.04 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 55.41/15.04 U202 :: 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 55.41/15.04 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U203 :: 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 55.41/15.04 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 0' :: tt:mark:nil:0':ok 55.41/15.04 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 top :: tt:mark:nil:0':ok -> top 55.41/15.04 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.04 hole_top2_0 :: top 55.41/15.04 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.04 55.41/15.04 55.41/15.04 Lemmas: 55.41/15.04 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.04 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.04 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.04 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.04 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.04 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.04 55.41/15.04 55.41/15.04 Generator Equations: 55.41/15.04 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.04 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.04 55.41/15.04 55.41/15.04 The following defined symbols remain to be analysed: 55.41/15.04 U152, active, cons, natsFrom, s, U172, head, afterNth, U182, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.04 55.41/15.04 They will be analysed ascendingly in the following order: 55.41/15.04 U152 < active 55.41/15.04 cons < active 55.41/15.04 natsFrom < active 55.41/15.04 s < active 55.41/15.04 U172 < active 55.41/15.04 head < active 55.41/15.04 afterNth < active 55.41/15.04 U182 < active 55.41/15.04 pair < active 55.41/15.04 U202 < active 55.41/15.04 isNatural < active 55.41/15.04 U203 < active 55.41/15.04 U204 < active 55.41/15.04 U22 < active 55.41/15.04 U212 < active 55.41/15.04 U222 < active 55.41/15.04 fst < active 55.41/15.04 U32 < active 55.41/15.04 U42 < active 55.41/15.04 U52 < active 55.41/15.04 U11 < active 55.41/15.04 U21 < active 55.41/15.04 U31 < active 55.41/15.04 U41 < active 55.41/15.04 U51 < active 55.41/15.04 U61 < active 55.41/15.04 isPLNat < active 55.41/15.04 U71 < active 55.41/15.04 U81 < active 55.41/15.04 U91 < active 55.41/15.04 U101 < active 55.41/15.04 U111 < active 55.41/15.04 U121 < active 55.41/15.04 U131 < active 55.41/15.04 U141 < active 55.41/15.04 U151 < active 55.41/15.04 U161 < active 55.41/15.04 U171 < active 55.41/15.04 U181 < active 55.41/15.04 U191 < active 55.41/15.04 U201 < active 55.41/15.04 U211 < active 55.41/15.04 U221 < active 55.41/15.04 tail < active 55.41/15.04 take < active 55.41/15.04 sel < active 55.41/15.04 active < top 55.41/15.04 U152 < proper 55.41/15.04 cons < proper 55.41/15.04 natsFrom < proper 55.41/15.04 s < proper 55.41/15.04 U172 < proper 55.41/15.04 head < proper 55.41/15.04 afterNth < proper 55.41/15.04 U182 < proper 55.41/15.04 pair < proper 55.41/15.04 U202 < proper 55.41/15.04 isNatural < proper 55.41/15.04 U203 < proper 55.41/15.04 U204 < proper 55.41/15.04 U22 < proper 55.41/15.04 U212 < proper 55.41/15.04 U222 < proper 55.41/15.04 fst < proper 55.41/15.04 U32 < proper 55.41/15.04 U42 < proper 55.41/15.04 U52 < proper 55.41/15.04 U11 < proper 55.41/15.04 U21 < proper 55.41/15.04 U31 < proper 55.41/15.04 U41 < proper 55.41/15.04 U51 < proper 55.41/15.04 U61 < proper 55.41/15.04 isPLNat < proper 55.41/15.04 U71 < proper 55.41/15.04 U81 < proper 55.41/15.04 U91 < proper 55.41/15.04 U101 < proper 55.41/15.04 U111 < proper 55.41/15.04 U121 < proper 55.41/15.04 U131 < proper 55.41/15.04 U141 < proper 55.41/15.04 U151 < proper 55.41/15.04 U161 < proper 55.41/15.04 U171 < proper 55.41/15.04 U181 < proper 55.41/15.04 U191 < proper 55.41/15.04 U201 < proper 55.41/15.04 U211 < proper 55.41/15.04 U221 < proper 55.41/15.04 tail < proper 55.41/15.04 take < proper 55.41/15.04 sel < proper 55.41/15.04 proper < top 55.41/15.04 55.41/15.04 ---------------------------------------- 55.41/15.04 55.41/15.04 (41) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.04 Proved the following rewrite lemma: 55.41/15.04 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.04 55.41/15.04 Induction Base: 55.41/15.04 U152(gen_tt:mark:nil:0':ok3_0(+(1, 0))) 55.41/15.04 55.41/15.04 Induction Step: 55.41/15.04 U152(gen_tt:mark:nil:0':ok3_0(+(1, +(n19388_0, 1)))) ->_R^Omega(1) 55.41/15.04 mark(U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0)))) ->_IH 55.41/15.04 mark(*4_0) 55.41/15.04 55.41/15.04 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.04 ---------------------------------------- 55.41/15.04 55.41/15.04 (42) 55.41/15.04 Obligation: 55.41/15.04 TRS: 55.41/15.04 Rules: 55.41/15.04 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.04 active(U102(tt)) -> mark(tt) 55.41/15.04 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.04 active(U111(tt)) -> mark(tt) 55.41/15.04 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.04 active(U121(tt)) -> mark(tt) 55.41/15.04 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.04 active(U132(tt)) -> mark(tt) 55.41/15.04 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.04 active(U142(tt)) -> mark(tt) 55.41/15.04 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.04 active(U152(tt)) -> mark(tt) 55.41/15.04 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.04 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.04 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.04 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.04 active(U182(tt, Y)) -> mark(Y) 55.41/15.04 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.04 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.04 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.04 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.04 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.04 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.04 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.04 active(U212(tt, XS)) -> mark(XS) 55.41/15.04 active(U22(tt, X)) -> mark(X) 55.41/15.04 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.04 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.04 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.04 active(U32(tt, N)) -> mark(N) 55.41/15.04 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.04 active(U42(tt)) -> mark(tt) 55.41/15.04 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.04 active(U52(tt)) -> mark(tt) 55.41/15.04 active(U61(tt)) -> mark(tt) 55.41/15.04 active(U71(tt)) -> mark(tt) 55.41/15.04 active(U81(tt)) -> mark(tt) 55.41/15.04 active(U91(tt)) -> mark(tt) 55.41/15.04 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.04 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.04 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.04 active(isLNat(nil)) -> mark(tt) 55.41/15.04 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.04 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.04 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.04 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.04 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.04 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.04 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.04 active(isNatural(0')) -> mark(tt) 55.41/15.04 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.04 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.04 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.04 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.04 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.04 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.04 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.04 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.04 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.04 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.04 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.04 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.04 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.04 active(U102(X)) -> U102(active(X)) 55.41/15.04 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.04 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.04 active(U111(X)) -> U111(active(X)) 55.41/15.04 active(snd(X)) -> snd(active(X)) 55.41/15.04 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.04 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.04 active(U121(X)) -> U121(active(X)) 55.41/15.04 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.04 active(U132(X)) -> U132(active(X)) 55.41/15.04 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.04 active(U142(X)) -> U142(active(X)) 55.41/15.04 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.04 active(U152(X)) -> U152(active(X)) 55.41/15.04 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.04 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.04 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.04 active(s(X)) -> s(active(X)) 55.41/15.04 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.04 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.04 active(head(X)) -> head(active(X)) 55.41/15.04 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.04 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.04 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.04 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.04 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.04 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.04 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.04 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.04 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.04 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.04 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.04 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.04 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.04 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.04 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.04 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.04 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.04 active(fst(X)) -> fst(active(X)) 55.41/15.04 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.04 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.04 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.04 active(U42(X)) -> U42(active(X)) 55.41/15.04 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.04 active(U52(X)) -> U52(active(X)) 55.41/15.04 active(U61(X)) -> U61(active(X)) 55.41/15.04 active(U71(X)) -> U71(active(X)) 55.41/15.04 active(U81(X)) -> U81(active(X)) 55.41/15.04 active(U91(X)) -> U91(active(X)) 55.41/15.04 active(tail(X)) -> tail(active(X)) 55.41/15.04 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.04 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.04 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.04 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.04 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.04 U102(mark(X)) -> mark(U102(X)) 55.41/15.04 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.04 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.04 U111(mark(X)) -> mark(U111(X)) 55.41/15.04 snd(mark(X)) -> mark(snd(X)) 55.41/15.04 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.04 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.04 U121(mark(X)) -> mark(U121(X)) 55.41/15.04 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.04 U132(mark(X)) -> mark(U132(X)) 55.41/15.04 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.04 U142(mark(X)) -> mark(U142(X)) 55.41/15.04 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.04 U152(mark(X)) -> mark(U152(X)) 55.41/15.04 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.04 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.04 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.04 s(mark(X)) -> mark(s(X)) 55.41/15.04 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.04 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.04 head(mark(X)) -> mark(head(X)) 55.41/15.04 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.04 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.04 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.04 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.04 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.04 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.04 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.04 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.04 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.04 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.04 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.04 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.04 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.04 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.04 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.04 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.04 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.04 fst(mark(X)) -> mark(fst(X)) 55.41/15.04 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.04 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.04 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.04 U42(mark(X)) -> mark(U42(X)) 55.41/15.04 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.04 U52(mark(X)) -> mark(U52(X)) 55.41/15.04 U61(mark(X)) -> mark(U61(X)) 55.41/15.04 U71(mark(X)) -> mark(U71(X)) 55.41/15.04 U81(mark(X)) -> mark(U81(X)) 55.41/15.04 U91(mark(X)) -> mark(U91(X)) 55.41/15.04 tail(mark(X)) -> mark(tail(X)) 55.41/15.04 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.04 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.04 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.04 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.04 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.04 proper(tt) -> ok(tt) 55.41/15.04 proper(U102(X)) -> U102(proper(X)) 55.41/15.04 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.04 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(U111(X)) -> U111(proper(X)) 55.41/15.04 proper(snd(X)) -> snd(proper(X)) 55.41/15.04 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.04 proper(U121(X)) -> U121(proper(X)) 55.41/15.04 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.04 proper(U132(X)) -> U132(proper(X)) 55.41/15.04 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.04 proper(U142(X)) -> U142(proper(X)) 55.41/15.04 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.04 proper(U152(X)) -> U152(proper(X)) 55.41/15.04 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.04 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.04 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.04 proper(s(X)) -> s(proper(X)) 55.41/15.04 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(head(X)) -> head(proper(X)) 55.41/15.04 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.04 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.04 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.04 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.04 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.04 proper(nil) -> ok(nil) 55.41/15.04 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.04 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.04 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.04 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.04 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.04 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.04 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.04 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.04 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(fst(X)) -> fst(proper(X)) 55.41/15.04 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.04 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.04 proper(U42(X)) -> U42(proper(X)) 55.41/15.04 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.04 proper(U52(X)) -> U52(proper(X)) 55.41/15.04 proper(U61(X)) -> U61(proper(X)) 55.41/15.04 proper(U71(X)) -> U71(proper(X)) 55.41/15.04 proper(U81(X)) -> U81(proper(X)) 55.41/15.04 proper(U91(X)) -> U91(proper(X)) 55.41/15.04 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.04 proper(tail(X)) -> tail(proper(X)) 55.41/15.04 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.04 proper(0') -> ok(0') 55.41/15.04 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.04 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.04 U102(ok(X)) -> ok(U102(X)) 55.41/15.04 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.04 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.04 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.04 U111(ok(X)) -> ok(U111(X)) 55.41/15.04 snd(ok(X)) -> ok(snd(X)) 55.41/15.04 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.04 U121(ok(X)) -> ok(U121(X)) 55.41/15.04 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.04 U132(ok(X)) -> ok(U132(X)) 55.41/15.04 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.04 U142(ok(X)) -> ok(U142(X)) 55.41/15.04 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.04 U152(ok(X)) -> ok(U152(X)) 55.41/15.04 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.04 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.04 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.04 s(ok(X)) -> ok(s(X)) 55.41/15.04 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.04 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.04 head(ok(X)) -> ok(head(X)) 55.41/15.04 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.04 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.04 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.04 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.04 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.04 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.04 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.04 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.04 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.04 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.04 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.04 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.04 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.04 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.04 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.04 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.04 fst(ok(X)) -> ok(fst(X)) 55.41/15.04 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.04 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.04 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.04 U42(ok(X)) -> ok(U42(X)) 55.41/15.04 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.04 U52(ok(X)) -> ok(U52(X)) 55.41/15.04 U61(ok(X)) -> ok(U61(X)) 55.41/15.04 U71(ok(X)) -> ok(U71(X)) 55.41/15.04 U81(ok(X)) -> ok(U81(X)) 55.41/15.04 U91(ok(X)) -> ok(U91(X)) 55.41/15.04 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.04 tail(ok(X)) -> ok(tail(X)) 55.41/15.04 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.04 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.04 top(mark(X)) -> top(proper(X)) 55.41/15.04 top(ok(X)) -> top(active(X)) 55.41/15.04 55.41/15.04 Types: 55.41/15.04 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 tt :: tt:mark:nil:0':ok 55.41/15.04 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 nil :: tt:mark:nil:0':ok 55.41/15.04 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 55.41/15.04 U202 :: 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 55.41/15.04 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U203 :: 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 55.41/15.04 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 0' :: tt:mark:nil:0':ok 55.41/15.04 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 top :: tt:mark:nil:0':ok -> top 55.41/15.04 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.04 hole_top2_0 :: top 55.41/15.04 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.04 55.41/15.04 55.41/15.04 Lemmas: 55.41/15.04 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.04 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.04 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.04 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.04 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.04 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.04 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.04 55.41/15.04 55.41/15.04 Generator Equations: 55.41/15.04 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.04 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.04 55.41/15.04 55.41/15.04 The following defined symbols remain to be analysed: 55.41/15.04 cons, active, natsFrom, s, U172, head, afterNth, U182, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.04 55.41/15.04 They will be analysed ascendingly in the following order: 55.41/15.04 cons < active 55.41/15.04 natsFrom < active 55.41/15.04 s < active 55.41/15.04 U172 < active 55.41/15.04 head < active 55.41/15.04 afterNth < active 55.41/15.04 U182 < active 55.41/15.04 pair < active 55.41/15.04 U202 < active 55.41/15.04 isNatural < active 55.41/15.04 U203 < active 55.41/15.04 U204 < active 55.41/15.04 U22 < active 55.41/15.04 U212 < active 55.41/15.04 U222 < active 55.41/15.04 fst < active 55.41/15.04 U32 < active 55.41/15.04 U42 < active 55.41/15.04 U52 < active 55.41/15.04 U11 < active 55.41/15.04 U21 < active 55.41/15.04 U31 < active 55.41/15.04 U41 < active 55.41/15.04 U51 < active 55.41/15.04 U61 < active 55.41/15.04 isPLNat < active 55.41/15.04 U71 < active 55.41/15.04 U81 < active 55.41/15.04 U91 < active 55.41/15.04 U101 < active 55.41/15.04 U111 < active 55.41/15.04 U121 < active 55.41/15.04 U131 < active 55.41/15.04 U141 < active 55.41/15.04 U151 < active 55.41/15.04 U161 < active 55.41/15.04 U171 < active 55.41/15.04 U181 < active 55.41/15.04 U191 < active 55.41/15.04 U201 < active 55.41/15.04 U211 < active 55.41/15.04 U221 < active 55.41/15.04 tail < active 55.41/15.04 take < active 55.41/15.04 sel < active 55.41/15.04 active < top 55.41/15.04 cons < proper 55.41/15.04 natsFrom < proper 55.41/15.04 s < proper 55.41/15.04 U172 < proper 55.41/15.04 head < proper 55.41/15.04 afterNth < proper 55.41/15.04 U182 < proper 55.41/15.04 pair < proper 55.41/15.04 U202 < proper 55.41/15.04 isNatural < proper 55.41/15.04 U203 < proper 55.41/15.04 U204 < proper 55.41/15.04 U22 < proper 55.41/15.04 U212 < proper 55.41/15.04 U222 < proper 55.41/15.04 fst < proper 55.41/15.04 U32 < proper 55.41/15.04 U42 < proper 55.41/15.04 U52 < proper 55.41/15.04 U11 < proper 55.41/15.04 U21 < proper 55.41/15.04 U31 < proper 55.41/15.04 U41 < proper 55.41/15.04 U51 < proper 55.41/15.04 U61 < proper 55.41/15.04 isPLNat < proper 55.41/15.04 U71 < proper 55.41/15.04 U81 < proper 55.41/15.04 U91 < proper 55.41/15.04 U101 < proper 55.41/15.04 U111 < proper 55.41/15.04 U121 < proper 55.41/15.04 U131 < proper 55.41/15.04 U141 < proper 55.41/15.04 U151 < proper 55.41/15.04 U161 < proper 55.41/15.04 U171 < proper 55.41/15.04 U181 < proper 55.41/15.04 U191 < proper 55.41/15.04 U201 < proper 55.41/15.04 U211 < proper 55.41/15.04 U221 < proper 55.41/15.04 tail < proper 55.41/15.04 take < proper 55.41/15.04 sel < proper 55.41/15.04 proper < top 55.41/15.04 55.41/15.04 ---------------------------------------- 55.41/15.04 55.41/15.04 (43) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.04 Proved the following rewrite lemma: 55.41/15.04 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.04 55.41/15.04 Induction Base: 55.41/15.04 cons(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) 55.41/15.04 55.41/15.04 Induction Step: 55.41/15.04 cons(gen_tt:mark:nil:0':ok3_0(+(1, +(n21257_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) 55.41/15.04 mark(cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH 55.41/15.04 mark(*4_0) 55.41/15.04 55.41/15.04 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.04 ---------------------------------------- 55.41/15.04 55.41/15.04 (44) 55.41/15.04 Obligation: 55.41/15.04 TRS: 55.41/15.04 Rules: 55.41/15.04 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.04 active(U102(tt)) -> mark(tt) 55.41/15.04 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.04 active(U111(tt)) -> mark(tt) 55.41/15.04 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.04 active(U121(tt)) -> mark(tt) 55.41/15.04 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.04 active(U132(tt)) -> mark(tt) 55.41/15.04 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.04 active(U142(tt)) -> mark(tt) 55.41/15.04 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.04 active(U152(tt)) -> mark(tt) 55.41/15.04 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.04 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.04 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.04 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.04 active(U182(tt, Y)) -> mark(Y) 55.41/15.04 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.04 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.04 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.04 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.04 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.04 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.04 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.04 active(U212(tt, XS)) -> mark(XS) 55.41/15.04 active(U22(tt, X)) -> mark(X) 55.41/15.04 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.04 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.04 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.04 active(U32(tt, N)) -> mark(N) 55.41/15.04 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.04 active(U42(tt)) -> mark(tt) 55.41/15.04 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.04 active(U52(tt)) -> mark(tt) 55.41/15.04 active(U61(tt)) -> mark(tt) 55.41/15.04 active(U71(tt)) -> mark(tt) 55.41/15.04 active(U81(tt)) -> mark(tt) 55.41/15.04 active(U91(tt)) -> mark(tt) 55.41/15.04 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.04 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.04 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.04 active(isLNat(nil)) -> mark(tt) 55.41/15.04 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.04 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.04 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.04 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.04 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.04 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.04 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.04 active(isNatural(0')) -> mark(tt) 55.41/15.04 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.04 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.04 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.04 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.04 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.04 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.04 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.04 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.04 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.04 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.04 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.04 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.04 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.04 active(U102(X)) -> U102(active(X)) 55.41/15.04 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.04 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.04 active(U111(X)) -> U111(active(X)) 55.41/15.04 active(snd(X)) -> snd(active(X)) 55.41/15.04 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.04 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.04 active(U121(X)) -> U121(active(X)) 55.41/15.04 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.04 active(U132(X)) -> U132(active(X)) 55.41/15.04 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.04 active(U142(X)) -> U142(active(X)) 55.41/15.04 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.04 active(U152(X)) -> U152(active(X)) 55.41/15.04 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.04 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.04 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.04 active(s(X)) -> s(active(X)) 55.41/15.04 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.04 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.04 active(head(X)) -> head(active(X)) 55.41/15.04 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.04 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.04 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.04 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.04 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.04 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.04 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.04 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.04 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.04 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.04 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.04 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.04 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.04 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.04 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.04 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.04 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.04 active(fst(X)) -> fst(active(X)) 55.41/15.04 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.04 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.04 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.04 active(U42(X)) -> U42(active(X)) 55.41/15.04 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.04 active(U52(X)) -> U52(active(X)) 55.41/15.04 active(U61(X)) -> U61(active(X)) 55.41/15.04 active(U71(X)) -> U71(active(X)) 55.41/15.04 active(U81(X)) -> U81(active(X)) 55.41/15.04 active(U91(X)) -> U91(active(X)) 55.41/15.04 active(tail(X)) -> tail(active(X)) 55.41/15.04 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.04 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.04 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.04 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.04 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.04 U102(mark(X)) -> mark(U102(X)) 55.41/15.04 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.04 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.04 U111(mark(X)) -> mark(U111(X)) 55.41/15.04 snd(mark(X)) -> mark(snd(X)) 55.41/15.04 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.04 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.04 U121(mark(X)) -> mark(U121(X)) 55.41/15.04 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.04 U132(mark(X)) -> mark(U132(X)) 55.41/15.04 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.04 U142(mark(X)) -> mark(U142(X)) 55.41/15.04 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.04 U152(mark(X)) -> mark(U152(X)) 55.41/15.04 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.04 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.04 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.04 s(mark(X)) -> mark(s(X)) 55.41/15.04 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.04 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.04 head(mark(X)) -> mark(head(X)) 55.41/15.04 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.04 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.04 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.04 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.04 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.04 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.04 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.04 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.04 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.04 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.04 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.04 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.04 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.04 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.04 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.04 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.04 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.04 fst(mark(X)) -> mark(fst(X)) 55.41/15.04 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.04 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.04 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.04 U42(mark(X)) -> mark(U42(X)) 55.41/15.04 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.04 U52(mark(X)) -> mark(U52(X)) 55.41/15.04 U61(mark(X)) -> mark(U61(X)) 55.41/15.04 U71(mark(X)) -> mark(U71(X)) 55.41/15.04 U81(mark(X)) -> mark(U81(X)) 55.41/15.04 U91(mark(X)) -> mark(U91(X)) 55.41/15.04 tail(mark(X)) -> mark(tail(X)) 55.41/15.04 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.04 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.04 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.04 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.04 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.04 proper(tt) -> ok(tt) 55.41/15.04 proper(U102(X)) -> U102(proper(X)) 55.41/15.04 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.04 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(U111(X)) -> U111(proper(X)) 55.41/15.04 proper(snd(X)) -> snd(proper(X)) 55.41/15.04 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.04 proper(U121(X)) -> U121(proper(X)) 55.41/15.04 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.04 proper(U132(X)) -> U132(proper(X)) 55.41/15.04 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.04 proper(U142(X)) -> U142(proper(X)) 55.41/15.04 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.04 proper(U152(X)) -> U152(proper(X)) 55.41/15.04 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.04 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.04 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.04 proper(s(X)) -> s(proper(X)) 55.41/15.04 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(head(X)) -> head(proper(X)) 55.41/15.04 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.04 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.04 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.04 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.04 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.04 proper(nil) -> ok(nil) 55.41/15.04 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.04 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.04 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.04 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.04 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.04 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.04 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.04 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.04 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(fst(X)) -> fst(proper(X)) 55.41/15.04 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.04 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.04 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.04 proper(U42(X)) -> U42(proper(X)) 55.41/15.04 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.04 proper(U52(X)) -> U52(proper(X)) 55.41/15.04 proper(U61(X)) -> U61(proper(X)) 55.41/15.04 proper(U71(X)) -> U71(proper(X)) 55.41/15.04 proper(U81(X)) -> U81(proper(X)) 55.41/15.04 proper(U91(X)) -> U91(proper(X)) 55.41/15.04 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.04 proper(tail(X)) -> tail(proper(X)) 55.41/15.04 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.04 proper(0') -> ok(0') 55.41/15.04 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.04 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.04 U102(ok(X)) -> ok(U102(X)) 55.41/15.04 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.04 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.04 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.04 U111(ok(X)) -> ok(U111(X)) 55.41/15.04 snd(ok(X)) -> ok(snd(X)) 55.41/15.04 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.04 U121(ok(X)) -> ok(U121(X)) 55.41/15.04 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.04 U132(ok(X)) -> ok(U132(X)) 55.41/15.04 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.04 U142(ok(X)) -> ok(U142(X)) 55.41/15.04 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.04 U152(ok(X)) -> ok(U152(X)) 55.41/15.04 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.04 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.04 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.04 s(ok(X)) -> ok(s(X)) 55.41/15.04 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.04 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.04 head(ok(X)) -> ok(head(X)) 55.41/15.04 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.04 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.04 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.04 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.04 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.04 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.04 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.04 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.04 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.04 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.04 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.04 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.04 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.04 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.04 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.04 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.04 fst(ok(X)) -> ok(fst(X)) 55.41/15.04 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.04 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.04 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.04 U42(ok(X)) -> ok(U42(X)) 55.41/15.04 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.04 U52(ok(X)) -> ok(U52(X)) 55.41/15.04 U61(ok(X)) -> ok(U61(X)) 55.41/15.04 U71(ok(X)) -> ok(U71(X)) 55.41/15.04 U81(ok(X)) -> ok(U81(X)) 55.41/15.04 U91(ok(X)) -> ok(U91(X)) 55.41/15.04 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.04 tail(ok(X)) -> ok(tail(X)) 55.41/15.04 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.04 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.04 top(mark(X)) -> top(proper(X)) 55.41/15.04 top(ok(X)) -> top(active(X)) 55.41/15.04 55.41/15.04 Types: 55.41/15.04 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 tt :: tt:mark:nil:0':ok 55.41/15.04 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 nil :: tt:mark:nil:0':ok 55.41/15.04 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 55.41/15.04 U202 :: 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 55.41/15.04 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U203 :: 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 55.41/15.04 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 0' :: tt:mark:nil:0':ok 55.41/15.04 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.04 top :: tt:mark:nil:0':ok -> top 55.41/15.04 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.04 hole_top2_0 :: top 55.41/15.04 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.04 55.41/15.04 55.41/15.04 Lemmas: 55.41/15.04 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.04 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.04 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.04 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.04 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.04 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.04 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.04 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.04 55.41/15.04 55.41/15.04 Generator Equations: 55.41/15.04 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.04 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.04 55.41/15.04 55.41/15.04 The following defined symbols remain to be analysed: 55.41/15.04 natsFrom, active, s, U172, head, afterNth, U182, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.04 55.41/15.04 They will be analysed ascendingly in the following order: 55.41/15.04 natsFrom < active 55.41/15.04 s < active 55.41/15.04 U172 < active 55.41/15.04 head < active 55.41/15.04 afterNth < active 55.41/15.04 U182 < active 55.41/15.04 pair < active 55.41/15.04 U202 < active 55.41/15.04 isNatural < active 55.41/15.04 U203 < active 55.41/15.04 U204 < active 55.41/15.04 U22 < active 55.41/15.04 U212 < active 55.41/15.04 U222 < active 55.41/15.04 fst < active 55.41/15.04 U32 < active 55.41/15.04 U42 < active 55.41/15.04 U52 < active 55.41/15.04 U11 < active 55.41/15.04 U21 < active 55.41/15.04 U31 < active 55.41/15.04 U41 < active 55.41/15.04 U51 < active 55.41/15.04 U61 < active 55.41/15.04 isPLNat < active 55.41/15.04 U71 < active 55.41/15.04 U81 < active 55.41/15.04 U91 < active 55.41/15.04 U101 < active 55.41/15.04 U111 < active 55.41/15.04 U121 < active 55.41/15.04 U131 < active 55.41/15.04 U141 < active 55.41/15.04 U151 < active 55.41/15.04 U161 < active 55.41/15.04 U171 < active 55.41/15.04 U181 < active 55.41/15.04 U191 < active 55.41/15.04 U201 < active 55.41/15.04 U211 < active 55.41/15.04 U221 < active 55.41/15.04 tail < active 55.41/15.04 take < active 55.41/15.04 sel < active 55.41/15.04 active < top 55.41/15.04 natsFrom < proper 55.41/15.04 s < proper 55.41/15.04 U172 < proper 55.41/15.04 head < proper 55.41/15.04 afterNth < proper 55.41/15.04 U182 < proper 55.41/15.04 pair < proper 55.41/15.04 U202 < proper 55.41/15.04 isNatural < proper 55.41/15.04 U203 < proper 55.41/15.04 U204 < proper 55.41/15.04 U22 < proper 55.41/15.04 U212 < proper 55.41/15.04 U222 < proper 55.41/15.04 fst < proper 55.41/15.04 U32 < proper 55.41/15.04 U42 < proper 55.41/15.04 U52 < proper 55.41/15.04 U11 < proper 55.41/15.04 U21 < proper 55.41/15.04 U31 < proper 55.41/15.04 U41 < proper 55.41/15.04 U51 < proper 55.41/15.04 U61 < proper 55.41/15.04 isPLNat < proper 55.41/15.04 U71 < proper 55.41/15.04 U81 < proper 55.41/15.04 U91 < proper 55.41/15.04 U101 < proper 55.41/15.04 U111 < proper 55.41/15.04 U121 < proper 55.41/15.04 U131 < proper 55.41/15.04 U141 < proper 55.41/15.04 U151 < proper 55.41/15.04 U161 < proper 55.41/15.04 U171 < proper 55.41/15.04 U181 < proper 55.41/15.04 U191 < proper 55.41/15.04 U201 < proper 55.41/15.04 U211 < proper 55.41/15.04 U221 < proper 55.41/15.04 tail < proper 55.41/15.04 take < proper 55.41/15.04 sel < proper 55.41/15.04 proper < top 55.41/15.04 55.41/15.04 ---------------------------------------- 55.41/15.04 55.41/15.04 (45) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.04 Proved the following rewrite lemma: 55.41/15.04 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.04 55.41/15.04 Induction Base: 55.41/15.04 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, 0))) 55.41/15.04 55.41/15.04 Induction Step: 55.41/15.04 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, +(n27404_0, 1)))) ->_R^Omega(1) 55.41/15.04 mark(natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0)))) ->_IH 55.41/15.04 mark(*4_0) 55.41/15.04 55.41/15.04 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.04 ---------------------------------------- 55.41/15.04 55.41/15.04 (46) 55.41/15.04 Obligation: 55.41/15.04 TRS: 55.41/15.04 Rules: 55.41/15.04 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.04 active(U102(tt)) -> mark(tt) 55.41/15.04 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.04 active(U111(tt)) -> mark(tt) 55.41/15.04 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.04 active(U121(tt)) -> mark(tt) 55.41/15.04 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.04 active(U132(tt)) -> mark(tt) 55.41/15.04 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.04 active(U142(tt)) -> mark(tt) 55.41/15.04 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.04 active(U152(tt)) -> mark(tt) 55.41/15.04 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.04 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.04 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.04 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.04 active(U182(tt, Y)) -> mark(Y) 55.41/15.04 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.04 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.04 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.04 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.04 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.04 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.04 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.04 active(U212(tt, XS)) -> mark(XS) 55.41/15.04 active(U22(tt, X)) -> mark(X) 55.41/15.04 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.04 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.04 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.04 active(U32(tt, N)) -> mark(N) 55.41/15.04 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.04 active(U42(tt)) -> mark(tt) 55.41/15.04 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.04 active(U52(tt)) -> mark(tt) 55.41/15.04 active(U61(tt)) -> mark(tt) 55.41/15.04 active(U71(tt)) -> mark(tt) 55.41/15.04 active(U81(tt)) -> mark(tt) 55.41/15.04 active(U91(tt)) -> mark(tt) 55.41/15.04 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.04 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.04 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.04 active(isLNat(nil)) -> mark(tt) 55.41/15.04 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.04 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.05 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.05 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.05 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.05 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.05 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.05 active(isNatural(0')) -> mark(tt) 55.41/15.05 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.05 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.05 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.05 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.05 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.05 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.05 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.05 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.05 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.05 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.05 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.05 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.05 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.05 active(U102(X)) -> U102(active(X)) 55.41/15.05 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.05 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.05 active(U111(X)) -> U111(active(X)) 55.41/15.05 active(snd(X)) -> snd(active(X)) 55.41/15.05 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.05 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.05 active(U121(X)) -> U121(active(X)) 55.41/15.05 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.05 active(U132(X)) -> U132(active(X)) 55.41/15.05 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.05 active(U142(X)) -> U142(active(X)) 55.41/15.05 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.05 active(U152(X)) -> U152(active(X)) 55.41/15.05 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.05 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.05 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.05 active(s(X)) -> s(active(X)) 55.41/15.05 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.05 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.05 active(head(X)) -> head(active(X)) 55.41/15.05 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.05 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.05 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.05 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.05 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.05 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.05 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.05 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.05 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.05 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.05 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.05 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.05 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.05 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.05 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.05 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.05 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.05 active(fst(X)) -> fst(active(X)) 55.41/15.05 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.05 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.05 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.05 active(U42(X)) -> U42(active(X)) 55.41/15.05 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.05 active(U52(X)) -> U52(active(X)) 55.41/15.05 active(U61(X)) -> U61(active(X)) 55.41/15.05 active(U71(X)) -> U71(active(X)) 55.41/15.05 active(U81(X)) -> U81(active(X)) 55.41/15.05 active(U91(X)) -> U91(active(X)) 55.41/15.05 active(tail(X)) -> tail(active(X)) 55.41/15.05 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.05 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.05 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.05 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.05 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.05 U102(mark(X)) -> mark(U102(X)) 55.41/15.05 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.05 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.05 U111(mark(X)) -> mark(U111(X)) 55.41/15.05 snd(mark(X)) -> mark(snd(X)) 55.41/15.05 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.05 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.05 U121(mark(X)) -> mark(U121(X)) 55.41/15.05 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.05 U132(mark(X)) -> mark(U132(X)) 55.41/15.05 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.05 U142(mark(X)) -> mark(U142(X)) 55.41/15.05 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.05 U152(mark(X)) -> mark(U152(X)) 55.41/15.05 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.05 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.05 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.05 s(mark(X)) -> mark(s(X)) 55.41/15.05 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.05 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.05 head(mark(X)) -> mark(head(X)) 55.41/15.05 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.05 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.05 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.05 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.05 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.05 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.05 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.05 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.05 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.05 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.05 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.05 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.05 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.05 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.05 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.05 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.05 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.05 fst(mark(X)) -> mark(fst(X)) 55.41/15.05 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.05 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.05 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.05 U42(mark(X)) -> mark(U42(X)) 55.41/15.05 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.05 U52(mark(X)) -> mark(U52(X)) 55.41/15.05 U61(mark(X)) -> mark(U61(X)) 55.41/15.05 U71(mark(X)) -> mark(U71(X)) 55.41/15.05 U81(mark(X)) -> mark(U81(X)) 55.41/15.05 U91(mark(X)) -> mark(U91(X)) 55.41/15.05 tail(mark(X)) -> mark(tail(X)) 55.41/15.05 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.05 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.05 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.05 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.05 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.05 proper(tt) -> ok(tt) 55.41/15.05 proper(U102(X)) -> U102(proper(X)) 55.41/15.05 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.05 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(U111(X)) -> U111(proper(X)) 55.41/15.05 proper(snd(X)) -> snd(proper(X)) 55.41/15.05 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.05 proper(U121(X)) -> U121(proper(X)) 55.41/15.05 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.05 proper(U132(X)) -> U132(proper(X)) 55.41/15.05 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.05 proper(U142(X)) -> U142(proper(X)) 55.41/15.05 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.05 proper(U152(X)) -> U152(proper(X)) 55.41/15.05 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.05 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.05 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.05 proper(s(X)) -> s(proper(X)) 55.41/15.05 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(head(X)) -> head(proper(X)) 55.41/15.05 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.05 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.05 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.05 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.05 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.05 proper(nil) -> ok(nil) 55.41/15.05 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.05 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.05 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.05 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.05 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.05 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.05 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.05 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.05 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(fst(X)) -> fst(proper(X)) 55.41/15.05 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.05 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.05 proper(U42(X)) -> U42(proper(X)) 55.41/15.05 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.05 proper(U52(X)) -> U52(proper(X)) 55.41/15.05 proper(U61(X)) -> U61(proper(X)) 55.41/15.05 proper(U71(X)) -> U71(proper(X)) 55.41/15.05 proper(U81(X)) -> U81(proper(X)) 55.41/15.05 proper(U91(X)) -> U91(proper(X)) 55.41/15.05 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.05 proper(tail(X)) -> tail(proper(X)) 55.41/15.05 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.05 proper(0') -> ok(0') 55.41/15.05 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.05 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.05 U102(ok(X)) -> ok(U102(X)) 55.41/15.05 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.05 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.05 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.05 U111(ok(X)) -> ok(U111(X)) 55.41/15.05 snd(ok(X)) -> ok(snd(X)) 55.41/15.05 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.05 U121(ok(X)) -> ok(U121(X)) 55.41/15.05 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.05 U132(ok(X)) -> ok(U132(X)) 55.41/15.05 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.05 U142(ok(X)) -> ok(U142(X)) 55.41/15.05 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.05 U152(ok(X)) -> ok(U152(X)) 55.41/15.05 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.05 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.05 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.05 s(ok(X)) -> ok(s(X)) 55.41/15.05 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.05 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.05 head(ok(X)) -> ok(head(X)) 55.41/15.05 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.05 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.05 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.05 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.05 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.05 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.05 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.05 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.05 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.05 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.05 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.05 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.05 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.05 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.05 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.05 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.05 fst(ok(X)) -> ok(fst(X)) 55.41/15.05 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.05 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.05 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.05 U42(ok(X)) -> ok(U42(X)) 55.41/15.05 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.05 U52(ok(X)) -> ok(U52(X)) 55.41/15.05 U61(ok(X)) -> ok(U61(X)) 55.41/15.05 U71(ok(X)) -> ok(U71(X)) 55.41/15.05 U81(ok(X)) -> ok(U81(X)) 55.41/15.05 U91(ok(X)) -> ok(U91(X)) 55.41/15.05 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.05 tail(ok(X)) -> ok(tail(X)) 55.41/15.05 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.05 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.05 top(mark(X)) -> top(proper(X)) 55.41/15.05 top(ok(X)) -> top(active(X)) 55.41/15.05 55.41/15.05 Types: 55.41/15.05 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 tt :: tt:mark:nil:0':ok 55.41/15.05 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 nil :: tt:mark:nil:0':ok 55.41/15.05 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 55.41/15.05 U202 :: 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 55.41/15.05 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U203 :: 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 55.41/15.05 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 0' :: tt:mark:nil:0':ok 55.41/15.05 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 top :: tt:mark:nil:0':ok -> top 55.41/15.05 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.05 hole_top2_0 :: top 55.41/15.05 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.05 55.41/15.05 55.41/15.05 Lemmas: 55.41/15.05 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.05 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.05 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.05 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.05 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.05 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.05 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.05 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.05 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.05 55.41/15.05 55.41/15.05 Generator Equations: 55.41/15.05 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.05 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.05 55.41/15.05 55.41/15.05 The following defined symbols remain to be analysed: 55.41/15.05 s, active, U172, head, afterNth, U182, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.05 55.41/15.05 They will be analysed ascendingly in the following order: 55.41/15.05 s < active 55.41/15.05 U172 < active 55.41/15.05 head < active 55.41/15.05 afterNth < active 55.41/15.05 U182 < active 55.41/15.05 pair < active 55.41/15.05 U202 < active 55.41/15.05 isNatural < active 55.41/15.05 U203 < active 55.41/15.05 U204 < active 55.41/15.05 U22 < active 55.41/15.05 U212 < active 55.41/15.05 U222 < active 55.41/15.05 fst < active 55.41/15.05 U32 < active 55.41/15.05 U42 < active 55.41/15.05 U52 < active 55.41/15.05 U11 < active 55.41/15.05 U21 < active 55.41/15.05 U31 < active 55.41/15.05 U41 < active 55.41/15.05 U51 < active 55.41/15.05 U61 < active 55.41/15.05 isPLNat < active 55.41/15.05 U71 < active 55.41/15.05 U81 < active 55.41/15.05 U91 < active 55.41/15.05 U101 < active 55.41/15.05 U111 < active 55.41/15.05 U121 < active 55.41/15.05 U131 < active 55.41/15.05 U141 < active 55.41/15.05 U151 < active 55.41/15.05 U161 < active 55.41/15.05 U171 < active 55.41/15.05 U181 < active 55.41/15.05 U191 < active 55.41/15.05 U201 < active 55.41/15.05 U211 < active 55.41/15.05 U221 < active 55.41/15.05 tail < active 55.41/15.05 take < active 55.41/15.05 sel < active 55.41/15.05 active < top 55.41/15.05 s < proper 55.41/15.05 U172 < proper 55.41/15.05 head < proper 55.41/15.05 afterNth < proper 55.41/15.05 U182 < proper 55.41/15.05 pair < proper 55.41/15.05 U202 < proper 55.41/15.05 isNatural < proper 55.41/15.05 U203 < proper 55.41/15.05 U204 < proper 55.41/15.05 U22 < proper 55.41/15.05 U212 < proper 55.41/15.05 U222 < proper 55.41/15.05 fst < proper 55.41/15.05 U32 < proper 55.41/15.05 U42 < proper 55.41/15.05 U52 < proper 55.41/15.05 U11 < proper 55.41/15.05 U21 < proper 55.41/15.05 U31 < proper 55.41/15.05 U41 < proper 55.41/15.05 U51 < proper 55.41/15.05 U61 < proper 55.41/15.05 isPLNat < proper 55.41/15.05 U71 < proper 55.41/15.05 U81 < proper 55.41/15.05 U91 < proper 55.41/15.05 U101 < proper 55.41/15.05 U111 < proper 55.41/15.05 U121 < proper 55.41/15.05 U131 < proper 55.41/15.05 U141 < proper 55.41/15.05 U151 < proper 55.41/15.05 U161 < proper 55.41/15.05 U171 < proper 55.41/15.05 U181 < proper 55.41/15.05 U191 < proper 55.41/15.05 U201 < proper 55.41/15.05 U211 < proper 55.41/15.05 U221 < proper 55.41/15.05 tail < proper 55.41/15.05 take < proper 55.41/15.05 sel < proper 55.41/15.05 proper < top 55.41/15.05 55.41/15.05 ---------------------------------------- 55.41/15.05 55.41/15.05 (47) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.05 Proved the following rewrite lemma: 55.41/15.05 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.05 55.41/15.05 Induction Base: 55.41/15.05 s(gen_tt:mark:nil:0':ok3_0(+(1, 0))) 55.41/15.05 55.41/15.05 Induction Step: 55.41/15.05 s(gen_tt:mark:nil:0':ok3_0(+(1, +(n29524_0, 1)))) ->_R^Omega(1) 55.41/15.05 mark(s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0)))) ->_IH 55.41/15.05 mark(*4_0) 55.41/15.05 55.41/15.05 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.05 ---------------------------------------- 55.41/15.05 55.41/15.05 (48) 55.41/15.05 Obligation: 55.41/15.05 TRS: 55.41/15.05 Rules: 55.41/15.05 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.05 active(U102(tt)) -> mark(tt) 55.41/15.05 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.05 active(U111(tt)) -> mark(tt) 55.41/15.05 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.05 active(U121(tt)) -> mark(tt) 55.41/15.05 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.05 active(U132(tt)) -> mark(tt) 55.41/15.05 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.05 active(U142(tt)) -> mark(tt) 55.41/15.05 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.05 active(U152(tt)) -> mark(tt) 55.41/15.05 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.05 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.05 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.05 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.05 active(U182(tt, Y)) -> mark(Y) 55.41/15.05 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.05 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.05 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.05 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.05 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.05 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.05 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.05 active(U212(tt, XS)) -> mark(XS) 55.41/15.05 active(U22(tt, X)) -> mark(X) 55.41/15.05 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.05 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.05 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.05 active(U32(tt, N)) -> mark(N) 55.41/15.05 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.05 active(U42(tt)) -> mark(tt) 55.41/15.05 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.05 active(U52(tt)) -> mark(tt) 55.41/15.05 active(U61(tt)) -> mark(tt) 55.41/15.05 active(U71(tt)) -> mark(tt) 55.41/15.05 active(U81(tt)) -> mark(tt) 55.41/15.05 active(U91(tt)) -> mark(tt) 55.41/15.05 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.05 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.05 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.05 active(isLNat(nil)) -> mark(tt) 55.41/15.05 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.05 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.05 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.05 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.05 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.05 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.05 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.05 active(isNatural(0')) -> mark(tt) 55.41/15.05 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.05 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.05 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.05 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.05 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.05 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.05 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.05 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.05 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.05 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.05 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.05 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.05 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.05 active(U102(X)) -> U102(active(X)) 55.41/15.05 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.05 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.05 active(U111(X)) -> U111(active(X)) 55.41/15.05 active(snd(X)) -> snd(active(X)) 55.41/15.05 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.05 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.05 active(U121(X)) -> U121(active(X)) 55.41/15.05 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.05 active(U132(X)) -> U132(active(X)) 55.41/15.05 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.05 active(U142(X)) -> U142(active(X)) 55.41/15.05 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.05 active(U152(X)) -> U152(active(X)) 55.41/15.05 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.05 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.05 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.05 active(s(X)) -> s(active(X)) 55.41/15.05 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.05 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.05 active(head(X)) -> head(active(X)) 55.41/15.05 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.05 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.05 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.05 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.05 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.05 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.05 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.05 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.05 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.05 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.05 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.05 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.05 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.05 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.05 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.05 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.05 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.05 active(fst(X)) -> fst(active(X)) 55.41/15.05 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.05 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.05 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.05 active(U42(X)) -> U42(active(X)) 55.41/15.05 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.05 active(U52(X)) -> U52(active(X)) 55.41/15.05 active(U61(X)) -> U61(active(X)) 55.41/15.05 active(U71(X)) -> U71(active(X)) 55.41/15.05 active(U81(X)) -> U81(active(X)) 55.41/15.05 active(U91(X)) -> U91(active(X)) 55.41/15.05 active(tail(X)) -> tail(active(X)) 55.41/15.05 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.05 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.05 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.05 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.05 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.05 U102(mark(X)) -> mark(U102(X)) 55.41/15.05 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.05 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.05 U111(mark(X)) -> mark(U111(X)) 55.41/15.05 snd(mark(X)) -> mark(snd(X)) 55.41/15.05 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.05 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.05 U121(mark(X)) -> mark(U121(X)) 55.41/15.05 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.05 U132(mark(X)) -> mark(U132(X)) 55.41/15.05 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.05 U142(mark(X)) -> mark(U142(X)) 55.41/15.05 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.05 U152(mark(X)) -> mark(U152(X)) 55.41/15.05 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.05 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.05 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.05 s(mark(X)) -> mark(s(X)) 55.41/15.05 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.05 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.05 head(mark(X)) -> mark(head(X)) 55.41/15.05 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.05 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.05 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.05 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.05 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.05 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.05 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.05 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.05 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.05 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.05 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.05 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.05 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.05 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.05 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.05 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.05 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.05 fst(mark(X)) -> mark(fst(X)) 55.41/15.05 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.05 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.05 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.05 U42(mark(X)) -> mark(U42(X)) 55.41/15.05 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.05 U52(mark(X)) -> mark(U52(X)) 55.41/15.05 U61(mark(X)) -> mark(U61(X)) 55.41/15.05 U71(mark(X)) -> mark(U71(X)) 55.41/15.05 U81(mark(X)) -> mark(U81(X)) 55.41/15.05 U91(mark(X)) -> mark(U91(X)) 55.41/15.05 tail(mark(X)) -> mark(tail(X)) 55.41/15.05 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.05 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.05 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.05 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.05 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.05 proper(tt) -> ok(tt) 55.41/15.05 proper(U102(X)) -> U102(proper(X)) 55.41/15.05 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.05 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(U111(X)) -> U111(proper(X)) 55.41/15.05 proper(snd(X)) -> snd(proper(X)) 55.41/15.05 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.05 proper(U121(X)) -> U121(proper(X)) 55.41/15.05 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.05 proper(U132(X)) -> U132(proper(X)) 55.41/15.05 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.05 proper(U142(X)) -> U142(proper(X)) 55.41/15.05 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.05 proper(U152(X)) -> U152(proper(X)) 55.41/15.05 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.05 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.05 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.05 proper(s(X)) -> s(proper(X)) 55.41/15.05 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(head(X)) -> head(proper(X)) 55.41/15.05 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.05 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.05 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.05 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.05 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.05 proper(nil) -> ok(nil) 55.41/15.05 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.05 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.05 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.05 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.05 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.05 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.05 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.05 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.05 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(fst(X)) -> fst(proper(X)) 55.41/15.05 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.05 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.05 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.05 proper(U42(X)) -> U42(proper(X)) 55.41/15.05 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.05 proper(U52(X)) -> U52(proper(X)) 55.41/15.05 proper(U61(X)) -> U61(proper(X)) 55.41/15.05 proper(U71(X)) -> U71(proper(X)) 55.41/15.05 proper(U81(X)) -> U81(proper(X)) 55.41/15.05 proper(U91(X)) -> U91(proper(X)) 55.41/15.05 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.05 proper(tail(X)) -> tail(proper(X)) 55.41/15.05 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.05 proper(0') -> ok(0') 55.41/15.05 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.05 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.05 U102(ok(X)) -> ok(U102(X)) 55.41/15.05 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.05 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.05 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.05 U111(ok(X)) -> ok(U111(X)) 55.41/15.05 snd(ok(X)) -> ok(snd(X)) 55.41/15.05 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.05 U121(ok(X)) -> ok(U121(X)) 55.41/15.05 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.05 U132(ok(X)) -> ok(U132(X)) 55.41/15.05 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.05 U142(ok(X)) -> ok(U142(X)) 55.41/15.05 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.05 U152(ok(X)) -> ok(U152(X)) 55.41/15.05 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.05 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.05 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.05 s(ok(X)) -> ok(s(X)) 55.41/15.05 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.05 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.05 head(ok(X)) -> ok(head(X)) 55.41/15.05 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.05 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.05 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.05 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.05 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.05 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.05 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.05 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.05 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.05 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.05 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.05 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.05 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.05 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.05 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.05 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.05 fst(ok(X)) -> ok(fst(X)) 55.41/15.05 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.05 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.05 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.05 U42(ok(X)) -> ok(U42(X)) 55.41/15.05 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.05 U52(ok(X)) -> ok(U52(X)) 55.41/15.05 U61(ok(X)) -> ok(U61(X)) 55.41/15.05 U71(ok(X)) -> ok(U71(X)) 55.41/15.05 U81(ok(X)) -> ok(U81(X)) 55.41/15.05 U91(ok(X)) -> ok(U91(X)) 55.41/15.05 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.05 tail(ok(X)) -> ok(tail(X)) 55.41/15.05 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.05 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.05 top(mark(X)) -> top(proper(X)) 55.41/15.05 top(ok(X)) -> top(active(X)) 55.41/15.05 55.41/15.05 Types: 55.41/15.05 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 tt :: tt:mark:nil:0':ok 55.41/15.05 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 nil :: tt:mark:nil:0':ok 55.41/15.05 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 55.41/15.05 U202 :: 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 55.41/15.05 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U203 :: 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 55.41/15.05 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 0' :: tt:mark:nil:0':ok 55.41/15.05 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.05 top :: tt:mark:nil:0':ok -> top 55.41/15.05 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.05 hole_top2_0 :: top 55.41/15.05 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.05 55.41/15.05 55.41/15.05 Lemmas: 55.41/15.05 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.05 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.05 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.05 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.05 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.05 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.05 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.05 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.05 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.05 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.05 55.41/15.05 55.41/15.05 Generator Equations: 55.41/15.05 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.05 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.05 55.41/15.05 55.41/15.05 The following defined symbols remain to be analysed: 55.41/15.05 U172, active, head, afterNth, U182, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.05 55.41/15.05 They will be analysed ascendingly in the following order: 55.41/15.05 U172 < active 55.41/15.05 head < active 55.41/15.05 afterNth < active 55.41/15.05 U182 < active 55.41/15.05 pair < active 55.41/15.05 U202 < active 55.41/15.05 isNatural < active 55.41/15.05 U203 < active 55.41/15.05 U204 < active 55.41/15.05 U22 < active 55.41/15.05 U212 < active 55.41/15.05 U222 < active 55.41/15.05 fst < active 55.41/15.05 U32 < active 55.41/15.05 U42 < active 55.41/15.05 U52 < active 55.41/15.05 U11 < active 55.41/15.05 U21 < active 55.41/15.05 U31 < active 55.41/15.05 U41 < active 55.41/15.05 U51 < active 55.41/15.05 U61 < active 55.41/15.05 isPLNat < active 55.41/15.05 U71 < active 55.41/15.05 U81 < active 55.41/15.05 U91 < active 55.41/15.05 U101 < active 55.41/15.05 U111 < active 55.41/15.05 U121 < active 55.41/15.05 U131 < active 55.41/15.05 U141 < active 55.41/15.05 U151 < active 55.41/15.05 U161 < active 55.41/15.05 U171 < active 55.41/15.05 U181 < active 55.41/15.05 U191 < active 55.41/15.05 U201 < active 55.41/15.05 U211 < active 55.41/15.05 U221 < active 55.41/15.05 tail < active 55.41/15.05 take < active 55.41/15.05 sel < active 55.41/15.05 active < top 55.41/15.05 U172 < proper 55.41/15.05 head < proper 55.41/15.05 afterNth < proper 55.41/15.05 U182 < proper 55.41/15.05 pair < proper 55.41/15.05 U202 < proper 55.41/15.05 isNatural < proper 55.41/15.05 U203 < proper 55.41/15.05 U204 < proper 55.41/15.05 U22 < proper 55.41/15.05 U212 < proper 55.41/15.05 U222 < proper 55.41/15.05 fst < proper 55.41/15.05 U32 < proper 55.41/15.05 U42 < proper 55.41/15.05 U52 < proper 55.41/15.05 U11 < proper 55.41/15.05 U21 < proper 55.41/15.05 U31 < proper 55.41/15.05 U41 < proper 55.41/15.05 U51 < proper 55.41/15.05 U61 < proper 55.41/15.05 isPLNat < proper 55.41/15.05 U71 < proper 55.41/15.05 U81 < proper 55.41/15.05 U91 < proper 55.41/15.05 U101 < proper 55.41/15.05 U111 < proper 55.41/15.05 U121 < proper 55.41/15.05 U131 < proper 55.41/15.05 U141 < proper 55.41/15.05 U151 < proper 55.41/15.05 U161 < proper 55.41/15.05 U171 < proper 55.41/15.05 U181 < proper 55.41/15.05 U191 < proper 55.41/15.05 U201 < proper 55.41/15.05 U211 < proper 55.41/15.05 U221 < proper 55.41/15.05 tail < proper 55.41/15.05 take < proper 55.41/15.05 sel < proper 55.41/15.05 proper < top 55.41/15.05 55.41/15.05 ---------------------------------------- 55.41/15.05 55.41/15.05 (49) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.05 Proved the following rewrite lemma: 55.41/15.05 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.05 55.41/15.05 Induction Base: 55.41/15.05 U172(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)) 55.41/15.05 55.41/15.05 Induction Step: 55.41/15.05 U172(gen_tt:mark:nil:0':ok3_0(+(1, +(n31745_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) ->_R^Omega(1) 55.41/15.05 mark(U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c))) ->_IH 55.41/15.05 mark(*4_0) 55.41/15.05 55.41/15.05 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.05 ---------------------------------------- 55.41/15.05 55.41/15.05 (50) 55.41/15.05 Obligation: 55.41/15.05 TRS: 55.41/15.05 Rules: 55.41/15.05 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.05 active(U102(tt)) -> mark(tt) 55.41/15.05 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.05 active(U111(tt)) -> mark(tt) 55.41/15.05 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.05 active(U121(tt)) -> mark(tt) 55.41/15.05 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.05 active(U132(tt)) -> mark(tt) 55.41/15.05 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.05 active(U142(tt)) -> mark(tt) 55.41/15.05 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.05 active(U152(tt)) -> mark(tt) 55.41/15.05 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.05 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.05 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.05 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.05 active(U182(tt, Y)) -> mark(Y) 55.41/15.05 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.05 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.05 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.05 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.05 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.05 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.05 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.05 active(U212(tt, XS)) -> mark(XS) 55.41/15.05 active(U22(tt, X)) -> mark(X) 55.41/15.05 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.05 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.05 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.05 active(U32(tt, N)) -> mark(N) 55.41/15.05 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.05 active(U42(tt)) -> mark(tt) 55.41/15.05 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.05 active(U52(tt)) -> mark(tt) 55.41/15.05 active(U61(tt)) -> mark(tt) 55.41/15.05 active(U71(tt)) -> mark(tt) 55.41/15.05 active(U81(tt)) -> mark(tt) 55.41/15.05 active(U91(tt)) -> mark(tt) 55.41/15.05 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.05 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.05 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.05 active(isLNat(nil)) -> mark(tt) 55.41/15.05 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.05 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.05 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.05 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.05 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.05 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.05 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.05 active(isNatural(0')) -> mark(tt) 55.41/15.05 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.05 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.05 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.05 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.05 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.05 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.05 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.05 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.05 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.05 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.05 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.05 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.05 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.05 active(U102(X)) -> U102(active(X)) 55.41/15.05 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.05 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.05 active(U111(X)) -> U111(active(X)) 55.41/15.05 active(snd(X)) -> snd(active(X)) 55.41/15.05 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.05 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.05 active(U121(X)) -> U121(active(X)) 55.41/15.05 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.05 active(U132(X)) -> U132(active(X)) 55.41/15.05 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.05 active(U142(X)) -> U142(active(X)) 55.41/15.05 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.05 active(U152(X)) -> U152(active(X)) 55.41/15.05 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.05 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.05 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.05 active(s(X)) -> s(active(X)) 55.41/15.05 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.05 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.05 active(head(X)) -> head(active(X)) 55.41/15.05 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.05 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.05 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.05 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.05 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.05 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.05 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.05 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.05 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.05 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.05 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.05 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.05 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.05 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.05 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.05 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.05 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.05 active(fst(X)) -> fst(active(X)) 55.41/15.05 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.05 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.05 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.05 active(U42(X)) -> U42(active(X)) 55.41/15.05 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.05 active(U52(X)) -> U52(active(X)) 55.41/15.05 active(U61(X)) -> U61(active(X)) 55.41/15.05 active(U71(X)) -> U71(active(X)) 55.41/15.05 active(U81(X)) -> U81(active(X)) 55.41/15.05 active(U91(X)) -> U91(active(X)) 55.41/15.05 active(tail(X)) -> tail(active(X)) 55.41/15.05 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.05 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.05 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.05 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.05 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.05 U102(mark(X)) -> mark(U102(X)) 55.41/15.05 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.05 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.05 U111(mark(X)) -> mark(U111(X)) 55.41/15.05 snd(mark(X)) -> mark(snd(X)) 55.41/15.05 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.05 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.05 U121(mark(X)) -> mark(U121(X)) 55.41/15.05 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.05 U132(mark(X)) -> mark(U132(X)) 55.41/15.05 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.05 U142(mark(X)) -> mark(U142(X)) 55.41/15.05 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.05 U152(mark(X)) -> mark(U152(X)) 55.41/15.05 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.05 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.05 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.05 s(mark(X)) -> mark(s(X)) 55.41/15.05 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.05 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.05 head(mark(X)) -> mark(head(X)) 55.41/15.05 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.05 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.05 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.05 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.05 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.05 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.05 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.05 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.05 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.05 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.05 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.05 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.05 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.05 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.05 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.05 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.05 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.05 fst(mark(X)) -> mark(fst(X)) 55.41/15.05 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.06 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.06 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.06 U42(mark(X)) -> mark(U42(X)) 55.41/15.06 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.06 U52(mark(X)) -> mark(U52(X)) 55.41/15.06 U61(mark(X)) -> mark(U61(X)) 55.41/15.06 U71(mark(X)) -> mark(U71(X)) 55.41/15.06 U81(mark(X)) -> mark(U81(X)) 55.41/15.06 U91(mark(X)) -> mark(U91(X)) 55.41/15.06 tail(mark(X)) -> mark(tail(X)) 55.41/15.06 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.06 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.06 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.06 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.06 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.06 proper(tt) -> ok(tt) 55.41/15.06 proper(U102(X)) -> U102(proper(X)) 55.41/15.06 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.06 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(U111(X)) -> U111(proper(X)) 55.41/15.06 proper(snd(X)) -> snd(proper(X)) 55.41/15.06 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.06 proper(U121(X)) -> U121(proper(X)) 55.41/15.06 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.06 proper(U132(X)) -> U132(proper(X)) 55.41/15.06 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.06 proper(U142(X)) -> U142(proper(X)) 55.41/15.06 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.06 proper(U152(X)) -> U152(proper(X)) 55.41/15.06 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.06 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.06 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.06 proper(s(X)) -> s(proper(X)) 55.41/15.06 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(head(X)) -> head(proper(X)) 55.41/15.06 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.06 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.06 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.06 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.06 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.06 proper(nil) -> ok(nil) 55.41/15.06 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.06 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.06 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.06 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.06 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.06 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.06 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.06 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.06 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(fst(X)) -> fst(proper(X)) 55.41/15.06 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.06 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.06 proper(U42(X)) -> U42(proper(X)) 55.41/15.06 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.06 proper(U52(X)) -> U52(proper(X)) 55.41/15.06 proper(U61(X)) -> U61(proper(X)) 55.41/15.06 proper(U71(X)) -> U71(proper(X)) 55.41/15.06 proper(U81(X)) -> U81(proper(X)) 55.41/15.06 proper(U91(X)) -> U91(proper(X)) 55.41/15.06 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.06 proper(tail(X)) -> tail(proper(X)) 55.41/15.06 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.06 proper(0') -> ok(0') 55.41/15.06 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.06 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.06 U102(ok(X)) -> ok(U102(X)) 55.41/15.06 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.06 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.06 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.06 U111(ok(X)) -> ok(U111(X)) 55.41/15.06 snd(ok(X)) -> ok(snd(X)) 55.41/15.06 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.06 U121(ok(X)) -> ok(U121(X)) 55.41/15.06 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.06 U132(ok(X)) -> ok(U132(X)) 55.41/15.06 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.06 U142(ok(X)) -> ok(U142(X)) 55.41/15.06 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.06 U152(ok(X)) -> ok(U152(X)) 55.41/15.06 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.06 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.06 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.06 s(ok(X)) -> ok(s(X)) 55.41/15.06 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.06 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.06 head(ok(X)) -> ok(head(X)) 55.41/15.06 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.06 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.06 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.06 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.06 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.06 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.06 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.06 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.06 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.06 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.06 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.06 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.06 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.06 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.06 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.06 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.06 fst(ok(X)) -> ok(fst(X)) 55.41/15.06 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.06 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.06 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.06 U42(ok(X)) -> ok(U42(X)) 55.41/15.06 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.06 U52(ok(X)) -> ok(U52(X)) 55.41/15.06 U61(ok(X)) -> ok(U61(X)) 55.41/15.06 U71(ok(X)) -> ok(U71(X)) 55.41/15.06 U81(ok(X)) -> ok(U81(X)) 55.41/15.06 U91(ok(X)) -> ok(U91(X)) 55.41/15.06 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.06 tail(ok(X)) -> ok(tail(X)) 55.41/15.06 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.06 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.06 top(mark(X)) -> top(proper(X)) 55.41/15.06 top(ok(X)) -> top(active(X)) 55.41/15.06 55.41/15.06 Types: 55.41/15.06 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 tt :: tt:mark:nil:0':ok 55.41/15.06 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 nil :: tt:mark:nil:0':ok 55.41/15.06 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 55.41/15.06 U202 :: 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 55.41/15.06 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U203 :: 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 55.41/15.06 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 0' :: tt:mark:nil:0':ok 55.41/15.06 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 top :: tt:mark:nil:0':ok -> top 55.41/15.06 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.06 hole_top2_0 :: top 55.41/15.06 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.06 55.41/15.06 55.41/15.06 Lemmas: 55.41/15.06 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.06 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.06 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.06 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.06 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.06 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.06 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.06 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.06 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.06 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.06 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.06 55.41/15.06 55.41/15.06 Generator Equations: 55.41/15.06 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.06 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.06 55.41/15.06 55.41/15.06 The following defined symbols remain to be analysed: 55.41/15.06 head, active, afterNth, U182, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.06 55.41/15.06 They will be analysed ascendingly in the following order: 55.41/15.06 head < active 55.41/15.06 afterNth < active 55.41/15.06 U182 < active 55.41/15.06 pair < active 55.41/15.06 U202 < active 55.41/15.06 isNatural < active 55.41/15.06 U203 < active 55.41/15.06 U204 < active 55.41/15.06 U22 < active 55.41/15.06 U212 < active 55.41/15.06 U222 < active 55.41/15.06 fst < active 55.41/15.06 U32 < active 55.41/15.06 U42 < active 55.41/15.06 U52 < active 55.41/15.06 U11 < active 55.41/15.06 U21 < active 55.41/15.06 U31 < active 55.41/15.06 U41 < active 55.41/15.06 U51 < active 55.41/15.06 U61 < active 55.41/15.06 isPLNat < active 55.41/15.06 U71 < active 55.41/15.06 U81 < active 55.41/15.06 U91 < active 55.41/15.06 U101 < active 55.41/15.06 U111 < active 55.41/15.06 U121 < active 55.41/15.06 U131 < active 55.41/15.06 U141 < active 55.41/15.06 U151 < active 55.41/15.06 U161 < active 55.41/15.06 U171 < active 55.41/15.06 U181 < active 55.41/15.06 U191 < active 55.41/15.06 U201 < active 55.41/15.06 U211 < active 55.41/15.06 U221 < active 55.41/15.06 tail < active 55.41/15.06 take < active 55.41/15.06 sel < active 55.41/15.06 active < top 55.41/15.06 head < proper 55.41/15.06 afterNth < proper 55.41/15.06 U182 < proper 55.41/15.06 pair < proper 55.41/15.06 U202 < proper 55.41/15.06 isNatural < proper 55.41/15.06 U203 < proper 55.41/15.06 U204 < proper 55.41/15.06 U22 < proper 55.41/15.06 U212 < proper 55.41/15.06 U222 < proper 55.41/15.06 fst < proper 55.41/15.06 U32 < proper 55.41/15.06 U42 < proper 55.41/15.06 U52 < proper 55.41/15.06 U11 < proper 55.41/15.06 U21 < proper 55.41/15.06 U31 < proper 55.41/15.06 U41 < proper 55.41/15.06 U51 < proper 55.41/15.06 U61 < proper 55.41/15.06 isPLNat < proper 55.41/15.06 U71 < proper 55.41/15.06 U81 < proper 55.41/15.06 U91 < proper 55.41/15.06 U101 < proper 55.41/15.06 U111 < proper 55.41/15.06 U121 < proper 55.41/15.06 U131 < proper 55.41/15.06 U141 < proper 55.41/15.06 U151 < proper 55.41/15.06 U161 < proper 55.41/15.06 U171 < proper 55.41/15.06 U181 < proper 55.41/15.06 U191 < proper 55.41/15.06 U201 < proper 55.41/15.06 U211 < proper 55.41/15.06 U221 < proper 55.41/15.06 tail < proper 55.41/15.06 take < proper 55.41/15.06 sel < proper 55.41/15.06 proper < top 55.41/15.06 55.41/15.06 ---------------------------------------- 55.41/15.06 55.41/15.06 (51) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.06 Proved the following rewrite lemma: 55.41/15.06 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.06 55.41/15.06 Induction Base: 55.41/15.06 head(gen_tt:mark:nil:0':ok3_0(+(1, 0))) 55.41/15.06 55.41/15.06 Induction Step: 55.41/15.06 head(gen_tt:mark:nil:0':ok3_0(+(1, +(n43161_0, 1)))) ->_R^Omega(1) 55.41/15.06 mark(head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0)))) ->_IH 55.41/15.06 mark(*4_0) 55.41/15.06 55.41/15.06 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.06 ---------------------------------------- 55.41/15.06 55.41/15.06 (52) 55.41/15.06 Obligation: 55.41/15.06 TRS: 55.41/15.06 Rules: 55.41/15.06 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.06 active(U102(tt)) -> mark(tt) 55.41/15.06 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.06 active(U111(tt)) -> mark(tt) 55.41/15.06 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.06 active(U121(tt)) -> mark(tt) 55.41/15.06 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.06 active(U132(tt)) -> mark(tt) 55.41/15.06 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.06 active(U142(tt)) -> mark(tt) 55.41/15.06 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.06 active(U152(tt)) -> mark(tt) 55.41/15.06 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.06 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.06 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.06 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.06 active(U182(tt, Y)) -> mark(Y) 55.41/15.06 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.06 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.06 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.06 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.06 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.06 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.06 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.06 active(U212(tt, XS)) -> mark(XS) 55.41/15.06 active(U22(tt, X)) -> mark(X) 55.41/15.06 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.06 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.06 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.06 active(U32(tt, N)) -> mark(N) 55.41/15.06 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.06 active(U42(tt)) -> mark(tt) 55.41/15.06 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.06 active(U52(tt)) -> mark(tt) 55.41/15.06 active(U61(tt)) -> mark(tt) 55.41/15.06 active(U71(tt)) -> mark(tt) 55.41/15.06 active(U81(tt)) -> mark(tt) 55.41/15.06 active(U91(tt)) -> mark(tt) 55.41/15.06 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.06 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.06 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.06 active(isLNat(nil)) -> mark(tt) 55.41/15.06 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.06 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.06 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.06 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.06 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.06 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.06 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.06 active(isNatural(0')) -> mark(tt) 55.41/15.06 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.06 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.06 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.06 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.06 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.06 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.06 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.06 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.06 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.06 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.06 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.06 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.06 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.06 active(U102(X)) -> U102(active(X)) 55.41/15.06 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.06 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.06 active(U111(X)) -> U111(active(X)) 55.41/15.06 active(snd(X)) -> snd(active(X)) 55.41/15.06 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.06 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.06 active(U121(X)) -> U121(active(X)) 55.41/15.06 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.06 active(U132(X)) -> U132(active(X)) 55.41/15.06 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.06 active(U142(X)) -> U142(active(X)) 55.41/15.06 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.06 active(U152(X)) -> U152(active(X)) 55.41/15.06 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.06 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.06 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.06 active(s(X)) -> s(active(X)) 55.41/15.06 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.06 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.06 active(head(X)) -> head(active(X)) 55.41/15.06 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.06 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.06 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.06 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.06 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.06 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.06 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.06 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.06 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.06 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.06 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.06 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.06 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.06 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.06 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.06 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.06 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.06 active(fst(X)) -> fst(active(X)) 55.41/15.06 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.06 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.06 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.06 active(U42(X)) -> U42(active(X)) 55.41/15.06 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.06 active(U52(X)) -> U52(active(X)) 55.41/15.06 active(U61(X)) -> U61(active(X)) 55.41/15.06 active(U71(X)) -> U71(active(X)) 55.41/15.06 active(U81(X)) -> U81(active(X)) 55.41/15.06 active(U91(X)) -> U91(active(X)) 55.41/15.06 active(tail(X)) -> tail(active(X)) 55.41/15.06 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.06 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.06 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.06 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.06 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.06 U102(mark(X)) -> mark(U102(X)) 55.41/15.06 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.06 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.06 U111(mark(X)) -> mark(U111(X)) 55.41/15.06 snd(mark(X)) -> mark(snd(X)) 55.41/15.06 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.06 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.06 U121(mark(X)) -> mark(U121(X)) 55.41/15.06 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.06 U132(mark(X)) -> mark(U132(X)) 55.41/15.06 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.06 U142(mark(X)) -> mark(U142(X)) 55.41/15.06 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.06 U152(mark(X)) -> mark(U152(X)) 55.41/15.06 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.06 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.06 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.06 s(mark(X)) -> mark(s(X)) 55.41/15.06 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.06 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.06 head(mark(X)) -> mark(head(X)) 55.41/15.06 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.06 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.06 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.06 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.06 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.06 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.06 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.06 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.06 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.06 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.06 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.06 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.06 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.06 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.06 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.06 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.06 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.06 fst(mark(X)) -> mark(fst(X)) 55.41/15.06 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.06 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.06 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.06 U42(mark(X)) -> mark(U42(X)) 55.41/15.06 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.06 U52(mark(X)) -> mark(U52(X)) 55.41/15.06 U61(mark(X)) -> mark(U61(X)) 55.41/15.06 U71(mark(X)) -> mark(U71(X)) 55.41/15.06 U81(mark(X)) -> mark(U81(X)) 55.41/15.06 U91(mark(X)) -> mark(U91(X)) 55.41/15.06 tail(mark(X)) -> mark(tail(X)) 55.41/15.06 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.06 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.06 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.06 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.06 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.06 proper(tt) -> ok(tt) 55.41/15.06 proper(U102(X)) -> U102(proper(X)) 55.41/15.06 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.06 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(U111(X)) -> U111(proper(X)) 55.41/15.06 proper(snd(X)) -> snd(proper(X)) 55.41/15.06 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.06 proper(U121(X)) -> U121(proper(X)) 55.41/15.06 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.06 proper(U132(X)) -> U132(proper(X)) 55.41/15.06 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.06 proper(U142(X)) -> U142(proper(X)) 55.41/15.06 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.06 proper(U152(X)) -> U152(proper(X)) 55.41/15.06 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.06 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.06 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.06 proper(s(X)) -> s(proper(X)) 55.41/15.06 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(head(X)) -> head(proper(X)) 55.41/15.06 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.06 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.06 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.06 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.06 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.06 proper(nil) -> ok(nil) 55.41/15.06 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.06 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.06 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.06 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.06 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.06 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.06 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.06 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.06 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(fst(X)) -> fst(proper(X)) 55.41/15.06 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.06 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.06 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.06 proper(U42(X)) -> U42(proper(X)) 55.41/15.06 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.06 proper(U52(X)) -> U52(proper(X)) 55.41/15.06 proper(U61(X)) -> U61(proper(X)) 55.41/15.06 proper(U71(X)) -> U71(proper(X)) 55.41/15.06 proper(U81(X)) -> U81(proper(X)) 55.41/15.06 proper(U91(X)) -> U91(proper(X)) 55.41/15.06 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.06 proper(tail(X)) -> tail(proper(X)) 55.41/15.06 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.06 proper(0') -> ok(0') 55.41/15.06 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.06 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.06 U102(ok(X)) -> ok(U102(X)) 55.41/15.06 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.06 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.06 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.06 U111(ok(X)) -> ok(U111(X)) 55.41/15.06 snd(ok(X)) -> ok(snd(X)) 55.41/15.06 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.06 U121(ok(X)) -> ok(U121(X)) 55.41/15.06 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.06 U132(ok(X)) -> ok(U132(X)) 55.41/15.06 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.06 U142(ok(X)) -> ok(U142(X)) 55.41/15.06 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.06 U152(ok(X)) -> ok(U152(X)) 55.41/15.06 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.06 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.06 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.06 s(ok(X)) -> ok(s(X)) 55.41/15.06 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.06 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.06 head(ok(X)) -> ok(head(X)) 55.41/15.06 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.06 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.06 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.06 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.06 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.06 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.06 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.06 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.06 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.06 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.06 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.06 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.06 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.06 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.06 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.06 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.06 fst(ok(X)) -> ok(fst(X)) 55.41/15.06 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.06 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.06 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.06 U42(ok(X)) -> ok(U42(X)) 55.41/15.06 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.06 U52(ok(X)) -> ok(U52(X)) 55.41/15.06 U61(ok(X)) -> ok(U61(X)) 55.41/15.06 U71(ok(X)) -> ok(U71(X)) 55.41/15.06 U81(ok(X)) -> ok(U81(X)) 55.41/15.06 U91(ok(X)) -> ok(U91(X)) 55.41/15.06 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.06 tail(ok(X)) -> ok(tail(X)) 55.41/15.06 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.06 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.06 top(mark(X)) -> top(proper(X)) 55.41/15.06 top(ok(X)) -> top(active(X)) 55.41/15.06 55.41/15.06 Types: 55.41/15.06 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 tt :: tt:mark:nil:0':ok 55.41/15.06 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 nil :: tt:mark:nil:0':ok 55.41/15.06 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 55.41/15.06 U202 :: 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 55.41/15.06 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U203 :: 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 55.41/15.06 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.06 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 0' :: tt:mark:nil:0':ok 55.41/15.07 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 top :: tt:mark:nil:0':ok -> top 55.41/15.07 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.07 hole_top2_0 :: top 55.41/15.07 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.07 55.41/15.07 55.41/15.07 Lemmas: 55.41/15.07 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.07 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.07 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.07 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.07 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.07 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.07 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.07 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.07 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.07 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.07 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.07 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.07 55.41/15.07 55.41/15.07 Generator Equations: 55.41/15.07 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.07 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.07 55.41/15.07 55.41/15.07 The following defined symbols remain to be analysed: 55.41/15.07 afterNth, active, U182, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.07 55.41/15.07 They will be analysed ascendingly in the following order: 55.41/15.07 afterNth < active 55.41/15.07 U182 < active 55.41/15.07 pair < active 55.41/15.07 U202 < active 55.41/15.07 isNatural < active 55.41/15.07 U203 < active 55.41/15.07 U204 < active 55.41/15.07 U22 < active 55.41/15.07 U212 < active 55.41/15.07 U222 < active 55.41/15.07 fst < active 55.41/15.07 U32 < active 55.41/15.07 U42 < active 55.41/15.07 U52 < active 55.41/15.07 U11 < active 55.41/15.07 U21 < active 55.41/15.07 U31 < active 55.41/15.07 U41 < active 55.41/15.07 U51 < active 55.41/15.07 U61 < active 55.41/15.07 isPLNat < active 55.41/15.07 U71 < active 55.41/15.07 U81 < active 55.41/15.07 U91 < active 55.41/15.07 U101 < active 55.41/15.07 U111 < active 55.41/15.07 U121 < active 55.41/15.07 U131 < active 55.41/15.07 U141 < active 55.41/15.07 U151 < active 55.41/15.07 U161 < active 55.41/15.07 U171 < active 55.41/15.07 U181 < active 55.41/15.07 U191 < active 55.41/15.07 U201 < active 55.41/15.07 U211 < active 55.41/15.07 U221 < active 55.41/15.07 tail < active 55.41/15.07 take < active 55.41/15.07 sel < active 55.41/15.07 active < top 55.41/15.07 afterNth < proper 55.41/15.07 U182 < proper 55.41/15.07 pair < proper 55.41/15.07 U202 < proper 55.41/15.07 isNatural < proper 55.41/15.07 U203 < proper 55.41/15.07 U204 < proper 55.41/15.07 U22 < proper 55.41/15.07 U212 < proper 55.41/15.07 U222 < proper 55.41/15.07 fst < proper 55.41/15.07 U32 < proper 55.41/15.07 U42 < proper 55.41/15.07 U52 < proper 55.41/15.07 U11 < proper 55.41/15.07 U21 < proper 55.41/15.07 U31 < proper 55.41/15.07 U41 < proper 55.41/15.07 U51 < proper 55.41/15.07 U61 < proper 55.41/15.07 isPLNat < proper 55.41/15.07 U71 < proper 55.41/15.07 U81 < proper 55.41/15.07 U91 < proper 55.41/15.07 U101 < proper 55.41/15.07 U111 < proper 55.41/15.07 U121 < proper 55.41/15.07 U131 < proper 55.41/15.07 U141 < proper 55.41/15.07 U151 < proper 55.41/15.07 U161 < proper 55.41/15.07 U171 < proper 55.41/15.07 U181 < proper 55.41/15.07 U191 < proper 55.41/15.07 U201 < proper 55.41/15.07 U211 < proper 55.41/15.07 U221 < proper 55.41/15.07 tail < proper 55.41/15.07 take < proper 55.41/15.07 sel < proper 55.41/15.07 proper < top 55.41/15.07 55.41/15.07 ---------------------------------------- 55.41/15.07 55.41/15.07 (53) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.07 Proved the following rewrite lemma: 55.41/15.07 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.07 55.41/15.07 Induction Base: 55.41/15.07 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) 55.41/15.07 55.41/15.07 Induction Step: 55.41/15.07 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, +(n45682_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) 55.41/15.07 mark(afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH 55.41/15.07 mark(*4_0) 55.41/15.07 55.41/15.07 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.07 ---------------------------------------- 55.41/15.07 55.41/15.07 (54) 55.41/15.07 Obligation: 55.41/15.07 TRS: 55.41/15.07 Rules: 55.41/15.07 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.07 active(U102(tt)) -> mark(tt) 55.41/15.07 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.07 active(U111(tt)) -> mark(tt) 55.41/15.07 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.07 active(U121(tt)) -> mark(tt) 55.41/15.07 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.07 active(U132(tt)) -> mark(tt) 55.41/15.07 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.07 active(U142(tt)) -> mark(tt) 55.41/15.07 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.07 active(U152(tt)) -> mark(tt) 55.41/15.07 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.07 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.07 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.07 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.07 active(U182(tt, Y)) -> mark(Y) 55.41/15.07 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.07 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.07 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.07 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.07 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.07 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.07 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.07 active(U212(tt, XS)) -> mark(XS) 55.41/15.07 active(U22(tt, X)) -> mark(X) 55.41/15.07 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.07 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.07 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.07 active(U32(tt, N)) -> mark(N) 55.41/15.07 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.07 active(U42(tt)) -> mark(tt) 55.41/15.07 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.07 active(U52(tt)) -> mark(tt) 55.41/15.07 active(U61(tt)) -> mark(tt) 55.41/15.07 active(U71(tt)) -> mark(tt) 55.41/15.07 active(U81(tt)) -> mark(tt) 55.41/15.07 active(U91(tt)) -> mark(tt) 55.41/15.07 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.07 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.07 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.07 active(isLNat(nil)) -> mark(tt) 55.41/15.07 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.07 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.07 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.07 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.07 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.07 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.07 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.07 active(isNatural(0')) -> mark(tt) 55.41/15.07 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.07 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.07 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.07 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.07 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.07 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.07 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.07 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.07 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.07 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.07 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.07 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.07 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.07 active(U102(X)) -> U102(active(X)) 55.41/15.07 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.07 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.07 active(U111(X)) -> U111(active(X)) 55.41/15.07 active(snd(X)) -> snd(active(X)) 55.41/15.07 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.07 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.07 active(U121(X)) -> U121(active(X)) 55.41/15.07 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.07 active(U132(X)) -> U132(active(X)) 55.41/15.07 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.07 active(U142(X)) -> U142(active(X)) 55.41/15.07 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.07 active(U152(X)) -> U152(active(X)) 55.41/15.07 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.07 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.07 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.07 active(s(X)) -> s(active(X)) 55.41/15.07 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.07 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.07 active(head(X)) -> head(active(X)) 55.41/15.07 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.07 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.07 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.07 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.07 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.07 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.07 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.07 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.07 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.07 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.07 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.07 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.07 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.07 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.07 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.07 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.07 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.07 active(fst(X)) -> fst(active(X)) 55.41/15.07 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.07 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.07 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.07 active(U42(X)) -> U42(active(X)) 55.41/15.07 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.07 active(U52(X)) -> U52(active(X)) 55.41/15.07 active(U61(X)) -> U61(active(X)) 55.41/15.07 active(U71(X)) -> U71(active(X)) 55.41/15.07 active(U81(X)) -> U81(active(X)) 55.41/15.07 active(U91(X)) -> U91(active(X)) 55.41/15.07 active(tail(X)) -> tail(active(X)) 55.41/15.07 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.07 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.07 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.07 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.07 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.07 U102(mark(X)) -> mark(U102(X)) 55.41/15.07 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.07 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.07 U111(mark(X)) -> mark(U111(X)) 55.41/15.07 snd(mark(X)) -> mark(snd(X)) 55.41/15.07 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.07 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.07 U121(mark(X)) -> mark(U121(X)) 55.41/15.07 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.07 U132(mark(X)) -> mark(U132(X)) 55.41/15.07 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.07 U142(mark(X)) -> mark(U142(X)) 55.41/15.07 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.07 U152(mark(X)) -> mark(U152(X)) 55.41/15.07 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.07 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.07 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.07 s(mark(X)) -> mark(s(X)) 55.41/15.07 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.07 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.07 head(mark(X)) -> mark(head(X)) 55.41/15.07 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.07 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.07 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.07 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.07 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.07 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.07 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.07 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.07 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.07 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.07 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.07 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.07 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.07 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.07 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.07 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.07 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.07 fst(mark(X)) -> mark(fst(X)) 55.41/15.07 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.07 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.07 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.07 U42(mark(X)) -> mark(U42(X)) 55.41/15.07 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.07 U52(mark(X)) -> mark(U52(X)) 55.41/15.07 U61(mark(X)) -> mark(U61(X)) 55.41/15.07 U71(mark(X)) -> mark(U71(X)) 55.41/15.07 U81(mark(X)) -> mark(U81(X)) 55.41/15.07 U91(mark(X)) -> mark(U91(X)) 55.41/15.07 tail(mark(X)) -> mark(tail(X)) 55.41/15.07 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.07 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.07 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.07 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.07 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.07 proper(tt) -> ok(tt) 55.41/15.07 proper(U102(X)) -> U102(proper(X)) 55.41/15.07 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.07 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U111(X)) -> U111(proper(X)) 55.41/15.07 proper(snd(X)) -> snd(proper(X)) 55.41/15.07 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.07 proper(U121(X)) -> U121(proper(X)) 55.41/15.07 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.07 proper(U132(X)) -> U132(proper(X)) 55.41/15.07 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.07 proper(U142(X)) -> U142(proper(X)) 55.41/15.07 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.07 proper(U152(X)) -> U152(proper(X)) 55.41/15.07 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.07 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.07 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.07 proper(s(X)) -> s(proper(X)) 55.41/15.07 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(head(X)) -> head(proper(X)) 55.41/15.07 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.07 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.07 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.07 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.07 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.07 proper(nil) -> ok(nil) 55.41/15.07 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.07 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.07 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.07 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.07 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.07 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.07 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.07 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.07 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(fst(X)) -> fst(proper(X)) 55.41/15.07 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.07 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.07 proper(U42(X)) -> U42(proper(X)) 55.41/15.07 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.07 proper(U52(X)) -> U52(proper(X)) 55.41/15.07 proper(U61(X)) -> U61(proper(X)) 55.41/15.07 proper(U71(X)) -> U71(proper(X)) 55.41/15.07 proper(U81(X)) -> U81(proper(X)) 55.41/15.07 proper(U91(X)) -> U91(proper(X)) 55.41/15.07 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.07 proper(tail(X)) -> tail(proper(X)) 55.41/15.07 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.07 proper(0') -> ok(0') 55.41/15.07 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.07 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.07 U102(ok(X)) -> ok(U102(X)) 55.41/15.07 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.07 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.07 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.07 U111(ok(X)) -> ok(U111(X)) 55.41/15.07 snd(ok(X)) -> ok(snd(X)) 55.41/15.07 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.07 U121(ok(X)) -> ok(U121(X)) 55.41/15.07 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.07 U132(ok(X)) -> ok(U132(X)) 55.41/15.07 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.07 U142(ok(X)) -> ok(U142(X)) 55.41/15.07 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.07 U152(ok(X)) -> ok(U152(X)) 55.41/15.07 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.07 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.07 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.07 s(ok(X)) -> ok(s(X)) 55.41/15.07 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.07 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.07 head(ok(X)) -> ok(head(X)) 55.41/15.07 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.07 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.07 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.07 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.07 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.07 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.07 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.07 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.07 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.07 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.07 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.07 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.07 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.07 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.07 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.07 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.07 fst(ok(X)) -> ok(fst(X)) 55.41/15.07 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.07 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.07 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.07 U42(ok(X)) -> ok(U42(X)) 55.41/15.07 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.07 U52(ok(X)) -> ok(U52(X)) 55.41/15.07 U61(ok(X)) -> ok(U61(X)) 55.41/15.07 U71(ok(X)) -> ok(U71(X)) 55.41/15.07 U81(ok(X)) -> ok(U81(X)) 55.41/15.07 U91(ok(X)) -> ok(U91(X)) 55.41/15.07 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.07 tail(ok(X)) -> ok(tail(X)) 55.41/15.07 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.07 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.07 top(mark(X)) -> top(proper(X)) 55.41/15.07 top(ok(X)) -> top(active(X)) 55.41/15.07 55.41/15.07 Types: 55.41/15.07 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 tt :: tt:mark:nil:0':ok 55.41/15.07 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 nil :: tt:mark:nil:0':ok 55.41/15.07 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 55.41/15.07 U202 :: 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 55.41/15.07 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U203 :: 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 55.41/15.07 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 0' :: tt:mark:nil:0':ok 55.41/15.07 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 top :: tt:mark:nil:0':ok -> top 55.41/15.07 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.07 hole_top2_0 :: top 55.41/15.07 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.07 55.41/15.07 55.41/15.07 Lemmas: 55.41/15.07 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.07 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.07 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.07 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.07 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.07 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.07 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.07 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.07 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.07 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.07 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.07 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.07 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.07 55.41/15.07 55.41/15.07 Generator Equations: 55.41/15.07 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.07 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.07 55.41/15.07 55.41/15.07 The following defined symbols remain to be analysed: 55.41/15.07 U182, active, pair, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.07 55.41/15.07 They will be analysed ascendingly in the following order: 55.41/15.07 U182 < active 55.41/15.07 pair < active 55.41/15.07 U202 < active 55.41/15.07 isNatural < active 55.41/15.07 U203 < active 55.41/15.07 U204 < active 55.41/15.07 U22 < active 55.41/15.07 U212 < active 55.41/15.07 U222 < active 55.41/15.07 fst < active 55.41/15.07 U32 < active 55.41/15.07 U42 < active 55.41/15.07 U52 < active 55.41/15.07 U11 < active 55.41/15.07 U21 < active 55.41/15.07 U31 < active 55.41/15.07 U41 < active 55.41/15.07 U51 < active 55.41/15.07 U61 < active 55.41/15.07 isPLNat < active 55.41/15.07 U71 < active 55.41/15.07 U81 < active 55.41/15.07 U91 < active 55.41/15.07 U101 < active 55.41/15.07 U111 < active 55.41/15.07 U121 < active 55.41/15.07 U131 < active 55.41/15.07 U141 < active 55.41/15.07 U151 < active 55.41/15.07 U161 < active 55.41/15.07 U171 < active 55.41/15.07 U181 < active 55.41/15.07 U191 < active 55.41/15.07 U201 < active 55.41/15.07 U211 < active 55.41/15.07 U221 < active 55.41/15.07 tail < active 55.41/15.07 take < active 55.41/15.07 sel < active 55.41/15.07 active < top 55.41/15.07 U182 < proper 55.41/15.07 pair < proper 55.41/15.07 U202 < proper 55.41/15.07 isNatural < proper 55.41/15.07 U203 < proper 55.41/15.07 U204 < proper 55.41/15.07 U22 < proper 55.41/15.07 U212 < proper 55.41/15.07 U222 < proper 55.41/15.07 fst < proper 55.41/15.07 U32 < proper 55.41/15.07 U42 < proper 55.41/15.07 U52 < proper 55.41/15.07 U11 < proper 55.41/15.07 U21 < proper 55.41/15.07 U31 < proper 55.41/15.07 U41 < proper 55.41/15.07 U51 < proper 55.41/15.07 U61 < proper 55.41/15.07 isPLNat < proper 55.41/15.07 U71 < proper 55.41/15.07 U81 < proper 55.41/15.07 U91 < proper 55.41/15.07 U101 < proper 55.41/15.07 U111 < proper 55.41/15.07 U121 < proper 55.41/15.07 U131 < proper 55.41/15.07 U141 < proper 55.41/15.07 U151 < proper 55.41/15.07 U161 < proper 55.41/15.07 U171 < proper 55.41/15.07 U181 < proper 55.41/15.07 U191 < proper 55.41/15.07 U201 < proper 55.41/15.07 U211 < proper 55.41/15.07 U221 < proper 55.41/15.07 tail < proper 55.41/15.07 take < proper 55.41/15.07 sel < proper 55.41/15.07 proper < top 55.41/15.07 55.41/15.07 ---------------------------------------- 55.41/15.07 55.41/15.07 (55) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.07 Proved the following rewrite lemma: 55.41/15.07 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.07 55.41/15.07 Induction Base: 55.41/15.07 U182(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) 55.41/15.07 55.41/15.07 Induction Step: 55.41/15.07 U182(gen_tt:mark:nil:0':ok3_0(+(1, +(n53362_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) 55.41/15.07 mark(U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH 55.41/15.07 mark(*4_0) 55.41/15.07 55.41/15.07 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.07 ---------------------------------------- 55.41/15.07 55.41/15.07 (56) 55.41/15.07 Obligation: 55.41/15.07 TRS: 55.41/15.07 Rules: 55.41/15.07 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.07 active(U102(tt)) -> mark(tt) 55.41/15.07 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.07 active(U111(tt)) -> mark(tt) 55.41/15.07 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.07 active(U121(tt)) -> mark(tt) 55.41/15.07 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.07 active(U132(tt)) -> mark(tt) 55.41/15.07 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.07 active(U142(tt)) -> mark(tt) 55.41/15.07 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.07 active(U152(tt)) -> mark(tt) 55.41/15.07 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.07 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.07 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.07 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.07 active(U182(tt, Y)) -> mark(Y) 55.41/15.07 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.07 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.07 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.07 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.07 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.07 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.07 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.07 active(U212(tt, XS)) -> mark(XS) 55.41/15.07 active(U22(tt, X)) -> mark(X) 55.41/15.07 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.07 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.07 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.07 active(U32(tt, N)) -> mark(N) 55.41/15.07 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.07 active(U42(tt)) -> mark(tt) 55.41/15.07 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.07 active(U52(tt)) -> mark(tt) 55.41/15.07 active(U61(tt)) -> mark(tt) 55.41/15.07 active(U71(tt)) -> mark(tt) 55.41/15.07 active(U81(tt)) -> mark(tt) 55.41/15.07 active(U91(tt)) -> mark(tt) 55.41/15.07 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.07 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.07 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.07 active(isLNat(nil)) -> mark(tt) 55.41/15.07 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.07 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.07 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.07 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.07 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.07 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.07 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.07 active(isNatural(0')) -> mark(tt) 55.41/15.07 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.07 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.07 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.07 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.07 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.07 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.07 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.07 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.07 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.07 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.07 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.07 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.07 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.07 active(U102(X)) -> U102(active(X)) 55.41/15.07 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.07 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.07 active(U111(X)) -> U111(active(X)) 55.41/15.07 active(snd(X)) -> snd(active(X)) 55.41/15.07 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.07 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.07 active(U121(X)) -> U121(active(X)) 55.41/15.07 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.07 active(U132(X)) -> U132(active(X)) 55.41/15.07 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.07 active(U142(X)) -> U142(active(X)) 55.41/15.07 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.07 active(U152(X)) -> U152(active(X)) 55.41/15.07 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.07 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.07 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.07 active(s(X)) -> s(active(X)) 55.41/15.07 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.07 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.07 active(head(X)) -> head(active(X)) 55.41/15.07 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.07 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.07 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.07 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.07 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.07 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.07 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.07 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.07 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.07 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.07 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.07 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.07 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.07 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.07 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.07 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.07 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.07 active(fst(X)) -> fst(active(X)) 55.41/15.07 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.07 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.07 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.07 active(U42(X)) -> U42(active(X)) 55.41/15.07 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.07 active(U52(X)) -> U52(active(X)) 55.41/15.07 active(U61(X)) -> U61(active(X)) 55.41/15.07 active(U71(X)) -> U71(active(X)) 55.41/15.07 active(U81(X)) -> U81(active(X)) 55.41/15.07 active(U91(X)) -> U91(active(X)) 55.41/15.07 active(tail(X)) -> tail(active(X)) 55.41/15.07 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.07 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.07 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.07 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.07 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.07 U102(mark(X)) -> mark(U102(X)) 55.41/15.07 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.07 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.07 U111(mark(X)) -> mark(U111(X)) 55.41/15.07 snd(mark(X)) -> mark(snd(X)) 55.41/15.07 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.07 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.07 U121(mark(X)) -> mark(U121(X)) 55.41/15.07 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.07 U132(mark(X)) -> mark(U132(X)) 55.41/15.07 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.07 U142(mark(X)) -> mark(U142(X)) 55.41/15.07 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.07 U152(mark(X)) -> mark(U152(X)) 55.41/15.07 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.07 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.07 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.07 s(mark(X)) -> mark(s(X)) 55.41/15.07 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.07 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.07 head(mark(X)) -> mark(head(X)) 55.41/15.07 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.07 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.07 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.07 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.07 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.07 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.07 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.07 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.07 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.07 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.07 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.07 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.07 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.07 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.07 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.07 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.07 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.07 fst(mark(X)) -> mark(fst(X)) 55.41/15.07 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.07 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.07 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.07 U42(mark(X)) -> mark(U42(X)) 55.41/15.07 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.07 U52(mark(X)) -> mark(U52(X)) 55.41/15.07 U61(mark(X)) -> mark(U61(X)) 55.41/15.07 U71(mark(X)) -> mark(U71(X)) 55.41/15.07 U81(mark(X)) -> mark(U81(X)) 55.41/15.07 U91(mark(X)) -> mark(U91(X)) 55.41/15.07 tail(mark(X)) -> mark(tail(X)) 55.41/15.07 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.07 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.07 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.07 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.07 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.07 proper(tt) -> ok(tt) 55.41/15.07 proper(U102(X)) -> U102(proper(X)) 55.41/15.07 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.07 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U111(X)) -> U111(proper(X)) 55.41/15.07 proper(snd(X)) -> snd(proper(X)) 55.41/15.07 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.07 proper(U121(X)) -> U121(proper(X)) 55.41/15.07 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.07 proper(U132(X)) -> U132(proper(X)) 55.41/15.07 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.07 proper(U142(X)) -> U142(proper(X)) 55.41/15.07 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.07 proper(U152(X)) -> U152(proper(X)) 55.41/15.07 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.07 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.07 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.07 proper(s(X)) -> s(proper(X)) 55.41/15.07 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(head(X)) -> head(proper(X)) 55.41/15.07 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.07 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.07 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.07 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.07 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.07 proper(nil) -> ok(nil) 55.41/15.07 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.07 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.07 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.07 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.07 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.07 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.07 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.07 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.07 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(fst(X)) -> fst(proper(X)) 55.41/15.07 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.07 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.07 proper(U42(X)) -> U42(proper(X)) 55.41/15.07 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.07 proper(U52(X)) -> U52(proper(X)) 55.41/15.07 proper(U61(X)) -> U61(proper(X)) 55.41/15.07 proper(U71(X)) -> U71(proper(X)) 55.41/15.07 proper(U81(X)) -> U81(proper(X)) 55.41/15.07 proper(U91(X)) -> U91(proper(X)) 55.41/15.07 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.07 proper(tail(X)) -> tail(proper(X)) 55.41/15.07 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.07 proper(0') -> ok(0') 55.41/15.07 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.07 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.07 U102(ok(X)) -> ok(U102(X)) 55.41/15.07 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.07 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.07 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.07 U111(ok(X)) -> ok(U111(X)) 55.41/15.07 snd(ok(X)) -> ok(snd(X)) 55.41/15.07 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.07 U121(ok(X)) -> ok(U121(X)) 55.41/15.07 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.07 U132(ok(X)) -> ok(U132(X)) 55.41/15.07 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.07 U142(ok(X)) -> ok(U142(X)) 55.41/15.07 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.07 U152(ok(X)) -> ok(U152(X)) 55.41/15.07 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.07 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.07 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.07 s(ok(X)) -> ok(s(X)) 55.41/15.07 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.07 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.07 head(ok(X)) -> ok(head(X)) 55.41/15.07 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.07 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.07 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.07 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.07 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.07 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.07 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.07 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.07 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.07 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.07 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.07 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.07 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.07 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.07 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.07 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.07 fst(ok(X)) -> ok(fst(X)) 55.41/15.07 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.07 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.07 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.07 U42(ok(X)) -> ok(U42(X)) 55.41/15.07 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.07 U52(ok(X)) -> ok(U52(X)) 55.41/15.07 U61(ok(X)) -> ok(U61(X)) 55.41/15.07 U71(ok(X)) -> ok(U71(X)) 55.41/15.07 U81(ok(X)) -> ok(U81(X)) 55.41/15.07 U91(ok(X)) -> ok(U91(X)) 55.41/15.07 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.07 tail(ok(X)) -> ok(tail(X)) 55.41/15.07 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.07 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.07 top(mark(X)) -> top(proper(X)) 55.41/15.07 top(ok(X)) -> top(active(X)) 55.41/15.07 55.41/15.07 Types: 55.41/15.07 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 tt :: tt:mark:nil:0':ok 55.41/15.07 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 nil :: tt:mark:nil:0':ok 55.41/15.07 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 55.41/15.07 U202 :: 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 55.41/15.07 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U203 :: 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 55.41/15.07 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 0' :: tt:mark:nil:0':ok 55.41/15.07 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 top :: tt:mark:nil:0':ok -> top 55.41/15.07 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.07 hole_top2_0 :: top 55.41/15.07 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.07 55.41/15.07 55.41/15.07 Lemmas: 55.41/15.07 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.07 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.07 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.07 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.07 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.07 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.07 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.07 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.07 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.07 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.07 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.07 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.07 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.07 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.07 55.41/15.07 55.41/15.07 Generator Equations: 55.41/15.07 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.07 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.07 55.41/15.07 55.41/15.07 The following defined symbols remain to be analysed: 55.41/15.07 pair, active, U202, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.07 55.41/15.07 They will be analysed ascendingly in the following order: 55.41/15.07 pair < active 55.41/15.07 U202 < active 55.41/15.07 isNatural < active 55.41/15.07 U203 < active 55.41/15.07 U204 < active 55.41/15.07 U22 < active 55.41/15.07 U212 < active 55.41/15.07 U222 < active 55.41/15.07 fst < active 55.41/15.07 U32 < active 55.41/15.07 U42 < active 55.41/15.07 U52 < active 55.41/15.07 U11 < active 55.41/15.07 U21 < active 55.41/15.07 U31 < active 55.41/15.07 U41 < active 55.41/15.07 U51 < active 55.41/15.07 U61 < active 55.41/15.07 isPLNat < active 55.41/15.07 U71 < active 55.41/15.07 U81 < active 55.41/15.07 U91 < active 55.41/15.07 U101 < active 55.41/15.07 U111 < active 55.41/15.07 U121 < active 55.41/15.07 U131 < active 55.41/15.07 U141 < active 55.41/15.07 U151 < active 55.41/15.07 U161 < active 55.41/15.07 U171 < active 55.41/15.07 U181 < active 55.41/15.07 U191 < active 55.41/15.07 U201 < active 55.41/15.07 U211 < active 55.41/15.07 U221 < active 55.41/15.07 tail < active 55.41/15.07 take < active 55.41/15.07 sel < active 55.41/15.07 active < top 55.41/15.07 pair < proper 55.41/15.07 U202 < proper 55.41/15.07 isNatural < proper 55.41/15.07 U203 < proper 55.41/15.07 U204 < proper 55.41/15.07 U22 < proper 55.41/15.07 U212 < proper 55.41/15.07 U222 < proper 55.41/15.07 fst < proper 55.41/15.07 U32 < proper 55.41/15.07 U42 < proper 55.41/15.07 U52 < proper 55.41/15.07 U11 < proper 55.41/15.07 U21 < proper 55.41/15.07 U31 < proper 55.41/15.07 U41 < proper 55.41/15.07 U51 < proper 55.41/15.07 U61 < proper 55.41/15.07 isPLNat < proper 55.41/15.07 U71 < proper 55.41/15.07 U81 < proper 55.41/15.07 U91 < proper 55.41/15.07 U101 < proper 55.41/15.07 U111 < proper 55.41/15.07 U121 < proper 55.41/15.07 U131 < proper 55.41/15.07 U141 < proper 55.41/15.07 U151 < proper 55.41/15.07 U161 < proper 55.41/15.07 U171 < proper 55.41/15.07 U181 < proper 55.41/15.07 U191 < proper 55.41/15.07 U201 < proper 55.41/15.07 U211 < proper 55.41/15.07 U221 < proper 55.41/15.07 tail < proper 55.41/15.07 take < proper 55.41/15.07 sel < proper 55.41/15.07 proper < top 55.41/15.07 55.41/15.07 ---------------------------------------- 55.41/15.07 55.41/15.07 (57) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.07 Proved the following rewrite lemma: 55.41/15.07 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.07 55.41/15.07 Induction Base: 55.41/15.07 pair(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) 55.41/15.07 55.41/15.07 Induction Step: 55.41/15.07 pair(gen_tt:mark:nil:0':ok3_0(+(1, +(n61149_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) 55.41/15.07 mark(pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH 55.41/15.07 mark(*4_0) 55.41/15.07 55.41/15.07 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.07 ---------------------------------------- 55.41/15.07 55.41/15.07 (58) 55.41/15.07 Obligation: 55.41/15.07 TRS: 55.41/15.07 Rules: 55.41/15.07 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.07 active(U102(tt)) -> mark(tt) 55.41/15.07 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.07 active(U111(tt)) -> mark(tt) 55.41/15.07 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.07 active(U121(tt)) -> mark(tt) 55.41/15.07 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.07 active(U132(tt)) -> mark(tt) 55.41/15.07 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.07 active(U142(tt)) -> mark(tt) 55.41/15.07 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.07 active(U152(tt)) -> mark(tt) 55.41/15.07 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.07 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.07 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.07 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.07 active(U182(tt, Y)) -> mark(Y) 55.41/15.07 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.07 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.07 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.07 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.07 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.07 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.07 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.07 active(U212(tt, XS)) -> mark(XS) 55.41/15.07 active(U22(tt, X)) -> mark(X) 55.41/15.07 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.07 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.07 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.07 active(U32(tt, N)) -> mark(N) 55.41/15.07 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.07 active(U42(tt)) -> mark(tt) 55.41/15.07 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.07 active(U52(tt)) -> mark(tt) 55.41/15.07 active(U61(tt)) -> mark(tt) 55.41/15.07 active(U71(tt)) -> mark(tt) 55.41/15.07 active(U81(tt)) -> mark(tt) 55.41/15.07 active(U91(tt)) -> mark(tt) 55.41/15.07 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.07 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.07 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.07 active(isLNat(nil)) -> mark(tt) 55.41/15.07 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.07 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.07 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.07 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.07 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.07 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.07 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.07 active(isNatural(0')) -> mark(tt) 55.41/15.07 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.07 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.07 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.07 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.07 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.07 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.07 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.07 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.07 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.07 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.07 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.07 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.07 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.07 active(U102(X)) -> U102(active(X)) 55.41/15.07 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.07 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.07 active(U111(X)) -> U111(active(X)) 55.41/15.07 active(snd(X)) -> snd(active(X)) 55.41/15.07 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.07 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.07 active(U121(X)) -> U121(active(X)) 55.41/15.07 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.07 active(U132(X)) -> U132(active(X)) 55.41/15.07 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.07 active(U142(X)) -> U142(active(X)) 55.41/15.07 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.07 active(U152(X)) -> U152(active(X)) 55.41/15.07 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.07 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.07 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.07 active(s(X)) -> s(active(X)) 55.41/15.07 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.07 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.07 active(head(X)) -> head(active(X)) 55.41/15.07 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.07 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.07 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.07 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.07 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.07 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.07 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.07 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.07 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.07 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.07 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.07 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.07 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.07 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.07 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.07 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.07 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.07 active(fst(X)) -> fst(active(X)) 55.41/15.07 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.07 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.07 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.07 active(U42(X)) -> U42(active(X)) 55.41/15.07 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.07 active(U52(X)) -> U52(active(X)) 55.41/15.07 active(U61(X)) -> U61(active(X)) 55.41/15.07 active(U71(X)) -> U71(active(X)) 55.41/15.07 active(U81(X)) -> U81(active(X)) 55.41/15.07 active(U91(X)) -> U91(active(X)) 55.41/15.07 active(tail(X)) -> tail(active(X)) 55.41/15.07 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.07 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.07 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.07 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.07 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.07 U102(mark(X)) -> mark(U102(X)) 55.41/15.07 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.07 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.07 U111(mark(X)) -> mark(U111(X)) 55.41/15.07 snd(mark(X)) -> mark(snd(X)) 55.41/15.07 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.07 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.07 U121(mark(X)) -> mark(U121(X)) 55.41/15.07 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.07 U132(mark(X)) -> mark(U132(X)) 55.41/15.07 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.07 U142(mark(X)) -> mark(U142(X)) 55.41/15.07 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.07 U152(mark(X)) -> mark(U152(X)) 55.41/15.07 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.07 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.07 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.07 s(mark(X)) -> mark(s(X)) 55.41/15.07 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.07 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.07 head(mark(X)) -> mark(head(X)) 55.41/15.07 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.07 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.07 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.07 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.07 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.07 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.07 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.07 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.07 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.07 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.07 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.07 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.07 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.07 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.07 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.07 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.07 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.07 fst(mark(X)) -> mark(fst(X)) 55.41/15.07 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.07 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.07 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.07 U42(mark(X)) -> mark(U42(X)) 55.41/15.07 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.07 U52(mark(X)) -> mark(U52(X)) 55.41/15.07 U61(mark(X)) -> mark(U61(X)) 55.41/15.07 U71(mark(X)) -> mark(U71(X)) 55.41/15.07 U81(mark(X)) -> mark(U81(X)) 55.41/15.07 U91(mark(X)) -> mark(U91(X)) 55.41/15.07 tail(mark(X)) -> mark(tail(X)) 55.41/15.07 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.07 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.07 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.07 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.07 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.07 proper(tt) -> ok(tt) 55.41/15.07 proper(U102(X)) -> U102(proper(X)) 55.41/15.07 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.07 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U111(X)) -> U111(proper(X)) 55.41/15.07 proper(snd(X)) -> snd(proper(X)) 55.41/15.07 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.07 proper(U121(X)) -> U121(proper(X)) 55.41/15.07 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.07 proper(U132(X)) -> U132(proper(X)) 55.41/15.07 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.07 proper(U142(X)) -> U142(proper(X)) 55.41/15.07 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.07 proper(U152(X)) -> U152(proper(X)) 55.41/15.07 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.07 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.07 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.07 proper(s(X)) -> s(proper(X)) 55.41/15.07 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(head(X)) -> head(proper(X)) 55.41/15.07 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.07 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.07 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.07 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.07 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.07 proper(nil) -> ok(nil) 55.41/15.07 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.07 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.07 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.07 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.07 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.07 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.07 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.07 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.07 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(fst(X)) -> fst(proper(X)) 55.41/15.07 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.07 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.07 proper(U42(X)) -> U42(proper(X)) 55.41/15.07 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.07 proper(U52(X)) -> U52(proper(X)) 55.41/15.07 proper(U61(X)) -> U61(proper(X)) 55.41/15.07 proper(U71(X)) -> U71(proper(X)) 55.41/15.07 proper(U81(X)) -> U81(proper(X)) 55.41/15.07 proper(U91(X)) -> U91(proper(X)) 55.41/15.07 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.07 proper(tail(X)) -> tail(proper(X)) 55.41/15.07 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.07 proper(0') -> ok(0') 55.41/15.07 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.07 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.07 U102(ok(X)) -> ok(U102(X)) 55.41/15.07 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.07 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.07 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.07 U111(ok(X)) -> ok(U111(X)) 55.41/15.07 snd(ok(X)) -> ok(snd(X)) 55.41/15.07 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.07 U121(ok(X)) -> ok(U121(X)) 55.41/15.07 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.07 U132(ok(X)) -> ok(U132(X)) 55.41/15.07 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.07 U142(ok(X)) -> ok(U142(X)) 55.41/15.07 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.07 U152(ok(X)) -> ok(U152(X)) 55.41/15.07 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.07 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.07 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.07 s(ok(X)) -> ok(s(X)) 55.41/15.07 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.07 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.07 head(ok(X)) -> ok(head(X)) 55.41/15.07 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.07 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.07 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.07 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.07 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.07 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.07 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.07 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.07 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.07 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.07 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.07 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.07 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.07 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.07 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.07 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.07 fst(ok(X)) -> ok(fst(X)) 55.41/15.07 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.07 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.07 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.07 U42(ok(X)) -> ok(U42(X)) 55.41/15.07 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.07 U52(ok(X)) -> ok(U52(X)) 55.41/15.07 U61(ok(X)) -> ok(U61(X)) 55.41/15.07 U71(ok(X)) -> ok(U71(X)) 55.41/15.07 U81(ok(X)) -> ok(U81(X)) 55.41/15.07 U91(ok(X)) -> ok(U91(X)) 55.41/15.07 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.07 tail(ok(X)) -> ok(tail(X)) 55.41/15.07 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.07 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.07 top(mark(X)) -> top(proper(X)) 55.41/15.07 top(ok(X)) -> top(active(X)) 55.41/15.07 55.41/15.07 Types: 55.41/15.07 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 tt :: tt:mark:nil:0':ok 55.41/15.07 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 nil :: tt:mark:nil:0':ok 55.41/15.07 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 55.41/15.07 U202 :: 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 55.41/15.07 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U203 :: 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 55.41/15.07 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 0' :: tt:mark:nil:0':ok 55.41/15.07 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 top :: tt:mark:nil:0':ok -> top 55.41/15.07 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.07 hole_top2_0 :: top 55.41/15.07 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.07 55.41/15.07 55.41/15.07 Lemmas: 55.41/15.07 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.07 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.07 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.07 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.07 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.07 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.07 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.07 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.07 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.07 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.07 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.07 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.07 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.07 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.07 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.07 55.41/15.07 55.41/15.07 Generator Equations: 55.41/15.07 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.07 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.07 55.41/15.07 55.41/15.07 The following defined symbols remain to be analysed: 55.41/15.07 U202, active, isNatural, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.07 55.41/15.07 They will be analysed ascendingly in the following order: 55.41/15.07 U202 < active 55.41/15.07 isNatural < active 55.41/15.07 U203 < active 55.41/15.07 U204 < active 55.41/15.07 U22 < active 55.41/15.07 U212 < active 55.41/15.07 U222 < active 55.41/15.07 fst < active 55.41/15.07 U32 < active 55.41/15.07 U42 < active 55.41/15.07 U52 < active 55.41/15.07 U11 < active 55.41/15.07 U21 < active 55.41/15.07 U31 < active 55.41/15.07 U41 < active 55.41/15.07 U51 < active 55.41/15.07 U61 < active 55.41/15.07 isPLNat < active 55.41/15.07 U71 < active 55.41/15.07 U81 < active 55.41/15.07 U91 < active 55.41/15.07 U101 < active 55.41/15.07 U111 < active 55.41/15.07 U121 < active 55.41/15.07 U131 < active 55.41/15.07 U141 < active 55.41/15.07 U151 < active 55.41/15.07 U161 < active 55.41/15.07 U171 < active 55.41/15.07 U181 < active 55.41/15.07 U191 < active 55.41/15.07 U201 < active 55.41/15.07 U211 < active 55.41/15.07 U221 < active 55.41/15.07 tail < active 55.41/15.07 take < active 55.41/15.07 sel < active 55.41/15.07 active < top 55.41/15.07 U202 < proper 55.41/15.07 isNatural < proper 55.41/15.07 U203 < proper 55.41/15.07 U204 < proper 55.41/15.07 U22 < proper 55.41/15.07 U212 < proper 55.41/15.07 U222 < proper 55.41/15.07 fst < proper 55.41/15.07 U32 < proper 55.41/15.07 U42 < proper 55.41/15.07 U52 < proper 55.41/15.07 U11 < proper 55.41/15.07 U21 < proper 55.41/15.07 U31 < proper 55.41/15.07 U41 < proper 55.41/15.07 U51 < proper 55.41/15.07 U61 < proper 55.41/15.07 isPLNat < proper 55.41/15.07 U71 < proper 55.41/15.07 U81 < proper 55.41/15.07 U91 < proper 55.41/15.07 U101 < proper 55.41/15.07 U111 < proper 55.41/15.07 U121 < proper 55.41/15.07 U131 < proper 55.41/15.07 U141 < proper 55.41/15.07 U151 < proper 55.41/15.07 U161 < proper 55.41/15.07 U171 < proper 55.41/15.07 U181 < proper 55.41/15.07 U191 < proper 55.41/15.07 U201 < proper 55.41/15.07 U211 < proper 55.41/15.07 U221 < proper 55.41/15.07 tail < proper 55.41/15.07 take < proper 55.41/15.07 sel < proper 55.41/15.07 proper < top 55.41/15.07 55.41/15.07 ---------------------------------------- 55.41/15.07 55.41/15.07 (59) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.07 Proved the following rewrite lemma: 55.41/15.07 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.41/15.07 55.41/15.07 Induction Base: 55.41/15.07 U202(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)) 55.41/15.07 55.41/15.07 Induction Step: 55.41/15.07 U202(gen_tt:mark:nil:0':ok3_0(+(1, +(n69441_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) 55.41/15.07 mark(U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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 55.41/15.07 mark(*4_0) 55.41/15.07 55.41/15.07 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.07 ---------------------------------------- 55.41/15.07 55.41/15.07 (60) 55.41/15.07 Obligation: 55.41/15.07 TRS: 55.41/15.07 Rules: 55.41/15.07 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.07 active(U102(tt)) -> mark(tt) 55.41/15.07 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.07 active(U111(tt)) -> mark(tt) 55.41/15.07 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.07 active(U121(tt)) -> mark(tt) 55.41/15.07 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.07 active(U132(tt)) -> mark(tt) 55.41/15.07 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.07 active(U142(tt)) -> mark(tt) 55.41/15.07 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.07 active(U152(tt)) -> mark(tt) 55.41/15.07 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.07 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.07 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.07 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.07 active(U182(tt, Y)) -> mark(Y) 55.41/15.07 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.07 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.07 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.07 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.07 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.07 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.07 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.07 active(U212(tt, XS)) -> mark(XS) 55.41/15.07 active(U22(tt, X)) -> mark(X) 55.41/15.07 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.07 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.07 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.07 active(U32(tt, N)) -> mark(N) 55.41/15.07 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.07 active(U42(tt)) -> mark(tt) 55.41/15.07 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.07 active(U52(tt)) -> mark(tt) 55.41/15.07 active(U61(tt)) -> mark(tt) 55.41/15.07 active(U71(tt)) -> mark(tt) 55.41/15.07 active(U81(tt)) -> mark(tt) 55.41/15.07 active(U91(tt)) -> mark(tt) 55.41/15.07 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.07 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.07 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.07 active(isLNat(nil)) -> mark(tt) 55.41/15.07 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.07 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.07 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.07 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.07 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.07 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.07 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.07 active(isNatural(0')) -> mark(tt) 55.41/15.07 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.07 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.07 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.07 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.07 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.07 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.07 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.07 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.07 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.07 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.07 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.07 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.07 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.07 active(U102(X)) -> U102(active(X)) 55.41/15.07 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.07 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.07 active(U111(X)) -> U111(active(X)) 55.41/15.07 active(snd(X)) -> snd(active(X)) 55.41/15.07 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.07 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.07 active(U121(X)) -> U121(active(X)) 55.41/15.07 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.07 active(U132(X)) -> U132(active(X)) 55.41/15.07 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.07 active(U142(X)) -> U142(active(X)) 55.41/15.07 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.07 active(U152(X)) -> U152(active(X)) 55.41/15.07 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.07 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.07 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.07 active(s(X)) -> s(active(X)) 55.41/15.07 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.07 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.07 active(head(X)) -> head(active(X)) 55.41/15.07 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.07 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.07 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.07 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.07 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.07 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.07 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.07 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.07 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.07 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.07 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.07 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.07 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.07 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.07 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.07 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.07 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.07 active(fst(X)) -> fst(active(X)) 55.41/15.07 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.07 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.07 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.07 active(U42(X)) -> U42(active(X)) 55.41/15.07 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.07 active(U52(X)) -> U52(active(X)) 55.41/15.07 active(U61(X)) -> U61(active(X)) 55.41/15.07 active(U71(X)) -> U71(active(X)) 55.41/15.07 active(U81(X)) -> U81(active(X)) 55.41/15.07 active(U91(X)) -> U91(active(X)) 55.41/15.07 active(tail(X)) -> tail(active(X)) 55.41/15.07 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.07 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.07 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.07 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.07 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.07 U102(mark(X)) -> mark(U102(X)) 55.41/15.07 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.07 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.07 U111(mark(X)) -> mark(U111(X)) 55.41/15.07 snd(mark(X)) -> mark(snd(X)) 55.41/15.07 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.07 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.07 U121(mark(X)) -> mark(U121(X)) 55.41/15.07 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.07 U132(mark(X)) -> mark(U132(X)) 55.41/15.07 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.07 U142(mark(X)) -> mark(U142(X)) 55.41/15.07 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.07 U152(mark(X)) -> mark(U152(X)) 55.41/15.07 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.07 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.07 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.07 s(mark(X)) -> mark(s(X)) 55.41/15.07 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.07 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.07 head(mark(X)) -> mark(head(X)) 55.41/15.07 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.07 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.07 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.07 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.07 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.07 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.07 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.07 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.07 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.07 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.07 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.07 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.07 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.07 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.07 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.07 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.07 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.07 fst(mark(X)) -> mark(fst(X)) 55.41/15.07 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.07 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.07 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.07 U42(mark(X)) -> mark(U42(X)) 55.41/15.07 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.07 U52(mark(X)) -> mark(U52(X)) 55.41/15.07 U61(mark(X)) -> mark(U61(X)) 55.41/15.07 U71(mark(X)) -> mark(U71(X)) 55.41/15.07 U81(mark(X)) -> mark(U81(X)) 55.41/15.07 U91(mark(X)) -> mark(U91(X)) 55.41/15.07 tail(mark(X)) -> mark(tail(X)) 55.41/15.07 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.07 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.07 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.07 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.07 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.07 proper(tt) -> ok(tt) 55.41/15.07 proper(U102(X)) -> U102(proper(X)) 55.41/15.07 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.07 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U111(X)) -> U111(proper(X)) 55.41/15.07 proper(snd(X)) -> snd(proper(X)) 55.41/15.07 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.07 proper(U121(X)) -> U121(proper(X)) 55.41/15.07 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.07 proper(U132(X)) -> U132(proper(X)) 55.41/15.07 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.07 proper(U142(X)) -> U142(proper(X)) 55.41/15.07 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.07 proper(U152(X)) -> U152(proper(X)) 55.41/15.07 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.07 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.07 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.07 proper(s(X)) -> s(proper(X)) 55.41/15.07 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(head(X)) -> head(proper(X)) 55.41/15.07 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.07 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.07 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.07 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.07 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.07 proper(nil) -> ok(nil) 55.41/15.07 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.07 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.07 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.07 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.07 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.07 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.07 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.07 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.07 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(fst(X)) -> fst(proper(X)) 55.41/15.07 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.07 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.07 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.07 proper(U42(X)) -> U42(proper(X)) 55.41/15.07 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.07 proper(U52(X)) -> U52(proper(X)) 55.41/15.07 proper(U61(X)) -> U61(proper(X)) 55.41/15.07 proper(U71(X)) -> U71(proper(X)) 55.41/15.07 proper(U81(X)) -> U81(proper(X)) 55.41/15.07 proper(U91(X)) -> U91(proper(X)) 55.41/15.07 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.07 proper(tail(X)) -> tail(proper(X)) 55.41/15.07 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.07 proper(0') -> ok(0') 55.41/15.07 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.07 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.07 U102(ok(X)) -> ok(U102(X)) 55.41/15.07 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.07 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.07 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.07 U111(ok(X)) -> ok(U111(X)) 55.41/15.07 snd(ok(X)) -> ok(snd(X)) 55.41/15.07 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.07 U121(ok(X)) -> ok(U121(X)) 55.41/15.07 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.07 U132(ok(X)) -> ok(U132(X)) 55.41/15.07 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.07 U142(ok(X)) -> ok(U142(X)) 55.41/15.07 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.07 U152(ok(X)) -> ok(U152(X)) 55.41/15.07 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.07 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.07 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.07 s(ok(X)) -> ok(s(X)) 55.41/15.07 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.07 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.07 head(ok(X)) -> ok(head(X)) 55.41/15.07 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.07 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.07 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.07 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.07 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.07 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.07 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.07 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.07 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.07 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.07 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.07 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.07 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.07 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.07 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.07 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.07 fst(ok(X)) -> ok(fst(X)) 55.41/15.07 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.07 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.07 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.07 U42(ok(X)) -> ok(U42(X)) 55.41/15.07 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.07 U52(ok(X)) -> ok(U52(X)) 55.41/15.07 U61(ok(X)) -> ok(U61(X)) 55.41/15.07 U71(ok(X)) -> ok(U71(X)) 55.41/15.07 U81(ok(X)) -> ok(U81(X)) 55.41/15.07 U91(ok(X)) -> ok(U91(X)) 55.41/15.07 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.07 tail(ok(X)) -> ok(tail(X)) 55.41/15.07 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.07 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.07 top(mark(X)) -> top(proper(X)) 55.41/15.07 top(ok(X)) -> top(active(X)) 55.41/15.07 55.41/15.07 Types: 55.41/15.07 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 tt :: tt:mark:nil:0':ok 55.41/15.07 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 nil :: tt:mark:nil:0':ok 55.41/15.07 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 55.41/15.07 U202 :: 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 55.41/15.07 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U203 :: 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 55.41/15.07 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 0' :: tt:mark:nil:0':ok 55.41/15.07 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.07 top :: tt:mark:nil:0':ok -> top 55.41/15.07 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.07 hole_top2_0 :: top 55.41/15.07 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.07 55.41/15.07 55.41/15.07 Lemmas: 55.41/15.07 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.07 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.07 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.07 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.07 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.07 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.07 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.07 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.07 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.07 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.07 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.07 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.07 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.07 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.07 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.07 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.41/15.07 55.41/15.07 55.41/15.07 Generator Equations: 55.41/15.07 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.07 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.07 55.41/15.07 55.41/15.07 The following defined symbols remain to be analysed: 55.41/15.07 isNatural, active, U203, U204, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.07 55.41/15.07 They will be analysed ascendingly in the following order: 55.41/15.07 isNatural < active 55.41/15.07 U203 < active 55.41/15.07 U204 < active 55.41/15.07 U22 < active 55.41/15.07 U212 < active 55.41/15.07 U222 < active 55.41/15.07 fst < active 55.41/15.07 U32 < active 55.41/15.07 U42 < active 55.41/15.07 U52 < active 55.41/15.07 U11 < active 55.41/15.07 U21 < active 55.41/15.07 U31 < active 55.41/15.07 U41 < active 55.41/15.07 U51 < active 55.41/15.07 U61 < active 55.41/15.07 isPLNat < active 55.41/15.07 U71 < active 55.41/15.07 U81 < active 55.41/15.07 U91 < active 55.41/15.07 U101 < active 55.41/15.07 U111 < active 55.41/15.07 U121 < active 55.41/15.07 U131 < active 55.41/15.07 U141 < active 55.41/15.07 U151 < active 55.41/15.07 U161 < active 55.41/15.07 U171 < active 55.41/15.07 U181 < active 55.41/15.07 U191 < active 55.41/15.07 U201 < active 55.41/15.07 U211 < active 55.41/15.07 U221 < active 55.41/15.07 tail < active 55.41/15.07 take < active 55.41/15.08 sel < active 55.41/15.08 active < top 55.41/15.08 isNatural < proper 55.41/15.08 U203 < proper 55.41/15.08 U204 < proper 55.41/15.08 U22 < proper 55.41/15.08 U212 < proper 55.41/15.08 U222 < proper 55.41/15.08 fst < proper 55.41/15.08 U32 < proper 55.41/15.08 U42 < proper 55.41/15.08 U52 < proper 55.41/15.08 U11 < proper 55.41/15.08 U21 < proper 55.41/15.08 U31 < proper 55.41/15.08 U41 < proper 55.41/15.08 U51 < proper 55.41/15.08 U61 < proper 55.41/15.08 isPLNat < proper 55.41/15.08 U71 < proper 55.41/15.08 U81 < proper 55.41/15.08 U91 < proper 55.41/15.08 U101 < proper 55.41/15.08 U111 < proper 55.41/15.08 U121 < proper 55.41/15.08 U131 < proper 55.41/15.08 U141 < proper 55.41/15.08 U151 < proper 55.41/15.08 U161 < proper 55.41/15.08 U171 < proper 55.41/15.08 U181 < proper 55.41/15.08 U191 < proper 55.41/15.08 U201 < proper 55.41/15.08 U211 < proper 55.41/15.08 U221 < proper 55.41/15.08 tail < proper 55.41/15.08 take < proper 55.41/15.08 sel < proper 55.41/15.08 proper < top 55.41/15.08 55.41/15.08 ---------------------------------------- 55.41/15.08 55.41/15.08 (61) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.08 Proved the following rewrite lemma: 55.41/15.08 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.41/15.08 55.41/15.08 Induction Base: 55.41/15.08 U203(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)) 55.41/15.08 55.41/15.08 Induction Step: 55.41/15.08 U203(gen_tt:mark:nil:0':ok3_0(+(1, +(n88570_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) 55.41/15.08 mark(U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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 55.41/15.08 mark(*4_0) 55.41/15.08 55.41/15.08 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.08 ---------------------------------------- 55.41/15.08 55.41/15.08 (62) 55.41/15.08 Obligation: 55.41/15.08 TRS: 55.41/15.08 Rules: 55.41/15.08 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.08 active(U102(tt)) -> mark(tt) 55.41/15.08 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.08 active(U111(tt)) -> mark(tt) 55.41/15.08 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.08 active(U121(tt)) -> mark(tt) 55.41/15.08 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.08 active(U132(tt)) -> mark(tt) 55.41/15.08 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.08 active(U142(tt)) -> mark(tt) 55.41/15.08 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.08 active(U152(tt)) -> mark(tt) 55.41/15.08 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.08 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.08 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.08 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.08 active(U182(tt, Y)) -> mark(Y) 55.41/15.08 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.08 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.08 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.08 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.08 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.08 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.08 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.08 active(U212(tt, XS)) -> mark(XS) 55.41/15.08 active(U22(tt, X)) -> mark(X) 55.41/15.08 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.08 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.08 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.08 active(U32(tt, N)) -> mark(N) 55.41/15.08 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.08 active(U42(tt)) -> mark(tt) 55.41/15.08 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.08 active(U52(tt)) -> mark(tt) 55.41/15.08 active(U61(tt)) -> mark(tt) 55.41/15.08 active(U71(tt)) -> mark(tt) 55.41/15.08 active(U81(tt)) -> mark(tt) 55.41/15.08 active(U91(tt)) -> mark(tt) 55.41/15.08 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.08 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.08 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.08 active(isLNat(nil)) -> mark(tt) 55.41/15.08 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.08 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.08 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.08 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.08 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.08 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.08 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.08 active(isNatural(0')) -> mark(tt) 55.41/15.08 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.08 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.08 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.08 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.08 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.08 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.08 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.08 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.08 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.08 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.08 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.08 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.08 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.08 active(U102(X)) -> U102(active(X)) 55.41/15.08 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.08 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.08 active(U111(X)) -> U111(active(X)) 55.41/15.08 active(snd(X)) -> snd(active(X)) 55.41/15.08 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.08 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.08 active(U121(X)) -> U121(active(X)) 55.41/15.08 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.08 active(U132(X)) -> U132(active(X)) 55.41/15.08 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.08 active(U142(X)) -> U142(active(X)) 55.41/15.08 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.08 active(U152(X)) -> U152(active(X)) 55.41/15.08 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.08 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.08 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.08 active(s(X)) -> s(active(X)) 55.41/15.08 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.08 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.08 active(head(X)) -> head(active(X)) 55.41/15.08 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.08 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.08 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.08 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.08 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.08 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.08 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.08 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.08 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.08 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.08 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.08 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.08 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.08 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.08 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.08 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.08 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.08 active(fst(X)) -> fst(active(X)) 55.41/15.08 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.08 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.08 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.08 active(U42(X)) -> U42(active(X)) 55.41/15.08 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.08 active(U52(X)) -> U52(active(X)) 55.41/15.08 active(U61(X)) -> U61(active(X)) 55.41/15.08 active(U71(X)) -> U71(active(X)) 55.41/15.08 active(U81(X)) -> U81(active(X)) 55.41/15.08 active(U91(X)) -> U91(active(X)) 55.41/15.08 active(tail(X)) -> tail(active(X)) 55.41/15.08 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.08 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.08 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.08 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.08 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.08 U102(mark(X)) -> mark(U102(X)) 55.41/15.08 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.08 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.08 U111(mark(X)) -> mark(U111(X)) 55.41/15.08 snd(mark(X)) -> mark(snd(X)) 55.41/15.08 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.08 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.08 U121(mark(X)) -> mark(U121(X)) 55.41/15.08 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.08 U132(mark(X)) -> mark(U132(X)) 55.41/15.08 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.08 U142(mark(X)) -> mark(U142(X)) 55.41/15.08 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.08 U152(mark(X)) -> mark(U152(X)) 55.41/15.08 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.08 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.08 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.08 s(mark(X)) -> mark(s(X)) 55.41/15.08 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.08 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.08 head(mark(X)) -> mark(head(X)) 55.41/15.08 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.08 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.08 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.08 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.08 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.08 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.08 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.08 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.08 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.08 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.08 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.08 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.08 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.08 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.08 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.08 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.08 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.08 fst(mark(X)) -> mark(fst(X)) 55.41/15.08 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.08 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.08 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.08 U42(mark(X)) -> mark(U42(X)) 55.41/15.08 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.08 U52(mark(X)) -> mark(U52(X)) 55.41/15.08 U61(mark(X)) -> mark(U61(X)) 55.41/15.08 U71(mark(X)) -> mark(U71(X)) 55.41/15.08 U81(mark(X)) -> mark(U81(X)) 55.41/15.08 U91(mark(X)) -> mark(U91(X)) 55.41/15.08 tail(mark(X)) -> mark(tail(X)) 55.41/15.08 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.08 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.08 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.08 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.08 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.08 proper(tt) -> ok(tt) 55.41/15.08 proper(U102(X)) -> U102(proper(X)) 55.41/15.08 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.08 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U111(X)) -> U111(proper(X)) 55.41/15.08 proper(snd(X)) -> snd(proper(X)) 55.41/15.08 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.08 proper(U121(X)) -> U121(proper(X)) 55.41/15.08 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.08 proper(U132(X)) -> U132(proper(X)) 55.41/15.08 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.08 proper(U142(X)) -> U142(proper(X)) 55.41/15.08 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.08 proper(U152(X)) -> U152(proper(X)) 55.41/15.08 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.08 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.08 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.08 proper(s(X)) -> s(proper(X)) 55.41/15.08 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(head(X)) -> head(proper(X)) 55.41/15.08 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.08 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.08 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.08 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.08 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.08 proper(nil) -> ok(nil) 55.41/15.08 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.08 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.08 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.08 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.08 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.08 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.08 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.08 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.08 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(fst(X)) -> fst(proper(X)) 55.41/15.08 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.08 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.08 proper(U42(X)) -> U42(proper(X)) 55.41/15.08 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.08 proper(U52(X)) -> U52(proper(X)) 55.41/15.08 proper(U61(X)) -> U61(proper(X)) 55.41/15.08 proper(U71(X)) -> U71(proper(X)) 55.41/15.08 proper(U81(X)) -> U81(proper(X)) 55.41/15.08 proper(U91(X)) -> U91(proper(X)) 55.41/15.08 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.08 proper(tail(X)) -> tail(proper(X)) 55.41/15.08 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.08 proper(0') -> ok(0') 55.41/15.08 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.08 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.08 U102(ok(X)) -> ok(U102(X)) 55.41/15.08 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.08 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.08 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.08 U111(ok(X)) -> ok(U111(X)) 55.41/15.08 snd(ok(X)) -> ok(snd(X)) 55.41/15.08 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.08 U121(ok(X)) -> ok(U121(X)) 55.41/15.08 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.08 U132(ok(X)) -> ok(U132(X)) 55.41/15.08 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.08 U142(ok(X)) -> ok(U142(X)) 55.41/15.08 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.08 U152(ok(X)) -> ok(U152(X)) 55.41/15.08 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.08 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.08 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.08 s(ok(X)) -> ok(s(X)) 55.41/15.08 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.08 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.08 head(ok(X)) -> ok(head(X)) 55.41/15.08 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.08 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.08 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.08 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.08 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.08 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.08 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.08 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.08 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.08 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.08 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.08 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.08 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.08 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.08 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.08 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.08 fst(ok(X)) -> ok(fst(X)) 55.41/15.08 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.08 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.08 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.08 U42(ok(X)) -> ok(U42(X)) 55.41/15.08 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.08 U52(ok(X)) -> ok(U52(X)) 55.41/15.08 U61(ok(X)) -> ok(U61(X)) 55.41/15.08 U71(ok(X)) -> ok(U71(X)) 55.41/15.08 U81(ok(X)) -> ok(U81(X)) 55.41/15.08 U91(ok(X)) -> ok(U91(X)) 55.41/15.08 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.08 tail(ok(X)) -> ok(tail(X)) 55.41/15.08 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.08 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.08 top(mark(X)) -> top(proper(X)) 55.41/15.08 top(ok(X)) -> top(active(X)) 55.41/15.08 55.41/15.08 Types: 55.41/15.08 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 tt :: tt:mark:nil:0':ok 55.41/15.08 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 nil :: tt:mark:nil:0':ok 55.41/15.08 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 55.41/15.08 U202 :: 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 55.41/15.08 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U203 :: 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 55.41/15.08 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 0' :: tt:mark:nil:0':ok 55.41/15.08 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 top :: tt:mark:nil:0':ok -> top 55.41/15.08 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.08 hole_top2_0 :: top 55.41/15.08 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.08 55.41/15.08 55.41/15.08 Lemmas: 55.41/15.08 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.08 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.08 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.08 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.08 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.08 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.08 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.08 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.08 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.08 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.08 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.08 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.08 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.08 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.08 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.08 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.41/15.08 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.41/15.08 55.41/15.08 55.41/15.08 Generator Equations: 55.41/15.08 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.08 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.08 55.41/15.08 55.41/15.08 The following defined symbols remain to be analysed: 55.41/15.08 U204, active, U22, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.08 55.41/15.08 They will be analysed ascendingly in the following order: 55.41/15.08 U204 < active 55.41/15.08 U22 < active 55.41/15.08 U212 < active 55.41/15.08 U222 < active 55.41/15.08 fst < active 55.41/15.08 U32 < active 55.41/15.08 U42 < active 55.41/15.08 U52 < active 55.41/15.08 U11 < active 55.41/15.08 U21 < active 55.41/15.08 U31 < active 55.41/15.08 U41 < active 55.41/15.08 U51 < active 55.41/15.08 U61 < active 55.41/15.08 isPLNat < active 55.41/15.08 U71 < active 55.41/15.08 U81 < active 55.41/15.08 U91 < active 55.41/15.08 U101 < active 55.41/15.08 U111 < active 55.41/15.08 U121 < active 55.41/15.08 U131 < active 55.41/15.08 U141 < active 55.41/15.08 U151 < active 55.41/15.08 U161 < active 55.41/15.08 U171 < active 55.41/15.08 U181 < active 55.41/15.08 U191 < active 55.41/15.08 U201 < active 55.41/15.08 U211 < active 55.41/15.08 U221 < active 55.41/15.08 tail < active 55.41/15.08 take < active 55.41/15.08 sel < active 55.41/15.08 active < top 55.41/15.08 U204 < proper 55.41/15.08 U22 < proper 55.41/15.08 U212 < proper 55.41/15.08 U222 < proper 55.41/15.08 fst < proper 55.41/15.08 U32 < proper 55.41/15.08 U42 < proper 55.41/15.08 U52 < proper 55.41/15.08 U11 < proper 55.41/15.08 U21 < proper 55.41/15.08 U31 < proper 55.41/15.08 U41 < proper 55.41/15.08 U51 < proper 55.41/15.08 U61 < proper 55.41/15.08 isPLNat < proper 55.41/15.08 U71 < proper 55.41/15.08 U81 < proper 55.41/15.08 U91 < proper 55.41/15.08 U101 < proper 55.41/15.08 U111 < proper 55.41/15.08 U121 < proper 55.41/15.08 U131 < proper 55.41/15.08 U141 < proper 55.41/15.08 U151 < proper 55.41/15.08 U161 < proper 55.41/15.08 U171 < proper 55.41/15.08 U181 < proper 55.41/15.08 U191 < proper 55.41/15.08 U201 < proper 55.41/15.08 U211 < proper 55.41/15.08 U221 < proper 55.41/15.08 tail < proper 55.41/15.08 take < proper 55.41/15.08 sel < proper 55.41/15.08 proper < top 55.41/15.08 55.41/15.08 ---------------------------------------- 55.41/15.08 55.41/15.08 (63) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.08 Proved the following rewrite lemma: 55.41/15.08 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.41/15.08 55.41/15.08 Induction Base: 55.41/15.08 U204(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) 55.41/15.08 55.41/15.08 Induction Step: 55.41/15.08 U204(gen_tt:mark:nil:0':ok3_0(+(1, +(n108633_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) 55.41/15.08 mark(U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH 55.41/15.08 mark(*4_0) 55.41/15.08 55.41/15.08 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.08 ---------------------------------------- 55.41/15.08 55.41/15.08 (64) 55.41/15.08 Obligation: 55.41/15.08 TRS: 55.41/15.08 Rules: 55.41/15.08 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.08 active(U102(tt)) -> mark(tt) 55.41/15.08 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.08 active(U111(tt)) -> mark(tt) 55.41/15.08 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.08 active(U121(tt)) -> mark(tt) 55.41/15.08 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.08 active(U132(tt)) -> mark(tt) 55.41/15.08 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.08 active(U142(tt)) -> mark(tt) 55.41/15.08 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.08 active(U152(tt)) -> mark(tt) 55.41/15.08 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.08 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.08 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.08 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.08 active(U182(tt, Y)) -> mark(Y) 55.41/15.08 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.08 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.08 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.08 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.08 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.08 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.08 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.08 active(U212(tt, XS)) -> mark(XS) 55.41/15.08 active(U22(tt, X)) -> mark(X) 55.41/15.08 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.08 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.08 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.08 active(U32(tt, N)) -> mark(N) 55.41/15.08 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.08 active(U42(tt)) -> mark(tt) 55.41/15.08 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.08 active(U52(tt)) -> mark(tt) 55.41/15.08 active(U61(tt)) -> mark(tt) 55.41/15.08 active(U71(tt)) -> mark(tt) 55.41/15.08 active(U81(tt)) -> mark(tt) 55.41/15.08 active(U91(tt)) -> mark(tt) 55.41/15.08 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.08 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.08 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.08 active(isLNat(nil)) -> mark(tt) 55.41/15.08 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.08 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.08 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.08 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.08 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.08 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.08 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.08 active(isNatural(0')) -> mark(tt) 55.41/15.08 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.08 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.08 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.08 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.08 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.08 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.08 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.08 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.08 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.08 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.08 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.08 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.08 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.08 active(U102(X)) -> U102(active(X)) 55.41/15.08 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.08 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.08 active(U111(X)) -> U111(active(X)) 55.41/15.08 active(snd(X)) -> snd(active(X)) 55.41/15.08 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.08 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.08 active(U121(X)) -> U121(active(X)) 55.41/15.08 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.08 active(U132(X)) -> U132(active(X)) 55.41/15.08 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.08 active(U142(X)) -> U142(active(X)) 55.41/15.08 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.08 active(U152(X)) -> U152(active(X)) 55.41/15.08 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.08 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.08 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.08 active(s(X)) -> s(active(X)) 55.41/15.08 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.08 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.08 active(head(X)) -> head(active(X)) 55.41/15.08 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.08 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.08 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.08 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.08 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.08 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.08 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.08 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.08 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.08 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.08 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.08 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.08 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.08 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.08 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.08 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.08 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.08 active(fst(X)) -> fst(active(X)) 55.41/15.08 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.08 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.08 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.08 active(U42(X)) -> U42(active(X)) 55.41/15.08 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.08 active(U52(X)) -> U52(active(X)) 55.41/15.08 active(U61(X)) -> U61(active(X)) 55.41/15.08 active(U71(X)) -> U71(active(X)) 55.41/15.08 active(U81(X)) -> U81(active(X)) 55.41/15.08 active(U91(X)) -> U91(active(X)) 55.41/15.08 active(tail(X)) -> tail(active(X)) 55.41/15.08 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.08 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.08 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.08 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.08 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.08 U102(mark(X)) -> mark(U102(X)) 55.41/15.08 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.08 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.08 U111(mark(X)) -> mark(U111(X)) 55.41/15.08 snd(mark(X)) -> mark(snd(X)) 55.41/15.08 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.08 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.08 U121(mark(X)) -> mark(U121(X)) 55.41/15.08 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.08 U132(mark(X)) -> mark(U132(X)) 55.41/15.08 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.08 U142(mark(X)) -> mark(U142(X)) 55.41/15.08 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.08 U152(mark(X)) -> mark(U152(X)) 55.41/15.08 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.08 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.08 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.08 s(mark(X)) -> mark(s(X)) 55.41/15.08 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.08 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.08 head(mark(X)) -> mark(head(X)) 55.41/15.08 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.08 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.08 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.08 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.08 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.08 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.08 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.08 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.08 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.08 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.08 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.08 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.08 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.08 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.08 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.08 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.08 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.08 fst(mark(X)) -> mark(fst(X)) 55.41/15.08 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.08 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.08 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.08 U42(mark(X)) -> mark(U42(X)) 55.41/15.08 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.08 U52(mark(X)) -> mark(U52(X)) 55.41/15.08 U61(mark(X)) -> mark(U61(X)) 55.41/15.08 U71(mark(X)) -> mark(U71(X)) 55.41/15.08 U81(mark(X)) -> mark(U81(X)) 55.41/15.08 U91(mark(X)) -> mark(U91(X)) 55.41/15.08 tail(mark(X)) -> mark(tail(X)) 55.41/15.08 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.08 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.08 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.08 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.08 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.08 proper(tt) -> ok(tt) 55.41/15.08 proper(U102(X)) -> U102(proper(X)) 55.41/15.08 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.08 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U111(X)) -> U111(proper(X)) 55.41/15.08 proper(snd(X)) -> snd(proper(X)) 55.41/15.08 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.08 proper(U121(X)) -> U121(proper(X)) 55.41/15.08 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.08 proper(U132(X)) -> U132(proper(X)) 55.41/15.08 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.08 proper(U142(X)) -> U142(proper(X)) 55.41/15.08 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.08 proper(U152(X)) -> U152(proper(X)) 55.41/15.08 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.08 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.08 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.08 proper(s(X)) -> s(proper(X)) 55.41/15.08 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(head(X)) -> head(proper(X)) 55.41/15.08 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.08 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.08 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.08 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.08 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.08 proper(nil) -> ok(nil) 55.41/15.08 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.08 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.08 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.08 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.08 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.08 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.08 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.08 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.08 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(fst(X)) -> fst(proper(X)) 55.41/15.08 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.08 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.08 proper(U42(X)) -> U42(proper(X)) 55.41/15.08 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.08 proper(U52(X)) -> U52(proper(X)) 55.41/15.08 proper(U61(X)) -> U61(proper(X)) 55.41/15.08 proper(U71(X)) -> U71(proper(X)) 55.41/15.08 proper(U81(X)) -> U81(proper(X)) 55.41/15.08 proper(U91(X)) -> U91(proper(X)) 55.41/15.08 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.08 proper(tail(X)) -> tail(proper(X)) 55.41/15.08 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.08 proper(0') -> ok(0') 55.41/15.08 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.08 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.08 U102(ok(X)) -> ok(U102(X)) 55.41/15.08 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.08 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.08 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.08 U111(ok(X)) -> ok(U111(X)) 55.41/15.08 snd(ok(X)) -> ok(snd(X)) 55.41/15.08 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.08 U121(ok(X)) -> ok(U121(X)) 55.41/15.08 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.08 U132(ok(X)) -> ok(U132(X)) 55.41/15.08 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.08 U142(ok(X)) -> ok(U142(X)) 55.41/15.08 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.08 U152(ok(X)) -> ok(U152(X)) 55.41/15.08 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.08 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.08 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.08 s(ok(X)) -> ok(s(X)) 55.41/15.08 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.08 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.08 head(ok(X)) -> ok(head(X)) 55.41/15.08 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.08 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.08 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.08 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.08 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.08 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.08 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.08 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.08 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.08 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.08 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.08 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.08 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.08 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.08 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.08 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.08 fst(ok(X)) -> ok(fst(X)) 55.41/15.08 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.08 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.08 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.08 U42(ok(X)) -> ok(U42(X)) 55.41/15.08 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.08 U52(ok(X)) -> ok(U52(X)) 55.41/15.08 U61(ok(X)) -> ok(U61(X)) 55.41/15.08 U71(ok(X)) -> ok(U71(X)) 55.41/15.08 U81(ok(X)) -> ok(U81(X)) 55.41/15.08 U91(ok(X)) -> ok(U91(X)) 55.41/15.08 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.08 tail(ok(X)) -> ok(tail(X)) 55.41/15.08 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.08 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.08 top(mark(X)) -> top(proper(X)) 55.41/15.08 top(ok(X)) -> top(active(X)) 55.41/15.08 55.41/15.08 Types: 55.41/15.08 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 tt :: tt:mark:nil:0':ok 55.41/15.08 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 nil :: tt:mark:nil:0':ok 55.41/15.08 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 55.41/15.08 U202 :: 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 55.41/15.08 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U203 :: 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 55.41/15.08 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 0' :: tt:mark:nil:0':ok 55.41/15.08 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 top :: tt:mark:nil:0':ok -> top 55.41/15.08 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.08 hole_top2_0 :: top 55.41/15.08 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.08 55.41/15.08 55.41/15.08 Lemmas: 55.41/15.08 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.08 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.08 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.08 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.08 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.08 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.08 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.08 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.08 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.08 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.08 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.08 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.08 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.08 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.08 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.08 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.41/15.08 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.41/15.08 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.41/15.08 55.41/15.08 55.41/15.08 Generator Equations: 55.41/15.08 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.08 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.08 55.41/15.08 55.41/15.08 The following defined symbols remain to be analysed: 55.41/15.08 U22, active, U212, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.08 55.41/15.08 They will be analysed ascendingly in the following order: 55.41/15.08 U22 < active 55.41/15.08 U212 < active 55.41/15.08 U222 < active 55.41/15.08 fst < active 55.41/15.08 U32 < active 55.41/15.08 U42 < active 55.41/15.08 U52 < active 55.41/15.08 U11 < active 55.41/15.08 U21 < active 55.41/15.08 U31 < active 55.41/15.08 U41 < active 55.41/15.08 U51 < active 55.41/15.08 U61 < active 55.41/15.08 isPLNat < active 55.41/15.08 U71 < active 55.41/15.08 U81 < active 55.41/15.08 U91 < active 55.41/15.08 U101 < active 55.41/15.08 U111 < active 55.41/15.08 U121 < active 55.41/15.08 U131 < active 55.41/15.08 U141 < active 55.41/15.08 U151 < active 55.41/15.08 U161 < active 55.41/15.08 U171 < active 55.41/15.08 U181 < active 55.41/15.08 U191 < active 55.41/15.08 U201 < active 55.41/15.08 U211 < active 55.41/15.08 U221 < active 55.41/15.08 tail < active 55.41/15.08 take < active 55.41/15.08 sel < active 55.41/15.08 active < top 55.41/15.08 U22 < proper 55.41/15.08 U212 < proper 55.41/15.08 U222 < proper 55.41/15.08 fst < proper 55.41/15.08 U32 < proper 55.41/15.08 U42 < proper 55.41/15.08 U52 < proper 55.41/15.08 U11 < proper 55.41/15.08 U21 < proper 55.41/15.08 U31 < proper 55.41/15.08 U41 < proper 55.41/15.08 U51 < proper 55.41/15.08 U61 < proper 55.41/15.08 isPLNat < proper 55.41/15.08 U71 < proper 55.41/15.08 U81 < proper 55.41/15.08 U91 < proper 55.41/15.08 U101 < proper 55.41/15.08 U111 < proper 55.41/15.08 U121 < proper 55.41/15.08 U131 < proper 55.41/15.08 U141 < proper 55.41/15.08 U151 < proper 55.41/15.08 U161 < proper 55.41/15.08 U171 < proper 55.41/15.08 U181 < proper 55.41/15.08 U191 < proper 55.41/15.08 U201 < proper 55.41/15.08 U211 < proper 55.41/15.08 U221 < proper 55.41/15.08 tail < proper 55.41/15.08 take < proper 55.41/15.08 sel < proper 55.41/15.08 proper < top 55.41/15.08 55.41/15.08 ---------------------------------------- 55.41/15.08 55.41/15.08 (65) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.08 Proved the following rewrite lemma: 55.41/15.08 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.41/15.08 55.41/15.08 Induction Base: 55.41/15.08 U22(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) 55.41/15.08 55.41/15.08 Induction Step: 55.41/15.08 U22(gen_tt:mark:nil:0':ok3_0(+(1, +(n118036_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) 55.41/15.08 mark(U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH 55.41/15.08 mark(*4_0) 55.41/15.08 55.41/15.08 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.08 ---------------------------------------- 55.41/15.08 55.41/15.08 (66) 55.41/15.08 Obligation: 55.41/15.08 TRS: 55.41/15.08 Rules: 55.41/15.08 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.08 active(U102(tt)) -> mark(tt) 55.41/15.08 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.08 active(U111(tt)) -> mark(tt) 55.41/15.08 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.08 active(U121(tt)) -> mark(tt) 55.41/15.08 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.08 active(U132(tt)) -> mark(tt) 55.41/15.08 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.08 active(U142(tt)) -> mark(tt) 55.41/15.08 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.08 active(U152(tt)) -> mark(tt) 55.41/15.08 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.08 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.08 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.08 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.08 active(U182(tt, Y)) -> mark(Y) 55.41/15.08 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.08 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.08 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.08 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.08 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.08 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.08 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.08 active(U212(tt, XS)) -> mark(XS) 55.41/15.08 active(U22(tt, X)) -> mark(X) 55.41/15.08 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.08 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.08 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.08 active(U32(tt, N)) -> mark(N) 55.41/15.08 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.08 active(U42(tt)) -> mark(tt) 55.41/15.08 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.08 active(U52(tt)) -> mark(tt) 55.41/15.08 active(U61(tt)) -> mark(tt) 55.41/15.08 active(U71(tt)) -> mark(tt) 55.41/15.08 active(U81(tt)) -> mark(tt) 55.41/15.08 active(U91(tt)) -> mark(tt) 55.41/15.08 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.08 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.08 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.08 active(isLNat(nil)) -> mark(tt) 55.41/15.08 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.08 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.08 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.08 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.08 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.08 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.08 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.08 active(isNatural(0')) -> mark(tt) 55.41/15.08 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.08 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.08 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.08 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.08 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.08 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.08 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.08 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.08 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.08 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.08 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.08 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.08 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.08 active(U102(X)) -> U102(active(X)) 55.41/15.08 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.08 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.08 active(U111(X)) -> U111(active(X)) 55.41/15.08 active(snd(X)) -> snd(active(X)) 55.41/15.08 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.08 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.08 active(U121(X)) -> U121(active(X)) 55.41/15.08 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.08 active(U132(X)) -> U132(active(X)) 55.41/15.08 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.08 active(U142(X)) -> U142(active(X)) 55.41/15.08 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.08 active(U152(X)) -> U152(active(X)) 55.41/15.08 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.08 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.08 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.08 active(s(X)) -> s(active(X)) 55.41/15.08 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.08 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.08 active(head(X)) -> head(active(X)) 55.41/15.08 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.08 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.08 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.08 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.08 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.08 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.08 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.08 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.08 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.08 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.08 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.08 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.08 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.08 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.08 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.08 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.08 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.08 active(fst(X)) -> fst(active(X)) 55.41/15.08 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.08 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.08 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.08 active(U42(X)) -> U42(active(X)) 55.41/15.08 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.08 active(U52(X)) -> U52(active(X)) 55.41/15.08 active(U61(X)) -> U61(active(X)) 55.41/15.08 active(U71(X)) -> U71(active(X)) 55.41/15.08 active(U81(X)) -> U81(active(X)) 55.41/15.08 active(U91(X)) -> U91(active(X)) 55.41/15.08 active(tail(X)) -> tail(active(X)) 55.41/15.08 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.08 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.08 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.08 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.08 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.08 U102(mark(X)) -> mark(U102(X)) 55.41/15.08 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.08 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.08 U111(mark(X)) -> mark(U111(X)) 55.41/15.08 snd(mark(X)) -> mark(snd(X)) 55.41/15.08 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.08 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.08 U121(mark(X)) -> mark(U121(X)) 55.41/15.08 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.08 U132(mark(X)) -> mark(U132(X)) 55.41/15.08 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.08 U142(mark(X)) -> mark(U142(X)) 55.41/15.08 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.08 U152(mark(X)) -> mark(U152(X)) 55.41/15.08 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.08 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.08 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.08 s(mark(X)) -> mark(s(X)) 55.41/15.08 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.08 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.08 head(mark(X)) -> mark(head(X)) 55.41/15.08 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.08 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.08 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.08 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.08 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.08 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.08 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.08 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.08 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.08 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.08 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.08 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.08 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.08 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.08 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.08 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.08 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.08 fst(mark(X)) -> mark(fst(X)) 55.41/15.08 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.08 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.08 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.08 U42(mark(X)) -> mark(U42(X)) 55.41/15.08 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.08 U52(mark(X)) -> mark(U52(X)) 55.41/15.08 U61(mark(X)) -> mark(U61(X)) 55.41/15.08 U71(mark(X)) -> mark(U71(X)) 55.41/15.08 U81(mark(X)) -> mark(U81(X)) 55.41/15.08 U91(mark(X)) -> mark(U91(X)) 55.41/15.08 tail(mark(X)) -> mark(tail(X)) 55.41/15.08 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.08 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.08 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.08 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.08 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.08 proper(tt) -> ok(tt) 55.41/15.08 proper(U102(X)) -> U102(proper(X)) 55.41/15.08 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.08 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U111(X)) -> U111(proper(X)) 55.41/15.08 proper(snd(X)) -> snd(proper(X)) 55.41/15.08 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.08 proper(U121(X)) -> U121(proper(X)) 55.41/15.08 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.08 proper(U132(X)) -> U132(proper(X)) 55.41/15.08 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.08 proper(U142(X)) -> U142(proper(X)) 55.41/15.08 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.08 proper(U152(X)) -> U152(proper(X)) 55.41/15.08 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.08 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.08 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.08 proper(s(X)) -> s(proper(X)) 55.41/15.08 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(head(X)) -> head(proper(X)) 55.41/15.08 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.08 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.08 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.08 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.08 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.08 proper(nil) -> ok(nil) 55.41/15.08 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.08 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.08 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.08 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.08 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.08 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.08 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.08 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.08 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(fst(X)) -> fst(proper(X)) 55.41/15.08 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.08 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.08 proper(U42(X)) -> U42(proper(X)) 55.41/15.08 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.08 proper(U52(X)) -> U52(proper(X)) 55.41/15.08 proper(U61(X)) -> U61(proper(X)) 55.41/15.08 proper(U71(X)) -> U71(proper(X)) 55.41/15.08 proper(U81(X)) -> U81(proper(X)) 55.41/15.08 proper(U91(X)) -> U91(proper(X)) 55.41/15.08 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.08 proper(tail(X)) -> tail(proper(X)) 55.41/15.08 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.08 proper(0') -> ok(0') 55.41/15.08 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.08 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.08 U102(ok(X)) -> ok(U102(X)) 55.41/15.08 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.08 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.08 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.08 U111(ok(X)) -> ok(U111(X)) 55.41/15.08 snd(ok(X)) -> ok(snd(X)) 55.41/15.08 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.08 U121(ok(X)) -> ok(U121(X)) 55.41/15.08 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.08 U132(ok(X)) -> ok(U132(X)) 55.41/15.08 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.08 U142(ok(X)) -> ok(U142(X)) 55.41/15.08 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.08 U152(ok(X)) -> ok(U152(X)) 55.41/15.08 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.08 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.08 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.08 s(ok(X)) -> ok(s(X)) 55.41/15.08 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.08 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.08 head(ok(X)) -> ok(head(X)) 55.41/15.08 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.08 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.08 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.08 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.08 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.08 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.08 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.08 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.08 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.08 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.08 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.08 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.08 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.08 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.08 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.08 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.08 fst(ok(X)) -> ok(fst(X)) 55.41/15.08 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.08 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.08 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.08 U42(ok(X)) -> ok(U42(X)) 55.41/15.08 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.08 U52(ok(X)) -> ok(U52(X)) 55.41/15.08 U61(ok(X)) -> ok(U61(X)) 55.41/15.08 U71(ok(X)) -> ok(U71(X)) 55.41/15.08 U81(ok(X)) -> ok(U81(X)) 55.41/15.08 U91(ok(X)) -> ok(U91(X)) 55.41/15.08 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.08 tail(ok(X)) -> ok(tail(X)) 55.41/15.08 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.08 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.08 top(mark(X)) -> top(proper(X)) 55.41/15.08 top(ok(X)) -> top(active(X)) 55.41/15.08 55.41/15.08 Types: 55.41/15.08 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 tt :: tt:mark:nil:0':ok 55.41/15.08 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 nil :: tt:mark:nil:0':ok 55.41/15.08 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 55.41/15.08 U202 :: 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 55.41/15.08 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U203 :: 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 55.41/15.08 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 0' :: tt:mark:nil:0':ok 55.41/15.08 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 top :: tt:mark:nil:0':ok -> top 55.41/15.08 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.08 hole_top2_0 :: top 55.41/15.08 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.08 55.41/15.08 55.41/15.08 Lemmas: 55.41/15.08 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.08 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.08 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.08 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.08 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.08 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.08 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.08 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.08 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.08 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.08 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.08 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.08 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.08 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.08 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.08 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.41/15.08 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.41/15.08 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.41/15.08 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.41/15.08 55.41/15.08 55.41/15.08 Generator Equations: 55.41/15.08 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.08 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.08 55.41/15.08 55.41/15.08 The following defined symbols remain to be analysed: 55.41/15.08 U212, active, U222, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.08 55.41/15.08 They will be analysed ascendingly in the following order: 55.41/15.08 U212 < active 55.41/15.08 U222 < active 55.41/15.08 fst < active 55.41/15.08 U32 < active 55.41/15.08 U42 < active 55.41/15.08 U52 < active 55.41/15.08 U11 < active 55.41/15.08 U21 < active 55.41/15.08 U31 < active 55.41/15.08 U41 < active 55.41/15.08 U51 < active 55.41/15.08 U61 < active 55.41/15.08 isPLNat < active 55.41/15.08 U71 < active 55.41/15.08 U81 < active 55.41/15.08 U91 < active 55.41/15.08 U101 < active 55.41/15.08 U111 < active 55.41/15.08 U121 < active 55.41/15.08 U131 < active 55.41/15.08 U141 < active 55.41/15.08 U151 < active 55.41/15.08 U161 < active 55.41/15.08 U171 < active 55.41/15.08 U181 < active 55.41/15.08 U191 < active 55.41/15.08 U201 < active 55.41/15.08 U211 < active 55.41/15.08 U221 < active 55.41/15.08 tail < active 55.41/15.08 take < active 55.41/15.08 sel < active 55.41/15.08 active < top 55.41/15.08 U212 < proper 55.41/15.08 U222 < proper 55.41/15.08 fst < proper 55.41/15.08 U32 < proper 55.41/15.08 U42 < proper 55.41/15.08 U52 < proper 55.41/15.08 U11 < proper 55.41/15.08 U21 < proper 55.41/15.08 U31 < proper 55.41/15.08 U41 < proper 55.41/15.08 U51 < proper 55.41/15.08 U61 < proper 55.41/15.08 isPLNat < proper 55.41/15.08 U71 < proper 55.41/15.08 U81 < proper 55.41/15.08 U91 < proper 55.41/15.08 U101 < proper 55.41/15.08 U111 < proper 55.41/15.08 U121 < proper 55.41/15.08 U131 < proper 55.41/15.08 U141 < proper 55.41/15.08 U151 < proper 55.41/15.08 U161 < proper 55.41/15.08 U171 < proper 55.41/15.08 U181 < proper 55.41/15.08 U191 < proper 55.41/15.08 U201 < proper 55.41/15.08 U211 < proper 55.41/15.08 U221 < proper 55.41/15.08 tail < proper 55.41/15.08 take < proper 55.41/15.08 sel < proper 55.41/15.08 proper < top 55.41/15.08 55.41/15.08 ---------------------------------------- 55.41/15.08 55.41/15.08 (67) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.08 Proved the following rewrite lemma: 55.41/15.08 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.41/15.08 55.41/15.08 Induction Base: 55.41/15.08 U212(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) 55.41/15.08 55.41/15.08 Induction Step: 55.41/15.08 U212(gen_tt:mark:nil:0':ok3_0(+(1, +(n127745_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) 55.41/15.08 mark(U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH 55.41/15.08 mark(*4_0) 55.41/15.08 55.41/15.08 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.08 ---------------------------------------- 55.41/15.08 55.41/15.08 (68) 55.41/15.08 Obligation: 55.41/15.08 TRS: 55.41/15.08 Rules: 55.41/15.08 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.08 active(U102(tt)) -> mark(tt) 55.41/15.08 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.08 active(U111(tt)) -> mark(tt) 55.41/15.08 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.08 active(U121(tt)) -> mark(tt) 55.41/15.08 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.08 active(U132(tt)) -> mark(tt) 55.41/15.08 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.08 active(U142(tt)) -> mark(tt) 55.41/15.08 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.08 active(U152(tt)) -> mark(tt) 55.41/15.08 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.08 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.08 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.08 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.08 active(U182(tt, Y)) -> mark(Y) 55.41/15.08 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.08 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.08 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.08 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.08 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.08 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.08 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.08 active(U212(tt, XS)) -> mark(XS) 55.41/15.08 active(U22(tt, X)) -> mark(X) 55.41/15.08 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.08 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.08 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.08 active(U32(tt, N)) -> mark(N) 55.41/15.08 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.08 active(U42(tt)) -> mark(tt) 55.41/15.08 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.08 active(U52(tt)) -> mark(tt) 55.41/15.08 active(U61(tt)) -> mark(tt) 55.41/15.08 active(U71(tt)) -> mark(tt) 55.41/15.08 active(U81(tt)) -> mark(tt) 55.41/15.08 active(U91(tt)) -> mark(tt) 55.41/15.08 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.08 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.08 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.08 active(isLNat(nil)) -> mark(tt) 55.41/15.08 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.08 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.08 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.08 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.08 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.08 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.08 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.08 active(isNatural(0')) -> mark(tt) 55.41/15.08 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.08 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.08 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.08 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.08 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.08 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.08 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.08 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.08 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.08 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.08 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.08 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.08 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.08 active(U102(X)) -> U102(active(X)) 55.41/15.08 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.08 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.08 active(U111(X)) -> U111(active(X)) 55.41/15.08 active(snd(X)) -> snd(active(X)) 55.41/15.08 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.08 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.08 active(U121(X)) -> U121(active(X)) 55.41/15.08 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.08 active(U132(X)) -> U132(active(X)) 55.41/15.08 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.08 active(U142(X)) -> U142(active(X)) 55.41/15.08 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.08 active(U152(X)) -> U152(active(X)) 55.41/15.08 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.08 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.08 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.08 active(s(X)) -> s(active(X)) 55.41/15.08 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.08 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.08 active(head(X)) -> head(active(X)) 55.41/15.08 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.08 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.08 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.08 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.08 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.08 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.08 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.08 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.08 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.08 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.08 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.08 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.08 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.08 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.08 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.08 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.08 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.08 active(fst(X)) -> fst(active(X)) 55.41/15.08 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.08 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.08 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.08 active(U42(X)) -> U42(active(X)) 55.41/15.08 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.08 active(U52(X)) -> U52(active(X)) 55.41/15.08 active(U61(X)) -> U61(active(X)) 55.41/15.08 active(U71(X)) -> U71(active(X)) 55.41/15.08 active(U81(X)) -> U81(active(X)) 55.41/15.08 active(U91(X)) -> U91(active(X)) 55.41/15.08 active(tail(X)) -> tail(active(X)) 55.41/15.08 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.08 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.08 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.08 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.08 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.08 U102(mark(X)) -> mark(U102(X)) 55.41/15.08 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.08 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.08 U111(mark(X)) -> mark(U111(X)) 55.41/15.08 snd(mark(X)) -> mark(snd(X)) 55.41/15.08 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.08 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.08 U121(mark(X)) -> mark(U121(X)) 55.41/15.08 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.08 U132(mark(X)) -> mark(U132(X)) 55.41/15.08 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.08 U142(mark(X)) -> mark(U142(X)) 55.41/15.08 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.08 U152(mark(X)) -> mark(U152(X)) 55.41/15.08 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.08 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.08 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.08 s(mark(X)) -> mark(s(X)) 55.41/15.08 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.08 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.08 head(mark(X)) -> mark(head(X)) 55.41/15.08 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.08 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.08 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.08 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.08 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.08 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.08 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.08 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.08 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.08 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.08 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.08 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.08 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.08 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.08 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.08 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.08 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.08 fst(mark(X)) -> mark(fst(X)) 55.41/15.08 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.08 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.08 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.08 U42(mark(X)) -> mark(U42(X)) 55.41/15.08 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.08 U52(mark(X)) -> mark(U52(X)) 55.41/15.08 U61(mark(X)) -> mark(U61(X)) 55.41/15.08 U71(mark(X)) -> mark(U71(X)) 55.41/15.08 U81(mark(X)) -> mark(U81(X)) 55.41/15.08 U91(mark(X)) -> mark(U91(X)) 55.41/15.08 tail(mark(X)) -> mark(tail(X)) 55.41/15.08 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.08 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.08 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.08 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.08 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.08 proper(tt) -> ok(tt) 55.41/15.08 proper(U102(X)) -> U102(proper(X)) 55.41/15.08 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.08 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U111(X)) -> U111(proper(X)) 55.41/15.08 proper(snd(X)) -> snd(proper(X)) 55.41/15.08 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.08 proper(U121(X)) -> U121(proper(X)) 55.41/15.08 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.08 proper(U132(X)) -> U132(proper(X)) 55.41/15.08 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.08 proper(U142(X)) -> U142(proper(X)) 55.41/15.08 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.08 proper(U152(X)) -> U152(proper(X)) 55.41/15.08 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.08 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.08 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.08 proper(s(X)) -> s(proper(X)) 55.41/15.08 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(head(X)) -> head(proper(X)) 55.41/15.08 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.08 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.08 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.08 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.08 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.08 proper(nil) -> ok(nil) 55.41/15.08 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.08 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.08 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.08 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.08 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.08 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.08 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.08 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.08 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(fst(X)) -> fst(proper(X)) 55.41/15.08 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.08 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.08 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.08 proper(U42(X)) -> U42(proper(X)) 55.41/15.08 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.08 proper(U52(X)) -> U52(proper(X)) 55.41/15.08 proper(U61(X)) -> U61(proper(X)) 55.41/15.08 proper(U71(X)) -> U71(proper(X)) 55.41/15.08 proper(U81(X)) -> U81(proper(X)) 55.41/15.08 proper(U91(X)) -> U91(proper(X)) 55.41/15.08 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.08 proper(tail(X)) -> tail(proper(X)) 55.41/15.08 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.08 proper(0') -> ok(0') 55.41/15.08 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.08 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.08 U102(ok(X)) -> ok(U102(X)) 55.41/15.08 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.08 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.08 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.08 U111(ok(X)) -> ok(U111(X)) 55.41/15.08 snd(ok(X)) -> ok(snd(X)) 55.41/15.08 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.08 U121(ok(X)) -> ok(U121(X)) 55.41/15.08 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.08 U132(ok(X)) -> ok(U132(X)) 55.41/15.08 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.08 U142(ok(X)) -> ok(U142(X)) 55.41/15.08 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.08 U152(ok(X)) -> ok(U152(X)) 55.41/15.08 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.08 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.08 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.08 s(ok(X)) -> ok(s(X)) 55.41/15.08 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.08 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.08 head(ok(X)) -> ok(head(X)) 55.41/15.08 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.08 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.08 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.08 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.08 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.08 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.08 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.08 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.08 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.08 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.08 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.08 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.08 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.08 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.08 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.08 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.08 fst(ok(X)) -> ok(fst(X)) 55.41/15.08 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.08 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.08 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.08 U42(ok(X)) -> ok(U42(X)) 55.41/15.08 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.08 U52(ok(X)) -> ok(U52(X)) 55.41/15.08 U61(ok(X)) -> ok(U61(X)) 55.41/15.08 U71(ok(X)) -> ok(U71(X)) 55.41/15.08 U81(ok(X)) -> ok(U81(X)) 55.41/15.08 U91(ok(X)) -> ok(U91(X)) 55.41/15.08 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.08 tail(ok(X)) -> ok(tail(X)) 55.41/15.08 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.08 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.08 top(mark(X)) -> top(proper(X)) 55.41/15.08 top(ok(X)) -> top(active(X)) 55.41/15.08 55.41/15.08 Types: 55.41/15.08 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 tt :: tt:mark:nil:0':ok 55.41/15.08 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 nil :: tt:mark:nil:0':ok 55.41/15.08 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 55.41/15.08 U202 :: 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 55.41/15.08 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U203 :: 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 55.41/15.08 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 0' :: tt:mark:nil:0':ok 55.41/15.08 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.08 top :: tt:mark:nil:0':ok -> top 55.41/15.08 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.08 hole_top2_0 :: top 55.41/15.08 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.08 55.41/15.08 55.41/15.08 Lemmas: 55.41/15.08 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.08 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.08 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.08 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.08 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.08 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.08 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.08 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.08 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.08 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.08 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.08 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.08 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.08 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.08 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.08 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.41/15.08 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.41/15.08 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.41/15.08 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.41/15.08 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.41/15.08 55.41/15.08 55.41/15.08 Generator Equations: 55.41/15.08 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.08 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.08 55.41/15.08 55.41/15.08 The following defined symbols remain to be analysed: 55.41/15.08 U222, active, fst, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.08 55.41/15.08 They will be analysed ascendingly in the following order: 55.41/15.08 U222 < active 55.41/15.08 fst < active 55.41/15.08 U32 < active 55.41/15.08 U42 < active 55.41/15.08 U52 < active 55.41/15.08 U11 < active 55.41/15.08 U21 < active 55.41/15.08 U31 < active 55.41/15.08 U41 < active 55.41/15.08 U51 < active 55.41/15.08 U61 < active 55.41/15.08 isPLNat < active 55.41/15.08 U71 < active 55.41/15.08 U81 < active 55.41/15.08 U91 < active 55.41/15.08 U101 < active 55.41/15.08 U111 < active 55.41/15.08 U121 < active 55.41/15.08 U131 < active 55.41/15.08 U141 < active 55.41/15.08 U151 < active 55.41/15.08 U161 < active 55.41/15.08 U171 < active 55.41/15.08 U181 < active 55.41/15.08 U191 < active 55.41/15.08 U201 < active 55.41/15.08 U211 < active 55.41/15.08 U221 < active 55.41/15.08 tail < active 55.41/15.08 take < active 55.41/15.08 sel < active 55.41/15.08 active < top 55.41/15.08 U222 < proper 55.41/15.08 fst < proper 55.41/15.08 U32 < proper 55.41/15.08 U42 < proper 55.41/15.08 U52 < proper 55.41/15.08 U11 < proper 55.41/15.08 U21 < proper 55.41/15.08 U31 < proper 55.41/15.08 U41 < proper 55.41/15.08 U51 < proper 55.41/15.08 U61 < proper 55.41/15.08 isPLNat < proper 55.41/15.08 U71 < proper 55.41/15.08 U81 < proper 55.41/15.08 U91 < proper 55.41/15.08 U101 < proper 55.41/15.08 U111 < proper 55.41/15.08 U121 < proper 55.41/15.08 U131 < proper 55.41/15.08 U141 < proper 55.41/15.08 U151 < proper 55.41/15.08 U161 < proper 55.41/15.08 U171 < proper 55.41/15.08 U181 < proper 55.41/15.08 U191 < proper 55.41/15.08 U201 < proper 55.41/15.08 U211 < proper 55.41/15.08 U221 < proper 55.41/15.08 tail < proper 55.41/15.08 take < proper 55.41/15.08 sel < proper 55.41/15.08 proper < top 55.41/15.08 55.41/15.08 ---------------------------------------- 55.41/15.08 55.41/15.08 (69) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.08 Proved the following rewrite lemma: 55.41/15.08 U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n137760_0) 55.41/15.08 55.41/15.08 Induction Base: 55.41/15.08 U222(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)) 55.41/15.08 55.41/15.08 Induction Step: 55.41/15.08 U222(gen_tt:mark:nil:0':ok3_0(+(1, +(n137760_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) ->_R^Omega(1) 55.41/15.08 mark(U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c))) ->_IH 55.41/15.08 mark(*4_0) 55.41/15.08 55.41/15.08 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.08 ---------------------------------------- 55.41/15.08 55.41/15.08 (70) 55.41/15.08 Obligation: 55.41/15.08 TRS: 55.41/15.08 Rules: 55.41/15.08 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.08 active(U102(tt)) -> mark(tt) 55.41/15.08 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.08 active(U111(tt)) -> mark(tt) 55.41/15.08 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.08 active(U121(tt)) -> mark(tt) 55.41/15.08 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.08 active(U132(tt)) -> mark(tt) 55.41/15.08 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.08 active(U142(tt)) -> mark(tt) 55.41/15.08 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.08 active(U152(tt)) -> mark(tt) 55.41/15.08 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.08 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.08 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.08 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.08 active(U182(tt, Y)) -> mark(Y) 55.41/15.08 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.08 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.08 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.08 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.08 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.08 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.08 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.08 active(U212(tt, XS)) -> mark(XS) 55.41/15.08 active(U22(tt, X)) -> mark(X) 55.41/15.08 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.08 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.08 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.08 active(U32(tt, N)) -> mark(N) 55.41/15.08 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.08 active(U42(tt)) -> mark(tt) 55.41/15.08 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.08 active(U52(tt)) -> mark(tt) 55.41/15.08 active(U61(tt)) -> mark(tt) 55.41/15.08 active(U71(tt)) -> mark(tt) 55.41/15.08 active(U81(tt)) -> mark(tt) 55.41/15.08 active(U91(tt)) -> mark(tt) 55.41/15.09 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.09 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.09 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.09 active(isLNat(nil)) -> mark(tt) 55.41/15.09 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.09 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.09 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.09 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.09 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.09 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.09 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.09 active(isNatural(0')) -> mark(tt) 55.41/15.09 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.09 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.09 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.09 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.09 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.09 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.09 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.09 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.09 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.09 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.09 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.09 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.09 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.09 active(U102(X)) -> U102(active(X)) 55.41/15.09 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.09 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.09 active(U111(X)) -> U111(active(X)) 55.41/15.09 active(snd(X)) -> snd(active(X)) 55.41/15.09 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.09 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.09 active(U121(X)) -> U121(active(X)) 55.41/15.09 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.09 active(U132(X)) -> U132(active(X)) 55.41/15.09 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.09 active(U142(X)) -> U142(active(X)) 55.41/15.09 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.09 active(U152(X)) -> U152(active(X)) 55.41/15.09 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.09 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.09 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.09 active(s(X)) -> s(active(X)) 55.41/15.09 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.09 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.09 active(head(X)) -> head(active(X)) 55.41/15.09 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.09 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.09 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.09 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.09 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.09 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.09 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.09 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.09 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.09 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.09 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.09 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.09 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.09 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.09 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.09 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.09 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.09 active(fst(X)) -> fst(active(X)) 55.41/15.09 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.09 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.09 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.09 active(U42(X)) -> U42(active(X)) 55.41/15.09 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.09 active(U52(X)) -> U52(active(X)) 55.41/15.09 active(U61(X)) -> U61(active(X)) 55.41/15.09 active(U71(X)) -> U71(active(X)) 55.41/15.09 active(U81(X)) -> U81(active(X)) 55.41/15.09 active(U91(X)) -> U91(active(X)) 55.41/15.09 active(tail(X)) -> tail(active(X)) 55.41/15.09 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.09 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.09 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.09 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.09 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.09 U102(mark(X)) -> mark(U102(X)) 55.41/15.09 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.09 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.09 U111(mark(X)) -> mark(U111(X)) 55.41/15.09 snd(mark(X)) -> mark(snd(X)) 55.41/15.09 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.09 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.09 U121(mark(X)) -> mark(U121(X)) 55.41/15.09 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.09 U132(mark(X)) -> mark(U132(X)) 55.41/15.09 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.09 U142(mark(X)) -> mark(U142(X)) 55.41/15.09 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.09 U152(mark(X)) -> mark(U152(X)) 55.41/15.09 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.09 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.09 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.09 s(mark(X)) -> mark(s(X)) 55.41/15.09 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.09 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.09 head(mark(X)) -> mark(head(X)) 55.41/15.09 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.09 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.09 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.09 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.09 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.09 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.09 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.09 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.09 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.09 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.09 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.09 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.09 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.09 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.09 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.09 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.09 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.09 fst(mark(X)) -> mark(fst(X)) 55.41/15.09 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.09 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.09 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.09 U42(mark(X)) -> mark(U42(X)) 55.41/15.09 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.09 U52(mark(X)) -> mark(U52(X)) 55.41/15.09 U61(mark(X)) -> mark(U61(X)) 55.41/15.09 U71(mark(X)) -> mark(U71(X)) 55.41/15.09 U81(mark(X)) -> mark(U81(X)) 55.41/15.09 U91(mark(X)) -> mark(U91(X)) 55.41/15.09 tail(mark(X)) -> mark(tail(X)) 55.41/15.09 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.09 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.09 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.09 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.09 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.09 proper(tt) -> ok(tt) 55.41/15.09 proper(U102(X)) -> U102(proper(X)) 55.41/15.09 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.09 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U111(X)) -> U111(proper(X)) 55.41/15.09 proper(snd(X)) -> snd(proper(X)) 55.41/15.09 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.09 proper(U121(X)) -> U121(proper(X)) 55.41/15.09 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.09 proper(U132(X)) -> U132(proper(X)) 55.41/15.09 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.09 proper(U142(X)) -> U142(proper(X)) 55.41/15.09 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.09 proper(U152(X)) -> U152(proper(X)) 55.41/15.09 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.09 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.09 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.09 proper(s(X)) -> s(proper(X)) 55.41/15.09 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(head(X)) -> head(proper(X)) 55.41/15.09 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.09 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.09 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.09 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.09 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.09 proper(nil) -> ok(nil) 55.41/15.09 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.09 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.09 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.09 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.09 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.09 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.09 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.09 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.09 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(fst(X)) -> fst(proper(X)) 55.41/15.09 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.09 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.09 proper(U42(X)) -> U42(proper(X)) 55.41/15.09 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.09 proper(U52(X)) -> U52(proper(X)) 55.41/15.09 proper(U61(X)) -> U61(proper(X)) 55.41/15.09 proper(U71(X)) -> U71(proper(X)) 55.41/15.09 proper(U81(X)) -> U81(proper(X)) 55.41/15.09 proper(U91(X)) -> U91(proper(X)) 55.41/15.09 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.09 proper(tail(X)) -> tail(proper(X)) 55.41/15.09 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.09 proper(0') -> ok(0') 55.41/15.09 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.09 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.09 U102(ok(X)) -> ok(U102(X)) 55.41/15.09 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.09 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.09 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.09 U111(ok(X)) -> ok(U111(X)) 55.41/15.09 snd(ok(X)) -> ok(snd(X)) 55.41/15.09 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.09 U121(ok(X)) -> ok(U121(X)) 55.41/15.09 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.09 U132(ok(X)) -> ok(U132(X)) 55.41/15.09 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.09 U142(ok(X)) -> ok(U142(X)) 55.41/15.09 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.09 U152(ok(X)) -> ok(U152(X)) 55.41/15.09 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.09 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.09 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.09 s(ok(X)) -> ok(s(X)) 55.41/15.09 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.09 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.09 head(ok(X)) -> ok(head(X)) 55.41/15.09 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.09 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.09 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.09 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.09 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.09 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.09 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.09 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.09 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.09 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.09 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.09 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.09 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.09 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.09 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.09 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.09 fst(ok(X)) -> ok(fst(X)) 55.41/15.09 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.09 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.09 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.09 U42(ok(X)) -> ok(U42(X)) 55.41/15.09 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.09 U52(ok(X)) -> ok(U52(X)) 55.41/15.09 U61(ok(X)) -> ok(U61(X)) 55.41/15.09 U71(ok(X)) -> ok(U71(X)) 55.41/15.09 U81(ok(X)) -> ok(U81(X)) 55.41/15.09 U91(ok(X)) -> ok(U91(X)) 55.41/15.09 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.09 tail(ok(X)) -> ok(tail(X)) 55.41/15.09 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.09 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.09 top(mark(X)) -> top(proper(X)) 55.41/15.09 top(ok(X)) -> top(active(X)) 55.41/15.09 55.41/15.09 Types: 55.41/15.09 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 tt :: tt:mark:nil:0':ok 55.41/15.09 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 nil :: tt:mark:nil:0':ok 55.41/15.09 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 55.41/15.09 U202 :: 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 55.41/15.09 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U203 :: 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 55.41/15.09 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 0' :: tt:mark:nil:0':ok 55.41/15.09 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 top :: tt:mark:nil:0':ok -> top 55.41/15.09 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.09 hole_top2_0 :: top 55.41/15.09 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.09 55.41/15.09 55.41/15.09 Lemmas: 55.41/15.09 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.09 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.09 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.09 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.09 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.09 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.09 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.09 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.09 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.09 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.09 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.09 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.09 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.09 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.09 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.09 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.41/15.09 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.41/15.09 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.41/15.09 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.41/15.09 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.41/15.09 U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n137760_0) 55.41/15.09 55.41/15.09 55.41/15.09 Generator Equations: 55.41/15.09 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.09 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.09 55.41/15.09 55.41/15.09 The following defined symbols remain to be analysed: 55.41/15.09 fst, active, U32, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.09 55.41/15.09 They will be analysed ascendingly in the following order: 55.41/15.09 fst < active 55.41/15.09 U32 < active 55.41/15.09 U42 < active 55.41/15.09 U52 < active 55.41/15.09 U11 < active 55.41/15.09 U21 < active 55.41/15.09 U31 < active 55.41/15.09 U41 < active 55.41/15.09 U51 < active 55.41/15.09 U61 < active 55.41/15.09 isPLNat < active 55.41/15.09 U71 < active 55.41/15.09 U81 < active 55.41/15.09 U91 < active 55.41/15.09 U101 < active 55.41/15.09 U111 < active 55.41/15.09 U121 < active 55.41/15.09 U131 < active 55.41/15.09 U141 < active 55.41/15.09 U151 < active 55.41/15.09 U161 < active 55.41/15.09 U171 < active 55.41/15.09 U181 < active 55.41/15.09 U191 < active 55.41/15.09 U201 < active 55.41/15.09 U211 < active 55.41/15.09 U221 < active 55.41/15.09 tail < active 55.41/15.09 take < active 55.41/15.09 sel < active 55.41/15.09 active < top 55.41/15.09 fst < proper 55.41/15.09 U32 < proper 55.41/15.09 U42 < proper 55.41/15.09 U52 < proper 55.41/15.09 U11 < proper 55.41/15.09 U21 < proper 55.41/15.09 U31 < proper 55.41/15.09 U41 < proper 55.41/15.09 U51 < proper 55.41/15.09 U61 < proper 55.41/15.09 isPLNat < proper 55.41/15.09 U71 < proper 55.41/15.09 U81 < proper 55.41/15.09 U91 < proper 55.41/15.09 U101 < proper 55.41/15.09 U111 < proper 55.41/15.09 U121 < proper 55.41/15.09 U131 < proper 55.41/15.09 U141 < proper 55.41/15.09 U151 < proper 55.41/15.09 U161 < proper 55.41/15.09 U171 < proper 55.41/15.09 U181 < proper 55.41/15.09 U191 < proper 55.41/15.09 U201 < proper 55.41/15.09 U211 < proper 55.41/15.09 U221 < proper 55.41/15.09 tail < proper 55.41/15.09 take < proper 55.41/15.09 sel < proper 55.41/15.09 proper < top 55.41/15.09 55.41/15.09 ---------------------------------------- 55.41/15.09 55.41/15.09 (71) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.09 Proved the following rewrite lemma: 55.41/15.09 fst(gen_tt:mark:nil:0':ok3_0(+(1, n154384_0))) -> *4_0, rt in Omega(n154384_0) 55.41/15.09 55.41/15.09 Induction Base: 55.41/15.09 fst(gen_tt:mark:nil:0':ok3_0(+(1, 0))) 55.41/15.09 55.41/15.09 Induction Step: 55.41/15.09 fst(gen_tt:mark:nil:0':ok3_0(+(1, +(n154384_0, 1)))) ->_R^Omega(1) 55.41/15.09 mark(fst(gen_tt:mark:nil:0':ok3_0(+(1, n154384_0)))) ->_IH 55.41/15.09 mark(*4_0) 55.41/15.09 55.41/15.09 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.09 ---------------------------------------- 55.41/15.09 55.41/15.09 (72) 55.41/15.09 Obligation: 55.41/15.09 TRS: 55.41/15.09 Rules: 55.41/15.09 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.09 active(U102(tt)) -> mark(tt) 55.41/15.09 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.09 active(U111(tt)) -> mark(tt) 55.41/15.09 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.09 active(U121(tt)) -> mark(tt) 55.41/15.09 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.09 active(U132(tt)) -> mark(tt) 55.41/15.09 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.09 active(U142(tt)) -> mark(tt) 55.41/15.09 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.09 active(U152(tt)) -> mark(tt) 55.41/15.09 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.09 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.09 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.09 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.09 active(U182(tt, Y)) -> mark(Y) 55.41/15.09 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.09 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.09 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.09 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.09 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.09 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.09 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.09 active(U212(tt, XS)) -> mark(XS) 55.41/15.09 active(U22(tt, X)) -> mark(X) 55.41/15.09 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.09 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.09 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.09 active(U32(tt, N)) -> mark(N) 55.41/15.09 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.09 active(U42(tt)) -> mark(tt) 55.41/15.09 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.09 active(U52(tt)) -> mark(tt) 55.41/15.09 active(U61(tt)) -> mark(tt) 55.41/15.09 active(U71(tt)) -> mark(tt) 55.41/15.09 active(U81(tt)) -> mark(tt) 55.41/15.09 active(U91(tt)) -> mark(tt) 55.41/15.09 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.09 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.09 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.09 active(isLNat(nil)) -> mark(tt) 55.41/15.09 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.09 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.09 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.09 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.09 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.09 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.09 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.09 active(isNatural(0')) -> mark(tt) 55.41/15.09 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.09 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.09 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.09 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.09 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.09 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.09 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.09 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.09 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.09 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.09 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.09 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.09 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.09 active(U102(X)) -> U102(active(X)) 55.41/15.09 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.09 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.09 active(U111(X)) -> U111(active(X)) 55.41/15.09 active(snd(X)) -> snd(active(X)) 55.41/15.09 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.09 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.09 active(U121(X)) -> U121(active(X)) 55.41/15.09 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.09 active(U132(X)) -> U132(active(X)) 55.41/15.09 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.09 active(U142(X)) -> U142(active(X)) 55.41/15.09 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.09 active(U152(X)) -> U152(active(X)) 55.41/15.09 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.09 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.09 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.09 active(s(X)) -> s(active(X)) 55.41/15.09 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.09 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.09 active(head(X)) -> head(active(X)) 55.41/15.09 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.09 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.09 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.09 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.09 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.09 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.09 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.09 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.09 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.09 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.09 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.09 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.09 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.09 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.09 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.09 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.09 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.09 active(fst(X)) -> fst(active(X)) 55.41/15.09 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.09 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.09 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.09 active(U42(X)) -> U42(active(X)) 55.41/15.09 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.09 active(U52(X)) -> U52(active(X)) 55.41/15.09 active(U61(X)) -> U61(active(X)) 55.41/15.09 active(U71(X)) -> U71(active(X)) 55.41/15.09 active(U81(X)) -> U81(active(X)) 55.41/15.09 active(U91(X)) -> U91(active(X)) 55.41/15.09 active(tail(X)) -> tail(active(X)) 55.41/15.09 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.09 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.09 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.09 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.09 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.09 U102(mark(X)) -> mark(U102(X)) 55.41/15.09 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.09 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.09 U111(mark(X)) -> mark(U111(X)) 55.41/15.09 snd(mark(X)) -> mark(snd(X)) 55.41/15.09 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.09 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.09 U121(mark(X)) -> mark(U121(X)) 55.41/15.09 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.09 U132(mark(X)) -> mark(U132(X)) 55.41/15.09 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.09 U142(mark(X)) -> mark(U142(X)) 55.41/15.09 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.09 U152(mark(X)) -> mark(U152(X)) 55.41/15.09 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.09 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.09 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.09 s(mark(X)) -> mark(s(X)) 55.41/15.09 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.09 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.09 head(mark(X)) -> mark(head(X)) 55.41/15.09 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.09 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.09 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.09 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.09 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.09 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.09 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.09 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.09 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.09 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.09 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.09 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.09 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.09 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.09 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.09 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.09 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.09 fst(mark(X)) -> mark(fst(X)) 55.41/15.09 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.09 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.09 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.09 U42(mark(X)) -> mark(U42(X)) 55.41/15.09 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.09 U52(mark(X)) -> mark(U52(X)) 55.41/15.09 U61(mark(X)) -> mark(U61(X)) 55.41/15.09 U71(mark(X)) -> mark(U71(X)) 55.41/15.09 U81(mark(X)) -> mark(U81(X)) 55.41/15.09 U91(mark(X)) -> mark(U91(X)) 55.41/15.09 tail(mark(X)) -> mark(tail(X)) 55.41/15.09 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.09 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.09 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.09 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.09 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.09 proper(tt) -> ok(tt) 55.41/15.09 proper(U102(X)) -> U102(proper(X)) 55.41/15.09 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.09 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U111(X)) -> U111(proper(X)) 55.41/15.09 proper(snd(X)) -> snd(proper(X)) 55.41/15.09 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.09 proper(U121(X)) -> U121(proper(X)) 55.41/15.09 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.09 proper(U132(X)) -> U132(proper(X)) 55.41/15.09 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.09 proper(U142(X)) -> U142(proper(X)) 55.41/15.09 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.09 proper(U152(X)) -> U152(proper(X)) 55.41/15.09 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.09 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.09 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.09 proper(s(X)) -> s(proper(X)) 55.41/15.09 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(head(X)) -> head(proper(X)) 55.41/15.09 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.09 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.09 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.09 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.09 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.09 proper(nil) -> ok(nil) 55.41/15.09 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.09 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.09 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.09 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.09 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.09 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.09 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.09 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.09 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(fst(X)) -> fst(proper(X)) 55.41/15.09 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.09 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.09 proper(U42(X)) -> U42(proper(X)) 55.41/15.09 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.09 proper(U52(X)) -> U52(proper(X)) 55.41/15.09 proper(U61(X)) -> U61(proper(X)) 55.41/15.09 proper(U71(X)) -> U71(proper(X)) 55.41/15.09 proper(U81(X)) -> U81(proper(X)) 55.41/15.09 proper(U91(X)) -> U91(proper(X)) 55.41/15.09 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.09 proper(tail(X)) -> tail(proper(X)) 55.41/15.09 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.09 proper(0') -> ok(0') 55.41/15.09 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.09 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.09 U102(ok(X)) -> ok(U102(X)) 55.41/15.09 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.09 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.09 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.09 U111(ok(X)) -> ok(U111(X)) 55.41/15.09 snd(ok(X)) -> ok(snd(X)) 55.41/15.09 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.09 U121(ok(X)) -> ok(U121(X)) 55.41/15.09 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.09 U132(ok(X)) -> ok(U132(X)) 55.41/15.09 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.09 U142(ok(X)) -> ok(U142(X)) 55.41/15.09 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.09 U152(ok(X)) -> ok(U152(X)) 55.41/15.09 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.09 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.09 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.09 s(ok(X)) -> ok(s(X)) 55.41/15.09 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.09 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.09 head(ok(X)) -> ok(head(X)) 55.41/15.09 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.09 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.09 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.09 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.09 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.09 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.09 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.09 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.09 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.09 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.09 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.09 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.09 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.09 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.09 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.09 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.09 fst(ok(X)) -> ok(fst(X)) 55.41/15.09 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.09 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.09 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.09 U42(ok(X)) -> ok(U42(X)) 55.41/15.09 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.09 U52(ok(X)) -> ok(U52(X)) 55.41/15.09 U61(ok(X)) -> ok(U61(X)) 55.41/15.09 U71(ok(X)) -> ok(U71(X)) 55.41/15.09 U81(ok(X)) -> ok(U81(X)) 55.41/15.09 U91(ok(X)) -> ok(U91(X)) 55.41/15.09 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.09 tail(ok(X)) -> ok(tail(X)) 55.41/15.09 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.09 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.09 top(mark(X)) -> top(proper(X)) 55.41/15.09 top(ok(X)) -> top(active(X)) 55.41/15.09 55.41/15.09 Types: 55.41/15.09 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 tt :: tt:mark:nil:0':ok 55.41/15.09 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 nil :: tt:mark:nil:0':ok 55.41/15.09 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 55.41/15.09 U202 :: 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 55.41/15.09 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U203 :: 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 55.41/15.09 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 0' :: tt:mark:nil:0':ok 55.41/15.09 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 top :: tt:mark:nil:0':ok -> top 55.41/15.09 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.09 hole_top2_0 :: top 55.41/15.09 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.09 55.41/15.09 55.41/15.09 Lemmas: 55.41/15.09 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.09 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.09 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.09 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.09 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.09 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.09 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.09 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.09 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.09 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.09 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.09 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.09 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.09 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.09 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.09 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.41/15.09 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.41/15.09 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.41/15.09 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.41/15.09 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.41/15.09 U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n137760_0) 55.41/15.09 fst(gen_tt:mark:nil:0':ok3_0(+(1, n154384_0))) -> *4_0, rt in Omega(n154384_0) 55.41/15.09 55.41/15.09 55.41/15.09 Generator Equations: 55.41/15.09 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.09 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.09 55.41/15.09 55.41/15.09 The following defined symbols remain to be analysed: 55.41/15.09 U32, active, U42, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.09 55.41/15.09 They will be analysed ascendingly in the following order: 55.41/15.09 U32 < active 55.41/15.09 U42 < active 55.41/15.09 U52 < active 55.41/15.09 U11 < active 55.41/15.09 U21 < active 55.41/15.09 U31 < active 55.41/15.09 U41 < active 55.41/15.09 U51 < active 55.41/15.09 U61 < active 55.41/15.09 isPLNat < active 55.41/15.09 U71 < active 55.41/15.09 U81 < active 55.41/15.09 U91 < active 55.41/15.09 U101 < active 55.41/15.09 U111 < active 55.41/15.09 U121 < active 55.41/15.09 U131 < active 55.41/15.09 U141 < active 55.41/15.09 U151 < active 55.41/15.09 U161 < active 55.41/15.09 U171 < active 55.41/15.09 U181 < active 55.41/15.09 U191 < active 55.41/15.09 U201 < active 55.41/15.09 U211 < active 55.41/15.09 U221 < active 55.41/15.09 tail < active 55.41/15.09 take < active 55.41/15.09 sel < active 55.41/15.09 active < top 55.41/15.09 U32 < proper 55.41/15.09 U42 < proper 55.41/15.09 U52 < proper 55.41/15.09 U11 < proper 55.41/15.09 U21 < proper 55.41/15.09 U31 < proper 55.41/15.09 U41 < proper 55.41/15.09 U51 < proper 55.41/15.09 U61 < proper 55.41/15.09 isPLNat < proper 55.41/15.09 U71 < proper 55.41/15.09 U81 < proper 55.41/15.09 U91 < proper 55.41/15.09 U101 < proper 55.41/15.09 U111 < proper 55.41/15.09 U121 < proper 55.41/15.09 U131 < proper 55.41/15.09 U141 < proper 55.41/15.09 U151 < proper 55.41/15.09 U161 < proper 55.41/15.09 U171 < proper 55.41/15.09 U181 < proper 55.41/15.09 U191 < proper 55.41/15.09 U201 < proper 55.41/15.09 U211 < proper 55.41/15.09 U221 < proper 55.41/15.09 tail < proper 55.41/15.09 take < proper 55.41/15.09 sel < proper 55.41/15.09 proper < top 55.41/15.09 55.41/15.09 ---------------------------------------- 55.41/15.09 55.41/15.09 (73) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.09 Proved the following rewrite lemma: 55.41/15.09 U32(gen_tt:mark:nil:0':ok3_0(+(1, n158601_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158601_0) 55.41/15.09 55.41/15.09 Induction Base: 55.41/15.09 U32(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) 55.41/15.09 55.41/15.09 Induction Step: 55.41/15.09 U32(gen_tt:mark:nil:0':ok3_0(+(1, +(n158601_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) 55.41/15.09 mark(U32(gen_tt:mark:nil:0':ok3_0(+(1, n158601_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH 55.41/15.09 mark(*4_0) 55.41/15.09 55.41/15.09 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.09 ---------------------------------------- 55.41/15.09 55.41/15.09 (74) 55.41/15.09 Obligation: 55.41/15.09 TRS: 55.41/15.09 Rules: 55.41/15.09 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.09 active(U102(tt)) -> mark(tt) 55.41/15.09 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.09 active(U111(tt)) -> mark(tt) 55.41/15.09 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.09 active(U121(tt)) -> mark(tt) 55.41/15.09 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.09 active(U132(tt)) -> mark(tt) 55.41/15.09 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.09 active(U142(tt)) -> mark(tt) 55.41/15.09 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.09 active(U152(tt)) -> mark(tt) 55.41/15.09 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.09 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.09 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.09 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.09 active(U182(tt, Y)) -> mark(Y) 55.41/15.09 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.09 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.09 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.09 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.09 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.09 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.09 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.09 active(U212(tt, XS)) -> mark(XS) 55.41/15.09 active(U22(tt, X)) -> mark(X) 55.41/15.09 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.09 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.09 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.09 active(U32(tt, N)) -> mark(N) 55.41/15.09 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.09 active(U42(tt)) -> mark(tt) 55.41/15.09 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.09 active(U52(tt)) -> mark(tt) 55.41/15.09 active(U61(tt)) -> mark(tt) 55.41/15.09 active(U71(tt)) -> mark(tt) 55.41/15.09 active(U81(tt)) -> mark(tt) 55.41/15.09 active(U91(tt)) -> mark(tt) 55.41/15.09 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.09 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.09 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.09 active(isLNat(nil)) -> mark(tt) 55.41/15.09 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.09 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.09 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.09 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.09 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.09 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.09 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.09 active(isNatural(0')) -> mark(tt) 55.41/15.09 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.09 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.09 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.09 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.09 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.09 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.09 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.09 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.09 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.09 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.09 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.09 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.09 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.09 active(U102(X)) -> U102(active(X)) 55.41/15.09 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.09 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.09 active(U111(X)) -> U111(active(X)) 55.41/15.09 active(snd(X)) -> snd(active(X)) 55.41/15.09 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.09 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.09 active(U121(X)) -> U121(active(X)) 55.41/15.09 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.09 active(U132(X)) -> U132(active(X)) 55.41/15.09 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.09 active(U142(X)) -> U142(active(X)) 55.41/15.09 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.09 active(U152(X)) -> U152(active(X)) 55.41/15.09 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.09 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.09 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.09 active(s(X)) -> s(active(X)) 55.41/15.09 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.09 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.09 active(head(X)) -> head(active(X)) 55.41/15.09 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.09 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.09 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.09 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.09 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.09 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.09 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.09 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.09 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.09 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.09 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.09 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.09 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.09 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.09 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.09 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.09 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.09 active(fst(X)) -> fst(active(X)) 55.41/15.09 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.09 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.09 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.09 active(U42(X)) -> U42(active(X)) 55.41/15.09 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.09 active(U52(X)) -> U52(active(X)) 55.41/15.09 active(U61(X)) -> U61(active(X)) 55.41/15.09 active(U71(X)) -> U71(active(X)) 55.41/15.09 active(U81(X)) -> U81(active(X)) 55.41/15.09 active(U91(X)) -> U91(active(X)) 55.41/15.09 active(tail(X)) -> tail(active(X)) 55.41/15.09 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.09 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.09 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.09 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.09 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.09 U102(mark(X)) -> mark(U102(X)) 55.41/15.09 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.09 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.09 U111(mark(X)) -> mark(U111(X)) 55.41/15.09 snd(mark(X)) -> mark(snd(X)) 55.41/15.09 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.09 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.09 U121(mark(X)) -> mark(U121(X)) 55.41/15.09 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.09 U132(mark(X)) -> mark(U132(X)) 55.41/15.09 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.09 U142(mark(X)) -> mark(U142(X)) 55.41/15.09 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.09 U152(mark(X)) -> mark(U152(X)) 55.41/15.09 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.09 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.09 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.09 s(mark(X)) -> mark(s(X)) 55.41/15.09 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.09 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.09 head(mark(X)) -> mark(head(X)) 55.41/15.09 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.09 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.09 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.09 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.09 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.09 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.09 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.09 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.09 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.09 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.09 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.09 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.09 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.09 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.09 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.09 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.09 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.09 fst(mark(X)) -> mark(fst(X)) 55.41/15.09 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.09 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.09 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.09 U42(mark(X)) -> mark(U42(X)) 55.41/15.09 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.09 U52(mark(X)) -> mark(U52(X)) 55.41/15.09 U61(mark(X)) -> mark(U61(X)) 55.41/15.09 U71(mark(X)) -> mark(U71(X)) 55.41/15.09 U81(mark(X)) -> mark(U81(X)) 55.41/15.09 U91(mark(X)) -> mark(U91(X)) 55.41/15.09 tail(mark(X)) -> mark(tail(X)) 55.41/15.09 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.09 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.09 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.09 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.09 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.09 proper(tt) -> ok(tt) 55.41/15.09 proper(U102(X)) -> U102(proper(X)) 55.41/15.09 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.09 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U111(X)) -> U111(proper(X)) 55.41/15.09 proper(snd(X)) -> snd(proper(X)) 55.41/15.09 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.09 proper(U121(X)) -> U121(proper(X)) 55.41/15.09 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.09 proper(U132(X)) -> U132(proper(X)) 55.41/15.09 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.09 proper(U142(X)) -> U142(proper(X)) 55.41/15.09 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.09 proper(U152(X)) -> U152(proper(X)) 55.41/15.09 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.09 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.09 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.09 proper(s(X)) -> s(proper(X)) 55.41/15.09 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(head(X)) -> head(proper(X)) 55.41/15.09 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.09 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.09 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.09 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.09 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.09 proper(nil) -> ok(nil) 55.41/15.09 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.09 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.09 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.09 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.09 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.09 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.09 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.09 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.09 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(fst(X)) -> fst(proper(X)) 55.41/15.09 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.09 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.09 proper(U42(X)) -> U42(proper(X)) 55.41/15.09 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.09 proper(U52(X)) -> U52(proper(X)) 55.41/15.09 proper(U61(X)) -> U61(proper(X)) 55.41/15.09 proper(U71(X)) -> U71(proper(X)) 55.41/15.09 proper(U81(X)) -> U81(proper(X)) 55.41/15.09 proper(U91(X)) -> U91(proper(X)) 55.41/15.09 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.09 proper(tail(X)) -> tail(proper(X)) 55.41/15.09 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.09 proper(0') -> ok(0') 55.41/15.09 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.09 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.09 U102(ok(X)) -> ok(U102(X)) 55.41/15.09 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.09 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.09 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.09 U111(ok(X)) -> ok(U111(X)) 55.41/15.09 snd(ok(X)) -> ok(snd(X)) 55.41/15.09 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.09 U121(ok(X)) -> ok(U121(X)) 55.41/15.09 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.09 U132(ok(X)) -> ok(U132(X)) 55.41/15.09 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.09 U142(ok(X)) -> ok(U142(X)) 55.41/15.09 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.09 U152(ok(X)) -> ok(U152(X)) 55.41/15.09 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.09 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.09 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.09 s(ok(X)) -> ok(s(X)) 55.41/15.09 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.09 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.09 head(ok(X)) -> ok(head(X)) 55.41/15.09 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.09 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.09 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.09 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.09 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.09 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.09 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.09 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.09 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.09 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.09 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.09 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.09 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.09 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.09 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.09 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.09 fst(ok(X)) -> ok(fst(X)) 55.41/15.09 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.09 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.09 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.09 U42(ok(X)) -> ok(U42(X)) 55.41/15.09 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.09 U52(ok(X)) -> ok(U52(X)) 55.41/15.09 U61(ok(X)) -> ok(U61(X)) 55.41/15.09 U71(ok(X)) -> ok(U71(X)) 55.41/15.09 U81(ok(X)) -> ok(U81(X)) 55.41/15.09 U91(ok(X)) -> ok(U91(X)) 55.41/15.09 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.09 tail(ok(X)) -> ok(tail(X)) 55.41/15.09 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.09 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.09 top(mark(X)) -> top(proper(X)) 55.41/15.09 top(ok(X)) -> top(active(X)) 55.41/15.09 55.41/15.09 Types: 55.41/15.09 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 tt :: tt:mark:nil:0':ok 55.41/15.09 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 nil :: tt:mark:nil:0':ok 55.41/15.09 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 55.41/15.09 U202 :: 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 55.41/15.09 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U203 :: 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 55.41/15.09 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 0' :: tt:mark:nil:0':ok 55.41/15.09 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 top :: tt:mark:nil:0':ok -> top 55.41/15.09 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.09 hole_top2_0 :: top 55.41/15.09 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.09 55.41/15.09 55.41/15.09 Lemmas: 55.41/15.09 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.09 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.09 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.09 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.09 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.09 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.09 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.09 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.09 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.09 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.09 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.09 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.09 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.09 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.09 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.09 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.41/15.09 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.41/15.09 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.41/15.09 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.41/15.09 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.41/15.09 U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n137760_0) 55.41/15.09 fst(gen_tt:mark:nil:0':ok3_0(+(1, n154384_0))) -> *4_0, rt in Omega(n154384_0) 55.41/15.09 U32(gen_tt:mark:nil:0':ok3_0(+(1, n158601_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158601_0) 55.41/15.09 55.41/15.09 55.41/15.09 Generator Equations: 55.41/15.09 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.09 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.09 55.41/15.09 55.41/15.09 The following defined symbols remain to be analysed: 55.41/15.09 U42, active, U52, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.09 55.41/15.09 They will be analysed ascendingly in the following order: 55.41/15.09 U42 < active 55.41/15.09 U52 < active 55.41/15.09 U11 < active 55.41/15.09 U21 < active 55.41/15.09 U31 < active 55.41/15.09 U41 < active 55.41/15.09 U51 < active 55.41/15.09 U61 < active 55.41/15.09 isPLNat < active 55.41/15.09 U71 < active 55.41/15.09 U81 < active 55.41/15.09 U91 < active 55.41/15.09 U101 < active 55.41/15.09 U111 < active 55.41/15.09 U121 < active 55.41/15.09 U131 < active 55.41/15.09 U141 < active 55.41/15.09 U151 < active 55.41/15.09 U161 < active 55.41/15.09 U171 < active 55.41/15.09 U181 < active 55.41/15.09 U191 < active 55.41/15.09 U201 < active 55.41/15.09 U211 < active 55.41/15.09 U221 < active 55.41/15.09 tail < active 55.41/15.09 take < active 55.41/15.09 sel < active 55.41/15.09 active < top 55.41/15.09 U42 < proper 55.41/15.09 U52 < proper 55.41/15.09 U11 < proper 55.41/15.09 U21 < proper 55.41/15.09 U31 < proper 55.41/15.09 U41 < proper 55.41/15.09 U51 < proper 55.41/15.09 U61 < proper 55.41/15.09 isPLNat < proper 55.41/15.09 U71 < proper 55.41/15.09 U81 < proper 55.41/15.09 U91 < proper 55.41/15.09 U101 < proper 55.41/15.09 U111 < proper 55.41/15.09 U121 < proper 55.41/15.09 U131 < proper 55.41/15.09 U141 < proper 55.41/15.09 U151 < proper 55.41/15.09 U161 < proper 55.41/15.09 U171 < proper 55.41/15.09 U181 < proper 55.41/15.09 U191 < proper 55.41/15.09 U201 < proper 55.41/15.09 U211 < proper 55.41/15.09 U221 < proper 55.41/15.09 tail < proper 55.41/15.09 take < proper 55.41/15.09 sel < proper 55.41/15.09 proper < top 55.41/15.09 55.41/15.09 ---------------------------------------- 55.41/15.09 55.41/15.09 (75) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.09 Proved the following rewrite lemma: 55.41/15.09 U42(gen_tt:mark:nil:0':ok3_0(+(1, n169534_0))) -> *4_0, rt in Omega(n169534_0) 55.41/15.09 55.41/15.09 Induction Base: 55.41/15.09 U42(gen_tt:mark:nil:0':ok3_0(+(1, 0))) 55.41/15.09 55.41/15.09 Induction Step: 55.41/15.09 U42(gen_tt:mark:nil:0':ok3_0(+(1, +(n169534_0, 1)))) ->_R^Omega(1) 55.41/15.09 mark(U42(gen_tt:mark:nil:0':ok3_0(+(1, n169534_0)))) ->_IH 55.41/15.09 mark(*4_0) 55.41/15.09 55.41/15.09 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.09 ---------------------------------------- 55.41/15.09 55.41/15.09 (76) 55.41/15.09 Obligation: 55.41/15.09 TRS: 55.41/15.09 Rules: 55.41/15.09 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.09 active(U102(tt)) -> mark(tt) 55.41/15.09 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.09 active(U111(tt)) -> mark(tt) 55.41/15.09 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.09 active(U121(tt)) -> mark(tt) 55.41/15.09 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.09 active(U132(tt)) -> mark(tt) 55.41/15.09 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.09 active(U142(tt)) -> mark(tt) 55.41/15.09 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.09 active(U152(tt)) -> mark(tt) 55.41/15.09 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.09 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.09 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.09 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.09 active(U182(tt, Y)) -> mark(Y) 55.41/15.09 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.09 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.09 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.09 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.09 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.09 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.09 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.09 active(U212(tt, XS)) -> mark(XS) 55.41/15.09 active(U22(tt, X)) -> mark(X) 55.41/15.09 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.09 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.09 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.09 active(U32(tt, N)) -> mark(N) 55.41/15.09 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.09 active(U42(tt)) -> mark(tt) 55.41/15.09 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.09 active(U52(tt)) -> mark(tt) 55.41/15.09 active(U61(tt)) -> mark(tt) 55.41/15.09 active(U71(tt)) -> mark(tt) 55.41/15.09 active(U81(tt)) -> mark(tt) 55.41/15.09 active(U91(tt)) -> mark(tt) 55.41/15.09 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.09 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.09 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.09 active(isLNat(nil)) -> mark(tt) 55.41/15.09 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.09 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.09 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.09 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.09 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.09 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.09 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.09 active(isNatural(0')) -> mark(tt) 55.41/15.09 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.09 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.09 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.09 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.09 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.09 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.09 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.09 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.09 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.09 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.09 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.09 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.09 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.09 active(U102(X)) -> U102(active(X)) 55.41/15.09 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.09 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.09 active(U111(X)) -> U111(active(X)) 55.41/15.09 active(snd(X)) -> snd(active(X)) 55.41/15.09 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.09 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.09 active(U121(X)) -> U121(active(X)) 55.41/15.09 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.09 active(U132(X)) -> U132(active(X)) 55.41/15.09 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.09 active(U142(X)) -> U142(active(X)) 55.41/15.09 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.09 active(U152(X)) -> U152(active(X)) 55.41/15.09 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.09 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.09 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.09 active(s(X)) -> s(active(X)) 55.41/15.09 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.09 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.09 active(head(X)) -> head(active(X)) 55.41/15.09 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.09 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.09 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.09 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.09 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.09 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.09 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.09 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.09 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.09 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.09 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.09 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.09 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.09 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.09 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.09 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.09 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.09 active(fst(X)) -> fst(active(X)) 55.41/15.09 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.09 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.09 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.09 active(U42(X)) -> U42(active(X)) 55.41/15.09 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.09 active(U52(X)) -> U52(active(X)) 55.41/15.09 active(U61(X)) -> U61(active(X)) 55.41/15.09 active(U71(X)) -> U71(active(X)) 55.41/15.09 active(U81(X)) -> U81(active(X)) 55.41/15.09 active(U91(X)) -> U91(active(X)) 55.41/15.09 active(tail(X)) -> tail(active(X)) 55.41/15.09 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.09 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.09 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.09 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.09 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.09 U102(mark(X)) -> mark(U102(X)) 55.41/15.09 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.09 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.09 U111(mark(X)) -> mark(U111(X)) 55.41/15.09 snd(mark(X)) -> mark(snd(X)) 55.41/15.09 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.09 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.09 U121(mark(X)) -> mark(U121(X)) 55.41/15.09 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.09 U132(mark(X)) -> mark(U132(X)) 55.41/15.09 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.09 U142(mark(X)) -> mark(U142(X)) 55.41/15.09 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.09 U152(mark(X)) -> mark(U152(X)) 55.41/15.09 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.09 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.09 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.09 s(mark(X)) -> mark(s(X)) 55.41/15.09 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.09 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.09 head(mark(X)) -> mark(head(X)) 55.41/15.09 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.09 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.09 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.09 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.09 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.09 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.09 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.09 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.09 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.09 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.09 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.09 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.09 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.09 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.09 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.09 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.09 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.09 fst(mark(X)) -> mark(fst(X)) 55.41/15.09 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.09 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.09 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.09 U42(mark(X)) -> mark(U42(X)) 55.41/15.09 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.09 U52(mark(X)) -> mark(U52(X)) 55.41/15.09 U61(mark(X)) -> mark(U61(X)) 55.41/15.09 U71(mark(X)) -> mark(U71(X)) 55.41/15.09 U81(mark(X)) -> mark(U81(X)) 55.41/15.09 U91(mark(X)) -> mark(U91(X)) 55.41/15.09 tail(mark(X)) -> mark(tail(X)) 55.41/15.09 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.09 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.09 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.09 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.09 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.09 proper(tt) -> ok(tt) 55.41/15.09 proper(U102(X)) -> U102(proper(X)) 55.41/15.09 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.09 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U111(X)) -> U111(proper(X)) 55.41/15.09 proper(snd(X)) -> snd(proper(X)) 55.41/15.09 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.09 proper(U121(X)) -> U121(proper(X)) 55.41/15.09 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.09 proper(U132(X)) -> U132(proper(X)) 55.41/15.09 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.09 proper(U142(X)) -> U142(proper(X)) 55.41/15.09 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.09 proper(U152(X)) -> U152(proper(X)) 55.41/15.09 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.09 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.09 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.09 proper(s(X)) -> s(proper(X)) 55.41/15.09 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(head(X)) -> head(proper(X)) 55.41/15.09 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.09 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.09 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.09 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.09 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.09 proper(nil) -> ok(nil) 55.41/15.09 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.09 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.09 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.09 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.09 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.09 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.09 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.09 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.09 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(fst(X)) -> fst(proper(X)) 55.41/15.09 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.09 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.09 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.09 proper(U42(X)) -> U42(proper(X)) 55.41/15.09 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.09 proper(U52(X)) -> U52(proper(X)) 55.41/15.09 proper(U61(X)) -> U61(proper(X)) 55.41/15.09 proper(U71(X)) -> U71(proper(X)) 55.41/15.09 proper(U81(X)) -> U81(proper(X)) 55.41/15.09 proper(U91(X)) -> U91(proper(X)) 55.41/15.09 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.09 proper(tail(X)) -> tail(proper(X)) 55.41/15.09 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.09 proper(0') -> ok(0') 55.41/15.09 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.09 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.09 U102(ok(X)) -> ok(U102(X)) 55.41/15.09 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.09 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.09 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.09 U111(ok(X)) -> ok(U111(X)) 55.41/15.09 snd(ok(X)) -> ok(snd(X)) 55.41/15.09 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.09 U121(ok(X)) -> ok(U121(X)) 55.41/15.09 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.09 U132(ok(X)) -> ok(U132(X)) 55.41/15.09 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.09 U142(ok(X)) -> ok(U142(X)) 55.41/15.09 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.09 U152(ok(X)) -> ok(U152(X)) 55.41/15.09 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.09 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.09 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.09 s(ok(X)) -> ok(s(X)) 55.41/15.09 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.09 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.09 head(ok(X)) -> ok(head(X)) 55.41/15.09 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.09 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.09 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.09 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.09 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.09 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.09 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.09 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.09 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.09 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.09 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.09 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.09 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.09 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.09 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.09 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.09 fst(ok(X)) -> ok(fst(X)) 55.41/15.09 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.09 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.09 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.09 U42(ok(X)) -> ok(U42(X)) 55.41/15.09 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.09 U52(ok(X)) -> ok(U52(X)) 55.41/15.09 U61(ok(X)) -> ok(U61(X)) 55.41/15.09 U71(ok(X)) -> ok(U71(X)) 55.41/15.09 U81(ok(X)) -> ok(U81(X)) 55.41/15.09 U91(ok(X)) -> ok(U91(X)) 55.41/15.09 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.09 tail(ok(X)) -> ok(tail(X)) 55.41/15.09 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.09 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.09 top(mark(X)) -> top(proper(X)) 55.41/15.09 top(ok(X)) -> top(active(X)) 55.41/15.09 55.41/15.09 Types: 55.41/15.09 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 tt :: tt:mark:nil:0':ok 55.41/15.09 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 nil :: tt:mark:nil:0':ok 55.41/15.09 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 55.41/15.09 U202 :: 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 55.41/15.09 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U203 :: 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 55.41/15.09 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 0' :: tt:mark:nil:0':ok 55.41/15.09 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.09 top :: tt:mark:nil:0':ok -> top 55.41/15.09 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.09 hole_top2_0 :: top 55.41/15.09 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.09 55.41/15.09 55.41/15.09 Lemmas: 55.41/15.09 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.09 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.09 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.09 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.09 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.09 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.09 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.09 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.09 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.09 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.09 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.09 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.09 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.09 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.09 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.09 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.41/15.09 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.41/15.09 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.41/15.09 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.41/15.09 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.41/15.09 U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n137760_0) 55.41/15.09 fst(gen_tt:mark:nil:0':ok3_0(+(1, n154384_0))) -> *4_0, rt in Omega(n154384_0) 55.41/15.09 U32(gen_tt:mark:nil:0':ok3_0(+(1, n158601_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158601_0) 55.41/15.09 U42(gen_tt:mark:nil:0':ok3_0(+(1, n169534_0))) -> *4_0, rt in Omega(n169534_0) 55.41/15.09 55.41/15.09 55.41/15.09 Generator Equations: 55.41/15.09 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.09 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.09 55.41/15.09 55.41/15.09 The following defined symbols remain to be analysed: 55.41/15.09 U52, active, U11, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.09 55.41/15.09 They will be analysed ascendingly in the following order: 55.41/15.09 U52 < active 55.41/15.09 U11 < active 55.41/15.09 U21 < active 55.41/15.09 U31 < active 55.41/15.09 U41 < active 55.41/15.09 U51 < active 55.41/15.09 U61 < active 55.41/15.09 isPLNat < active 55.41/15.09 U71 < active 55.41/15.09 U81 < active 55.41/15.09 U91 < active 55.41/15.09 U101 < active 55.41/15.09 U111 < active 55.41/15.09 U121 < active 55.41/15.09 U131 < active 55.41/15.09 U141 < active 55.41/15.09 U151 < active 55.41/15.09 U161 < active 55.41/15.09 U171 < active 55.41/15.09 U181 < active 55.41/15.09 U191 < active 55.41/15.09 U201 < active 55.41/15.09 U211 < active 55.41/15.09 U221 < active 55.41/15.09 tail < active 55.41/15.09 take < active 55.41/15.09 sel < active 55.41/15.09 active < top 55.41/15.09 U52 < proper 55.41/15.09 U11 < proper 55.41/15.09 U21 < proper 55.41/15.09 U31 < proper 55.41/15.09 U41 < proper 55.41/15.09 U51 < proper 55.41/15.09 U61 < proper 55.41/15.09 isPLNat < proper 55.41/15.09 U71 < proper 55.41/15.09 U81 < proper 55.41/15.09 U91 < proper 55.41/15.09 U101 < proper 55.41/15.09 U111 < proper 55.41/15.09 U121 < proper 55.41/15.09 U131 < proper 55.41/15.09 U141 < proper 55.41/15.09 U151 < proper 55.41/15.09 U161 < proper 55.41/15.09 U171 < proper 55.41/15.09 U181 < proper 55.41/15.09 U191 < proper 55.41/15.09 U201 < proper 55.41/15.09 U211 < proper 55.41/15.09 U221 < proper 55.41/15.09 tail < proper 55.41/15.09 take < proper 55.41/15.09 sel < proper 55.41/15.09 proper < top 55.41/15.09 55.41/15.09 ---------------------------------------- 55.41/15.09 55.41/15.09 (77) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.09 Proved the following rewrite lemma: 55.41/15.09 U52(gen_tt:mark:nil:0':ok3_0(+(1, n174002_0))) -> *4_0, rt in Omega(n174002_0) 55.41/15.09 55.41/15.09 Induction Base: 55.41/15.09 U52(gen_tt:mark:nil:0':ok3_0(+(1, 0))) 55.41/15.09 55.41/15.09 Induction Step: 55.41/15.09 U52(gen_tt:mark:nil:0':ok3_0(+(1, +(n174002_0, 1)))) ->_R^Omega(1) 55.41/15.09 mark(U52(gen_tt:mark:nil:0':ok3_0(+(1, n174002_0)))) ->_IH 55.41/15.09 mark(*4_0) 55.41/15.09 55.41/15.09 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.09 ---------------------------------------- 55.41/15.09 55.41/15.09 (78) 55.41/15.09 Obligation: 55.41/15.09 TRS: 55.41/15.09 Rules: 55.41/15.09 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.09 active(U102(tt)) -> mark(tt) 55.41/15.09 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.09 active(U111(tt)) -> mark(tt) 55.41/15.09 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.09 active(U121(tt)) -> mark(tt) 55.41/15.09 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.09 active(U132(tt)) -> mark(tt) 55.41/15.09 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.09 active(U142(tt)) -> mark(tt) 55.41/15.09 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.09 active(U152(tt)) -> mark(tt) 55.41/15.09 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.09 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.09 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.09 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.09 active(U182(tt, Y)) -> mark(Y) 55.41/15.09 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.09 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.09 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.09 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.09 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.09 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.09 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.09 active(U212(tt, XS)) -> mark(XS) 55.41/15.09 active(U22(tt, X)) -> mark(X) 55.41/15.09 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.09 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.09 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.09 active(U32(tt, N)) -> mark(N) 55.41/15.09 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.09 active(U42(tt)) -> mark(tt) 55.41/15.09 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.09 active(U52(tt)) -> mark(tt) 55.41/15.09 active(U61(tt)) -> mark(tt) 55.41/15.09 active(U71(tt)) -> mark(tt) 55.41/15.09 active(U81(tt)) -> mark(tt) 55.41/15.09 active(U91(tt)) -> mark(tt) 55.41/15.09 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.09 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.09 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.09 active(isLNat(nil)) -> mark(tt) 55.41/15.09 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.09 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.09 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.09 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.09 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.09 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.09 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.09 active(isNatural(0')) -> mark(tt) 55.41/15.09 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.09 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.09 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.09 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.09 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.09 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.09 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.09 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.09 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.09 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.09 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.09 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.09 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.09 active(U102(X)) -> U102(active(X)) 55.41/15.09 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.09 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.09 active(U111(X)) -> U111(active(X)) 55.41/15.09 active(snd(X)) -> snd(active(X)) 55.41/15.09 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.09 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.09 active(U121(X)) -> U121(active(X)) 55.41/15.09 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.09 active(U132(X)) -> U132(active(X)) 55.41/15.09 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.09 active(U142(X)) -> U142(active(X)) 55.41/15.09 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.09 active(U152(X)) -> U152(active(X)) 55.41/15.09 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.09 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.09 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.09 active(s(X)) -> s(active(X)) 55.41/15.09 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.09 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.09 active(head(X)) -> head(active(X)) 55.41/15.09 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.09 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.09 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.09 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.09 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.09 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.09 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.09 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.09 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.09 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.09 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.09 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.09 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.09 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.09 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.09 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.09 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.09 active(fst(X)) -> fst(active(X)) 55.41/15.09 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.09 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.09 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.09 active(U42(X)) -> U42(active(X)) 55.41/15.09 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.09 active(U52(X)) -> U52(active(X)) 55.41/15.09 active(U61(X)) -> U61(active(X)) 55.41/15.09 active(U71(X)) -> U71(active(X)) 55.41/15.09 active(U81(X)) -> U81(active(X)) 55.41/15.09 active(U91(X)) -> U91(active(X)) 55.41/15.09 active(tail(X)) -> tail(active(X)) 55.41/15.09 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.09 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.09 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.09 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.09 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.09 U102(mark(X)) -> mark(U102(X)) 55.41/15.09 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.09 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.09 U111(mark(X)) -> mark(U111(X)) 55.41/15.09 snd(mark(X)) -> mark(snd(X)) 55.41/15.09 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.09 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.09 U121(mark(X)) -> mark(U121(X)) 55.41/15.09 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.09 U132(mark(X)) -> mark(U132(X)) 55.41/15.09 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.09 U142(mark(X)) -> mark(U142(X)) 55.41/15.09 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.09 U152(mark(X)) -> mark(U152(X)) 55.41/15.09 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.09 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.09 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.09 s(mark(X)) -> mark(s(X)) 55.41/15.09 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.09 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.09 head(mark(X)) -> mark(head(X)) 55.41/15.09 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.09 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.09 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.09 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.09 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.09 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.09 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.09 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.09 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.09 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.09 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.09 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.09 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.09 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.09 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.09 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.09 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.09 fst(mark(X)) -> mark(fst(X)) 55.41/15.10 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.10 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.10 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.10 U42(mark(X)) -> mark(U42(X)) 55.41/15.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.10 U52(mark(X)) -> mark(U52(X)) 55.41/15.10 U61(mark(X)) -> mark(U61(X)) 55.41/15.10 U71(mark(X)) -> mark(U71(X)) 55.41/15.10 U81(mark(X)) -> mark(U81(X)) 55.41/15.10 U91(mark(X)) -> mark(U91(X)) 55.41/15.10 tail(mark(X)) -> mark(tail(X)) 55.41/15.10 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.10 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.10 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.10 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.10 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.10 proper(tt) -> ok(tt) 55.41/15.10 proper(U102(X)) -> U102(proper(X)) 55.41/15.10 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.10 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U111(X)) -> U111(proper(X)) 55.41/15.10 proper(snd(X)) -> snd(proper(X)) 55.41/15.10 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.10 proper(U121(X)) -> U121(proper(X)) 55.41/15.10 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.10 proper(U132(X)) -> U132(proper(X)) 55.41/15.10 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.10 proper(U142(X)) -> U142(proper(X)) 55.41/15.10 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.10 proper(U152(X)) -> U152(proper(X)) 55.41/15.10 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.10 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.10 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.10 proper(s(X)) -> s(proper(X)) 55.41/15.10 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(head(X)) -> head(proper(X)) 55.41/15.10 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.10 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.10 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.10 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.10 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.10 proper(nil) -> ok(nil) 55.41/15.10 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.10 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.10 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.10 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.10 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.10 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.10 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.10 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.10 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(fst(X)) -> fst(proper(X)) 55.41/15.10 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.10 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.10 proper(U42(X)) -> U42(proper(X)) 55.41/15.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.10 proper(U52(X)) -> U52(proper(X)) 55.41/15.10 proper(U61(X)) -> U61(proper(X)) 55.41/15.10 proper(U71(X)) -> U71(proper(X)) 55.41/15.10 proper(U81(X)) -> U81(proper(X)) 55.41/15.10 proper(U91(X)) -> U91(proper(X)) 55.41/15.10 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.10 proper(tail(X)) -> tail(proper(X)) 55.41/15.10 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.10 proper(0') -> ok(0') 55.41/15.10 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.10 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.10 U102(ok(X)) -> ok(U102(X)) 55.41/15.10 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.10 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.10 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.10 U111(ok(X)) -> ok(U111(X)) 55.41/15.10 snd(ok(X)) -> ok(snd(X)) 55.41/15.10 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.10 U121(ok(X)) -> ok(U121(X)) 55.41/15.10 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.10 U132(ok(X)) -> ok(U132(X)) 55.41/15.10 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.10 U142(ok(X)) -> ok(U142(X)) 55.41/15.10 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.10 U152(ok(X)) -> ok(U152(X)) 55.41/15.10 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.10 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.10 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.10 s(ok(X)) -> ok(s(X)) 55.41/15.10 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.10 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.10 head(ok(X)) -> ok(head(X)) 55.41/15.10 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.10 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.10 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.10 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.10 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.10 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.10 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.10 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.10 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.10 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.10 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.10 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.10 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.10 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.10 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.10 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.10 fst(ok(X)) -> ok(fst(X)) 55.41/15.10 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.10 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.10 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.10 U42(ok(X)) -> ok(U42(X)) 55.41/15.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.10 U52(ok(X)) -> ok(U52(X)) 55.41/15.10 U61(ok(X)) -> ok(U61(X)) 55.41/15.10 U71(ok(X)) -> ok(U71(X)) 55.41/15.10 U81(ok(X)) -> ok(U81(X)) 55.41/15.10 U91(ok(X)) -> ok(U91(X)) 55.41/15.10 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.10 tail(ok(X)) -> ok(tail(X)) 55.41/15.10 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.10 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.10 top(mark(X)) -> top(proper(X)) 55.41/15.10 top(ok(X)) -> top(active(X)) 55.41/15.10 55.41/15.10 Types: 55.41/15.10 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 tt :: tt:mark:nil:0':ok 55.41/15.10 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 nil :: tt:mark:nil:0':ok 55.41/15.10 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 55.41/15.10 U202 :: 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 55.41/15.10 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U203 :: 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 55.41/15.10 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 0' :: tt:mark:nil:0':ok 55.41/15.10 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 top :: tt:mark:nil:0':ok -> top 55.41/15.10 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.10 hole_top2_0 :: top 55.41/15.10 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.10 55.41/15.10 55.41/15.10 Lemmas: 55.41/15.10 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.10 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.10 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.10 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.10 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.10 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.10 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.10 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.10 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.10 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.10 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.10 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.10 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.10 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.10 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.10 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.41/15.10 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.41/15.10 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.41/15.10 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.41/15.10 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.41/15.10 U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n137760_0) 55.41/15.10 fst(gen_tt:mark:nil:0':ok3_0(+(1, n154384_0))) -> *4_0, rt in Omega(n154384_0) 55.41/15.10 U32(gen_tt:mark:nil:0':ok3_0(+(1, n158601_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158601_0) 55.41/15.10 U42(gen_tt:mark:nil:0':ok3_0(+(1, n169534_0))) -> *4_0, rt in Omega(n169534_0) 55.41/15.10 U52(gen_tt:mark:nil:0':ok3_0(+(1, n174002_0))) -> *4_0, rt in Omega(n174002_0) 55.41/15.10 55.41/15.10 55.41/15.10 Generator Equations: 55.41/15.10 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.10 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.10 55.41/15.10 55.41/15.10 The following defined symbols remain to be analysed: 55.41/15.10 U11, active, U21, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.10 55.41/15.10 They will be analysed ascendingly in the following order: 55.41/15.10 U11 < active 55.41/15.10 U21 < active 55.41/15.10 U31 < active 55.41/15.10 U41 < active 55.41/15.10 U51 < active 55.41/15.10 U61 < active 55.41/15.10 isPLNat < active 55.41/15.10 U71 < active 55.41/15.10 U81 < active 55.41/15.10 U91 < active 55.41/15.10 U101 < active 55.41/15.10 U111 < active 55.41/15.10 U121 < active 55.41/15.10 U131 < active 55.41/15.10 U141 < active 55.41/15.10 U151 < active 55.41/15.10 U161 < active 55.41/15.10 U171 < active 55.41/15.10 U181 < active 55.41/15.10 U191 < active 55.41/15.10 U201 < active 55.41/15.10 U211 < active 55.41/15.10 U221 < active 55.41/15.10 tail < active 55.41/15.10 take < active 55.41/15.10 sel < active 55.41/15.10 active < top 55.41/15.10 U11 < proper 55.41/15.10 U21 < proper 55.41/15.10 U31 < proper 55.41/15.10 U41 < proper 55.41/15.10 U51 < proper 55.41/15.10 U61 < proper 55.41/15.10 isPLNat < proper 55.41/15.10 U71 < proper 55.41/15.10 U81 < proper 55.41/15.10 U91 < proper 55.41/15.10 U101 < proper 55.41/15.10 U111 < proper 55.41/15.10 U121 < proper 55.41/15.10 U131 < proper 55.41/15.10 U141 < proper 55.41/15.10 U151 < proper 55.41/15.10 U161 < proper 55.41/15.10 U171 < proper 55.41/15.10 U181 < proper 55.41/15.10 U191 < proper 55.41/15.10 U201 < proper 55.41/15.10 U211 < proper 55.41/15.10 U221 < proper 55.41/15.10 tail < proper 55.41/15.10 take < proper 55.41/15.10 sel < proper 55.41/15.10 proper < top 55.41/15.10 55.41/15.10 ---------------------------------------- 55.41/15.10 55.41/15.10 (79) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.10 Proved the following rewrite lemma: 55.41/15.10 U11(gen_tt:mark:nil:0':ok3_0(+(1, n178571_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n178571_0) 55.41/15.10 55.41/15.10 Induction Base: 55.41/15.10 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)) 55.41/15.10 55.41/15.10 Induction Step: 55.41/15.10 U11(gen_tt:mark:nil:0':ok3_0(+(1, +(n178571_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) ->_R^Omega(1) 55.41/15.10 mark(U11(gen_tt:mark:nil:0':ok3_0(+(1, n178571_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c))) ->_IH 55.41/15.10 mark(*4_0) 55.41/15.10 55.41/15.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.10 ---------------------------------------- 55.41/15.10 55.41/15.10 (80) 55.41/15.10 Obligation: 55.41/15.10 TRS: 55.41/15.10 Rules: 55.41/15.10 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.10 active(U102(tt)) -> mark(tt) 55.41/15.10 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.10 active(U111(tt)) -> mark(tt) 55.41/15.10 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.10 active(U121(tt)) -> mark(tt) 55.41/15.10 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.10 active(U132(tt)) -> mark(tt) 55.41/15.10 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.10 active(U142(tt)) -> mark(tt) 55.41/15.10 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.10 active(U152(tt)) -> mark(tt) 55.41/15.10 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.10 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.10 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.10 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.10 active(U182(tt, Y)) -> mark(Y) 55.41/15.10 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.10 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.10 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.10 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.10 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.10 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.10 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.10 active(U212(tt, XS)) -> mark(XS) 55.41/15.10 active(U22(tt, X)) -> mark(X) 55.41/15.10 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.10 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.10 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.10 active(U32(tt, N)) -> mark(N) 55.41/15.10 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.10 active(U42(tt)) -> mark(tt) 55.41/15.10 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.10 active(U52(tt)) -> mark(tt) 55.41/15.10 active(U61(tt)) -> mark(tt) 55.41/15.10 active(U71(tt)) -> mark(tt) 55.41/15.10 active(U81(tt)) -> mark(tt) 55.41/15.10 active(U91(tt)) -> mark(tt) 55.41/15.10 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.10 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.10 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.10 active(isLNat(nil)) -> mark(tt) 55.41/15.10 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.10 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.10 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.10 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.10 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.10 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.10 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.10 active(isNatural(0')) -> mark(tt) 55.41/15.10 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.10 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.10 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.10 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.10 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.10 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.10 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.10 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.10 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.10 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.10 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.10 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.10 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.10 active(U102(X)) -> U102(active(X)) 55.41/15.10 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.10 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.10 active(U111(X)) -> U111(active(X)) 55.41/15.10 active(snd(X)) -> snd(active(X)) 55.41/15.10 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.10 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.10 active(U121(X)) -> U121(active(X)) 55.41/15.10 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.10 active(U132(X)) -> U132(active(X)) 55.41/15.10 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.10 active(U142(X)) -> U142(active(X)) 55.41/15.10 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.10 active(U152(X)) -> U152(active(X)) 55.41/15.10 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.10 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.10 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.10 active(s(X)) -> s(active(X)) 55.41/15.10 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.10 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.10 active(head(X)) -> head(active(X)) 55.41/15.10 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.10 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.10 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.10 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.10 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.10 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.10 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.10 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.10 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.10 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.10 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.10 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.10 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.10 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.10 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.10 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.10 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.10 active(fst(X)) -> fst(active(X)) 55.41/15.10 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.10 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.10 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.10 active(U42(X)) -> U42(active(X)) 55.41/15.10 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.10 active(U52(X)) -> U52(active(X)) 55.41/15.10 active(U61(X)) -> U61(active(X)) 55.41/15.10 active(U71(X)) -> U71(active(X)) 55.41/15.10 active(U81(X)) -> U81(active(X)) 55.41/15.10 active(U91(X)) -> U91(active(X)) 55.41/15.10 active(tail(X)) -> tail(active(X)) 55.41/15.10 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.10 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.10 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.10 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.10 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.10 U102(mark(X)) -> mark(U102(X)) 55.41/15.10 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.10 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.10 U111(mark(X)) -> mark(U111(X)) 55.41/15.10 snd(mark(X)) -> mark(snd(X)) 55.41/15.10 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.10 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.10 U121(mark(X)) -> mark(U121(X)) 55.41/15.10 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.10 U132(mark(X)) -> mark(U132(X)) 55.41/15.10 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.10 U142(mark(X)) -> mark(U142(X)) 55.41/15.10 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.10 U152(mark(X)) -> mark(U152(X)) 55.41/15.10 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.10 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.10 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.10 s(mark(X)) -> mark(s(X)) 55.41/15.10 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.10 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.10 head(mark(X)) -> mark(head(X)) 55.41/15.10 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.10 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.10 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.10 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.10 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.10 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.10 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.10 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.10 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.10 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.10 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.10 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.10 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.10 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.10 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.10 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.10 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.10 fst(mark(X)) -> mark(fst(X)) 55.41/15.10 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.10 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.10 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.10 U42(mark(X)) -> mark(U42(X)) 55.41/15.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.10 U52(mark(X)) -> mark(U52(X)) 55.41/15.10 U61(mark(X)) -> mark(U61(X)) 55.41/15.10 U71(mark(X)) -> mark(U71(X)) 55.41/15.10 U81(mark(X)) -> mark(U81(X)) 55.41/15.10 U91(mark(X)) -> mark(U91(X)) 55.41/15.10 tail(mark(X)) -> mark(tail(X)) 55.41/15.10 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.10 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.10 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.10 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.10 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.10 proper(tt) -> ok(tt) 55.41/15.10 proper(U102(X)) -> U102(proper(X)) 55.41/15.10 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.10 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U111(X)) -> U111(proper(X)) 55.41/15.10 proper(snd(X)) -> snd(proper(X)) 55.41/15.10 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.10 proper(U121(X)) -> U121(proper(X)) 55.41/15.10 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.10 proper(U132(X)) -> U132(proper(X)) 55.41/15.10 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.10 proper(U142(X)) -> U142(proper(X)) 55.41/15.10 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.10 proper(U152(X)) -> U152(proper(X)) 55.41/15.10 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.10 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.10 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.10 proper(s(X)) -> s(proper(X)) 55.41/15.10 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(head(X)) -> head(proper(X)) 55.41/15.10 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.10 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.10 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.10 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.10 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.10 proper(nil) -> ok(nil) 55.41/15.10 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.10 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.10 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.10 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.10 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.10 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.10 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.10 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.10 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(fst(X)) -> fst(proper(X)) 55.41/15.10 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.10 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.10 proper(U42(X)) -> U42(proper(X)) 55.41/15.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.10 proper(U52(X)) -> U52(proper(X)) 55.41/15.10 proper(U61(X)) -> U61(proper(X)) 55.41/15.10 proper(U71(X)) -> U71(proper(X)) 55.41/15.10 proper(U81(X)) -> U81(proper(X)) 55.41/15.10 proper(U91(X)) -> U91(proper(X)) 55.41/15.10 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.10 proper(tail(X)) -> tail(proper(X)) 55.41/15.10 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.10 proper(0') -> ok(0') 55.41/15.10 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.10 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.10 U102(ok(X)) -> ok(U102(X)) 55.41/15.10 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.10 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.10 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.10 U111(ok(X)) -> ok(U111(X)) 55.41/15.10 snd(ok(X)) -> ok(snd(X)) 55.41/15.10 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.10 U121(ok(X)) -> ok(U121(X)) 55.41/15.10 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.10 U132(ok(X)) -> ok(U132(X)) 55.41/15.10 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.10 U142(ok(X)) -> ok(U142(X)) 55.41/15.10 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.10 U152(ok(X)) -> ok(U152(X)) 55.41/15.10 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.10 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.10 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.10 s(ok(X)) -> ok(s(X)) 55.41/15.10 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.10 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.10 head(ok(X)) -> ok(head(X)) 55.41/15.10 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.10 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.10 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.10 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.10 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.10 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.10 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.10 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.10 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.10 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.10 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.10 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.10 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.10 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.10 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.10 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.10 fst(ok(X)) -> ok(fst(X)) 55.41/15.10 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.10 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.10 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.10 U42(ok(X)) -> ok(U42(X)) 55.41/15.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.10 U52(ok(X)) -> ok(U52(X)) 55.41/15.10 U61(ok(X)) -> ok(U61(X)) 55.41/15.10 U71(ok(X)) -> ok(U71(X)) 55.41/15.10 U81(ok(X)) -> ok(U81(X)) 55.41/15.10 U91(ok(X)) -> ok(U91(X)) 55.41/15.10 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.10 tail(ok(X)) -> ok(tail(X)) 55.41/15.10 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.10 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.10 top(mark(X)) -> top(proper(X)) 55.41/15.10 top(ok(X)) -> top(active(X)) 55.41/15.10 55.41/15.10 Types: 55.41/15.10 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 tt :: tt:mark:nil:0':ok 55.41/15.10 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 nil :: tt:mark:nil:0':ok 55.41/15.10 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 55.41/15.10 U202 :: 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 55.41/15.10 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U203 :: 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 55.41/15.10 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 0' :: tt:mark:nil:0':ok 55.41/15.10 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 top :: tt:mark:nil:0':ok -> top 55.41/15.10 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.10 hole_top2_0 :: top 55.41/15.10 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.10 55.41/15.10 55.41/15.10 Lemmas: 55.41/15.10 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.10 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.10 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.10 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.10 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.10 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.10 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.10 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.10 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.10 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.10 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.10 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.10 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.10 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.10 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.10 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.41/15.10 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.41/15.10 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.41/15.10 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.41/15.10 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.41/15.10 U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n137760_0) 55.41/15.10 fst(gen_tt:mark:nil:0':ok3_0(+(1, n154384_0))) -> *4_0, rt in Omega(n154384_0) 55.41/15.10 U32(gen_tt:mark:nil:0':ok3_0(+(1, n158601_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158601_0) 55.41/15.10 U42(gen_tt:mark:nil:0':ok3_0(+(1, n169534_0))) -> *4_0, rt in Omega(n169534_0) 55.41/15.10 U52(gen_tt:mark:nil:0':ok3_0(+(1, n174002_0))) -> *4_0, rt in Omega(n174002_0) 55.41/15.10 U11(gen_tt:mark:nil:0':ok3_0(+(1, n178571_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n178571_0) 55.41/15.10 55.41/15.10 55.41/15.10 Generator Equations: 55.41/15.10 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.10 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.10 55.41/15.10 55.41/15.10 The following defined symbols remain to be analysed: 55.41/15.10 U21, active, U31, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.10 55.41/15.10 They will be analysed ascendingly in the following order: 55.41/15.10 U21 < active 55.41/15.10 U31 < active 55.41/15.10 U41 < active 55.41/15.10 U51 < active 55.41/15.10 U61 < active 55.41/15.10 isPLNat < active 55.41/15.10 U71 < active 55.41/15.10 U81 < active 55.41/15.10 U91 < active 55.41/15.10 U101 < active 55.41/15.10 U111 < active 55.41/15.10 U121 < active 55.41/15.10 U131 < active 55.41/15.10 U141 < active 55.41/15.10 U151 < active 55.41/15.10 U161 < active 55.41/15.10 U171 < active 55.41/15.10 U181 < active 55.41/15.10 U191 < active 55.41/15.10 U201 < active 55.41/15.10 U211 < active 55.41/15.10 U221 < active 55.41/15.10 tail < active 55.41/15.10 take < active 55.41/15.10 sel < active 55.41/15.10 active < top 55.41/15.10 U21 < proper 55.41/15.10 U31 < proper 55.41/15.10 U41 < proper 55.41/15.10 U51 < proper 55.41/15.10 U61 < proper 55.41/15.10 isPLNat < proper 55.41/15.10 U71 < proper 55.41/15.10 U81 < proper 55.41/15.10 U91 < proper 55.41/15.10 U101 < proper 55.41/15.10 U111 < proper 55.41/15.10 U121 < proper 55.41/15.10 U131 < proper 55.41/15.10 U141 < proper 55.41/15.10 U151 < proper 55.41/15.10 U161 < proper 55.41/15.10 U171 < proper 55.41/15.10 U181 < proper 55.41/15.10 U191 < proper 55.41/15.10 U201 < proper 55.41/15.10 U211 < proper 55.41/15.10 U221 < proper 55.41/15.10 tail < proper 55.41/15.10 take < proper 55.41/15.10 sel < proper 55.41/15.10 proper < top 55.41/15.10 55.41/15.10 ---------------------------------------- 55.41/15.10 55.41/15.10 (81) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.10 Proved the following rewrite lemma: 55.41/15.10 U21(gen_tt:mark:nil:0':ok3_0(+(1, n197211_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n197211_0) 55.41/15.10 55.41/15.10 Induction Base: 55.41/15.10 U21(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)) 55.41/15.10 55.41/15.10 Induction Step: 55.41/15.10 U21(gen_tt:mark:nil:0':ok3_0(+(1, +(n197211_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) ->_R^Omega(1) 55.41/15.10 mark(U21(gen_tt:mark:nil:0':ok3_0(+(1, n197211_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c))) ->_IH 55.41/15.10 mark(*4_0) 55.41/15.10 55.41/15.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.10 ---------------------------------------- 55.41/15.10 55.41/15.10 (82) 55.41/15.10 Obligation: 55.41/15.10 TRS: 55.41/15.10 Rules: 55.41/15.10 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.10 active(U102(tt)) -> mark(tt) 55.41/15.10 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.10 active(U111(tt)) -> mark(tt) 55.41/15.10 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.10 active(U121(tt)) -> mark(tt) 55.41/15.10 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.10 active(U132(tt)) -> mark(tt) 55.41/15.10 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.10 active(U142(tt)) -> mark(tt) 55.41/15.10 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.10 active(U152(tt)) -> mark(tt) 55.41/15.10 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.10 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.10 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.10 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.10 active(U182(tt, Y)) -> mark(Y) 55.41/15.10 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.10 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.10 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.10 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.10 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.10 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.10 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.10 active(U212(tt, XS)) -> mark(XS) 55.41/15.10 active(U22(tt, X)) -> mark(X) 55.41/15.10 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.10 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.10 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.10 active(U32(tt, N)) -> mark(N) 55.41/15.10 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.10 active(U42(tt)) -> mark(tt) 55.41/15.10 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.10 active(U52(tt)) -> mark(tt) 55.41/15.10 active(U61(tt)) -> mark(tt) 55.41/15.10 active(U71(tt)) -> mark(tt) 55.41/15.10 active(U81(tt)) -> mark(tt) 55.41/15.10 active(U91(tt)) -> mark(tt) 55.41/15.10 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.10 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.10 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.10 active(isLNat(nil)) -> mark(tt) 55.41/15.10 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.10 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.10 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.10 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.10 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.10 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.10 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.10 active(isNatural(0')) -> mark(tt) 55.41/15.10 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.10 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.10 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.10 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.10 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.10 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.10 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.10 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.10 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.10 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.10 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.10 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.10 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.10 active(U102(X)) -> U102(active(X)) 55.41/15.10 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.10 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.10 active(U111(X)) -> U111(active(X)) 55.41/15.10 active(snd(X)) -> snd(active(X)) 55.41/15.10 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.10 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.10 active(U121(X)) -> U121(active(X)) 55.41/15.10 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.10 active(U132(X)) -> U132(active(X)) 55.41/15.10 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.10 active(U142(X)) -> U142(active(X)) 55.41/15.10 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.10 active(U152(X)) -> U152(active(X)) 55.41/15.10 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.10 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.10 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.10 active(s(X)) -> s(active(X)) 55.41/15.10 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.10 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.10 active(head(X)) -> head(active(X)) 55.41/15.10 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.10 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.10 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.10 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.10 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.10 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.10 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.10 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.10 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.10 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.10 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.10 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.10 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.10 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.10 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.10 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.10 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.10 active(fst(X)) -> fst(active(X)) 55.41/15.10 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.10 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.10 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.10 active(U42(X)) -> U42(active(X)) 55.41/15.10 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.10 active(U52(X)) -> U52(active(X)) 55.41/15.10 active(U61(X)) -> U61(active(X)) 55.41/15.10 active(U71(X)) -> U71(active(X)) 55.41/15.10 active(U81(X)) -> U81(active(X)) 55.41/15.10 active(U91(X)) -> U91(active(X)) 55.41/15.10 active(tail(X)) -> tail(active(X)) 55.41/15.10 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.10 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.10 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.10 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.10 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.10 U102(mark(X)) -> mark(U102(X)) 55.41/15.10 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.10 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.10 U111(mark(X)) -> mark(U111(X)) 55.41/15.10 snd(mark(X)) -> mark(snd(X)) 55.41/15.10 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.10 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.10 U121(mark(X)) -> mark(U121(X)) 55.41/15.10 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.10 U132(mark(X)) -> mark(U132(X)) 55.41/15.10 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.10 U142(mark(X)) -> mark(U142(X)) 55.41/15.10 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.10 U152(mark(X)) -> mark(U152(X)) 55.41/15.10 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.10 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.10 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.10 s(mark(X)) -> mark(s(X)) 55.41/15.10 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.10 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.10 head(mark(X)) -> mark(head(X)) 55.41/15.10 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.10 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.10 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.10 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.10 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.10 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.10 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.10 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.10 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.10 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.10 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.10 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.10 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.10 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.10 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.10 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.10 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.10 fst(mark(X)) -> mark(fst(X)) 55.41/15.10 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.10 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.10 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.10 U42(mark(X)) -> mark(U42(X)) 55.41/15.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.10 U52(mark(X)) -> mark(U52(X)) 55.41/15.10 U61(mark(X)) -> mark(U61(X)) 55.41/15.10 U71(mark(X)) -> mark(U71(X)) 55.41/15.10 U81(mark(X)) -> mark(U81(X)) 55.41/15.10 U91(mark(X)) -> mark(U91(X)) 55.41/15.10 tail(mark(X)) -> mark(tail(X)) 55.41/15.10 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.10 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.10 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.10 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.10 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.10 proper(tt) -> ok(tt) 55.41/15.10 proper(U102(X)) -> U102(proper(X)) 55.41/15.10 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.10 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U111(X)) -> U111(proper(X)) 55.41/15.10 proper(snd(X)) -> snd(proper(X)) 55.41/15.10 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.10 proper(U121(X)) -> U121(proper(X)) 55.41/15.10 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.10 proper(U132(X)) -> U132(proper(X)) 55.41/15.10 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.10 proper(U142(X)) -> U142(proper(X)) 55.41/15.10 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.10 proper(U152(X)) -> U152(proper(X)) 55.41/15.10 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.10 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.10 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.10 proper(s(X)) -> s(proper(X)) 55.41/15.10 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(head(X)) -> head(proper(X)) 55.41/15.10 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.10 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.10 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.10 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.10 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.10 proper(nil) -> ok(nil) 55.41/15.10 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.10 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.10 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.10 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.10 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.10 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.10 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.10 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.10 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(fst(X)) -> fst(proper(X)) 55.41/15.10 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.10 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.10 proper(U42(X)) -> U42(proper(X)) 55.41/15.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.10 proper(U52(X)) -> U52(proper(X)) 55.41/15.10 proper(U61(X)) -> U61(proper(X)) 55.41/15.10 proper(U71(X)) -> U71(proper(X)) 55.41/15.10 proper(U81(X)) -> U81(proper(X)) 55.41/15.10 proper(U91(X)) -> U91(proper(X)) 55.41/15.10 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.10 proper(tail(X)) -> tail(proper(X)) 55.41/15.10 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.10 proper(0') -> ok(0') 55.41/15.10 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.10 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.10 U102(ok(X)) -> ok(U102(X)) 55.41/15.10 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.10 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.10 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.10 U111(ok(X)) -> ok(U111(X)) 55.41/15.10 snd(ok(X)) -> ok(snd(X)) 55.41/15.10 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.10 U121(ok(X)) -> ok(U121(X)) 55.41/15.10 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.10 U132(ok(X)) -> ok(U132(X)) 55.41/15.10 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.10 U142(ok(X)) -> ok(U142(X)) 55.41/15.10 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.10 U152(ok(X)) -> ok(U152(X)) 55.41/15.10 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.10 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.10 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.10 s(ok(X)) -> ok(s(X)) 55.41/15.10 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.10 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.10 head(ok(X)) -> ok(head(X)) 55.41/15.10 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.10 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.10 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.10 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.10 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.10 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.10 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.10 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.10 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.10 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.10 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.10 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.10 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.10 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.10 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.10 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.10 fst(ok(X)) -> ok(fst(X)) 55.41/15.10 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.10 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.10 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.10 U42(ok(X)) -> ok(U42(X)) 55.41/15.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.10 U52(ok(X)) -> ok(U52(X)) 55.41/15.10 U61(ok(X)) -> ok(U61(X)) 55.41/15.10 U71(ok(X)) -> ok(U71(X)) 55.41/15.10 U81(ok(X)) -> ok(U81(X)) 55.41/15.10 U91(ok(X)) -> ok(U91(X)) 55.41/15.10 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.10 tail(ok(X)) -> ok(tail(X)) 55.41/15.10 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.10 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.10 top(mark(X)) -> top(proper(X)) 55.41/15.10 top(ok(X)) -> top(active(X)) 55.41/15.10 55.41/15.10 Types: 55.41/15.10 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 tt :: tt:mark:nil:0':ok 55.41/15.10 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 nil :: tt:mark:nil:0':ok 55.41/15.10 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 55.41/15.10 U202 :: 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 55.41/15.10 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U203 :: 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 55.41/15.10 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 0' :: tt:mark:nil:0':ok 55.41/15.10 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 top :: tt:mark:nil:0':ok -> top 55.41/15.10 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.10 hole_top2_0 :: top 55.41/15.10 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.10 55.41/15.10 55.41/15.10 Lemmas: 55.41/15.10 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.10 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.10 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.10 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.10 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.10 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.10 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.10 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.10 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.10 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.10 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.10 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.10 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.10 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.10 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.10 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.41/15.10 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.41/15.10 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.41/15.10 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.41/15.10 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.41/15.10 U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n137760_0) 55.41/15.10 fst(gen_tt:mark:nil:0':ok3_0(+(1, n154384_0))) -> *4_0, rt in Omega(n154384_0) 55.41/15.10 U32(gen_tt:mark:nil:0':ok3_0(+(1, n158601_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158601_0) 55.41/15.10 U42(gen_tt:mark:nil:0':ok3_0(+(1, n169534_0))) -> *4_0, rt in Omega(n169534_0) 55.41/15.10 U52(gen_tt:mark:nil:0':ok3_0(+(1, n174002_0))) -> *4_0, rt in Omega(n174002_0) 55.41/15.10 U11(gen_tt:mark:nil:0':ok3_0(+(1, n178571_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n178571_0) 55.41/15.10 U21(gen_tt:mark:nil:0':ok3_0(+(1, n197211_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n197211_0) 55.41/15.10 55.41/15.10 55.41/15.10 Generator Equations: 55.41/15.10 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.10 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.10 55.41/15.10 55.41/15.10 The following defined symbols remain to be analysed: 55.41/15.10 U31, active, U41, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.10 55.41/15.10 They will be analysed ascendingly in the following order: 55.41/15.10 U31 < active 55.41/15.10 U41 < active 55.41/15.10 U51 < active 55.41/15.10 U61 < active 55.41/15.10 isPLNat < active 55.41/15.10 U71 < active 55.41/15.10 U81 < active 55.41/15.10 U91 < active 55.41/15.10 U101 < active 55.41/15.10 U111 < active 55.41/15.10 U121 < active 55.41/15.10 U131 < active 55.41/15.10 U141 < active 55.41/15.10 U151 < active 55.41/15.10 U161 < active 55.41/15.10 U171 < active 55.41/15.10 U181 < active 55.41/15.10 U191 < active 55.41/15.10 U201 < active 55.41/15.10 U211 < active 55.41/15.10 U221 < active 55.41/15.10 tail < active 55.41/15.10 take < active 55.41/15.10 sel < active 55.41/15.10 active < top 55.41/15.10 U31 < proper 55.41/15.10 U41 < proper 55.41/15.10 U51 < proper 55.41/15.10 U61 < proper 55.41/15.10 isPLNat < proper 55.41/15.10 U71 < proper 55.41/15.10 U81 < proper 55.41/15.10 U91 < proper 55.41/15.10 U101 < proper 55.41/15.10 U111 < proper 55.41/15.10 U121 < proper 55.41/15.10 U131 < proper 55.41/15.10 U141 < proper 55.41/15.10 U151 < proper 55.41/15.10 U161 < proper 55.41/15.10 U171 < proper 55.41/15.10 U181 < proper 55.41/15.10 U191 < proper 55.41/15.10 U201 < proper 55.41/15.10 U211 < proper 55.41/15.10 U221 < proper 55.41/15.10 tail < proper 55.41/15.10 take < proper 55.41/15.10 sel < proper 55.41/15.10 proper < top 55.41/15.10 55.41/15.10 ---------------------------------------- 55.41/15.10 55.41/15.10 (83) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.10 Proved the following rewrite lemma: 55.41/15.10 U31(gen_tt:mark:nil:0':ok3_0(+(1, n216460_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n216460_0) 55.41/15.10 55.41/15.10 Induction Base: 55.41/15.10 U31(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)) 55.41/15.10 55.41/15.10 Induction Step: 55.41/15.10 U31(gen_tt:mark:nil:0':ok3_0(+(1, +(n216460_0, 1))), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) ->_R^Omega(1) 55.41/15.10 mark(U31(gen_tt:mark:nil:0':ok3_0(+(1, n216460_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c))) ->_IH 55.41/15.10 mark(*4_0) 55.41/15.10 55.41/15.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.10 ---------------------------------------- 55.41/15.10 55.41/15.10 (84) 55.41/15.10 Obligation: 55.41/15.10 TRS: 55.41/15.10 Rules: 55.41/15.10 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.10 active(U102(tt)) -> mark(tt) 55.41/15.10 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.10 active(U111(tt)) -> mark(tt) 55.41/15.10 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.10 active(U121(tt)) -> mark(tt) 55.41/15.10 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.10 active(U132(tt)) -> mark(tt) 55.41/15.10 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.10 active(U142(tt)) -> mark(tt) 55.41/15.10 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.10 active(U152(tt)) -> mark(tt) 55.41/15.10 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.10 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.10 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.10 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.10 active(U182(tt, Y)) -> mark(Y) 55.41/15.10 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.10 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.10 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.10 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.10 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.10 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.10 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.10 active(U212(tt, XS)) -> mark(XS) 55.41/15.10 active(U22(tt, X)) -> mark(X) 55.41/15.10 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.10 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.10 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.10 active(U32(tt, N)) -> mark(N) 55.41/15.10 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.10 active(U42(tt)) -> mark(tt) 55.41/15.10 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.10 active(U52(tt)) -> mark(tt) 55.41/15.10 active(U61(tt)) -> mark(tt) 55.41/15.10 active(U71(tt)) -> mark(tt) 55.41/15.10 active(U81(tt)) -> mark(tt) 55.41/15.10 active(U91(tt)) -> mark(tt) 55.41/15.10 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.10 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.10 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.10 active(isLNat(nil)) -> mark(tt) 55.41/15.10 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.10 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.10 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.10 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.10 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.10 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.10 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.10 active(isNatural(0')) -> mark(tt) 55.41/15.10 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.10 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.10 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.10 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.10 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.10 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.10 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.10 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.10 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.10 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.10 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.10 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.10 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.10 active(U102(X)) -> U102(active(X)) 55.41/15.10 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.10 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.10 active(U111(X)) -> U111(active(X)) 55.41/15.10 active(snd(X)) -> snd(active(X)) 55.41/15.10 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.10 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.10 active(U121(X)) -> U121(active(X)) 55.41/15.10 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.10 active(U132(X)) -> U132(active(X)) 55.41/15.10 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.10 active(U142(X)) -> U142(active(X)) 55.41/15.10 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.10 active(U152(X)) -> U152(active(X)) 55.41/15.10 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.10 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.10 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.10 active(s(X)) -> s(active(X)) 55.41/15.10 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.10 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.10 active(head(X)) -> head(active(X)) 55.41/15.10 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.10 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.10 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.10 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.10 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.10 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.10 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.10 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.10 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.10 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.10 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.10 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.10 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.10 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.10 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.10 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.10 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.10 active(fst(X)) -> fst(active(X)) 55.41/15.10 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.10 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.10 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.10 active(U42(X)) -> U42(active(X)) 55.41/15.10 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.10 active(U52(X)) -> U52(active(X)) 55.41/15.10 active(U61(X)) -> U61(active(X)) 55.41/15.10 active(U71(X)) -> U71(active(X)) 55.41/15.10 active(U81(X)) -> U81(active(X)) 55.41/15.10 active(U91(X)) -> U91(active(X)) 55.41/15.10 active(tail(X)) -> tail(active(X)) 55.41/15.10 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.10 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.10 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.10 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.10 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.10 U102(mark(X)) -> mark(U102(X)) 55.41/15.10 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.10 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.10 U111(mark(X)) -> mark(U111(X)) 55.41/15.10 snd(mark(X)) -> mark(snd(X)) 55.41/15.10 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.10 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.10 U121(mark(X)) -> mark(U121(X)) 55.41/15.10 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.10 U132(mark(X)) -> mark(U132(X)) 55.41/15.10 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.10 U142(mark(X)) -> mark(U142(X)) 55.41/15.10 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.10 U152(mark(X)) -> mark(U152(X)) 55.41/15.10 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.10 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.10 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.10 s(mark(X)) -> mark(s(X)) 55.41/15.10 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.10 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.10 head(mark(X)) -> mark(head(X)) 55.41/15.10 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.10 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.10 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.10 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.10 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.10 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.10 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.10 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.10 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.10 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.10 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.10 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.10 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.10 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.10 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.10 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.10 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.10 fst(mark(X)) -> mark(fst(X)) 55.41/15.10 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.10 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.10 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.10 U42(mark(X)) -> mark(U42(X)) 55.41/15.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.10 U52(mark(X)) -> mark(U52(X)) 55.41/15.10 U61(mark(X)) -> mark(U61(X)) 55.41/15.10 U71(mark(X)) -> mark(U71(X)) 55.41/15.10 U81(mark(X)) -> mark(U81(X)) 55.41/15.10 U91(mark(X)) -> mark(U91(X)) 55.41/15.10 tail(mark(X)) -> mark(tail(X)) 55.41/15.10 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.10 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.10 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.10 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.10 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.10 proper(tt) -> ok(tt) 55.41/15.10 proper(U102(X)) -> U102(proper(X)) 55.41/15.10 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.10 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U111(X)) -> U111(proper(X)) 55.41/15.10 proper(snd(X)) -> snd(proper(X)) 55.41/15.10 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.10 proper(U121(X)) -> U121(proper(X)) 55.41/15.10 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.10 proper(U132(X)) -> U132(proper(X)) 55.41/15.10 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.10 proper(U142(X)) -> U142(proper(X)) 55.41/15.10 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.10 proper(U152(X)) -> U152(proper(X)) 55.41/15.10 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.10 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.10 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.10 proper(s(X)) -> s(proper(X)) 55.41/15.10 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(head(X)) -> head(proper(X)) 55.41/15.10 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.10 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.10 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.10 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.10 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.10 proper(nil) -> ok(nil) 55.41/15.10 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.10 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.10 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.10 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.10 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.10 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.10 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.10 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.10 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(fst(X)) -> fst(proper(X)) 55.41/15.10 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.10 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.10 proper(U42(X)) -> U42(proper(X)) 55.41/15.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.10 proper(U52(X)) -> U52(proper(X)) 55.41/15.10 proper(U61(X)) -> U61(proper(X)) 55.41/15.10 proper(U71(X)) -> U71(proper(X)) 55.41/15.10 proper(U81(X)) -> U81(proper(X)) 55.41/15.10 proper(U91(X)) -> U91(proper(X)) 55.41/15.10 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.10 proper(tail(X)) -> tail(proper(X)) 55.41/15.10 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.10 proper(0') -> ok(0') 55.41/15.10 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.10 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.10 U102(ok(X)) -> ok(U102(X)) 55.41/15.10 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.10 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.10 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.10 U111(ok(X)) -> ok(U111(X)) 55.41/15.10 snd(ok(X)) -> ok(snd(X)) 55.41/15.10 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.10 U121(ok(X)) -> ok(U121(X)) 55.41/15.10 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.10 U132(ok(X)) -> ok(U132(X)) 55.41/15.10 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.10 U142(ok(X)) -> ok(U142(X)) 55.41/15.10 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.10 U152(ok(X)) -> ok(U152(X)) 55.41/15.10 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.10 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.10 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.10 s(ok(X)) -> ok(s(X)) 55.41/15.10 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.10 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.10 head(ok(X)) -> ok(head(X)) 55.41/15.10 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.10 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.10 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.10 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.10 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.10 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.10 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.10 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.10 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.10 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.10 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.10 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.10 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.10 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.10 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.10 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.10 fst(ok(X)) -> ok(fst(X)) 55.41/15.10 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.10 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.10 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.10 U42(ok(X)) -> ok(U42(X)) 55.41/15.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.10 U52(ok(X)) -> ok(U52(X)) 55.41/15.10 U61(ok(X)) -> ok(U61(X)) 55.41/15.10 U71(ok(X)) -> ok(U71(X)) 55.41/15.10 U81(ok(X)) -> ok(U81(X)) 55.41/15.10 U91(ok(X)) -> ok(U91(X)) 55.41/15.10 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.10 tail(ok(X)) -> ok(tail(X)) 55.41/15.10 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.10 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.10 top(mark(X)) -> top(proper(X)) 55.41/15.10 top(ok(X)) -> top(active(X)) 55.41/15.10 55.41/15.10 Types: 55.41/15.10 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 tt :: tt:mark:nil:0':ok 55.41/15.10 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 nil :: tt:mark:nil:0':ok 55.41/15.10 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 55.41/15.10 U202 :: 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 55.41/15.10 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U203 :: 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 55.41/15.10 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 0' :: tt:mark:nil:0':ok 55.41/15.10 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 top :: tt:mark:nil:0':ok -> top 55.41/15.10 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.10 hole_top2_0 :: top 55.41/15.10 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.10 55.41/15.10 55.41/15.10 Lemmas: 55.41/15.10 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.10 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.10 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.10 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.10 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.10 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.10 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.10 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.10 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.10 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.10 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.10 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.10 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.10 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.10 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.10 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.41/15.10 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.41/15.10 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.41/15.10 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.41/15.10 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.41/15.10 U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n137760_0) 55.41/15.10 fst(gen_tt:mark:nil:0':ok3_0(+(1, n154384_0))) -> *4_0, rt in Omega(n154384_0) 55.41/15.10 U32(gen_tt:mark:nil:0':ok3_0(+(1, n158601_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158601_0) 55.41/15.10 U42(gen_tt:mark:nil:0':ok3_0(+(1, n169534_0))) -> *4_0, rt in Omega(n169534_0) 55.41/15.10 U52(gen_tt:mark:nil:0':ok3_0(+(1, n174002_0))) -> *4_0, rt in Omega(n174002_0) 55.41/15.10 U11(gen_tt:mark:nil:0':ok3_0(+(1, n178571_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n178571_0) 55.41/15.10 U21(gen_tt:mark:nil:0':ok3_0(+(1, n197211_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n197211_0) 55.41/15.10 U31(gen_tt:mark:nil:0':ok3_0(+(1, n216460_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n216460_0) 55.41/15.10 55.41/15.10 55.41/15.10 Generator Equations: 55.41/15.10 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.10 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.10 55.41/15.10 55.41/15.10 The following defined symbols remain to be analysed: 55.41/15.10 U41, active, U51, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.10 55.41/15.10 They will be analysed ascendingly in the following order: 55.41/15.10 U41 < active 55.41/15.10 U51 < active 55.41/15.10 U61 < active 55.41/15.10 isPLNat < active 55.41/15.10 U71 < active 55.41/15.10 U81 < active 55.41/15.10 U91 < active 55.41/15.10 U101 < active 55.41/15.10 U111 < active 55.41/15.10 U121 < active 55.41/15.10 U131 < active 55.41/15.10 U141 < active 55.41/15.10 U151 < active 55.41/15.10 U161 < active 55.41/15.10 U171 < active 55.41/15.10 U181 < active 55.41/15.10 U191 < active 55.41/15.10 U201 < active 55.41/15.10 U211 < active 55.41/15.10 U221 < active 55.41/15.10 tail < active 55.41/15.10 take < active 55.41/15.10 sel < active 55.41/15.10 active < top 55.41/15.10 U41 < proper 55.41/15.10 U51 < proper 55.41/15.10 U61 < proper 55.41/15.10 isPLNat < proper 55.41/15.10 U71 < proper 55.41/15.10 U81 < proper 55.41/15.10 U91 < proper 55.41/15.10 U101 < proper 55.41/15.10 U111 < proper 55.41/15.10 U121 < proper 55.41/15.10 U131 < proper 55.41/15.10 U141 < proper 55.41/15.10 U151 < proper 55.41/15.10 U161 < proper 55.41/15.10 U171 < proper 55.41/15.10 U181 < proper 55.41/15.10 U191 < proper 55.41/15.10 U201 < proper 55.41/15.10 U211 < proper 55.41/15.10 U221 < proper 55.41/15.10 tail < proper 55.41/15.10 take < proper 55.41/15.10 sel < proper 55.41/15.10 proper < top 55.41/15.10 55.41/15.10 ---------------------------------------- 55.41/15.10 55.41/15.10 (85) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.10 Proved the following rewrite lemma: 55.41/15.10 U41(gen_tt:mark:nil:0':ok3_0(+(1, n236318_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n236318_0) 55.41/15.10 55.41/15.10 Induction Base: 55.41/15.10 U41(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) 55.41/15.10 55.41/15.10 Induction Step: 55.41/15.10 U41(gen_tt:mark:nil:0':ok3_0(+(1, +(n236318_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) 55.41/15.10 mark(U41(gen_tt:mark:nil:0':ok3_0(+(1, n236318_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH 55.41/15.10 mark(*4_0) 55.41/15.10 55.41/15.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.10 ---------------------------------------- 55.41/15.10 55.41/15.10 (86) 55.41/15.10 Obligation: 55.41/15.10 TRS: 55.41/15.10 Rules: 55.41/15.10 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.10 active(U102(tt)) -> mark(tt) 55.41/15.10 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.10 active(U111(tt)) -> mark(tt) 55.41/15.10 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.10 active(U121(tt)) -> mark(tt) 55.41/15.10 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.10 active(U132(tt)) -> mark(tt) 55.41/15.10 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.10 active(U142(tt)) -> mark(tt) 55.41/15.10 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.10 active(U152(tt)) -> mark(tt) 55.41/15.10 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.10 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.10 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.10 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.10 active(U182(tt, Y)) -> mark(Y) 55.41/15.10 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.10 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.10 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.10 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.10 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.10 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.10 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.10 active(U212(tt, XS)) -> mark(XS) 55.41/15.10 active(U22(tt, X)) -> mark(X) 55.41/15.10 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.10 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.10 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.10 active(U32(tt, N)) -> mark(N) 55.41/15.10 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.10 active(U42(tt)) -> mark(tt) 55.41/15.10 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.10 active(U52(tt)) -> mark(tt) 55.41/15.10 active(U61(tt)) -> mark(tt) 55.41/15.10 active(U71(tt)) -> mark(tt) 55.41/15.10 active(U81(tt)) -> mark(tt) 55.41/15.10 active(U91(tt)) -> mark(tt) 55.41/15.10 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.10 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.10 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.10 active(isLNat(nil)) -> mark(tt) 55.41/15.10 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.10 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.10 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.10 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.10 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.10 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.10 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.10 active(isNatural(0')) -> mark(tt) 55.41/15.10 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.10 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.10 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.10 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.10 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.10 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.10 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.10 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.10 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.10 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.10 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.10 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.10 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.10 active(U102(X)) -> U102(active(X)) 55.41/15.10 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.10 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.10 active(U111(X)) -> U111(active(X)) 55.41/15.10 active(snd(X)) -> snd(active(X)) 55.41/15.10 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.10 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.10 active(U121(X)) -> U121(active(X)) 55.41/15.10 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.10 active(U132(X)) -> U132(active(X)) 55.41/15.10 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.10 active(U142(X)) -> U142(active(X)) 55.41/15.10 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.10 active(U152(X)) -> U152(active(X)) 55.41/15.10 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.10 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.10 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.10 active(s(X)) -> s(active(X)) 55.41/15.10 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.10 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.10 active(head(X)) -> head(active(X)) 55.41/15.10 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.10 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.10 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.10 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.10 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.10 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.10 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.10 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.10 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.10 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.10 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.10 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.10 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.10 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.10 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.10 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.10 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.10 active(fst(X)) -> fst(active(X)) 55.41/15.10 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.10 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.10 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.10 active(U42(X)) -> U42(active(X)) 55.41/15.10 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.10 active(U52(X)) -> U52(active(X)) 55.41/15.10 active(U61(X)) -> U61(active(X)) 55.41/15.10 active(U71(X)) -> U71(active(X)) 55.41/15.10 active(U81(X)) -> U81(active(X)) 55.41/15.10 active(U91(X)) -> U91(active(X)) 55.41/15.10 active(tail(X)) -> tail(active(X)) 55.41/15.10 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.10 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.10 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.10 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.10 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.10 U102(mark(X)) -> mark(U102(X)) 55.41/15.10 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.10 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.10 U111(mark(X)) -> mark(U111(X)) 55.41/15.10 snd(mark(X)) -> mark(snd(X)) 55.41/15.10 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.10 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.10 U121(mark(X)) -> mark(U121(X)) 55.41/15.10 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.10 U132(mark(X)) -> mark(U132(X)) 55.41/15.10 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.10 U142(mark(X)) -> mark(U142(X)) 55.41/15.10 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.10 U152(mark(X)) -> mark(U152(X)) 55.41/15.10 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.10 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.10 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.10 s(mark(X)) -> mark(s(X)) 55.41/15.10 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.10 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.10 head(mark(X)) -> mark(head(X)) 55.41/15.10 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.10 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.10 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.10 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.10 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.10 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.10 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.10 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.10 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.10 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.10 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.10 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.10 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.10 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.10 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.10 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.10 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.10 fst(mark(X)) -> mark(fst(X)) 55.41/15.10 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.10 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.10 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.10 U42(mark(X)) -> mark(U42(X)) 55.41/15.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.10 U52(mark(X)) -> mark(U52(X)) 55.41/15.10 U61(mark(X)) -> mark(U61(X)) 55.41/15.10 U71(mark(X)) -> mark(U71(X)) 55.41/15.10 U81(mark(X)) -> mark(U81(X)) 55.41/15.10 U91(mark(X)) -> mark(U91(X)) 55.41/15.10 tail(mark(X)) -> mark(tail(X)) 55.41/15.10 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.10 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.10 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.10 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.10 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.10 proper(tt) -> ok(tt) 55.41/15.10 proper(U102(X)) -> U102(proper(X)) 55.41/15.10 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.10 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U111(X)) -> U111(proper(X)) 55.41/15.10 proper(snd(X)) -> snd(proper(X)) 55.41/15.10 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.10 proper(U121(X)) -> U121(proper(X)) 55.41/15.10 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.10 proper(U132(X)) -> U132(proper(X)) 55.41/15.10 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.10 proper(U142(X)) -> U142(proper(X)) 55.41/15.10 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.10 proper(U152(X)) -> U152(proper(X)) 55.41/15.10 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.10 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.10 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.10 proper(s(X)) -> s(proper(X)) 55.41/15.10 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(head(X)) -> head(proper(X)) 55.41/15.10 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.10 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.10 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.10 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.10 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.10 proper(nil) -> ok(nil) 55.41/15.10 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.10 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.10 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.10 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.10 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.10 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.10 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.10 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.10 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(fst(X)) -> fst(proper(X)) 55.41/15.10 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.10 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.10 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.10 proper(U42(X)) -> U42(proper(X)) 55.41/15.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.10 proper(U52(X)) -> U52(proper(X)) 55.41/15.10 proper(U61(X)) -> U61(proper(X)) 55.41/15.10 proper(U71(X)) -> U71(proper(X)) 55.41/15.10 proper(U81(X)) -> U81(proper(X)) 55.41/15.10 proper(U91(X)) -> U91(proper(X)) 55.41/15.10 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.10 proper(tail(X)) -> tail(proper(X)) 55.41/15.10 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.10 proper(0') -> ok(0') 55.41/15.10 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.10 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.10 U102(ok(X)) -> ok(U102(X)) 55.41/15.10 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.10 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.10 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.10 U111(ok(X)) -> ok(U111(X)) 55.41/15.10 snd(ok(X)) -> ok(snd(X)) 55.41/15.10 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.10 U121(ok(X)) -> ok(U121(X)) 55.41/15.10 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.10 U132(ok(X)) -> ok(U132(X)) 55.41/15.10 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.10 U142(ok(X)) -> ok(U142(X)) 55.41/15.10 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.10 U152(ok(X)) -> ok(U152(X)) 55.41/15.10 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.10 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.10 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.10 s(ok(X)) -> ok(s(X)) 55.41/15.10 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.10 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.10 head(ok(X)) -> ok(head(X)) 55.41/15.10 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.10 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.10 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.10 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.10 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.10 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.10 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.10 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.10 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.10 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.10 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.10 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.10 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.10 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.10 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.10 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.10 fst(ok(X)) -> ok(fst(X)) 55.41/15.10 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.10 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.10 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.10 U42(ok(X)) -> ok(U42(X)) 55.41/15.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.10 U52(ok(X)) -> ok(U52(X)) 55.41/15.10 U61(ok(X)) -> ok(U61(X)) 55.41/15.10 U71(ok(X)) -> ok(U71(X)) 55.41/15.10 U81(ok(X)) -> ok(U81(X)) 55.41/15.10 U91(ok(X)) -> ok(U91(X)) 55.41/15.10 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.10 tail(ok(X)) -> ok(tail(X)) 55.41/15.10 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.10 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.10 top(mark(X)) -> top(proper(X)) 55.41/15.10 top(ok(X)) -> top(active(X)) 55.41/15.10 55.41/15.10 Types: 55.41/15.10 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.10 tt :: tt:mark:nil:0':ok 55.41/15.10 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 nil :: tt:mark:nil:0':ok 55.41/15.11 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 55.41/15.11 U202 :: 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 55.41/15.11 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U203 :: 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 55.41/15.11 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 0' :: tt:mark:nil:0':ok 55.41/15.11 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 top :: tt:mark:nil:0':ok -> top 55.41/15.11 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.41/15.11 hole_top2_0 :: top 55.41/15.11 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.41/15.11 55.41/15.11 55.41/15.11 Lemmas: 55.41/15.11 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.41/15.11 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.41/15.11 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.41/15.11 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.41/15.11 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.41/15.11 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.41/15.11 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.41/15.11 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.41/15.11 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.41/15.11 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.41/15.11 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.41/15.11 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.41/15.11 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.41/15.11 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.41/15.11 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.41/15.11 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.41/15.11 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.41/15.11 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.41/15.11 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.41/15.11 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.41/15.11 U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n137760_0) 55.41/15.11 fst(gen_tt:mark:nil:0':ok3_0(+(1, n154384_0))) -> *4_0, rt in Omega(n154384_0) 55.41/15.11 U32(gen_tt:mark:nil:0':ok3_0(+(1, n158601_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158601_0) 55.41/15.11 U42(gen_tt:mark:nil:0':ok3_0(+(1, n169534_0))) -> *4_0, rt in Omega(n169534_0) 55.41/15.11 U52(gen_tt:mark:nil:0':ok3_0(+(1, n174002_0))) -> *4_0, rt in Omega(n174002_0) 55.41/15.11 U11(gen_tt:mark:nil:0':ok3_0(+(1, n178571_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n178571_0) 55.41/15.11 U21(gen_tt:mark:nil:0':ok3_0(+(1, n197211_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n197211_0) 55.41/15.11 U31(gen_tt:mark:nil:0':ok3_0(+(1, n216460_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n216460_0) 55.41/15.11 U41(gen_tt:mark:nil:0':ok3_0(+(1, n236318_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n236318_0) 55.41/15.11 55.41/15.11 55.41/15.11 Generator Equations: 55.41/15.11 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.41/15.11 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.41/15.11 55.41/15.11 55.41/15.11 The following defined symbols remain to be analysed: 55.41/15.11 U51, active, U61, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.41/15.11 55.41/15.11 They will be analysed ascendingly in the following order: 55.41/15.11 U51 < active 55.41/15.11 U61 < active 55.41/15.11 isPLNat < active 55.41/15.11 U71 < active 55.41/15.11 U81 < active 55.41/15.11 U91 < active 55.41/15.11 U101 < active 55.41/15.11 U111 < active 55.41/15.11 U121 < active 55.41/15.11 U131 < active 55.41/15.11 U141 < active 55.41/15.11 U151 < active 55.41/15.11 U161 < active 55.41/15.11 U171 < active 55.41/15.11 U181 < active 55.41/15.11 U191 < active 55.41/15.11 U201 < active 55.41/15.11 U211 < active 55.41/15.11 U221 < active 55.41/15.11 tail < active 55.41/15.11 take < active 55.41/15.11 sel < active 55.41/15.11 active < top 55.41/15.11 U51 < proper 55.41/15.11 U61 < proper 55.41/15.11 isPLNat < proper 55.41/15.11 U71 < proper 55.41/15.11 U81 < proper 55.41/15.11 U91 < proper 55.41/15.11 U101 < proper 55.41/15.11 U111 < proper 55.41/15.11 U121 < proper 55.41/15.11 U131 < proper 55.41/15.11 U141 < proper 55.41/15.11 U151 < proper 55.41/15.11 U161 < proper 55.41/15.11 U171 < proper 55.41/15.11 U181 < proper 55.41/15.11 U191 < proper 55.41/15.11 U201 < proper 55.41/15.11 U211 < proper 55.41/15.11 U221 < proper 55.41/15.11 tail < proper 55.41/15.11 take < proper 55.41/15.11 sel < proper 55.41/15.11 proper < top 55.41/15.11 55.41/15.11 ---------------------------------------- 55.41/15.11 55.41/15.11 (87) RewriteLemmaProof (LOWER BOUND(ID)) 55.41/15.11 Proved the following rewrite lemma: 55.41/15.11 U51(gen_tt:mark:nil:0':ok3_0(+(1, n249185_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n249185_0) 55.41/15.11 55.41/15.11 Induction Base: 55.41/15.11 U51(gen_tt:mark:nil:0':ok3_0(+(1, 0)), gen_tt:mark:nil:0':ok3_0(b)) 55.41/15.11 55.41/15.11 Induction Step: 55.41/15.11 U51(gen_tt:mark:nil:0':ok3_0(+(1, +(n249185_0, 1))), gen_tt:mark:nil:0':ok3_0(b)) ->_R^Omega(1) 55.41/15.11 mark(U51(gen_tt:mark:nil:0':ok3_0(+(1, n249185_0)), gen_tt:mark:nil:0':ok3_0(b))) ->_IH 55.41/15.11 mark(*4_0) 55.41/15.11 55.41/15.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.41/15.11 ---------------------------------------- 55.41/15.11 55.41/15.11 (88) 55.41/15.11 Obligation: 55.41/15.11 TRS: 55.41/15.11 Rules: 55.41/15.11 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.41/15.11 active(U102(tt)) -> mark(tt) 55.41/15.11 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.41/15.11 active(U111(tt)) -> mark(tt) 55.41/15.11 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.41/15.11 active(U121(tt)) -> mark(tt) 55.41/15.11 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.41/15.11 active(U132(tt)) -> mark(tt) 55.41/15.11 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.41/15.11 active(U142(tt)) -> mark(tt) 55.41/15.11 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.41/15.11 active(U152(tt)) -> mark(tt) 55.41/15.11 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.41/15.11 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.41/15.11 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.41/15.11 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.41/15.11 active(U182(tt, Y)) -> mark(Y) 55.41/15.11 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.41/15.11 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.41/15.11 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.41/15.11 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.41/15.11 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.41/15.11 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.41/15.11 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.41/15.11 active(U212(tt, XS)) -> mark(XS) 55.41/15.11 active(U22(tt, X)) -> mark(X) 55.41/15.11 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.41/15.11 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.41/15.11 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.41/15.11 active(U32(tt, N)) -> mark(N) 55.41/15.11 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.41/15.11 active(U42(tt)) -> mark(tt) 55.41/15.11 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.41/15.11 active(U52(tt)) -> mark(tt) 55.41/15.11 active(U61(tt)) -> mark(tt) 55.41/15.11 active(U71(tt)) -> mark(tt) 55.41/15.11 active(U81(tt)) -> mark(tt) 55.41/15.11 active(U91(tt)) -> mark(tt) 55.41/15.11 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.41/15.11 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.41/15.11 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.41/15.11 active(isLNat(nil)) -> mark(tt) 55.41/15.11 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.41/15.11 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.41/15.11 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.41/15.11 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.41/15.11 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.41/15.11 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.41/15.11 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.41/15.11 active(isNatural(0')) -> mark(tt) 55.41/15.11 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.41/15.11 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.41/15.11 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.41/15.11 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.41/15.11 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.41/15.11 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.41/15.11 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.41/15.11 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.41/15.11 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.41/15.11 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.41/15.11 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.41/15.11 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.41/15.11 active(U101(X1, X2)) -> U101(active(X1), X2) 55.41/15.11 active(U102(X)) -> U102(active(X)) 55.41/15.11 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.41/15.11 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.41/15.11 active(U111(X)) -> U111(active(X)) 55.41/15.11 active(snd(X)) -> snd(active(X)) 55.41/15.11 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.41/15.11 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.41/15.11 active(U121(X)) -> U121(active(X)) 55.41/15.11 active(U131(X1, X2)) -> U131(active(X1), X2) 55.41/15.11 active(U132(X)) -> U132(active(X)) 55.41/15.11 active(U141(X1, X2)) -> U141(active(X1), X2) 55.41/15.11 active(U142(X)) -> U142(active(X)) 55.41/15.11 active(U151(X1, X2)) -> U151(active(X1), X2) 55.41/15.11 active(U152(X)) -> U152(active(X)) 55.41/15.11 active(U161(X1, X2)) -> U161(active(X1), X2) 55.41/15.11 active(cons(X1, X2)) -> cons(active(X1), X2) 55.41/15.11 active(natsFrom(X)) -> natsFrom(active(X)) 55.41/15.11 active(s(X)) -> s(active(X)) 55.41/15.11 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.41/15.11 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.41/15.11 active(head(X)) -> head(active(X)) 55.41/15.11 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.41/15.11 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.41/15.11 active(U181(X1, X2)) -> U181(active(X1), X2) 55.41/15.11 active(U182(X1, X2)) -> U182(active(X1), X2) 55.41/15.11 active(U191(X1, X2)) -> U191(active(X1), X2) 55.41/15.11 active(pair(X1, X2)) -> pair(active(X1), X2) 55.41/15.11 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.41/15.11 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.41/15.11 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.41/15.11 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.41/15.11 active(U204(X1, X2)) -> U204(active(X1), X2) 55.41/15.11 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.41/15.11 active(U22(X1, X2)) -> U22(active(X1), X2) 55.41/15.11 active(U211(X1, X2)) -> U211(active(X1), X2) 55.41/15.11 active(U212(X1, X2)) -> U212(active(X1), X2) 55.41/15.11 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.41/15.11 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.41/15.11 active(fst(X)) -> fst(active(X)) 55.41/15.11 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.41/15.11 active(U32(X1, X2)) -> U32(active(X1), X2) 55.41/15.11 active(U41(X1, X2)) -> U41(active(X1), X2) 55.41/15.11 active(U42(X)) -> U42(active(X)) 55.41/15.11 active(U51(X1, X2)) -> U51(active(X1), X2) 55.41/15.11 active(U52(X)) -> U52(active(X)) 55.41/15.11 active(U61(X)) -> U61(active(X)) 55.41/15.11 active(U71(X)) -> U71(active(X)) 55.41/15.11 active(U81(X)) -> U81(active(X)) 55.41/15.11 active(U91(X)) -> U91(active(X)) 55.41/15.11 active(tail(X)) -> tail(active(X)) 55.41/15.11 active(take(X1, X2)) -> take(active(X1), X2) 55.41/15.11 active(take(X1, X2)) -> take(X1, active(X2)) 55.41/15.11 active(sel(X1, X2)) -> sel(active(X1), X2) 55.41/15.11 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.41/15.11 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.41/15.11 U102(mark(X)) -> mark(U102(X)) 55.41/15.11 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.41/15.11 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.41/15.11 U111(mark(X)) -> mark(U111(X)) 55.41/15.11 snd(mark(X)) -> mark(snd(X)) 55.41/15.11 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.41/15.11 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.41/15.11 U121(mark(X)) -> mark(U121(X)) 55.41/15.11 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.41/15.11 U132(mark(X)) -> mark(U132(X)) 55.41/15.11 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.41/15.11 U142(mark(X)) -> mark(U142(X)) 55.41/15.11 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.41/15.11 U152(mark(X)) -> mark(U152(X)) 55.41/15.11 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.41/15.11 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.41/15.11 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.41/15.11 s(mark(X)) -> mark(s(X)) 55.41/15.11 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.41/15.11 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.41/15.11 head(mark(X)) -> mark(head(X)) 55.41/15.11 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.41/15.11 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.41/15.11 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.41/15.11 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.41/15.11 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.41/15.11 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.41/15.11 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.41/15.11 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.41/15.11 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.41/15.11 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.41/15.11 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.41/15.11 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.41/15.11 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.41/15.11 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.41/15.11 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.41/15.11 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.41/15.11 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.41/15.11 fst(mark(X)) -> mark(fst(X)) 55.41/15.11 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.41/15.11 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.41/15.11 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.41/15.11 U42(mark(X)) -> mark(U42(X)) 55.41/15.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.41/15.11 U52(mark(X)) -> mark(U52(X)) 55.41/15.11 U61(mark(X)) -> mark(U61(X)) 55.41/15.11 U71(mark(X)) -> mark(U71(X)) 55.41/15.11 U81(mark(X)) -> mark(U81(X)) 55.41/15.11 U91(mark(X)) -> mark(U91(X)) 55.41/15.11 tail(mark(X)) -> mark(tail(X)) 55.41/15.11 take(mark(X1), X2) -> mark(take(X1, X2)) 55.41/15.11 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.41/15.11 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.41/15.11 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.41/15.11 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.41/15.11 proper(tt) -> ok(tt) 55.41/15.11 proper(U102(X)) -> U102(proper(X)) 55.41/15.11 proper(isLNat(X)) -> isLNat(proper(X)) 55.41/15.11 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.41/15.11 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.41/15.11 proper(U111(X)) -> U111(proper(X)) 55.41/15.11 proper(snd(X)) -> snd(proper(X)) 55.41/15.11 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.41/15.11 proper(U121(X)) -> U121(proper(X)) 55.41/15.11 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.41/15.11 proper(U132(X)) -> U132(proper(X)) 55.41/15.11 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.41/15.11 proper(U142(X)) -> U142(proper(X)) 55.41/15.11 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.41/15.11 proper(U152(X)) -> U152(proper(X)) 55.41/15.11 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.41/15.11 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.41/15.11 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.41/15.11 proper(s(X)) -> s(proper(X)) 55.41/15.11 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.41/15.11 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.41/15.11 proper(head(X)) -> head(proper(X)) 55.41/15.11 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.41/15.11 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.41/15.11 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.41/15.11 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.41/15.11 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.41/15.11 proper(nil) -> ok(nil) 55.41/15.11 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.11 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.11 proper(isNatural(X)) -> isNatural(proper(X)) 55.41/15.11 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.41/15.11 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.41/15.11 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.41/15.11 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.41/15.11 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.41/15.11 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.41/15.11 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.41/15.11 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.41/15.11 proper(fst(X)) -> fst(proper(X)) 55.41/15.11 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.41/15.11 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.41/15.11 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.41/15.11 proper(U42(X)) -> U42(proper(X)) 55.41/15.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.41/15.11 proper(U52(X)) -> U52(proper(X)) 55.41/15.11 proper(U61(X)) -> U61(proper(X)) 55.41/15.11 proper(U71(X)) -> U71(proper(X)) 55.41/15.11 proper(U81(X)) -> U81(proper(X)) 55.41/15.11 proper(U91(X)) -> U91(proper(X)) 55.41/15.11 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.41/15.11 proper(tail(X)) -> tail(proper(X)) 55.41/15.11 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.41/15.11 proper(0') -> ok(0') 55.41/15.11 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.41/15.11 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.41/15.11 U102(ok(X)) -> ok(U102(X)) 55.41/15.11 isLNat(ok(X)) -> ok(isLNat(X)) 55.41/15.11 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.41/15.11 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.41/15.11 U111(ok(X)) -> ok(U111(X)) 55.41/15.11 snd(ok(X)) -> ok(snd(X)) 55.41/15.11 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.41/15.11 U121(ok(X)) -> ok(U121(X)) 55.41/15.11 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.41/15.11 U132(ok(X)) -> ok(U132(X)) 55.41/15.11 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.41/15.11 U142(ok(X)) -> ok(U142(X)) 55.41/15.11 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.41/15.11 U152(ok(X)) -> ok(U152(X)) 55.41/15.11 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.41/15.11 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.41/15.11 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.41/15.11 s(ok(X)) -> ok(s(X)) 55.41/15.11 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.41/15.11 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.41/15.11 head(ok(X)) -> ok(head(X)) 55.41/15.11 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.41/15.11 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.41/15.11 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.41/15.11 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.41/15.11 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.41/15.11 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.41/15.11 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.41/15.11 isNatural(ok(X)) -> ok(isNatural(X)) 55.41/15.11 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.41/15.11 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.41/15.11 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.41/15.11 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.41/15.11 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.41/15.11 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.41/15.11 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.41/15.11 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.41/15.11 fst(ok(X)) -> ok(fst(X)) 55.41/15.11 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.41/15.11 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.41/15.11 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.41/15.11 U42(ok(X)) -> ok(U42(X)) 55.41/15.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.41/15.11 U52(ok(X)) -> ok(U52(X)) 55.41/15.11 U61(ok(X)) -> ok(U61(X)) 55.41/15.11 U71(ok(X)) -> ok(U71(X)) 55.41/15.11 U81(ok(X)) -> ok(U81(X)) 55.41/15.11 U91(ok(X)) -> ok(U91(X)) 55.41/15.11 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.41/15.11 tail(ok(X)) -> ok(tail(X)) 55.41/15.11 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.41/15.11 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.41/15.11 top(mark(X)) -> top(proper(X)) 55.41/15.11 top(ok(X)) -> top(active(X)) 55.41/15.11 55.41/15.11 Types: 55.41/15.11 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 tt :: tt:mark:nil:0':ok 55.41/15.11 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.41/15.11 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 nil :: tt:mark:nil:0':ok 55.58/15.11 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 55.58/15.11 U202 :: 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 55.58/15.11 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U203 :: 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 55.58/15.11 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 0' :: tt:mark:nil:0':ok 55.58/15.11 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 top :: tt:mark:nil:0':ok -> top 55.58/15.11 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.58/15.11 hole_top2_0 :: top 55.58/15.11 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.58/15.11 55.58/15.11 55.58/15.11 Lemmas: 55.58/15.11 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.58/15.11 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.58/15.11 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.58/15.11 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.58/15.11 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.58/15.11 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.58/15.11 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.58/15.11 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.58/15.11 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.58/15.11 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.58/15.11 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.58/15.11 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.58/15.11 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.58/15.11 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.58/15.11 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.58/15.11 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.58/15.11 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.58/15.11 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.58/15.11 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.58/15.11 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.58/15.11 U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n137760_0) 55.58/15.11 fst(gen_tt:mark:nil:0':ok3_0(+(1, n154384_0))) -> *4_0, rt in Omega(n154384_0) 55.58/15.11 U32(gen_tt:mark:nil:0':ok3_0(+(1, n158601_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158601_0) 55.58/15.11 U42(gen_tt:mark:nil:0':ok3_0(+(1, n169534_0))) -> *4_0, rt in Omega(n169534_0) 55.58/15.11 U52(gen_tt:mark:nil:0':ok3_0(+(1, n174002_0))) -> *4_0, rt in Omega(n174002_0) 55.58/15.11 U11(gen_tt:mark:nil:0':ok3_0(+(1, n178571_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n178571_0) 55.58/15.11 U21(gen_tt:mark:nil:0':ok3_0(+(1, n197211_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n197211_0) 55.58/15.11 U31(gen_tt:mark:nil:0':ok3_0(+(1, n216460_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n216460_0) 55.58/15.11 U41(gen_tt:mark:nil:0':ok3_0(+(1, n236318_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n236318_0) 55.58/15.11 U51(gen_tt:mark:nil:0':ok3_0(+(1, n249185_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n249185_0) 55.58/15.11 55.58/15.11 55.58/15.11 Generator Equations: 55.58/15.11 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.58/15.11 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.58/15.11 55.58/15.11 55.58/15.11 The following defined symbols remain to be analysed: 55.58/15.11 U61, active, isPLNat, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.58/15.11 55.58/15.11 They will be analysed ascendingly in the following order: 55.58/15.11 U61 < active 55.58/15.11 isPLNat < active 55.58/15.11 U71 < active 55.58/15.11 U81 < active 55.58/15.11 U91 < active 55.58/15.11 U101 < active 55.58/15.11 U111 < active 55.58/15.11 U121 < active 55.58/15.11 U131 < active 55.58/15.11 U141 < active 55.58/15.11 U151 < active 55.58/15.11 U161 < active 55.58/15.11 U171 < active 55.58/15.11 U181 < active 55.58/15.11 U191 < active 55.58/15.11 U201 < active 55.58/15.11 U211 < active 55.58/15.11 U221 < active 55.58/15.11 tail < active 55.58/15.11 take < active 55.58/15.11 sel < active 55.58/15.11 active < top 55.58/15.11 U61 < proper 55.58/15.11 isPLNat < proper 55.58/15.11 U71 < proper 55.58/15.11 U81 < proper 55.58/15.11 U91 < proper 55.58/15.11 U101 < proper 55.58/15.11 U111 < proper 55.58/15.11 U121 < proper 55.58/15.11 U131 < proper 55.58/15.11 U141 < proper 55.58/15.11 U151 < proper 55.58/15.11 U161 < proper 55.58/15.11 U171 < proper 55.58/15.11 U181 < proper 55.58/15.11 U191 < proper 55.58/15.11 U201 < proper 55.58/15.11 U211 < proper 55.58/15.11 U221 < proper 55.58/15.11 tail < proper 55.58/15.11 take < proper 55.58/15.11 sel < proper 55.58/15.11 proper < top 55.58/15.11 55.58/15.11 ---------------------------------------- 55.58/15.11 55.58/15.11 (89) RewriteLemmaProof (LOWER BOUND(ID)) 55.58/15.11 Proved the following rewrite lemma: 55.58/15.11 U61(gen_tt:mark:nil:0':ok3_0(+(1, n262358_0))) -> *4_0, rt in Omega(n262358_0) 55.58/15.11 55.58/15.11 Induction Base: 55.58/15.11 U61(gen_tt:mark:nil:0':ok3_0(+(1, 0))) 55.58/15.11 55.58/15.11 Induction Step: 55.58/15.11 U61(gen_tt:mark:nil:0':ok3_0(+(1, +(n262358_0, 1)))) ->_R^Omega(1) 55.58/15.11 mark(U61(gen_tt:mark:nil:0':ok3_0(+(1, n262358_0)))) ->_IH 55.58/15.11 mark(*4_0) 55.58/15.11 55.58/15.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.58/15.11 ---------------------------------------- 55.58/15.11 55.58/15.11 (90) 55.58/15.11 Obligation: 55.58/15.11 TRS: 55.58/15.11 Rules: 55.58/15.11 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.58/15.11 active(U102(tt)) -> mark(tt) 55.58/15.11 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.58/15.11 active(U111(tt)) -> mark(tt) 55.58/15.11 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.58/15.11 active(U121(tt)) -> mark(tt) 55.58/15.11 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.58/15.11 active(U132(tt)) -> mark(tt) 55.58/15.11 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.58/15.11 active(U142(tt)) -> mark(tt) 55.58/15.11 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.58/15.11 active(U152(tt)) -> mark(tt) 55.58/15.11 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.58/15.11 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.58/15.11 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.58/15.11 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.58/15.11 active(U182(tt, Y)) -> mark(Y) 55.58/15.11 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.58/15.11 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.58/15.11 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.58/15.11 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.58/15.11 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.58/15.11 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.58/15.11 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.58/15.11 active(U212(tt, XS)) -> mark(XS) 55.58/15.11 active(U22(tt, X)) -> mark(X) 55.58/15.11 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.58/15.11 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.58/15.11 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.58/15.11 active(U32(tt, N)) -> mark(N) 55.58/15.11 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.58/15.11 active(U42(tt)) -> mark(tt) 55.58/15.11 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.58/15.11 active(U52(tt)) -> mark(tt) 55.58/15.11 active(U61(tt)) -> mark(tt) 55.58/15.11 active(U71(tt)) -> mark(tt) 55.58/15.11 active(U81(tt)) -> mark(tt) 55.58/15.11 active(U91(tt)) -> mark(tt) 55.58/15.11 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.58/15.11 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.58/15.11 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.58/15.11 active(isLNat(nil)) -> mark(tt) 55.58/15.11 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.58/15.11 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.58/15.11 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.58/15.11 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.58/15.11 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.58/15.11 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.58/15.11 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.58/15.11 active(isNatural(0')) -> mark(tt) 55.58/15.11 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.58/15.11 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.58/15.11 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.58/15.11 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.58/15.11 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.58/15.11 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.58/15.11 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.58/15.11 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.58/15.11 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.58/15.11 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.58/15.11 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.58/15.11 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.58/15.11 active(U101(X1, X2)) -> U101(active(X1), X2) 55.58/15.11 active(U102(X)) -> U102(active(X)) 55.58/15.11 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.58/15.11 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.58/15.11 active(U111(X)) -> U111(active(X)) 55.58/15.11 active(snd(X)) -> snd(active(X)) 55.58/15.11 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.58/15.11 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.58/15.11 active(U121(X)) -> U121(active(X)) 55.58/15.11 active(U131(X1, X2)) -> U131(active(X1), X2) 55.58/15.11 active(U132(X)) -> U132(active(X)) 55.58/15.11 active(U141(X1, X2)) -> U141(active(X1), X2) 55.58/15.11 active(U142(X)) -> U142(active(X)) 55.58/15.11 active(U151(X1, X2)) -> U151(active(X1), X2) 55.58/15.11 active(U152(X)) -> U152(active(X)) 55.58/15.11 active(U161(X1, X2)) -> U161(active(X1), X2) 55.58/15.11 active(cons(X1, X2)) -> cons(active(X1), X2) 55.58/15.11 active(natsFrom(X)) -> natsFrom(active(X)) 55.58/15.11 active(s(X)) -> s(active(X)) 55.58/15.11 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.58/15.11 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.58/15.11 active(head(X)) -> head(active(X)) 55.58/15.11 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.58/15.11 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.58/15.11 active(U181(X1, X2)) -> U181(active(X1), X2) 55.58/15.11 active(U182(X1, X2)) -> U182(active(X1), X2) 55.58/15.11 active(U191(X1, X2)) -> U191(active(X1), X2) 55.58/15.11 active(pair(X1, X2)) -> pair(active(X1), X2) 55.58/15.11 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.58/15.11 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.58/15.11 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.58/15.11 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.58/15.11 active(U204(X1, X2)) -> U204(active(X1), X2) 55.58/15.11 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.58/15.11 active(U22(X1, X2)) -> U22(active(X1), X2) 55.58/15.11 active(U211(X1, X2)) -> U211(active(X1), X2) 55.58/15.11 active(U212(X1, X2)) -> U212(active(X1), X2) 55.58/15.11 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.58/15.11 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.58/15.11 active(fst(X)) -> fst(active(X)) 55.58/15.11 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.58/15.11 active(U32(X1, X2)) -> U32(active(X1), X2) 55.58/15.11 active(U41(X1, X2)) -> U41(active(X1), X2) 55.58/15.11 active(U42(X)) -> U42(active(X)) 55.58/15.11 active(U51(X1, X2)) -> U51(active(X1), X2) 55.58/15.11 active(U52(X)) -> U52(active(X)) 55.58/15.11 active(U61(X)) -> U61(active(X)) 55.58/15.11 active(U71(X)) -> U71(active(X)) 55.58/15.11 active(U81(X)) -> U81(active(X)) 55.58/15.11 active(U91(X)) -> U91(active(X)) 55.58/15.11 active(tail(X)) -> tail(active(X)) 55.58/15.11 active(take(X1, X2)) -> take(active(X1), X2) 55.58/15.11 active(take(X1, X2)) -> take(X1, active(X2)) 55.58/15.11 active(sel(X1, X2)) -> sel(active(X1), X2) 55.58/15.11 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.58/15.11 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.58/15.11 U102(mark(X)) -> mark(U102(X)) 55.58/15.11 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.58/15.11 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.58/15.11 U111(mark(X)) -> mark(U111(X)) 55.58/15.11 snd(mark(X)) -> mark(snd(X)) 55.58/15.11 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.58/15.11 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.58/15.11 U121(mark(X)) -> mark(U121(X)) 55.58/15.11 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.58/15.11 U132(mark(X)) -> mark(U132(X)) 55.58/15.11 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.58/15.11 U142(mark(X)) -> mark(U142(X)) 55.58/15.11 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.58/15.11 U152(mark(X)) -> mark(U152(X)) 55.58/15.11 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.58/15.11 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.58/15.11 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.58/15.11 s(mark(X)) -> mark(s(X)) 55.58/15.11 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.58/15.11 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.58/15.11 head(mark(X)) -> mark(head(X)) 55.58/15.11 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.58/15.11 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.58/15.11 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.58/15.11 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.58/15.11 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.58/15.11 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.58/15.11 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.58/15.11 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.58/15.11 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.58/15.11 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.58/15.11 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.58/15.11 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.58/15.11 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.58/15.11 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.58/15.11 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.58/15.11 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.58/15.11 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.58/15.11 fst(mark(X)) -> mark(fst(X)) 55.58/15.11 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.58/15.11 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.58/15.11 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.58/15.11 U42(mark(X)) -> mark(U42(X)) 55.58/15.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.58/15.11 U52(mark(X)) -> mark(U52(X)) 55.58/15.11 U61(mark(X)) -> mark(U61(X)) 55.58/15.11 U71(mark(X)) -> mark(U71(X)) 55.58/15.11 U81(mark(X)) -> mark(U81(X)) 55.58/15.11 U91(mark(X)) -> mark(U91(X)) 55.58/15.11 tail(mark(X)) -> mark(tail(X)) 55.58/15.11 take(mark(X1), X2) -> mark(take(X1, X2)) 55.58/15.11 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.58/15.11 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.58/15.11 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.58/15.11 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.58/15.11 proper(tt) -> ok(tt) 55.58/15.11 proper(U102(X)) -> U102(proper(X)) 55.58/15.11 proper(isLNat(X)) -> isLNat(proper(X)) 55.58/15.11 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U111(X)) -> U111(proper(X)) 55.58/15.11 proper(snd(X)) -> snd(proper(X)) 55.58/15.11 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.58/15.11 proper(U121(X)) -> U121(proper(X)) 55.58/15.11 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.58/15.11 proper(U132(X)) -> U132(proper(X)) 55.58/15.11 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.58/15.11 proper(U142(X)) -> U142(proper(X)) 55.58/15.11 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.58/15.11 proper(U152(X)) -> U152(proper(X)) 55.58/15.11 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.58/15.11 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.58/15.11 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.58/15.11 proper(s(X)) -> s(proper(X)) 55.58/15.11 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(head(X)) -> head(proper(X)) 55.58/15.11 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.58/15.11 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.58/15.11 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.58/15.11 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.58/15.11 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.58/15.11 proper(nil) -> ok(nil) 55.58/15.11 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.58/15.11 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.58/15.11 proper(isNatural(X)) -> isNatural(proper(X)) 55.58/15.11 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.58/15.11 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.58/15.11 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.58/15.11 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.58/15.11 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.58/15.11 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(fst(X)) -> fst(proper(X)) 55.58/15.11 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.58/15.11 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.58/15.11 proper(U42(X)) -> U42(proper(X)) 55.58/15.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.58/15.11 proper(U52(X)) -> U52(proper(X)) 55.58/15.11 proper(U61(X)) -> U61(proper(X)) 55.58/15.11 proper(U71(X)) -> U71(proper(X)) 55.58/15.11 proper(U81(X)) -> U81(proper(X)) 55.58/15.11 proper(U91(X)) -> U91(proper(X)) 55.58/15.11 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.58/15.11 proper(tail(X)) -> tail(proper(X)) 55.58/15.11 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.58/15.11 proper(0') -> ok(0') 55.58/15.11 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.58/15.11 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.58/15.11 U102(ok(X)) -> ok(U102(X)) 55.58/15.11 isLNat(ok(X)) -> ok(isLNat(X)) 55.58/15.11 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.58/15.11 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.58/15.11 U111(ok(X)) -> ok(U111(X)) 55.58/15.11 snd(ok(X)) -> ok(snd(X)) 55.58/15.11 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.58/15.11 U121(ok(X)) -> ok(U121(X)) 55.58/15.11 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.58/15.11 U132(ok(X)) -> ok(U132(X)) 55.58/15.11 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.58/15.11 U142(ok(X)) -> ok(U142(X)) 55.58/15.11 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.58/15.11 U152(ok(X)) -> ok(U152(X)) 55.58/15.11 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.58/15.11 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.58/15.11 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.58/15.11 s(ok(X)) -> ok(s(X)) 55.58/15.11 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.58/15.11 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.58/15.11 head(ok(X)) -> ok(head(X)) 55.58/15.11 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.58/15.11 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.58/15.11 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.58/15.11 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.58/15.11 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.58/15.11 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.58/15.11 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.58/15.11 isNatural(ok(X)) -> ok(isNatural(X)) 55.58/15.11 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.58/15.11 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.58/15.11 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.58/15.11 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.58/15.11 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.58/15.11 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.58/15.11 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.58/15.11 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.58/15.11 fst(ok(X)) -> ok(fst(X)) 55.58/15.11 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.58/15.11 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.58/15.11 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.58/15.11 U42(ok(X)) -> ok(U42(X)) 55.58/15.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.58/15.11 U52(ok(X)) -> ok(U52(X)) 55.58/15.11 U61(ok(X)) -> ok(U61(X)) 55.58/15.11 U71(ok(X)) -> ok(U71(X)) 55.58/15.11 U81(ok(X)) -> ok(U81(X)) 55.58/15.11 U91(ok(X)) -> ok(U91(X)) 55.58/15.11 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.58/15.11 tail(ok(X)) -> ok(tail(X)) 55.58/15.11 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.58/15.11 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.58/15.11 top(mark(X)) -> top(proper(X)) 55.58/15.11 top(ok(X)) -> top(active(X)) 55.58/15.11 55.58/15.11 Types: 55.58/15.11 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 tt :: tt:mark:nil:0':ok 55.58/15.11 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 nil :: tt:mark:nil:0':ok 55.58/15.11 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 55.58/15.11 U202 :: 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 55.58/15.11 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U203 :: 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 55.58/15.11 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 0' :: tt:mark:nil:0':ok 55.58/15.11 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 top :: tt:mark:nil:0':ok -> top 55.58/15.11 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.58/15.11 hole_top2_0 :: top 55.58/15.11 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.58/15.11 55.58/15.11 55.58/15.11 Lemmas: 55.58/15.11 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.58/15.11 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.58/15.11 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.58/15.11 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.58/15.11 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.58/15.11 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.58/15.11 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.58/15.11 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.58/15.11 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.58/15.11 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.58/15.11 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.58/15.11 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.58/15.11 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.58/15.11 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.58/15.11 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.58/15.11 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.58/15.11 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.58/15.11 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.58/15.11 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.58/15.11 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.58/15.11 U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n137760_0) 55.58/15.11 fst(gen_tt:mark:nil:0':ok3_0(+(1, n154384_0))) -> *4_0, rt in Omega(n154384_0) 55.58/15.11 U32(gen_tt:mark:nil:0':ok3_0(+(1, n158601_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158601_0) 55.58/15.11 U42(gen_tt:mark:nil:0':ok3_0(+(1, n169534_0))) -> *4_0, rt in Omega(n169534_0) 55.58/15.11 U52(gen_tt:mark:nil:0':ok3_0(+(1, n174002_0))) -> *4_0, rt in Omega(n174002_0) 55.58/15.11 U11(gen_tt:mark:nil:0':ok3_0(+(1, n178571_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n178571_0) 55.58/15.11 U21(gen_tt:mark:nil:0':ok3_0(+(1, n197211_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n197211_0) 55.58/15.11 U31(gen_tt:mark:nil:0':ok3_0(+(1, n216460_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n216460_0) 55.58/15.11 U41(gen_tt:mark:nil:0':ok3_0(+(1, n236318_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n236318_0) 55.58/15.11 U51(gen_tt:mark:nil:0':ok3_0(+(1, n249185_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n249185_0) 55.58/15.11 U61(gen_tt:mark:nil:0':ok3_0(+(1, n262358_0))) -> *4_0, rt in Omega(n262358_0) 55.58/15.11 55.58/15.11 55.58/15.11 Generator Equations: 55.58/15.11 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.58/15.11 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.58/15.11 55.58/15.11 55.58/15.11 The following defined symbols remain to be analysed: 55.58/15.11 isPLNat, active, U71, U81, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.58/15.11 55.58/15.11 They will be analysed ascendingly in the following order: 55.58/15.11 isPLNat < active 55.58/15.11 U71 < active 55.58/15.11 U81 < active 55.58/15.11 U91 < active 55.58/15.11 U101 < active 55.58/15.11 U111 < active 55.58/15.11 U121 < active 55.58/15.11 U131 < active 55.58/15.11 U141 < active 55.58/15.11 U151 < active 55.58/15.11 U161 < active 55.58/15.11 U171 < active 55.58/15.11 U181 < active 55.58/15.11 U191 < active 55.58/15.11 U201 < active 55.58/15.11 U211 < active 55.58/15.11 U221 < active 55.58/15.11 tail < active 55.58/15.11 take < active 55.58/15.11 sel < active 55.58/15.11 active < top 55.58/15.11 isPLNat < proper 55.58/15.11 U71 < proper 55.58/15.11 U81 < proper 55.58/15.11 U91 < proper 55.58/15.11 U101 < proper 55.58/15.11 U111 < proper 55.58/15.11 U121 < proper 55.58/15.11 U131 < proper 55.58/15.11 U141 < proper 55.58/15.11 U151 < proper 55.58/15.11 U161 < proper 55.58/15.11 U171 < proper 55.58/15.11 U181 < proper 55.58/15.11 U191 < proper 55.58/15.11 U201 < proper 55.58/15.11 U211 < proper 55.58/15.11 U221 < proper 55.58/15.11 tail < proper 55.58/15.11 take < proper 55.58/15.11 sel < proper 55.58/15.11 proper < top 55.58/15.11 55.58/15.11 ---------------------------------------- 55.58/15.11 55.58/15.11 (91) RewriteLemmaProof (LOWER BOUND(ID)) 55.58/15.11 Proved the following rewrite lemma: 55.58/15.11 U71(gen_tt:mark:nil:0':ok3_0(+(1, n268080_0))) -> *4_0, rt in Omega(n268080_0) 55.58/15.11 55.58/15.11 Induction Base: 55.58/15.11 U71(gen_tt:mark:nil:0':ok3_0(+(1, 0))) 55.58/15.11 55.58/15.11 Induction Step: 55.58/15.11 U71(gen_tt:mark:nil:0':ok3_0(+(1, +(n268080_0, 1)))) ->_R^Omega(1) 55.58/15.11 mark(U71(gen_tt:mark:nil:0':ok3_0(+(1, n268080_0)))) ->_IH 55.58/15.11 mark(*4_0) 55.58/15.11 55.58/15.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.58/15.11 ---------------------------------------- 55.58/15.11 55.58/15.11 (92) 55.58/15.11 Obligation: 55.58/15.11 TRS: 55.58/15.11 Rules: 55.58/15.11 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.58/15.11 active(U102(tt)) -> mark(tt) 55.58/15.11 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.58/15.11 active(U111(tt)) -> mark(tt) 55.58/15.11 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.58/15.11 active(U121(tt)) -> mark(tt) 55.58/15.11 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.58/15.11 active(U132(tt)) -> mark(tt) 55.58/15.11 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.58/15.11 active(U142(tt)) -> mark(tt) 55.58/15.11 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.58/15.11 active(U152(tt)) -> mark(tt) 55.58/15.11 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.58/15.11 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.58/15.11 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.58/15.11 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.58/15.11 active(U182(tt, Y)) -> mark(Y) 55.58/15.11 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.58/15.11 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.58/15.11 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.58/15.11 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.58/15.11 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.58/15.11 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.58/15.11 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.58/15.11 active(U212(tt, XS)) -> mark(XS) 55.58/15.11 active(U22(tt, X)) -> mark(X) 55.58/15.11 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.58/15.11 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.58/15.11 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.58/15.11 active(U32(tt, N)) -> mark(N) 55.58/15.11 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.58/15.11 active(U42(tt)) -> mark(tt) 55.58/15.11 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.58/15.11 active(U52(tt)) -> mark(tt) 55.58/15.11 active(U61(tt)) -> mark(tt) 55.58/15.11 active(U71(tt)) -> mark(tt) 55.58/15.11 active(U81(tt)) -> mark(tt) 55.58/15.11 active(U91(tt)) -> mark(tt) 55.58/15.11 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.58/15.11 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.58/15.11 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.58/15.11 active(isLNat(nil)) -> mark(tt) 55.58/15.11 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.58/15.11 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.58/15.11 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.58/15.11 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.58/15.11 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.58/15.11 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.58/15.11 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.58/15.11 active(isNatural(0')) -> mark(tt) 55.58/15.11 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.58/15.11 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.58/15.11 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.58/15.11 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.58/15.11 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.58/15.11 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.58/15.11 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.58/15.11 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.58/15.11 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.58/15.11 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.58/15.11 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.58/15.11 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.58/15.11 active(U101(X1, X2)) -> U101(active(X1), X2) 55.58/15.11 active(U102(X)) -> U102(active(X)) 55.58/15.11 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.58/15.11 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.58/15.11 active(U111(X)) -> U111(active(X)) 55.58/15.11 active(snd(X)) -> snd(active(X)) 55.58/15.11 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.58/15.11 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.58/15.11 active(U121(X)) -> U121(active(X)) 55.58/15.11 active(U131(X1, X2)) -> U131(active(X1), X2) 55.58/15.11 active(U132(X)) -> U132(active(X)) 55.58/15.11 active(U141(X1, X2)) -> U141(active(X1), X2) 55.58/15.11 active(U142(X)) -> U142(active(X)) 55.58/15.11 active(U151(X1, X2)) -> U151(active(X1), X2) 55.58/15.11 active(U152(X)) -> U152(active(X)) 55.58/15.11 active(U161(X1, X2)) -> U161(active(X1), X2) 55.58/15.11 active(cons(X1, X2)) -> cons(active(X1), X2) 55.58/15.11 active(natsFrom(X)) -> natsFrom(active(X)) 55.58/15.11 active(s(X)) -> s(active(X)) 55.58/15.11 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.58/15.11 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.58/15.11 active(head(X)) -> head(active(X)) 55.58/15.11 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.58/15.11 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.58/15.11 active(U181(X1, X2)) -> U181(active(X1), X2) 55.58/15.11 active(U182(X1, X2)) -> U182(active(X1), X2) 55.58/15.11 active(U191(X1, X2)) -> U191(active(X1), X2) 55.58/15.11 active(pair(X1, X2)) -> pair(active(X1), X2) 55.58/15.11 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.58/15.11 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.58/15.11 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.58/15.11 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.58/15.11 active(U204(X1, X2)) -> U204(active(X1), X2) 55.58/15.11 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.58/15.11 active(U22(X1, X2)) -> U22(active(X1), X2) 55.58/15.11 active(U211(X1, X2)) -> U211(active(X1), X2) 55.58/15.11 active(U212(X1, X2)) -> U212(active(X1), X2) 55.58/15.11 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.58/15.11 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.58/15.11 active(fst(X)) -> fst(active(X)) 55.58/15.11 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.58/15.11 active(U32(X1, X2)) -> U32(active(X1), X2) 55.58/15.11 active(U41(X1, X2)) -> U41(active(X1), X2) 55.58/15.11 active(U42(X)) -> U42(active(X)) 55.58/15.11 active(U51(X1, X2)) -> U51(active(X1), X2) 55.58/15.11 active(U52(X)) -> U52(active(X)) 55.58/15.11 active(U61(X)) -> U61(active(X)) 55.58/15.11 active(U71(X)) -> U71(active(X)) 55.58/15.11 active(U81(X)) -> U81(active(X)) 55.58/15.11 active(U91(X)) -> U91(active(X)) 55.58/15.11 active(tail(X)) -> tail(active(X)) 55.58/15.11 active(take(X1, X2)) -> take(active(X1), X2) 55.58/15.11 active(take(X1, X2)) -> take(X1, active(X2)) 55.58/15.11 active(sel(X1, X2)) -> sel(active(X1), X2) 55.58/15.11 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.58/15.11 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.58/15.11 U102(mark(X)) -> mark(U102(X)) 55.58/15.11 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.58/15.11 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.58/15.11 U111(mark(X)) -> mark(U111(X)) 55.58/15.11 snd(mark(X)) -> mark(snd(X)) 55.58/15.11 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.58/15.11 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.58/15.11 U121(mark(X)) -> mark(U121(X)) 55.58/15.11 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.58/15.11 U132(mark(X)) -> mark(U132(X)) 55.58/15.11 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.58/15.11 U142(mark(X)) -> mark(U142(X)) 55.58/15.11 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.58/15.11 U152(mark(X)) -> mark(U152(X)) 55.58/15.11 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.58/15.11 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.58/15.11 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.58/15.11 s(mark(X)) -> mark(s(X)) 55.58/15.11 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.58/15.11 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.58/15.11 head(mark(X)) -> mark(head(X)) 55.58/15.11 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.58/15.11 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.58/15.11 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.58/15.11 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.58/15.11 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.58/15.11 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.58/15.11 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.58/15.11 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.58/15.11 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.58/15.11 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.58/15.11 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.58/15.11 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.58/15.11 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.58/15.11 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.58/15.11 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.58/15.11 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.58/15.11 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.58/15.11 fst(mark(X)) -> mark(fst(X)) 55.58/15.11 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.58/15.11 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.58/15.11 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.58/15.11 U42(mark(X)) -> mark(U42(X)) 55.58/15.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.58/15.11 U52(mark(X)) -> mark(U52(X)) 55.58/15.11 U61(mark(X)) -> mark(U61(X)) 55.58/15.11 U71(mark(X)) -> mark(U71(X)) 55.58/15.11 U81(mark(X)) -> mark(U81(X)) 55.58/15.11 U91(mark(X)) -> mark(U91(X)) 55.58/15.11 tail(mark(X)) -> mark(tail(X)) 55.58/15.11 take(mark(X1), X2) -> mark(take(X1, X2)) 55.58/15.11 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.58/15.11 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.58/15.11 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.58/15.11 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.58/15.11 proper(tt) -> ok(tt) 55.58/15.11 proper(U102(X)) -> U102(proper(X)) 55.58/15.11 proper(isLNat(X)) -> isLNat(proper(X)) 55.58/15.11 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U111(X)) -> U111(proper(X)) 55.58/15.11 proper(snd(X)) -> snd(proper(X)) 55.58/15.11 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.58/15.11 proper(U121(X)) -> U121(proper(X)) 55.58/15.11 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.58/15.11 proper(U132(X)) -> U132(proper(X)) 55.58/15.11 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.58/15.11 proper(U142(X)) -> U142(proper(X)) 55.58/15.11 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.58/15.11 proper(U152(X)) -> U152(proper(X)) 55.58/15.11 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.58/15.11 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.58/15.11 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.58/15.11 proper(s(X)) -> s(proper(X)) 55.58/15.11 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(head(X)) -> head(proper(X)) 55.58/15.11 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.58/15.11 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.58/15.11 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.58/15.11 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.58/15.11 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.58/15.11 proper(nil) -> ok(nil) 55.58/15.11 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.58/15.11 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.58/15.11 proper(isNatural(X)) -> isNatural(proper(X)) 55.58/15.11 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.58/15.11 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.58/15.11 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.58/15.11 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.58/15.11 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.58/15.11 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(fst(X)) -> fst(proper(X)) 55.58/15.11 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.58/15.11 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.58/15.11 proper(U42(X)) -> U42(proper(X)) 55.58/15.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.58/15.11 proper(U52(X)) -> U52(proper(X)) 55.58/15.11 proper(U61(X)) -> U61(proper(X)) 55.58/15.11 proper(U71(X)) -> U71(proper(X)) 55.58/15.11 proper(U81(X)) -> U81(proper(X)) 55.58/15.11 proper(U91(X)) -> U91(proper(X)) 55.58/15.11 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.58/15.11 proper(tail(X)) -> tail(proper(X)) 55.58/15.11 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.58/15.11 proper(0') -> ok(0') 55.58/15.11 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.58/15.11 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.58/15.11 U102(ok(X)) -> ok(U102(X)) 55.58/15.11 isLNat(ok(X)) -> ok(isLNat(X)) 55.58/15.11 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.58/15.11 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.58/15.11 U111(ok(X)) -> ok(U111(X)) 55.58/15.11 snd(ok(X)) -> ok(snd(X)) 55.58/15.11 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.58/15.11 U121(ok(X)) -> ok(U121(X)) 55.58/15.11 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.58/15.11 U132(ok(X)) -> ok(U132(X)) 55.58/15.11 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.58/15.11 U142(ok(X)) -> ok(U142(X)) 55.58/15.11 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.58/15.11 U152(ok(X)) -> ok(U152(X)) 55.58/15.11 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.58/15.11 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.58/15.11 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.58/15.11 s(ok(X)) -> ok(s(X)) 55.58/15.11 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.58/15.11 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.58/15.11 head(ok(X)) -> ok(head(X)) 55.58/15.11 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.58/15.11 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.58/15.11 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.58/15.11 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.58/15.11 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.58/15.11 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.58/15.11 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.58/15.11 isNatural(ok(X)) -> ok(isNatural(X)) 55.58/15.11 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.58/15.11 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.58/15.11 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.58/15.11 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.58/15.11 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.58/15.11 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.58/15.11 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.58/15.11 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.58/15.11 fst(ok(X)) -> ok(fst(X)) 55.58/15.11 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.58/15.11 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.58/15.11 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.58/15.11 U42(ok(X)) -> ok(U42(X)) 55.58/15.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.58/15.11 U52(ok(X)) -> ok(U52(X)) 55.58/15.11 U61(ok(X)) -> ok(U61(X)) 55.58/15.11 U71(ok(X)) -> ok(U71(X)) 55.58/15.11 U81(ok(X)) -> ok(U81(X)) 55.58/15.11 U91(ok(X)) -> ok(U91(X)) 55.58/15.11 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.58/15.11 tail(ok(X)) -> ok(tail(X)) 55.58/15.11 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.58/15.11 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.58/15.11 top(mark(X)) -> top(proper(X)) 55.58/15.11 top(ok(X)) -> top(active(X)) 55.58/15.11 55.58/15.11 Types: 55.58/15.11 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 tt :: tt:mark:nil:0':ok 55.58/15.11 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 nil :: tt:mark:nil:0':ok 55.58/15.11 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 55.58/15.11 U202 :: 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 55.58/15.11 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U203 :: 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 55.58/15.11 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 0' :: tt:mark:nil:0':ok 55.58/15.11 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.11 top :: tt:mark:nil:0':ok -> top 55.58/15.11 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.58/15.11 hole_top2_0 :: top 55.58/15.11 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.58/15.11 55.58/15.11 55.58/15.11 Lemmas: 55.58/15.11 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.58/15.11 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.58/15.11 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.58/15.11 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.58/15.11 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.58/15.11 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.58/15.11 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.58/15.11 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.58/15.11 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.58/15.11 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.58/15.11 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.58/15.11 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.58/15.11 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.58/15.11 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.58/15.11 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.58/15.11 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.58/15.11 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.58/15.11 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.58/15.11 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.58/15.11 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.58/15.11 U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n137760_0) 55.58/15.11 fst(gen_tt:mark:nil:0':ok3_0(+(1, n154384_0))) -> *4_0, rt in Omega(n154384_0) 55.58/15.11 U32(gen_tt:mark:nil:0':ok3_0(+(1, n158601_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158601_0) 55.58/15.11 U42(gen_tt:mark:nil:0':ok3_0(+(1, n169534_0))) -> *4_0, rt in Omega(n169534_0) 55.58/15.11 U52(gen_tt:mark:nil:0':ok3_0(+(1, n174002_0))) -> *4_0, rt in Omega(n174002_0) 55.58/15.11 U11(gen_tt:mark:nil:0':ok3_0(+(1, n178571_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n178571_0) 55.58/15.11 U21(gen_tt:mark:nil:0':ok3_0(+(1, n197211_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n197211_0) 55.58/15.11 U31(gen_tt:mark:nil:0':ok3_0(+(1, n216460_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n216460_0) 55.58/15.11 U41(gen_tt:mark:nil:0':ok3_0(+(1, n236318_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n236318_0) 55.58/15.11 U51(gen_tt:mark:nil:0':ok3_0(+(1, n249185_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n249185_0) 55.58/15.11 U61(gen_tt:mark:nil:0':ok3_0(+(1, n262358_0))) -> *4_0, rt in Omega(n262358_0) 55.58/15.11 U71(gen_tt:mark:nil:0':ok3_0(+(1, n268080_0))) -> *4_0, rt in Omega(n268080_0) 55.58/15.11 55.58/15.11 55.58/15.11 Generator Equations: 55.58/15.11 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.58/15.11 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.58/15.11 55.58/15.11 55.58/15.11 The following defined symbols remain to be analysed: 55.58/15.11 U81, active, U91, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.58/15.11 55.58/15.11 They will be analysed ascendingly in the following order: 55.58/15.11 U81 < active 55.58/15.11 U91 < active 55.58/15.11 U101 < active 55.58/15.11 U111 < active 55.58/15.11 U121 < active 55.58/15.11 U131 < active 55.58/15.11 U141 < active 55.58/15.11 U151 < active 55.58/15.11 U161 < active 55.58/15.11 U171 < active 55.58/15.11 U181 < active 55.58/15.11 U191 < active 55.58/15.11 U201 < active 55.58/15.11 U211 < active 55.58/15.11 U221 < active 55.58/15.11 tail < active 55.58/15.11 take < active 55.58/15.11 sel < active 55.58/15.11 active < top 55.58/15.11 U81 < proper 55.58/15.11 U91 < proper 55.58/15.11 U101 < proper 55.58/15.11 U111 < proper 55.58/15.11 U121 < proper 55.58/15.11 U131 < proper 55.58/15.11 U141 < proper 55.58/15.11 U151 < proper 55.58/15.11 U161 < proper 55.58/15.11 U171 < proper 55.58/15.11 U181 < proper 55.58/15.11 U191 < proper 55.58/15.11 U201 < proper 55.58/15.11 U211 < proper 55.58/15.11 U221 < proper 55.58/15.11 tail < proper 55.58/15.11 take < proper 55.58/15.11 sel < proper 55.58/15.11 proper < top 55.58/15.11 55.58/15.11 ---------------------------------------- 55.58/15.11 55.58/15.11 (93) RewriteLemmaProof (LOWER BOUND(ID)) 55.58/15.11 Proved the following rewrite lemma: 55.58/15.11 U81(gen_tt:mark:nil:0':ok3_0(+(1, n273748_0))) -> *4_0, rt in Omega(n273748_0) 55.58/15.11 55.58/15.11 Induction Base: 55.58/15.11 U81(gen_tt:mark:nil:0':ok3_0(+(1, 0))) 55.58/15.11 55.58/15.11 Induction Step: 55.58/15.11 U81(gen_tt:mark:nil:0':ok3_0(+(1, +(n273748_0, 1)))) ->_R^Omega(1) 55.58/15.11 mark(U81(gen_tt:mark:nil:0':ok3_0(+(1, n273748_0)))) ->_IH 55.58/15.11 mark(*4_0) 55.58/15.11 55.58/15.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.58/15.11 ---------------------------------------- 55.58/15.11 55.58/15.11 (94) 55.58/15.11 Obligation: 55.58/15.11 TRS: 55.58/15.11 Rules: 55.58/15.11 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.58/15.11 active(U102(tt)) -> mark(tt) 55.58/15.11 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.58/15.11 active(U111(tt)) -> mark(tt) 55.58/15.11 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.58/15.11 active(U121(tt)) -> mark(tt) 55.58/15.11 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.58/15.11 active(U132(tt)) -> mark(tt) 55.58/15.11 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.58/15.11 active(U142(tt)) -> mark(tt) 55.58/15.11 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.58/15.11 active(U152(tt)) -> mark(tt) 55.58/15.11 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.58/15.11 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.58/15.11 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.58/15.11 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.58/15.11 active(U182(tt, Y)) -> mark(Y) 55.58/15.11 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.58/15.11 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.58/15.11 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.58/15.11 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.58/15.11 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.58/15.11 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.58/15.11 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.58/15.11 active(U212(tt, XS)) -> mark(XS) 55.58/15.11 active(U22(tt, X)) -> mark(X) 55.58/15.11 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.58/15.11 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.58/15.11 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.58/15.11 active(U32(tt, N)) -> mark(N) 55.58/15.11 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.58/15.11 active(U42(tt)) -> mark(tt) 55.58/15.11 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.58/15.11 active(U52(tt)) -> mark(tt) 55.58/15.11 active(U61(tt)) -> mark(tt) 55.58/15.11 active(U71(tt)) -> mark(tt) 55.58/15.11 active(U81(tt)) -> mark(tt) 55.58/15.11 active(U91(tt)) -> mark(tt) 55.58/15.11 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.58/15.11 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.58/15.11 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.58/15.11 active(isLNat(nil)) -> mark(tt) 55.58/15.11 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.58/15.11 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.58/15.11 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.58/15.11 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.58/15.11 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.58/15.11 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.58/15.11 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.58/15.11 active(isNatural(0')) -> mark(tt) 55.58/15.11 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.58/15.11 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.58/15.11 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.58/15.11 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.58/15.11 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.58/15.11 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.58/15.11 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.58/15.11 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.58/15.11 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.58/15.11 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.58/15.11 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.58/15.11 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.58/15.11 active(U101(X1, X2)) -> U101(active(X1), X2) 55.58/15.11 active(U102(X)) -> U102(active(X)) 55.58/15.11 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.58/15.11 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.58/15.11 active(U111(X)) -> U111(active(X)) 55.58/15.11 active(snd(X)) -> snd(active(X)) 55.58/15.11 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.58/15.11 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.58/15.11 active(U121(X)) -> U121(active(X)) 55.58/15.11 active(U131(X1, X2)) -> U131(active(X1), X2) 55.58/15.11 active(U132(X)) -> U132(active(X)) 55.58/15.11 active(U141(X1, X2)) -> U141(active(X1), X2) 55.58/15.11 active(U142(X)) -> U142(active(X)) 55.58/15.11 active(U151(X1, X2)) -> U151(active(X1), X2) 55.58/15.11 active(U152(X)) -> U152(active(X)) 55.58/15.11 active(U161(X1, X2)) -> U161(active(X1), X2) 55.58/15.11 active(cons(X1, X2)) -> cons(active(X1), X2) 55.58/15.11 active(natsFrom(X)) -> natsFrom(active(X)) 55.58/15.11 active(s(X)) -> s(active(X)) 55.58/15.11 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.58/15.11 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.58/15.11 active(head(X)) -> head(active(X)) 55.58/15.11 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.58/15.11 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.58/15.11 active(U181(X1, X2)) -> U181(active(X1), X2) 55.58/15.11 active(U182(X1, X2)) -> U182(active(X1), X2) 55.58/15.11 active(U191(X1, X2)) -> U191(active(X1), X2) 55.58/15.11 active(pair(X1, X2)) -> pair(active(X1), X2) 55.58/15.11 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.58/15.11 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.58/15.11 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.58/15.11 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.58/15.11 active(U204(X1, X2)) -> U204(active(X1), X2) 55.58/15.11 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.58/15.11 active(U22(X1, X2)) -> U22(active(X1), X2) 55.58/15.11 active(U211(X1, X2)) -> U211(active(X1), X2) 55.58/15.11 active(U212(X1, X2)) -> U212(active(X1), X2) 55.58/15.11 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.58/15.11 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.58/15.11 active(fst(X)) -> fst(active(X)) 55.58/15.11 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.58/15.11 active(U32(X1, X2)) -> U32(active(X1), X2) 55.58/15.11 active(U41(X1, X2)) -> U41(active(X1), X2) 55.58/15.11 active(U42(X)) -> U42(active(X)) 55.58/15.11 active(U51(X1, X2)) -> U51(active(X1), X2) 55.58/15.11 active(U52(X)) -> U52(active(X)) 55.58/15.11 active(U61(X)) -> U61(active(X)) 55.58/15.11 active(U71(X)) -> U71(active(X)) 55.58/15.11 active(U81(X)) -> U81(active(X)) 55.58/15.11 active(U91(X)) -> U91(active(X)) 55.58/15.11 active(tail(X)) -> tail(active(X)) 55.58/15.11 active(take(X1, X2)) -> take(active(X1), X2) 55.58/15.11 active(take(X1, X2)) -> take(X1, active(X2)) 55.58/15.11 active(sel(X1, X2)) -> sel(active(X1), X2) 55.58/15.11 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.58/15.11 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.58/15.11 U102(mark(X)) -> mark(U102(X)) 55.58/15.11 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.58/15.11 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.58/15.11 U111(mark(X)) -> mark(U111(X)) 55.58/15.11 snd(mark(X)) -> mark(snd(X)) 55.58/15.11 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.58/15.11 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.58/15.11 U121(mark(X)) -> mark(U121(X)) 55.58/15.11 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.58/15.11 U132(mark(X)) -> mark(U132(X)) 55.58/15.11 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.58/15.11 U142(mark(X)) -> mark(U142(X)) 55.58/15.11 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.58/15.11 U152(mark(X)) -> mark(U152(X)) 55.58/15.11 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.58/15.11 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.58/15.11 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.58/15.11 s(mark(X)) -> mark(s(X)) 55.58/15.11 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.58/15.11 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.58/15.11 head(mark(X)) -> mark(head(X)) 55.58/15.11 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.58/15.11 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.58/15.11 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.58/15.11 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.58/15.11 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.58/15.11 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.58/15.11 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.58/15.11 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.58/15.11 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.58/15.11 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.58/15.11 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.58/15.11 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.58/15.11 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.58/15.11 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.58/15.11 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.58/15.11 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.58/15.11 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.58/15.11 fst(mark(X)) -> mark(fst(X)) 55.58/15.11 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.58/15.11 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.58/15.11 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.58/15.11 U42(mark(X)) -> mark(U42(X)) 55.58/15.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.58/15.11 U52(mark(X)) -> mark(U52(X)) 55.58/15.11 U61(mark(X)) -> mark(U61(X)) 55.58/15.11 U71(mark(X)) -> mark(U71(X)) 55.58/15.11 U81(mark(X)) -> mark(U81(X)) 55.58/15.11 U91(mark(X)) -> mark(U91(X)) 55.58/15.11 tail(mark(X)) -> mark(tail(X)) 55.58/15.11 take(mark(X1), X2) -> mark(take(X1, X2)) 55.58/15.11 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.58/15.11 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.58/15.11 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.58/15.11 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.58/15.11 proper(tt) -> ok(tt) 55.58/15.11 proper(U102(X)) -> U102(proper(X)) 55.58/15.11 proper(isLNat(X)) -> isLNat(proper(X)) 55.58/15.11 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U111(X)) -> U111(proper(X)) 55.58/15.11 proper(snd(X)) -> snd(proper(X)) 55.58/15.11 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.58/15.11 proper(U121(X)) -> U121(proper(X)) 55.58/15.11 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.58/15.11 proper(U132(X)) -> U132(proper(X)) 55.58/15.11 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.58/15.11 proper(U142(X)) -> U142(proper(X)) 55.58/15.11 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.58/15.11 proper(U152(X)) -> U152(proper(X)) 55.58/15.11 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.58/15.11 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.58/15.11 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.58/15.11 proper(s(X)) -> s(proper(X)) 55.58/15.11 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(head(X)) -> head(proper(X)) 55.58/15.11 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.58/15.11 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.58/15.11 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.58/15.11 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.58/15.11 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.58/15.11 proper(nil) -> ok(nil) 55.58/15.11 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.58/15.11 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.58/15.11 proper(isNatural(X)) -> isNatural(proper(X)) 55.58/15.11 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.58/15.11 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.58/15.11 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.58/15.11 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.58/15.12 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.58/15.12 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.58/15.12 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.58/15.12 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.58/15.12 proper(fst(X)) -> fst(proper(X)) 55.58/15.12 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.58/15.12 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.58/15.12 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.58/15.12 proper(U42(X)) -> U42(proper(X)) 55.58/15.12 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.58/15.12 proper(U52(X)) -> U52(proper(X)) 55.58/15.12 proper(U61(X)) -> U61(proper(X)) 55.58/15.12 proper(U71(X)) -> U71(proper(X)) 55.58/15.12 proper(U81(X)) -> U81(proper(X)) 55.58/15.12 proper(U91(X)) -> U91(proper(X)) 55.58/15.12 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.58/15.12 proper(tail(X)) -> tail(proper(X)) 55.58/15.12 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.58/15.12 proper(0') -> ok(0') 55.58/15.12 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.58/15.12 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.58/15.12 U102(ok(X)) -> ok(U102(X)) 55.58/15.12 isLNat(ok(X)) -> ok(isLNat(X)) 55.58/15.12 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.58/15.12 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.58/15.12 U111(ok(X)) -> ok(U111(X)) 55.58/15.12 snd(ok(X)) -> ok(snd(X)) 55.58/15.12 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.58/15.12 U121(ok(X)) -> ok(U121(X)) 55.58/15.12 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.58/15.12 U132(ok(X)) -> ok(U132(X)) 55.58/15.12 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.58/15.12 U142(ok(X)) -> ok(U142(X)) 55.58/15.12 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.58/15.12 U152(ok(X)) -> ok(U152(X)) 55.58/15.12 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.58/15.12 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.58/15.12 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.58/15.12 s(ok(X)) -> ok(s(X)) 55.58/15.12 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.58/15.12 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.58/15.12 head(ok(X)) -> ok(head(X)) 55.58/15.12 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.58/15.12 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.58/15.12 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.58/15.12 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.58/15.12 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.58/15.12 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.58/15.12 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.58/15.12 isNatural(ok(X)) -> ok(isNatural(X)) 55.58/15.12 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.58/15.12 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.58/15.12 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.58/15.12 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.58/15.12 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.58/15.12 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.58/15.12 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.58/15.12 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.58/15.12 fst(ok(X)) -> ok(fst(X)) 55.58/15.12 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.58/15.12 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.58/15.12 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.58/15.12 U42(ok(X)) -> ok(U42(X)) 55.58/15.12 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.58/15.12 U52(ok(X)) -> ok(U52(X)) 55.58/15.12 U61(ok(X)) -> ok(U61(X)) 55.58/15.12 U71(ok(X)) -> ok(U71(X)) 55.58/15.12 U81(ok(X)) -> ok(U81(X)) 55.58/15.12 U91(ok(X)) -> ok(U91(X)) 55.58/15.12 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.58/15.12 tail(ok(X)) -> ok(tail(X)) 55.58/15.12 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.58/15.12 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.58/15.12 top(mark(X)) -> top(proper(X)) 55.58/15.12 top(ok(X)) -> top(active(X)) 55.58/15.12 55.58/15.12 Types: 55.58/15.12 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 tt :: tt:mark:nil:0':ok 55.58/15.12 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 nil :: tt:mark:nil:0':ok 55.58/15.12 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 55.58/15.12 U202 :: 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 55.58/15.12 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U203 :: 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 55.58/15.12 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 0' :: tt:mark:nil:0':ok 55.58/15.12 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 top :: tt:mark:nil:0':ok -> top 55.58/15.12 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.58/15.12 hole_top2_0 :: top 55.58/15.12 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.58/15.12 55.58/15.12 55.58/15.12 Lemmas: 55.58/15.12 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.58/15.12 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.58/15.12 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.58/15.12 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.58/15.12 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.58/15.12 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.58/15.12 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.58/15.12 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.58/15.12 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.58/15.12 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.58/15.12 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.58/15.12 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.58/15.12 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.58/15.12 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.58/15.12 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.58/15.12 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.58/15.12 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.58/15.12 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.58/15.12 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.58/15.12 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.58/15.12 U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n137760_0) 55.58/15.12 fst(gen_tt:mark:nil:0':ok3_0(+(1, n154384_0))) -> *4_0, rt in Omega(n154384_0) 55.58/15.12 U32(gen_tt:mark:nil:0':ok3_0(+(1, n158601_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158601_0) 55.58/15.12 U42(gen_tt:mark:nil:0':ok3_0(+(1, n169534_0))) -> *4_0, rt in Omega(n169534_0) 55.58/15.12 U52(gen_tt:mark:nil:0':ok3_0(+(1, n174002_0))) -> *4_0, rt in Omega(n174002_0) 55.58/15.12 U11(gen_tt:mark:nil:0':ok3_0(+(1, n178571_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n178571_0) 55.58/15.12 U21(gen_tt:mark:nil:0':ok3_0(+(1, n197211_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n197211_0) 55.58/15.12 U31(gen_tt:mark:nil:0':ok3_0(+(1, n216460_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n216460_0) 55.58/15.12 U41(gen_tt:mark:nil:0':ok3_0(+(1, n236318_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n236318_0) 55.58/15.12 U51(gen_tt:mark:nil:0':ok3_0(+(1, n249185_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n249185_0) 55.58/15.12 U61(gen_tt:mark:nil:0':ok3_0(+(1, n262358_0))) -> *4_0, rt in Omega(n262358_0) 55.58/15.12 U71(gen_tt:mark:nil:0':ok3_0(+(1, n268080_0))) -> *4_0, rt in Omega(n268080_0) 55.58/15.12 U81(gen_tt:mark:nil:0':ok3_0(+(1, n273748_0))) -> *4_0, rt in Omega(n273748_0) 55.58/15.12 55.58/15.12 55.58/15.12 Generator Equations: 55.58/15.12 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.58/15.12 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.58/15.12 55.58/15.12 55.58/15.12 The following defined symbols remain to be analysed: 55.58/15.12 U91, active, U101, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.58/15.12 55.58/15.12 They will be analysed ascendingly in the following order: 55.58/15.12 U91 < active 55.58/15.12 U101 < active 55.58/15.12 U111 < active 55.58/15.12 U121 < active 55.58/15.12 U131 < active 55.58/15.12 U141 < active 55.58/15.12 U151 < active 55.58/15.12 U161 < active 55.58/15.12 U171 < active 55.58/15.12 U181 < active 55.58/15.12 U191 < active 55.58/15.12 U201 < active 55.58/15.12 U211 < active 55.58/15.12 U221 < active 55.58/15.12 tail < active 55.58/15.12 take < active 55.58/15.12 sel < active 55.58/15.12 active < top 55.58/15.12 U91 < proper 55.58/15.12 U101 < proper 55.58/15.12 U111 < proper 55.58/15.12 U121 < proper 55.58/15.12 U131 < proper 55.58/15.12 U141 < proper 55.58/15.12 U151 < proper 55.58/15.12 U161 < proper 55.58/15.12 U171 < proper 55.58/15.12 U181 < proper 55.58/15.12 U191 < proper 55.58/15.12 U201 < proper 55.58/15.12 U211 < proper 55.58/15.12 U221 < proper 55.58/15.12 tail < proper 55.58/15.12 take < proper 55.58/15.12 sel < proper 55.58/15.12 proper < top 55.58/15.12 55.58/15.12 ---------------------------------------- 55.58/15.12 55.58/15.12 (95) RewriteLemmaProof (LOWER BOUND(ID)) 55.58/15.12 Proved the following rewrite lemma: 55.58/15.12 U91(gen_tt:mark:nil:0':ok3_0(+(1, n279517_0))) -> *4_0, rt in Omega(n279517_0) 55.58/15.12 55.58/15.12 Induction Base: 55.58/15.12 U91(gen_tt:mark:nil:0':ok3_0(+(1, 0))) 55.58/15.12 55.58/15.12 Induction Step: 55.58/15.12 U91(gen_tt:mark:nil:0':ok3_0(+(1, +(n279517_0, 1)))) ->_R^Omega(1) 55.58/15.12 mark(U91(gen_tt:mark:nil:0':ok3_0(+(1, n279517_0)))) ->_IH 55.58/15.12 mark(*4_0) 55.58/15.12 55.58/15.12 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 55.58/15.12 ---------------------------------------- 55.58/15.12 55.58/15.12 (96) 55.58/15.12 Obligation: 55.58/15.12 TRS: 55.58/15.12 Rules: 55.58/15.12 active(U101(tt, V2)) -> mark(U102(isLNat(V2))) 55.58/15.12 active(U102(tt)) -> mark(tt) 55.58/15.12 active(U11(tt, N, XS)) -> mark(U12(isLNat(XS), N, XS)) 55.58/15.12 active(U111(tt)) -> mark(tt) 55.58/15.12 active(U12(tt, N, XS)) -> mark(snd(splitAt(N, XS))) 55.58/15.12 active(U121(tt)) -> mark(tt) 55.58/15.12 active(U131(tt, V2)) -> mark(U132(isLNat(V2))) 55.58/15.12 active(U132(tt)) -> mark(tt) 55.58/15.12 active(U141(tt, V2)) -> mark(U142(isLNat(V2))) 55.58/15.12 active(U142(tt)) -> mark(tt) 55.58/15.12 active(U151(tt, V2)) -> mark(U152(isLNat(V2))) 55.58/15.12 active(U152(tt)) -> mark(tt) 55.58/15.12 active(U161(tt, N)) -> mark(cons(N, natsFrom(s(N)))) 55.58/15.12 active(U171(tt, N, XS)) -> mark(U172(isLNat(XS), N, XS)) 55.58/15.12 active(U172(tt, N, XS)) -> mark(head(afterNth(N, XS))) 55.58/15.12 active(U181(tt, Y)) -> mark(U182(isLNat(Y), Y)) 55.58/15.12 active(U182(tt, Y)) -> mark(Y) 55.58/15.12 active(U191(tt, XS)) -> mark(pair(nil, XS)) 55.58/15.12 active(U201(tt, N, X, XS)) -> mark(U202(isNatural(X), N, X, XS)) 55.58/15.12 active(U202(tt, N, X, XS)) -> mark(U203(isLNat(XS), N, X, XS)) 55.58/15.12 active(U203(tt, N, X, XS)) -> mark(U204(splitAt(N, XS), X)) 55.58/15.12 active(U204(pair(YS, ZS), X)) -> mark(pair(cons(X, YS), ZS)) 55.58/15.12 active(U21(tt, X, Y)) -> mark(U22(isLNat(Y), X)) 55.58/15.12 active(U211(tt, XS)) -> mark(U212(isLNat(XS), XS)) 55.58/15.12 active(U212(tt, XS)) -> mark(XS) 55.58/15.12 active(U22(tt, X)) -> mark(X) 55.58/15.12 active(U221(tt, N, XS)) -> mark(U222(isLNat(XS), N, XS)) 55.58/15.12 active(U222(tt, N, XS)) -> mark(fst(splitAt(N, XS))) 55.58/15.12 active(U31(tt, N, XS)) -> mark(U32(isLNat(XS), N)) 55.58/15.12 active(U32(tt, N)) -> mark(N) 55.58/15.12 active(U41(tt, V2)) -> mark(U42(isLNat(V2))) 55.58/15.12 active(U42(tt)) -> mark(tt) 55.58/15.12 active(U51(tt, V2)) -> mark(U52(isLNat(V2))) 55.58/15.12 active(U52(tt)) -> mark(tt) 55.58/15.12 active(U61(tt)) -> mark(tt) 55.58/15.12 active(U71(tt)) -> mark(tt) 55.58/15.12 active(U81(tt)) -> mark(tt) 55.58/15.12 active(U91(tt)) -> mark(tt) 55.58/15.12 active(afterNth(N, XS)) -> mark(U11(isNatural(N), N, XS)) 55.58/15.12 active(fst(pair(X, Y))) -> mark(U21(isLNat(X), X, Y)) 55.58/15.12 active(head(cons(N, XS))) -> mark(U31(isNatural(N), N, XS)) 55.58/15.12 active(isLNat(nil)) -> mark(tt) 55.58/15.12 active(isLNat(afterNth(V1, V2))) -> mark(U41(isNatural(V1), V2)) 55.58/15.12 active(isLNat(cons(V1, V2))) -> mark(U51(isNatural(V1), V2)) 55.58/15.12 active(isLNat(fst(V1))) -> mark(U61(isPLNat(V1))) 55.58/15.12 active(isLNat(natsFrom(V1))) -> mark(U71(isNatural(V1))) 55.58/15.12 active(isLNat(snd(V1))) -> mark(U81(isPLNat(V1))) 55.58/15.12 active(isLNat(tail(V1))) -> mark(U91(isLNat(V1))) 55.58/15.12 active(isLNat(take(V1, V2))) -> mark(U101(isNatural(V1), V2)) 55.58/15.12 active(isNatural(0')) -> mark(tt) 55.58/15.12 active(isNatural(head(V1))) -> mark(U111(isLNat(V1))) 55.58/15.12 active(isNatural(s(V1))) -> mark(U121(isNatural(V1))) 55.58/15.12 active(isNatural(sel(V1, V2))) -> mark(U131(isNatural(V1), V2)) 55.58/15.12 active(isPLNat(pair(V1, V2))) -> mark(U141(isLNat(V1), V2)) 55.58/15.12 active(isPLNat(splitAt(V1, V2))) -> mark(U151(isNatural(V1), V2)) 55.58/15.12 active(natsFrom(N)) -> mark(U161(isNatural(N), N)) 55.58/15.12 active(sel(N, XS)) -> mark(U171(isNatural(N), N, XS)) 55.58/15.12 active(snd(pair(X, Y))) -> mark(U181(isLNat(X), Y)) 55.58/15.12 active(splitAt(0', XS)) -> mark(U191(isLNat(XS), XS)) 55.58/15.12 active(splitAt(s(N), cons(X, XS))) -> mark(U201(isNatural(N), N, X, XS)) 55.58/15.12 active(tail(cons(N, XS))) -> mark(U211(isNatural(N), XS)) 55.58/15.12 active(take(N, XS)) -> mark(U221(isNatural(N), N, XS)) 55.58/15.12 active(U101(X1, X2)) -> U101(active(X1), X2) 55.58/15.12 active(U102(X)) -> U102(active(X)) 55.58/15.12 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 55.58/15.12 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 55.58/15.12 active(U111(X)) -> U111(active(X)) 55.58/15.12 active(snd(X)) -> snd(active(X)) 55.58/15.12 active(splitAt(X1, X2)) -> splitAt(active(X1), X2) 55.58/15.12 active(splitAt(X1, X2)) -> splitAt(X1, active(X2)) 55.58/15.12 active(U121(X)) -> U121(active(X)) 55.58/15.12 active(U131(X1, X2)) -> U131(active(X1), X2) 55.58/15.12 active(U132(X)) -> U132(active(X)) 55.58/15.12 active(U141(X1, X2)) -> U141(active(X1), X2) 55.58/15.12 active(U142(X)) -> U142(active(X)) 55.58/15.12 active(U151(X1, X2)) -> U151(active(X1), X2) 55.58/15.12 active(U152(X)) -> U152(active(X)) 55.58/15.12 active(U161(X1, X2)) -> U161(active(X1), X2) 55.58/15.12 active(cons(X1, X2)) -> cons(active(X1), X2) 55.58/15.12 active(natsFrom(X)) -> natsFrom(active(X)) 55.58/15.12 active(s(X)) -> s(active(X)) 55.58/15.12 active(U171(X1, X2, X3)) -> U171(active(X1), X2, X3) 55.58/15.12 active(U172(X1, X2, X3)) -> U172(active(X1), X2, X3) 55.58/15.12 active(head(X)) -> head(active(X)) 55.58/15.12 active(afterNth(X1, X2)) -> afterNth(active(X1), X2) 55.58/15.12 active(afterNth(X1, X2)) -> afterNth(X1, active(X2)) 55.58/15.12 active(U181(X1, X2)) -> U181(active(X1), X2) 55.58/15.12 active(U182(X1, X2)) -> U182(active(X1), X2) 55.58/15.12 active(U191(X1, X2)) -> U191(active(X1), X2) 55.58/15.12 active(pair(X1, X2)) -> pair(active(X1), X2) 55.58/15.12 active(pair(X1, X2)) -> pair(X1, active(X2)) 55.58/15.12 active(U201(X1, X2, X3, X4)) -> U201(active(X1), X2, X3, X4) 55.58/15.12 active(U202(X1, X2, X3, X4)) -> U202(active(X1), X2, X3, X4) 55.58/15.12 active(U203(X1, X2, X3, X4)) -> U203(active(X1), X2, X3, X4) 55.58/15.12 active(U204(X1, X2)) -> U204(active(X1), X2) 55.58/15.12 active(U21(X1, X2, X3)) -> U21(active(X1), X2, X3) 55.58/15.12 active(U22(X1, X2)) -> U22(active(X1), X2) 55.58/15.12 active(U211(X1, X2)) -> U211(active(X1), X2) 55.58/15.12 active(U212(X1, X2)) -> U212(active(X1), X2) 55.58/15.12 active(U221(X1, X2, X3)) -> U221(active(X1), X2, X3) 55.58/15.12 active(U222(X1, X2, X3)) -> U222(active(X1), X2, X3) 55.58/15.12 active(fst(X)) -> fst(active(X)) 55.58/15.12 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 55.58/15.12 active(U32(X1, X2)) -> U32(active(X1), X2) 55.58/15.12 active(U41(X1, X2)) -> U41(active(X1), X2) 55.58/15.12 active(U42(X)) -> U42(active(X)) 55.58/15.12 active(U51(X1, X2)) -> U51(active(X1), X2) 55.58/15.12 active(U52(X)) -> U52(active(X)) 55.58/15.12 active(U61(X)) -> U61(active(X)) 55.58/15.12 active(U71(X)) -> U71(active(X)) 55.58/15.12 active(U81(X)) -> U81(active(X)) 55.58/15.12 active(U91(X)) -> U91(active(X)) 55.58/15.12 active(tail(X)) -> tail(active(X)) 55.58/15.12 active(take(X1, X2)) -> take(active(X1), X2) 55.58/15.12 active(take(X1, X2)) -> take(X1, active(X2)) 55.58/15.12 active(sel(X1, X2)) -> sel(active(X1), X2) 55.58/15.12 active(sel(X1, X2)) -> sel(X1, active(X2)) 55.58/15.12 U101(mark(X1), X2) -> mark(U101(X1, X2)) 55.58/15.12 U102(mark(X)) -> mark(U102(X)) 55.58/15.12 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 55.58/15.12 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 55.58/15.12 U111(mark(X)) -> mark(U111(X)) 55.58/15.12 snd(mark(X)) -> mark(snd(X)) 55.58/15.12 splitAt(mark(X1), X2) -> mark(splitAt(X1, X2)) 55.58/15.12 splitAt(X1, mark(X2)) -> mark(splitAt(X1, X2)) 55.58/15.12 U121(mark(X)) -> mark(U121(X)) 55.58/15.12 U131(mark(X1), X2) -> mark(U131(X1, X2)) 55.58/15.12 U132(mark(X)) -> mark(U132(X)) 55.58/15.12 U141(mark(X1), X2) -> mark(U141(X1, X2)) 55.58/15.12 U142(mark(X)) -> mark(U142(X)) 55.58/15.12 U151(mark(X1), X2) -> mark(U151(X1, X2)) 55.58/15.12 U152(mark(X)) -> mark(U152(X)) 55.58/15.12 U161(mark(X1), X2) -> mark(U161(X1, X2)) 55.58/15.12 cons(mark(X1), X2) -> mark(cons(X1, X2)) 55.58/15.12 natsFrom(mark(X)) -> mark(natsFrom(X)) 55.58/15.12 s(mark(X)) -> mark(s(X)) 55.58/15.12 U171(mark(X1), X2, X3) -> mark(U171(X1, X2, X3)) 55.58/15.12 U172(mark(X1), X2, X3) -> mark(U172(X1, X2, X3)) 55.58/15.12 head(mark(X)) -> mark(head(X)) 55.58/15.12 afterNth(mark(X1), X2) -> mark(afterNth(X1, X2)) 55.58/15.12 afterNth(X1, mark(X2)) -> mark(afterNth(X1, X2)) 55.58/15.12 U181(mark(X1), X2) -> mark(U181(X1, X2)) 55.58/15.12 U182(mark(X1), X2) -> mark(U182(X1, X2)) 55.58/15.12 U191(mark(X1), X2) -> mark(U191(X1, X2)) 55.58/15.12 pair(mark(X1), X2) -> mark(pair(X1, X2)) 55.58/15.12 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 55.58/15.12 U201(mark(X1), X2, X3, X4) -> mark(U201(X1, X2, X3, X4)) 55.58/15.12 U202(mark(X1), X2, X3, X4) -> mark(U202(X1, X2, X3, X4)) 55.58/15.12 U203(mark(X1), X2, X3, X4) -> mark(U203(X1, X2, X3, X4)) 55.58/15.12 U204(mark(X1), X2) -> mark(U204(X1, X2)) 55.58/15.12 U21(mark(X1), X2, X3) -> mark(U21(X1, X2, X3)) 55.58/15.12 U22(mark(X1), X2) -> mark(U22(X1, X2)) 55.58/15.12 U211(mark(X1), X2) -> mark(U211(X1, X2)) 55.58/15.12 U212(mark(X1), X2) -> mark(U212(X1, X2)) 55.58/15.12 U221(mark(X1), X2, X3) -> mark(U221(X1, X2, X3)) 55.58/15.12 U222(mark(X1), X2, X3) -> mark(U222(X1, X2, X3)) 55.58/15.12 fst(mark(X)) -> mark(fst(X)) 55.58/15.12 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 55.58/15.12 U32(mark(X1), X2) -> mark(U32(X1, X2)) 55.58/15.12 U41(mark(X1), X2) -> mark(U41(X1, X2)) 55.58/15.12 U42(mark(X)) -> mark(U42(X)) 55.58/15.12 U51(mark(X1), X2) -> mark(U51(X1, X2)) 55.58/15.12 U52(mark(X)) -> mark(U52(X)) 55.58/15.12 U61(mark(X)) -> mark(U61(X)) 55.58/15.12 U71(mark(X)) -> mark(U71(X)) 55.58/15.12 U81(mark(X)) -> mark(U81(X)) 55.58/15.12 U91(mark(X)) -> mark(U91(X)) 55.58/15.12 tail(mark(X)) -> mark(tail(X)) 55.58/15.12 take(mark(X1), X2) -> mark(take(X1, X2)) 55.58/15.12 take(X1, mark(X2)) -> mark(take(X1, X2)) 55.58/15.12 sel(mark(X1), X2) -> mark(sel(X1, X2)) 55.58/15.12 sel(X1, mark(X2)) -> mark(sel(X1, X2)) 55.58/15.12 proper(U101(X1, X2)) -> U101(proper(X1), proper(X2)) 55.58/15.12 proper(tt) -> ok(tt) 55.58/15.12 proper(U102(X)) -> U102(proper(X)) 55.58/15.12 proper(isLNat(X)) -> isLNat(proper(X)) 55.58/15.12 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 55.58/15.12 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 55.58/15.12 proper(U111(X)) -> U111(proper(X)) 55.58/15.12 proper(snd(X)) -> snd(proper(X)) 55.58/15.12 proper(splitAt(X1, X2)) -> splitAt(proper(X1), proper(X2)) 55.58/15.12 proper(U121(X)) -> U121(proper(X)) 55.58/15.12 proper(U131(X1, X2)) -> U131(proper(X1), proper(X2)) 55.58/15.12 proper(U132(X)) -> U132(proper(X)) 55.58/15.12 proper(U141(X1, X2)) -> U141(proper(X1), proper(X2)) 55.58/15.12 proper(U142(X)) -> U142(proper(X)) 55.58/15.12 proper(U151(X1, X2)) -> U151(proper(X1), proper(X2)) 55.58/15.12 proper(U152(X)) -> U152(proper(X)) 55.58/15.12 proper(U161(X1, X2)) -> U161(proper(X1), proper(X2)) 55.58/15.12 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 55.58/15.12 proper(natsFrom(X)) -> natsFrom(proper(X)) 55.58/15.12 proper(s(X)) -> s(proper(X)) 55.58/15.12 proper(U171(X1, X2, X3)) -> U171(proper(X1), proper(X2), proper(X3)) 55.58/15.12 proper(U172(X1, X2, X3)) -> U172(proper(X1), proper(X2), proper(X3)) 55.58/15.12 proper(head(X)) -> head(proper(X)) 55.58/15.12 proper(afterNth(X1, X2)) -> afterNth(proper(X1), proper(X2)) 55.58/15.12 proper(U181(X1, X2)) -> U181(proper(X1), proper(X2)) 55.58/15.12 proper(U182(X1, X2)) -> U182(proper(X1), proper(X2)) 55.58/15.12 proper(U191(X1, X2)) -> U191(proper(X1), proper(X2)) 55.58/15.12 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 55.58/15.12 proper(nil) -> ok(nil) 55.58/15.12 proper(U201(X1, X2, X3, X4)) -> U201(proper(X1), proper(X2), proper(X3), proper(X4)) 55.58/15.12 proper(U202(X1, X2, X3, X4)) -> U202(proper(X1), proper(X2), proper(X3), proper(X4)) 55.58/15.12 proper(isNatural(X)) -> isNatural(proper(X)) 55.58/15.12 proper(U203(X1, X2, X3, X4)) -> U203(proper(X1), proper(X2), proper(X3), proper(X4)) 55.58/15.12 proper(U204(X1, X2)) -> U204(proper(X1), proper(X2)) 55.58/15.12 proper(U21(X1, X2, X3)) -> U21(proper(X1), proper(X2), proper(X3)) 55.58/15.12 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 55.58/15.12 proper(U211(X1, X2)) -> U211(proper(X1), proper(X2)) 55.58/15.12 proper(U212(X1, X2)) -> U212(proper(X1), proper(X2)) 55.58/15.12 proper(U221(X1, X2, X3)) -> U221(proper(X1), proper(X2), proper(X3)) 55.58/15.12 proper(U222(X1, X2, X3)) -> U222(proper(X1), proper(X2), proper(X3)) 55.58/15.12 proper(fst(X)) -> fst(proper(X)) 55.58/15.12 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 55.58/15.12 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 55.58/15.12 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 55.58/15.12 proper(U42(X)) -> U42(proper(X)) 55.58/15.12 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 55.58/15.12 proper(U52(X)) -> U52(proper(X)) 55.58/15.12 proper(U61(X)) -> U61(proper(X)) 55.58/15.12 proper(U71(X)) -> U71(proper(X)) 55.58/15.12 proper(U81(X)) -> U81(proper(X)) 55.58/15.12 proper(U91(X)) -> U91(proper(X)) 55.58/15.12 proper(isPLNat(X)) -> isPLNat(proper(X)) 55.58/15.12 proper(tail(X)) -> tail(proper(X)) 55.58/15.12 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 55.58/15.12 proper(0') -> ok(0') 55.58/15.12 proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) 55.58/15.12 U101(ok(X1), ok(X2)) -> ok(U101(X1, X2)) 55.58/15.12 U102(ok(X)) -> ok(U102(X)) 55.58/15.12 isLNat(ok(X)) -> ok(isLNat(X)) 55.58/15.12 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 55.58/15.12 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 55.58/15.12 U111(ok(X)) -> ok(U111(X)) 55.58/15.12 snd(ok(X)) -> ok(snd(X)) 55.58/15.12 splitAt(ok(X1), ok(X2)) -> ok(splitAt(X1, X2)) 55.58/15.12 U121(ok(X)) -> ok(U121(X)) 55.58/15.12 U131(ok(X1), ok(X2)) -> ok(U131(X1, X2)) 55.58/15.12 U132(ok(X)) -> ok(U132(X)) 55.58/15.12 U141(ok(X1), ok(X2)) -> ok(U141(X1, X2)) 55.58/15.12 U142(ok(X)) -> ok(U142(X)) 55.58/15.12 U151(ok(X1), ok(X2)) -> ok(U151(X1, X2)) 55.58/15.12 U152(ok(X)) -> ok(U152(X)) 55.58/15.12 U161(ok(X1), ok(X2)) -> ok(U161(X1, X2)) 55.58/15.12 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 55.58/15.12 natsFrom(ok(X)) -> ok(natsFrom(X)) 55.58/15.12 s(ok(X)) -> ok(s(X)) 55.58/15.12 U171(ok(X1), ok(X2), ok(X3)) -> ok(U171(X1, X2, X3)) 55.58/15.12 U172(ok(X1), ok(X2), ok(X3)) -> ok(U172(X1, X2, X3)) 55.58/15.12 head(ok(X)) -> ok(head(X)) 55.58/15.12 afterNth(ok(X1), ok(X2)) -> ok(afterNth(X1, X2)) 55.58/15.12 U181(ok(X1), ok(X2)) -> ok(U181(X1, X2)) 55.58/15.12 U182(ok(X1), ok(X2)) -> ok(U182(X1, X2)) 55.58/15.12 U191(ok(X1), ok(X2)) -> ok(U191(X1, X2)) 55.58/15.12 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 55.58/15.12 U201(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U201(X1, X2, X3, X4)) 55.58/15.12 U202(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U202(X1, X2, X3, X4)) 55.58/15.12 isNatural(ok(X)) -> ok(isNatural(X)) 55.58/15.12 U203(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U203(X1, X2, X3, X4)) 55.58/15.12 U204(ok(X1), ok(X2)) -> ok(U204(X1, X2)) 55.58/15.12 U21(ok(X1), ok(X2), ok(X3)) -> ok(U21(X1, X2, X3)) 55.58/15.12 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 55.58/15.12 U211(ok(X1), ok(X2)) -> ok(U211(X1, X2)) 55.58/15.12 U212(ok(X1), ok(X2)) -> ok(U212(X1, X2)) 55.58/15.12 U221(ok(X1), ok(X2), ok(X3)) -> ok(U221(X1, X2, X3)) 55.58/15.12 U222(ok(X1), ok(X2), ok(X3)) -> ok(U222(X1, X2, X3)) 55.58/15.12 fst(ok(X)) -> ok(fst(X)) 55.58/15.12 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 55.58/15.12 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 55.58/15.12 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 55.58/15.12 U42(ok(X)) -> ok(U42(X)) 55.58/15.12 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 55.58/15.12 U52(ok(X)) -> ok(U52(X)) 55.58/15.12 U61(ok(X)) -> ok(U61(X)) 55.58/15.12 U71(ok(X)) -> ok(U71(X)) 55.58/15.12 U81(ok(X)) -> ok(U81(X)) 55.58/15.12 U91(ok(X)) -> ok(U91(X)) 55.58/15.12 isPLNat(ok(X)) -> ok(isPLNat(X)) 55.58/15.12 tail(ok(X)) -> ok(tail(X)) 55.58/15.12 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 55.58/15.12 sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) 55.58/15.12 top(mark(X)) -> top(proper(X)) 55.58/15.12 top(ok(X)) -> top(active(X)) 55.58/15.12 55.58/15.12 Types: 55.58/15.12 active :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U101 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 tt :: tt:mark:nil:0':ok 55.58/15.12 mark :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U102 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 isLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U11 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U12 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U111 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 snd :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 splitAt :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U121 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U131 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U132 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U141 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U142 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U151 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U152 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U161 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 cons :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 natsFrom :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 s :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U171 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U172 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 head :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 afterNth :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U181 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U182 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U191 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 pair :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 nil :: tt:mark:nil:0':ok 55.58/15.12 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 55.58/15.12 U202 :: 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 55.58/15.12 isNatural :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U203 :: 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 55.58/15.12 U204 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U21 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U22 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U211 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U212 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U221 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U222 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 fst :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U31 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U32 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U41 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U42 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U51 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U52 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U61 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U71 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U81 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 U91 :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 isPLNat :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 tail :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 take :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 0' :: tt:mark:nil:0':ok 55.58/15.12 sel :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 proper :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 ok :: tt:mark:nil:0':ok -> tt:mark:nil:0':ok 55.58/15.12 top :: tt:mark:nil:0':ok -> top 55.58/15.12 hole_tt:mark:nil:0':ok1_0 :: tt:mark:nil:0':ok 55.58/15.12 hole_top2_0 :: top 55.58/15.12 gen_tt:mark:nil:0':ok3_0 :: Nat -> tt:mark:nil:0':ok 55.58/15.12 55.58/15.12 55.58/15.12 Lemmas: 55.58/15.12 U102(gen_tt:mark:nil:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) 55.58/15.12 U12(gen_tt:mark:nil:0':ok3_0(+(1, n1128_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n1128_0) 55.58/15.12 snd(gen_tt:mark:nil:0':ok3_0(+(1, n9121_0))) -> *4_0, rt in Omega(n9121_0) 55.58/15.12 splitAt(gen_tt:mark:nil:0':ok3_0(+(1, n10537_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n10537_0) 55.58/15.12 U132(gen_tt:mark:nil:0':ok3_0(+(1, n15953_0))) -> *4_0, rt in Omega(n15953_0) 55.58/15.12 U142(gen_tt:mark:nil:0':ok3_0(+(1, n17620_0))) -> *4_0, rt in Omega(n17620_0) 55.58/15.12 U152(gen_tt:mark:nil:0':ok3_0(+(1, n19388_0))) -> *4_0, rt in Omega(n19388_0) 55.58/15.12 cons(gen_tt:mark:nil:0':ok3_0(+(1, n21257_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n21257_0) 55.58/15.12 natsFrom(gen_tt:mark:nil:0':ok3_0(+(1, n27404_0))) -> *4_0, rt in Omega(n27404_0) 55.58/15.12 s(gen_tt:mark:nil:0':ok3_0(+(1, n29524_0))) -> *4_0, rt in Omega(n29524_0) 55.58/15.12 U172(gen_tt:mark:nil:0':ok3_0(+(1, n31745_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n31745_0) 55.58/15.12 head(gen_tt:mark:nil:0':ok3_0(+(1, n43161_0))) -> *4_0, rt in Omega(n43161_0) 55.58/15.12 afterNth(gen_tt:mark:nil:0':ok3_0(+(1, n45682_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n45682_0) 55.58/15.12 U182(gen_tt:mark:nil:0':ok3_0(+(1, n53362_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n53362_0) 55.58/15.12 pair(gen_tt:mark:nil:0':ok3_0(+(1, n61149_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n61149_0) 55.58/15.12 U202(gen_tt:mark:nil:0':ok3_0(+(1, n69441_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(n69441_0) 55.58/15.12 U203(gen_tt:mark:nil:0':ok3_0(+(1, n88570_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(n88570_0) 55.58/15.12 U204(gen_tt:mark:nil:0':ok3_0(+(1, n108633_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n108633_0) 55.58/15.12 U22(gen_tt:mark:nil:0':ok3_0(+(1, n118036_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n118036_0) 55.58/15.12 U212(gen_tt:mark:nil:0':ok3_0(+(1, n127745_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n127745_0) 55.58/15.12 U222(gen_tt:mark:nil:0':ok3_0(+(1, n137760_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n137760_0) 55.58/15.12 fst(gen_tt:mark:nil:0':ok3_0(+(1, n154384_0))) -> *4_0, rt in Omega(n154384_0) 55.58/15.12 U32(gen_tt:mark:nil:0':ok3_0(+(1, n158601_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n158601_0) 55.58/15.12 U42(gen_tt:mark:nil:0':ok3_0(+(1, n169534_0))) -> *4_0, rt in Omega(n169534_0) 55.58/15.12 U52(gen_tt:mark:nil:0':ok3_0(+(1, n174002_0))) -> *4_0, rt in Omega(n174002_0) 55.58/15.12 U11(gen_tt:mark:nil:0':ok3_0(+(1, n178571_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n178571_0) 55.58/15.12 U21(gen_tt:mark:nil:0':ok3_0(+(1, n197211_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n197211_0) 55.58/15.12 U31(gen_tt:mark:nil:0':ok3_0(+(1, n216460_0)), gen_tt:mark:nil:0':ok3_0(b), gen_tt:mark:nil:0':ok3_0(c)) -> *4_0, rt in Omega(n216460_0) 55.58/15.12 U41(gen_tt:mark:nil:0':ok3_0(+(1, n236318_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n236318_0) 55.58/15.12 U51(gen_tt:mark:nil:0':ok3_0(+(1, n249185_0)), gen_tt:mark:nil:0':ok3_0(b)) -> *4_0, rt in Omega(n249185_0) 55.58/15.12 U61(gen_tt:mark:nil:0':ok3_0(+(1, n262358_0))) -> *4_0, rt in Omega(n262358_0) 55.58/15.12 U71(gen_tt:mark:nil:0':ok3_0(+(1, n268080_0))) -> *4_0, rt in Omega(n268080_0) 55.58/15.12 U81(gen_tt:mark:nil:0':ok3_0(+(1, n273748_0))) -> *4_0, rt in Omega(n273748_0) 55.58/15.12 U91(gen_tt:mark:nil:0':ok3_0(+(1, n279517_0))) -> *4_0, rt in Omega(n279517_0) 55.58/15.12 55.58/15.12 55.58/15.12 Generator Equations: 55.58/15.12 gen_tt:mark:nil:0':ok3_0(0) <=> tt 55.58/15.12 gen_tt:mark:nil:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:nil:0':ok3_0(x)) 55.58/15.12 55.58/15.12 55.58/15.12 The following defined symbols remain to be analysed: 55.58/15.12 U101, active, U111, U121, U131, U141, U151, U161, U171, U181, U191, U201, U211, U221, tail, take, sel, proper, top 55.58/15.12 55.58/15.12 They will be analysed ascendingly in the following order: 55.58/15.12 U101 < active 55.58/15.12 U111 < active 55.58/15.12 U121 < active 55.58/15.12 U131 < active 55.58/15.12 U141 < active 55.58/15.12 U151 < active 55.58/15.12 U161 < active 55.58/15.12 U171 < active 55.58/15.12 U181 < active 55.58/15.12 U191 < active 55.58/15.12 U201 < active 55.58/15.12 U211 < active 55.58/15.12 U221 < active 55.58/15.12 tail < active 55.58/15.12 take < active 55.58/15.12 sel < active 55.58/15.12 active < top 55.58/15.12 U101 < proper 55.58/15.12 U111 < proper 55.58/15.12 U121 < proper 55.58/15.12 U131 < proper 55.58/15.12 U141 < proper 55.58/15.12 U151 < proper 55.58/15.12 U161 < proper 55.58/15.12 U171 < proper 55.58/15.12 U181 < proper 55.58/15.12 U191 < proper 55.58/15.12 U201 < proper 55.58/15.12 U211 < proper 55.58/15.12 U221 < proper 55.58/15.12 tail < proper 55.58/15.12 take < proper 55.58/15.12 sel < proper 55.58/15.12 proper < top 55.58/15.15 EOF