1146.13/291.64 WORST_CASE(Omega(n^1), ?) 1151.74/293.08 proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml 1151.74/293.08 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 1151.74/293.08 1151.74/293.08 1151.74/293.08 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 1151.74/293.08 1151.74/293.08 (0) CpxTRS 1151.74/293.08 (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 1151.74/293.08 (2) CpxTRS 1151.74/293.08 (3) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 1151.74/293.08 (4) typed CpxTrs 1151.74/293.08 (5) OrderProof [LOWER BOUND(ID), 8 ms] 1151.74/293.08 (6) typed CpxTrs 1151.74/293.08 (7) RewriteLemmaProof [LOWER BOUND(ID), 474 ms] 1151.74/293.08 (8) BEST 1151.74/293.08 (9) proven lower bound 1151.74/293.08 (10) LowerBoundPropagationProof [FINISHED, 0 ms] 1151.74/293.08 (11) BOUNDS(n^1, INF) 1151.74/293.08 (12) typed CpxTrs 1151.74/293.08 (13) RewriteLemmaProof [LOWER BOUND(ID), 154 ms] 1151.74/293.08 (14) typed CpxTrs 1151.74/293.08 (15) RewriteLemmaProof [LOWER BOUND(ID), 107 ms] 1151.74/293.08 (16) typed CpxTrs 1151.74/293.08 (17) RewriteLemmaProof [LOWER BOUND(ID), 76 ms] 1151.74/293.08 (18) typed CpxTrs 1151.74/293.08 (19) RewriteLemmaProof [LOWER BOUND(ID), 84 ms] 1151.74/293.08 (20) typed CpxTrs 1151.74/293.08 (21) RewriteLemmaProof [LOWER BOUND(ID), 86 ms] 1151.74/293.08 (22) typed CpxTrs 1151.74/293.08 (23) RewriteLemmaProof [LOWER BOUND(ID), 114 ms] 1151.74/293.08 (24) typed CpxTrs 1151.74/293.08 (25) RewriteLemmaProof [LOWER BOUND(ID), 218 ms] 1151.74/293.08 (26) typed CpxTrs 1151.74/293.08 (27) RewriteLemmaProof [LOWER BOUND(ID), 217 ms] 1151.74/293.08 (28) typed CpxTrs 1151.74/293.08 (29) RewriteLemmaProof [LOWER BOUND(ID), 110 ms] 1151.74/293.08 (30) typed CpxTrs 1151.74/293.08 (31) RewriteLemmaProof [LOWER BOUND(ID), 92 ms] 1151.74/293.08 (32) typed CpxTrs 1151.74/293.08 (33) RewriteLemmaProof [LOWER BOUND(ID), 114 ms] 1151.74/293.08 (34) typed CpxTrs 1151.74/293.08 (35) RewriteLemmaProof [LOWER BOUND(ID), 87 ms] 1151.74/293.08 (36) typed CpxTrs 1151.74/293.08 (37) RewriteLemmaProof [LOWER BOUND(ID), 147 ms] 1151.74/293.08 (38) typed CpxTrs 1151.74/293.08 (39) RewriteLemmaProof [LOWER BOUND(ID), 147 ms] 1151.74/293.08 (40) typed CpxTrs 1151.74/293.08 (41) RewriteLemmaProof [LOWER BOUND(ID), 155 ms] 1151.74/293.08 (42) typed CpxTrs 1151.74/293.08 (43) RewriteLemmaProof [LOWER BOUND(ID), 176 ms] 1151.74/293.08 (44) typed CpxTrs 1151.74/293.08 (45) RewriteLemmaProof [LOWER BOUND(ID), 104 ms] 1151.74/293.08 (46) typed CpxTrs 1151.74/293.08 (47) RewriteLemmaProof [LOWER BOUND(ID), 201 ms] 1151.74/293.08 (48) typed CpxTrs 1151.74/293.08 1151.74/293.08 1151.74/293.08 ---------------------------------------- 1151.74/293.08 1151.74/293.08 (0) 1151.74/293.08 Obligation: 1151.74/293.08 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 1151.74/293.08 1151.74/293.08 1151.74/293.08 The TRS R consists of the following rules: 1151.74/293.08 1151.74/293.08 active(zeros) -> mark(cons(0, zeros)) 1151.74/293.08 active(U11(tt)) -> mark(tt) 1151.74/293.08 active(U21(tt)) -> mark(tt) 1151.74/293.08 active(U31(tt)) -> mark(tt) 1151.74/293.08 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.08 active(U42(tt)) -> mark(tt) 1151.74/293.08 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.08 active(U52(tt)) -> mark(tt) 1151.74/293.08 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.08 active(U62(tt)) -> mark(tt) 1151.74/293.08 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.08 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.08 active(U81(tt)) -> mark(nil) 1151.74/293.08 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.08 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.08 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.08 active(isNat(0)) -> mark(tt) 1151.74/293.08 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.08 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.08 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.08 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.08 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.08 active(isNatList(nil)) -> mark(tt) 1151.74/293.08 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.08 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.08 active(length(nil)) -> mark(0) 1151.74/293.08 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.08 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.08 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.08 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.08 active(U11(X)) -> U11(active(X)) 1151.74/293.08 active(U21(X)) -> U21(active(X)) 1151.74/293.08 active(U31(X)) -> U31(active(X)) 1151.74/293.08 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.08 active(U42(X)) -> U42(active(X)) 1151.74/293.08 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.08 active(U52(X)) -> U52(active(X)) 1151.74/293.08 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.08 active(U62(X)) -> U62(active(X)) 1151.74/293.08 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.08 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.08 active(s(X)) -> s(active(X)) 1151.74/293.08 active(length(X)) -> length(active(X)) 1151.74/293.08 active(U81(X)) -> U81(active(X)) 1151.74/293.08 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.08 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.08 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.08 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.08 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.08 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.08 U11(mark(X)) -> mark(U11(X)) 1151.74/293.08 U21(mark(X)) -> mark(U21(X)) 1151.74/293.08 U31(mark(X)) -> mark(U31(X)) 1151.74/293.08 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.08 U42(mark(X)) -> mark(U42(X)) 1151.74/293.08 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.08 U52(mark(X)) -> mark(U52(X)) 1151.74/293.08 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.08 U62(mark(X)) -> mark(U62(X)) 1151.74/293.08 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.08 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.08 s(mark(X)) -> mark(s(X)) 1151.74/293.08 length(mark(X)) -> mark(length(X)) 1151.74/293.08 U81(mark(X)) -> mark(U81(X)) 1151.74/293.08 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.08 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.08 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.08 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.08 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.08 proper(zeros) -> ok(zeros) 1151.74/293.08 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.08 proper(0) -> ok(0) 1151.74/293.08 proper(U11(X)) -> U11(proper(X)) 1151.74/293.08 proper(tt) -> ok(tt) 1151.74/293.08 proper(U21(X)) -> U21(proper(X)) 1151.74/293.08 proper(U31(X)) -> U31(proper(X)) 1151.74/293.08 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.08 proper(U42(X)) -> U42(proper(X)) 1151.74/293.08 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.08 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.08 proper(U52(X)) -> U52(proper(X)) 1151.74/293.08 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.08 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.08 proper(U62(X)) -> U62(proper(X)) 1151.74/293.08 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.08 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.08 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.08 proper(s(X)) -> s(proper(X)) 1151.74/293.08 proper(length(X)) -> length(proper(X)) 1151.74/293.08 proper(U81(X)) -> U81(proper(X)) 1151.74/293.08 proper(nil) -> ok(nil) 1151.74/293.08 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.08 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.08 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.08 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.08 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.08 U11(ok(X)) -> ok(U11(X)) 1151.74/293.08 U21(ok(X)) -> ok(U21(X)) 1151.74/293.08 U31(ok(X)) -> ok(U31(X)) 1151.74/293.08 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.08 U42(ok(X)) -> ok(U42(X)) 1151.74/293.08 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.08 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.08 U52(ok(X)) -> ok(U52(X)) 1151.74/293.08 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.08 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.08 U62(ok(X)) -> ok(U62(X)) 1151.74/293.08 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.08 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.08 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.08 s(ok(X)) -> ok(s(X)) 1151.74/293.08 length(ok(X)) -> ok(length(X)) 1151.74/293.08 U81(ok(X)) -> ok(U81(X)) 1151.74/293.08 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.08 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.08 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.08 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.08 top(mark(X)) -> top(proper(X)) 1151.74/293.08 top(ok(X)) -> top(active(X)) 1151.74/293.08 1151.74/293.08 S is empty. 1151.74/293.08 Rewrite Strategy: FULL 1151.74/293.08 ---------------------------------------- 1151.74/293.08 1151.74/293.08 (1) RenamingProof (BOTH BOUNDS(ID, ID)) 1151.74/293.08 Renamed function symbols to avoid clashes with predefined symbol. 1151.74/293.08 ---------------------------------------- 1151.74/293.08 1151.74/293.08 (2) 1151.74/293.08 Obligation: 1151.74/293.08 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 1151.74/293.08 1151.74/293.08 1151.74/293.08 The TRS R consists of the following rules: 1151.74/293.08 1151.74/293.08 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.08 active(U11(tt)) -> mark(tt) 1151.74/293.08 active(U21(tt)) -> mark(tt) 1151.74/293.08 active(U31(tt)) -> mark(tt) 1151.74/293.08 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.08 active(U42(tt)) -> mark(tt) 1151.74/293.08 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.08 active(U52(tt)) -> mark(tt) 1151.74/293.08 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.08 active(U62(tt)) -> mark(tt) 1151.74/293.08 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.08 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.08 active(U81(tt)) -> mark(nil) 1151.74/293.08 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.08 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.08 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.08 active(isNat(0')) -> mark(tt) 1151.74/293.08 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.08 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.08 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.08 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.08 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.08 active(isNatList(nil)) -> mark(tt) 1151.74/293.08 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.08 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.08 active(length(nil)) -> mark(0') 1151.74/293.08 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.08 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.08 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.08 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.08 active(U11(X)) -> U11(active(X)) 1151.74/293.08 active(U21(X)) -> U21(active(X)) 1151.74/293.08 active(U31(X)) -> U31(active(X)) 1151.74/293.08 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.08 active(U42(X)) -> U42(active(X)) 1151.74/293.08 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.08 active(U52(X)) -> U52(active(X)) 1151.74/293.08 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.08 active(U62(X)) -> U62(active(X)) 1151.74/293.08 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.08 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.08 active(s(X)) -> s(active(X)) 1151.74/293.08 active(length(X)) -> length(active(X)) 1151.74/293.08 active(U81(X)) -> U81(active(X)) 1151.74/293.08 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.08 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.08 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.08 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.08 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.08 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.08 U11(mark(X)) -> mark(U11(X)) 1151.74/293.08 U21(mark(X)) -> mark(U21(X)) 1151.74/293.08 U31(mark(X)) -> mark(U31(X)) 1151.74/293.08 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.08 U42(mark(X)) -> mark(U42(X)) 1151.74/293.08 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.08 U52(mark(X)) -> mark(U52(X)) 1151.74/293.08 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.08 U62(mark(X)) -> mark(U62(X)) 1151.74/293.08 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.08 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.08 s(mark(X)) -> mark(s(X)) 1151.74/293.08 length(mark(X)) -> mark(length(X)) 1151.74/293.08 U81(mark(X)) -> mark(U81(X)) 1151.74/293.08 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.08 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.08 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.08 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.08 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.08 proper(zeros) -> ok(zeros) 1151.74/293.08 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.08 proper(0') -> ok(0') 1151.74/293.08 proper(U11(X)) -> U11(proper(X)) 1151.74/293.08 proper(tt) -> ok(tt) 1151.74/293.08 proper(U21(X)) -> U21(proper(X)) 1151.74/293.08 proper(U31(X)) -> U31(proper(X)) 1151.74/293.08 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.08 proper(U42(X)) -> U42(proper(X)) 1151.74/293.08 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.08 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.08 proper(U52(X)) -> U52(proper(X)) 1151.74/293.08 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.08 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.08 proper(U62(X)) -> U62(proper(X)) 1151.74/293.08 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.08 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.08 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.08 proper(s(X)) -> s(proper(X)) 1151.74/293.08 proper(length(X)) -> length(proper(X)) 1151.74/293.08 proper(U81(X)) -> U81(proper(X)) 1151.74/293.08 proper(nil) -> ok(nil) 1151.74/293.08 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.08 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.08 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.08 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.08 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.08 U11(ok(X)) -> ok(U11(X)) 1151.74/293.08 U21(ok(X)) -> ok(U21(X)) 1151.74/293.08 U31(ok(X)) -> ok(U31(X)) 1151.74/293.08 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.08 U42(ok(X)) -> ok(U42(X)) 1151.74/293.08 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.08 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.08 U52(ok(X)) -> ok(U52(X)) 1151.74/293.08 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.08 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.08 U62(ok(X)) -> ok(U62(X)) 1151.74/293.08 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.08 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.08 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.08 s(ok(X)) -> ok(s(X)) 1151.74/293.08 length(ok(X)) -> ok(length(X)) 1151.74/293.08 U81(ok(X)) -> ok(U81(X)) 1151.74/293.08 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.08 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.08 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.08 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.08 top(mark(X)) -> top(proper(X)) 1151.74/293.08 top(ok(X)) -> top(active(X)) 1151.74/293.08 1151.74/293.08 S is empty. 1151.74/293.08 Rewrite Strategy: FULL 1151.74/293.08 ---------------------------------------- 1151.74/293.08 1151.74/293.08 (3) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 1151.74/293.08 Infered types. 1151.74/293.08 ---------------------------------------- 1151.74/293.08 1151.74/293.08 (4) 1151.74/293.08 Obligation: 1151.74/293.08 TRS: 1151.74/293.08 Rules: 1151.74/293.08 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.08 active(U11(tt)) -> mark(tt) 1151.74/293.08 active(U21(tt)) -> mark(tt) 1151.74/293.08 active(U31(tt)) -> mark(tt) 1151.74/293.08 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.08 active(U42(tt)) -> mark(tt) 1151.74/293.08 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.08 active(U52(tt)) -> mark(tt) 1151.74/293.08 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.08 active(U62(tt)) -> mark(tt) 1151.74/293.08 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.08 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.08 active(U81(tt)) -> mark(nil) 1151.74/293.08 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.08 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.08 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.08 active(isNat(0')) -> mark(tt) 1151.74/293.08 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.08 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.08 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.08 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.08 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.08 active(isNatList(nil)) -> mark(tt) 1151.74/293.08 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.08 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.08 active(length(nil)) -> mark(0') 1151.74/293.08 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.08 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.08 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.08 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.08 active(U11(X)) -> U11(active(X)) 1151.74/293.08 active(U21(X)) -> U21(active(X)) 1151.74/293.08 active(U31(X)) -> U31(active(X)) 1151.74/293.08 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.08 active(U42(X)) -> U42(active(X)) 1151.74/293.08 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.08 active(U52(X)) -> U52(active(X)) 1151.74/293.08 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.08 active(U62(X)) -> U62(active(X)) 1151.74/293.08 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.08 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.08 active(s(X)) -> s(active(X)) 1151.74/293.08 active(length(X)) -> length(active(X)) 1151.74/293.08 active(U81(X)) -> U81(active(X)) 1151.74/293.08 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.08 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.08 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.08 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.08 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.08 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.08 U11(mark(X)) -> mark(U11(X)) 1151.74/293.08 U21(mark(X)) -> mark(U21(X)) 1151.74/293.08 U31(mark(X)) -> mark(U31(X)) 1151.74/293.08 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.08 U42(mark(X)) -> mark(U42(X)) 1151.74/293.08 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.08 U52(mark(X)) -> mark(U52(X)) 1151.74/293.08 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.08 U62(mark(X)) -> mark(U62(X)) 1151.74/293.08 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.08 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.08 s(mark(X)) -> mark(s(X)) 1151.74/293.08 length(mark(X)) -> mark(length(X)) 1151.74/293.08 U81(mark(X)) -> mark(U81(X)) 1151.74/293.08 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.08 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.08 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.08 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.08 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.08 proper(zeros) -> ok(zeros) 1151.74/293.08 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.08 proper(0') -> ok(0') 1151.74/293.08 proper(U11(X)) -> U11(proper(X)) 1151.74/293.08 proper(tt) -> ok(tt) 1151.74/293.08 proper(U21(X)) -> U21(proper(X)) 1151.74/293.08 proper(U31(X)) -> U31(proper(X)) 1151.74/293.08 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.08 proper(U42(X)) -> U42(proper(X)) 1151.74/293.08 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.08 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.08 proper(U52(X)) -> U52(proper(X)) 1151.74/293.08 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.08 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.08 proper(U62(X)) -> U62(proper(X)) 1151.74/293.08 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.08 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.08 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.08 proper(s(X)) -> s(proper(X)) 1151.74/293.08 proper(length(X)) -> length(proper(X)) 1151.74/293.08 proper(U81(X)) -> U81(proper(X)) 1151.74/293.08 proper(nil) -> ok(nil) 1151.74/293.08 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.08 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.08 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.08 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.08 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.08 U11(ok(X)) -> ok(U11(X)) 1151.74/293.08 U21(ok(X)) -> ok(U21(X)) 1151.74/293.08 U31(ok(X)) -> ok(U31(X)) 1151.74/293.08 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.08 U42(ok(X)) -> ok(U42(X)) 1151.74/293.08 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.08 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.08 U52(ok(X)) -> ok(U52(X)) 1151.74/293.08 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.08 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.08 U62(ok(X)) -> ok(U62(X)) 1151.74/293.08 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.08 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.08 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.08 s(ok(X)) -> ok(s(X)) 1151.74/293.08 length(ok(X)) -> ok(length(X)) 1151.74/293.08 U81(ok(X)) -> ok(U81(X)) 1151.74/293.08 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.08 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.08 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.08 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.08 top(mark(X)) -> top(proper(X)) 1151.74/293.08 top(ok(X)) -> top(active(X)) 1151.74/293.08 1151.74/293.08 Types: 1151.74/293.08 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.08 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.08 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.08 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.08 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.08 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.08 hole_top2_0 :: top 1151.74/293.08 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.08 1151.74/293.08 ---------------------------------------- 1151.74/293.08 1151.74/293.08 (5) OrderProof (LOWER BOUND(ID)) 1151.74/293.08 Heuristically decided to analyse the following defined symbols: 1151.74/293.08 active, cons, U42, isNatIList, U52, isNatList, U62, U72, isNat, s, length, U92, U93, take, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top 1151.74/293.08 1151.74/293.08 They will be analysed ascendingly in the following order: 1151.74/293.08 cons < active 1151.74/293.08 U42 < active 1151.74/293.08 isNatIList < active 1151.74/293.08 U52 < active 1151.74/293.08 isNatList < active 1151.74/293.08 U62 < active 1151.74/293.08 U72 < active 1151.74/293.08 isNat < active 1151.74/293.08 s < active 1151.74/293.08 length < active 1151.74/293.08 U92 < active 1151.74/293.08 U93 < active 1151.74/293.08 take < active 1151.74/293.08 U11 < active 1151.74/293.08 U21 < active 1151.74/293.08 U31 < active 1151.74/293.08 U41 < active 1151.74/293.08 U51 < active 1151.74/293.08 U61 < active 1151.74/293.08 U71 < active 1151.74/293.08 U81 < active 1151.74/293.08 U91 < active 1151.74/293.08 active < top 1151.74/293.08 cons < proper 1151.74/293.08 U42 < proper 1151.74/293.08 isNatIList < proper 1151.74/293.08 U52 < proper 1151.74/293.08 isNatList < proper 1151.74/293.08 U62 < proper 1151.74/293.08 U72 < proper 1151.74/293.08 isNat < proper 1151.74/293.08 s < proper 1151.74/293.08 length < proper 1151.74/293.08 U92 < proper 1151.74/293.08 U93 < proper 1151.74/293.08 take < proper 1151.74/293.08 U11 < proper 1151.74/293.08 U21 < proper 1151.74/293.08 U31 < proper 1151.74/293.08 U41 < proper 1151.74/293.08 U51 < proper 1151.74/293.08 U61 < proper 1151.74/293.08 U71 < proper 1151.74/293.08 U81 < proper 1151.74/293.08 U91 < proper 1151.74/293.08 proper < top 1151.74/293.08 1151.74/293.08 ---------------------------------------- 1151.74/293.08 1151.74/293.08 (6) 1151.74/293.08 Obligation: 1151.74/293.08 TRS: 1151.74/293.08 Rules: 1151.74/293.08 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.08 active(U11(tt)) -> mark(tt) 1151.74/293.08 active(U21(tt)) -> mark(tt) 1151.74/293.08 active(U31(tt)) -> mark(tt) 1151.74/293.08 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.08 active(U42(tt)) -> mark(tt) 1151.74/293.08 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.08 active(U52(tt)) -> mark(tt) 1151.74/293.08 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.08 active(U62(tt)) -> mark(tt) 1151.74/293.08 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.08 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.08 active(U81(tt)) -> mark(nil) 1151.74/293.08 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.08 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.08 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.08 active(isNat(0')) -> mark(tt) 1151.74/293.08 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.08 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.08 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.08 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.08 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.08 active(isNatList(nil)) -> mark(tt) 1151.74/293.08 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.08 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.08 active(length(nil)) -> mark(0') 1151.74/293.08 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.08 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.08 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.08 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.08 active(U11(X)) -> U11(active(X)) 1151.74/293.08 active(U21(X)) -> U21(active(X)) 1151.74/293.08 active(U31(X)) -> U31(active(X)) 1151.74/293.08 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.08 active(U42(X)) -> U42(active(X)) 1151.74/293.08 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.08 active(U52(X)) -> U52(active(X)) 1151.74/293.08 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.08 active(U62(X)) -> U62(active(X)) 1151.74/293.08 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.08 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.08 active(s(X)) -> s(active(X)) 1151.74/293.08 active(length(X)) -> length(active(X)) 1151.74/293.08 active(U81(X)) -> U81(active(X)) 1151.74/293.08 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.08 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.08 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.08 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.08 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.08 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.08 U11(mark(X)) -> mark(U11(X)) 1151.74/293.08 U21(mark(X)) -> mark(U21(X)) 1151.74/293.08 U31(mark(X)) -> mark(U31(X)) 1151.74/293.08 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.08 U42(mark(X)) -> mark(U42(X)) 1151.74/293.08 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.08 U52(mark(X)) -> mark(U52(X)) 1151.74/293.08 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.08 U62(mark(X)) -> mark(U62(X)) 1151.74/293.08 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.08 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.08 s(mark(X)) -> mark(s(X)) 1151.74/293.08 length(mark(X)) -> mark(length(X)) 1151.74/293.08 U81(mark(X)) -> mark(U81(X)) 1151.74/293.08 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.08 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.08 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.08 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.08 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.08 proper(zeros) -> ok(zeros) 1151.74/293.08 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.08 proper(0') -> ok(0') 1151.74/293.08 proper(U11(X)) -> U11(proper(X)) 1151.74/293.08 proper(tt) -> ok(tt) 1151.74/293.08 proper(U21(X)) -> U21(proper(X)) 1151.74/293.08 proper(U31(X)) -> U31(proper(X)) 1151.74/293.08 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.08 proper(U42(X)) -> U42(proper(X)) 1151.74/293.08 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.08 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.08 proper(U52(X)) -> U52(proper(X)) 1151.74/293.08 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.08 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.08 proper(U62(X)) -> U62(proper(X)) 1151.74/293.08 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.08 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.08 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.08 proper(s(X)) -> s(proper(X)) 1151.74/293.08 proper(length(X)) -> length(proper(X)) 1151.74/293.08 proper(U81(X)) -> U81(proper(X)) 1151.74/293.08 proper(nil) -> ok(nil) 1151.74/293.08 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.08 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.08 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.08 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.08 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.08 U11(ok(X)) -> ok(U11(X)) 1151.74/293.08 U21(ok(X)) -> ok(U21(X)) 1151.74/293.08 U31(ok(X)) -> ok(U31(X)) 1151.74/293.08 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.08 U42(ok(X)) -> ok(U42(X)) 1151.74/293.08 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.08 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.08 U52(ok(X)) -> ok(U52(X)) 1151.74/293.08 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.08 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.08 U62(ok(X)) -> ok(U62(X)) 1151.74/293.08 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.08 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.08 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.08 s(ok(X)) -> ok(s(X)) 1151.74/293.08 length(ok(X)) -> ok(length(X)) 1151.74/293.08 U81(ok(X)) -> ok(U81(X)) 1151.74/293.08 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.08 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.08 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.08 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.08 top(mark(X)) -> top(proper(X)) 1151.74/293.08 top(ok(X)) -> top(active(X)) 1151.74/293.08 1151.74/293.08 Types: 1151.74/293.08 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.08 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.08 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.08 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.08 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.08 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.08 hole_top2_0 :: top 1151.74/293.08 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.08 1151.74/293.08 1151.74/293.08 Generator Equations: 1151.74/293.08 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.74/293.08 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.74/293.08 1151.74/293.08 1151.74/293.08 The following defined symbols remain to be analysed: 1151.74/293.08 cons, active, U42, isNatIList, U52, isNatList, U62, U72, isNat, s, length, U92, U93, take, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top 1151.74/293.08 1151.74/293.08 They will be analysed ascendingly in the following order: 1151.74/293.08 cons < active 1151.74/293.08 U42 < active 1151.74/293.08 isNatIList < active 1151.74/293.08 U52 < active 1151.74/293.08 isNatList < active 1151.74/293.08 U62 < active 1151.74/293.08 U72 < active 1151.74/293.08 isNat < active 1151.74/293.08 s < active 1151.74/293.08 length < active 1151.74/293.08 U92 < active 1151.74/293.08 U93 < active 1151.74/293.08 take < active 1151.74/293.08 U11 < active 1151.74/293.08 U21 < active 1151.74/293.08 U31 < active 1151.74/293.08 U41 < active 1151.74/293.08 U51 < active 1151.74/293.08 U61 < active 1151.74/293.08 U71 < active 1151.74/293.08 U81 < active 1151.74/293.08 U91 < active 1151.74/293.08 active < top 1151.74/293.08 cons < proper 1151.74/293.08 U42 < proper 1151.74/293.08 isNatIList < proper 1151.74/293.08 U52 < proper 1151.74/293.08 isNatList < proper 1151.74/293.08 U62 < proper 1151.74/293.08 U72 < proper 1151.74/293.08 isNat < proper 1151.74/293.08 s < proper 1151.74/293.08 length < proper 1151.74/293.08 U92 < proper 1151.74/293.08 U93 < proper 1151.74/293.08 take < proper 1151.74/293.08 U11 < proper 1151.74/293.08 U21 < proper 1151.74/293.08 U31 < proper 1151.74/293.08 U41 < proper 1151.74/293.08 U51 < proper 1151.74/293.08 U61 < proper 1151.74/293.08 U71 < proper 1151.74/293.08 U81 < proper 1151.74/293.08 U91 < proper 1151.74/293.08 proper < top 1151.74/293.08 1151.74/293.08 ---------------------------------------- 1151.74/293.08 1151.74/293.08 (7) RewriteLemmaProof (LOWER BOUND(ID)) 1151.74/293.08 Proved the following rewrite lemma: 1151.74/293.08 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.74/293.08 1151.74/293.08 Induction Base: 1151.74/293.08 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) 1151.74/293.08 1151.74/293.08 Induction Step: 1151.74/293.08 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n5_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) 1151.74/293.08 mark(cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH 1151.74/293.08 mark(*4_0) 1151.74/293.08 1151.74/293.08 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.74/293.08 ---------------------------------------- 1151.74/293.08 1151.74/293.08 (8) 1151.74/293.08 Complex Obligation (BEST) 1151.74/293.08 1151.74/293.08 ---------------------------------------- 1151.74/293.08 1151.74/293.08 (9) 1151.74/293.08 Obligation: 1151.74/293.08 Proved the lower bound n^1 for the following obligation: 1151.74/293.08 1151.74/293.08 TRS: 1151.74/293.08 Rules: 1151.74/293.08 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.08 active(U11(tt)) -> mark(tt) 1151.74/293.08 active(U21(tt)) -> mark(tt) 1151.74/293.08 active(U31(tt)) -> mark(tt) 1151.74/293.08 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.08 active(U42(tt)) -> mark(tt) 1151.74/293.08 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.08 active(U52(tt)) -> mark(tt) 1151.74/293.08 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.08 active(U62(tt)) -> mark(tt) 1151.74/293.08 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.08 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.08 active(U81(tt)) -> mark(nil) 1151.74/293.08 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.08 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.08 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.08 active(isNat(0')) -> mark(tt) 1151.74/293.08 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.08 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.08 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.08 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.08 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.08 active(isNatList(nil)) -> mark(tt) 1151.74/293.08 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.08 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.08 active(length(nil)) -> mark(0') 1151.74/293.08 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.08 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.08 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.08 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.08 active(U11(X)) -> U11(active(X)) 1151.74/293.08 active(U21(X)) -> U21(active(X)) 1151.74/293.08 active(U31(X)) -> U31(active(X)) 1151.74/293.08 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.08 active(U42(X)) -> U42(active(X)) 1151.74/293.08 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.08 active(U52(X)) -> U52(active(X)) 1151.74/293.08 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.08 active(U62(X)) -> U62(active(X)) 1151.74/293.08 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.08 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.08 active(s(X)) -> s(active(X)) 1151.74/293.08 active(length(X)) -> length(active(X)) 1151.74/293.08 active(U81(X)) -> U81(active(X)) 1151.74/293.08 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.08 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.08 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.08 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.08 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.08 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.08 U11(mark(X)) -> mark(U11(X)) 1151.74/293.08 U21(mark(X)) -> mark(U21(X)) 1151.74/293.08 U31(mark(X)) -> mark(U31(X)) 1151.74/293.08 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.08 U42(mark(X)) -> mark(U42(X)) 1151.74/293.08 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.08 U52(mark(X)) -> mark(U52(X)) 1151.74/293.08 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.08 U62(mark(X)) -> mark(U62(X)) 1151.74/293.08 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.08 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.08 s(mark(X)) -> mark(s(X)) 1151.74/293.08 length(mark(X)) -> mark(length(X)) 1151.74/293.08 U81(mark(X)) -> mark(U81(X)) 1151.74/293.08 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.08 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.08 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.08 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.08 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.08 proper(zeros) -> ok(zeros) 1151.74/293.08 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.08 proper(0') -> ok(0') 1151.74/293.08 proper(U11(X)) -> U11(proper(X)) 1151.74/293.08 proper(tt) -> ok(tt) 1151.74/293.08 proper(U21(X)) -> U21(proper(X)) 1151.74/293.08 proper(U31(X)) -> U31(proper(X)) 1151.74/293.08 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.08 proper(U42(X)) -> U42(proper(X)) 1151.74/293.08 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.08 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.08 proper(U52(X)) -> U52(proper(X)) 1151.74/293.08 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.08 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.08 proper(U62(X)) -> U62(proper(X)) 1151.74/293.08 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.08 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.08 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.08 proper(s(X)) -> s(proper(X)) 1151.74/293.08 proper(length(X)) -> length(proper(X)) 1151.74/293.08 proper(U81(X)) -> U81(proper(X)) 1151.74/293.08 proper(nil) -> ok(nil) 1151.74/293.08 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.08 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.08 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.08 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.08 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.08 U11(ok(X)) -> ok(U11(X)) 1151.74/293.08 U21(ok(X)) -> ok(U21(X)) 1151.74/293.08 U31(ok(X)) -> ok(U31(X)) 1151.74/293.08 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.08 U42(ok(X)) -> ok(U42(X)) 1151.74/293.08 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.08 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.08 U52(ok(X)) -> ok(U52(X)) 1151.74/293.08 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.08 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.08 U62(ok(X)) -> ok(U62(X)) 1151.74/293.08 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.08 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.08 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.08 s(ok(X)) -> ok(s(X)) 1151.74/293.08 length(ok(X)) -> ok(length(X)) 1151.74/293.08 U81(ok(X)) -> ok(U81(X)) 1151.74/293.08 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.08 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.08 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.08 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.08 top(mark(X)) -> top(proper(X)) 1151.74/293.08 top(ok(X)) -> top(active(X)) 1151.74/293.08 1151.74/293.08 Types: 1151.74/293.08 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.08 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.08 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.08 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.08 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.08 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.08 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.08 hole_top2_0 :: top 1151.74/293.08 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.08 1151.74/293.08 1151.74/293.08 Generator Equations: 1151.74/293.08 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.74/293.08 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.74/293.08 1151.74/293.08 1151.74/293.08 The following defined symbols remain to be analysed: 1151.74/293.08 cons, active, U42, isNatIList, U52, isNatList, U62, U72, isNat, s, length, U92, U93, take, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top 1151.74/293.08 1151.74/293.08 They will be analysed ascendingly in the following order: 1151.74/293.08 cons < active 1151.74/293.08 U42 < active 1151.74/293.08 isNatIList < active 1151.74/293.08 U52 < active 1151.74/293.08 isNatList < active 1151.74/293.08 U62 < active 1151.74/293.08 U72 < active 1151.74/293.08 isNat < active 1151.74/293.08 s < active 1151.74/293.08 length < active 1151.74/293.08 U92 < active 1151.74/293.08 U93 < active 1151.74/293.08 take < active 1151.74/293.08 U11 < active 1151.74/293.08 U21 < active 1151.74/293.08 U31 < active 1151.74/293.08 U41 < active 1151.74/293.08 U51 < active 1151.74/293.08 U61 < active 1151.74/293.08 U71 < active 1151.74/293.08 U81 < active 1151.74/293.08 U91 < active 1151.74/293.08 active < top 1151.74/293.08 cons < proper 1151.74/293.08 U42 < proper 1151.74/293.08 isNatIList < proper 1151.74/293.08 U52 < proper 1151.74/293.08 isNatList < proper 1151.74/293.08 U62 < proper 1151.74/293.08 U72 < proper 1151.74/293.08 isNat < proper 1151.74/293.08 s < proper 1151.74/293.08 length < proper 1151.74/293.08 U92 < proper 1151.74/293.08 U93 < proper 1151.74/293.08 take < proper 1151.74/293.08 U11 < proper 1151.74/293.08 U21 < proper 1151.74/293.08 U31 < proper 1151.74/293.08 U41 < proper 1151.74/293.08 U51 < proper 1151.74/293.08 U61 < proper 1151.74/293.08 U71 < proper 1151.74/293.08 U81 < proper 1151.74/293.08 U91 < proper 1151.74/293.08 proper < top 1151.74/293.08 1151.74/293.08 ---------------------------------------- 1151.74/293.08 1151.74/293.08 (10) LowerBoundPropagationProof (FINISHED) 1151.74/293.08 Propagated lower bound. 1151.74/293.08 ---------------------------------------- 1151.74/293.08 1151.74/293.08 (11) 1151.74/293.08 BOUNDS(n^1, INF) 1151.74/293.08 1151.74/293.08 ---------------------------------------- 1151.74/293.08 1151.74/293.08 (12) 1151.74/293.08 Obligation: 1151.74/293.08 TRS: 1151.74/293.08 Rules: 1151.74/293.08 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.08 active(U11(tt)) -> mark(tt) 1151.74/293.08 active(U21(tt)) -> mark(tt) 1151.74/293.08 active(U31(tt)) -> mark(tt) 1151.74/293.08 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.08 active(U42(tt)) -> mark(tt) 1151.74/293.08 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.08 active(U52(tt)) -> mark(tt) 1151.74/293.08 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.08 active(U62(tt)) -> mark(tt) 1151.74/293.08 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.08 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.08 active(U81(tt)) -> mark(nil) 1151.74/293.08 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.08 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.08 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.08 active(isNat(0')) -> mark(tt) 1151.74/293.08 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.08 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.08 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.08 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.08 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.08 active(isNatList(nil)) -> mark(tt) 1151.74/293.08 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.08 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.08 active(length(nil)) -> mark(0') 1151.74/293.08 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.08 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.08 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.08 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.08 active(U11(X)) -> U11(active(X)) 1151.74/293.08 active(U21(X)) -> U21(active(X)) 1151.74/293.08 active(U31(X)) -> U31(active(X)) 1151.74/293.08 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.08 active(U42(X)) -> U42(active(X)) 1151.74/293.08 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.08 active(U52(X)) -> U52(active(X)) 1151.74/293.08 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.08 active(U62(X)) -> U62(active(X)) 1151.74/293.08 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.08 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.09 active(s(X)) -> s(active(X)) 1151.74/293.09 active(length(X)) -> length(active(X)) 1151.74/293.09 active(U81(X)) -> U81(active(X)) 1151.74/293.09 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.09 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.09 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.09 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.09 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.09 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.09 U11(mark(X)) -> mark(U11(X)) 1151.74/293.09 U21(mark(X)) -> mark(U21(X)) 1151.74/293.09 U31(mark(X)) -> mark(U31(X)) 1151.74/293.09 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.09 U42(mark(X)) -> mark(U42(X)) 1151.74/293.09 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.09 U52(mark(X)) -> mark(U52(X)) 1151.74/293.09 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.09 U62(mark(X)) -> mark(U62(X)) 1151.74/293.09 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.09 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.09 s(mark(X)) -> mark(s(X)) 1151.74/293.09 length(mark(X)) -> mark(length(X)) 1151.74/293.09 U81(mark(X)) -> mark(U81(X)) 1151.74/293.09 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.09 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.09 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.09 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.09 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.09 proper(zeros) -> ok(zeros) 1151.74/293.09 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.09 proper(0') -> ok(0') 1151.74/293.09 proper(U11(X)) -> U11(proper(X)) 1151.74/293.09 proper(tt) -> ok(tt) 1151.74/293.09 proper(U21(X)) -> U21(proper(X)) 1151.74/293.09 proper(U31(X)) -> U31(proper(X)) 1151.74/293.09 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.09 proper(U42(X)) -> U42(proper(X)) 1151.74/293.09 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.09 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.09 proper(U52(X)) -> U52(proper(X)) 1151.74/293.09 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.09 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.09 proper(U62(X)) -> U62(proper(X)) 1151.74/293.09 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.09 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.09 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.09 proper(s(X)) -> s(proper(X)) 1151.74/293.09 proper(length(X)) -> length(proper(X)) 1151.74/293.09 proper(U81(X)) -> U81(proper(X)) 1151.74/293.09 proper(nil) -> ok(nil) 1151.74/293.09 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.09 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.09 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.09 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.09 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.09 U11(ok(X)) -> ok(U11(X)) 1151.74/293.09 U21(ok(X)) -> ok(U21(X)) 1151.74/293.09 U31(ok(X)) -> ok(U31(X)) 1151.74/293.09 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.09 U42(ok(X)) -> ok(U42(X)) 1151.74/293.09 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.09 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.09 U52(ok(X)) -> ok(U52(X)) 1151.74/293.09 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.09 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.09 U62(ok(X)) -> ok(U62(X)) 1151.74/293.09 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.09 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.09 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.09 s(ok(X)) -> ok(s(X)) 1151.74/293.09 length(ok(X)) -> ok(length(X)) 1151.74/293.09 U81(ok(X)) -> ok(U81(X)) 1151.74/293.09 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.09 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.09 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.09 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.09 top(mark(X)) -> top(proper(X)) 1151.74/293.09 top(ok(X)) -> top(active(X)) 1151.74/293.09 1151.74/293.09 Types: 1151.74/293.09 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.09 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.09 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.09 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.09 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.09 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.09 hole_top2_0 :: top 1151.74/293.09 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.09 1151.74/293.09 1151.74/293.09 Lemmas: 1151.74/293.09 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.74/293.09 1151.74/293.09 1151.74/293.09 Generator Equations: 1151.74/293.09 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.74/293.09 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.74/293.09 1151.74/293.09 1151.74/293.09 The following defined symbols remain to be analysed: 1151.74/293.09 U42, active, isNatIList, U52, isNatList, U62, U72, isNat, s, length, U92, U93, take, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top 1151.74/293.09 1151.74/293.09 They will be analysed ascendingly in the following order: 1151.74/293.09 U42 < active 1151.74/293.09 isNatIList < active 1151.74/293.09 U52 < active 1151.74/293.09 isNatList < active 1151.74/293.09 U62 < active 1151.74/293.09 U72 < active 1151.74/293.09 isNat < active 1151.74/293.09 s < active 1151.74/293.09 length < active 1151.74/293.09 U92 < active 1151.74/293.09 U93 < active 1151.74/293.09 take < active 1151.74/293.09 U11 < active 1151.74/293.09 U21 < active 1151.74/293.09 U31 < active 1151.74/293.09 U41 < active 1151.74/293.09 U51 < active 1151.74/293.09 U61 < active 1151.74/293.09 U71 < active 1151.74/293.09 U81 < active 1151.74/293.09 U91 < active 1151.74/293.09 active < top 1151.74/293.09 U42 < proper 1151.74/293.09 isNatIList < proper 1151.74/293.09 U52 < proper 1151.74/293.09 isNatList < proper 1151.74/293.09 U62 < proper 1151.74/293.09 U72 < proper 1151.74/293.09 isNat < proper 1151.74/293.09 s < proper 1151.74/293.09 length < proper 1151.74/293.09 U92 < proper 1151.74/293.09 U93 < proper 1151.74/293.09 take < proper 1151.74/293.09 U11 < proper 1151.74/293.09 U21 < proper 1151.74/293.09 U31 < proper 1151.74/293.09 U41 < proper 1151.74/293.09 U51 < proper 1151.74/293.09 U61 < proper 1151.74/293.09 U71 < proper 1151.74/293.09 U81 < proper 1151.74/293.09 U91 < proper 1151.74/293.09 proper < top 1151.74/293.09 1151.74/293.09 ---------------------------------------- 1151.74/293.09 1151.74/293.09 (13) RewriteLemmaProof (LOWER BOUND(ID)) 1151.74/293.09 Proved the following rewrite lemma: 1151.74/293.09 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.74/293.09 1151.74/293.09 Induction Base: 1151.74/293.09 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) 1151.74/293.09 1151.74/293.09 Induction Step: 1151.74/293.09 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n2106_0, 1)))) ->_R^Omega(1) 1151.74/293.09 mark(U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0)))) ->_IH 1151.74/293.09 mark(*4_0) 1151.74/293.09 1151.74/293.09 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.74/293.09 ---------------------------------------- 1151.74/293.09 1151.74/293.09 (14) 1151.74/293.09 Obligation: 1151.74/293.09 TRS: 1151.74/293.09 Rules: 1151.74/293.09 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.09 active(U11(tt)) -> mark(tt) 1151.74/293.09 active(U21(tt)) -> mark(tt) 1151.74/293.09 active(U31(tt)) -> mark(tt) 1151.74/293.09 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.09 active(U42(tt)) -> mark(tt) 1151.74/293.09 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.09 active(U52(tt)) -> mark(tt) 1151.74/293.09 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.09 active(U62(tt)) -> mark(tt) 1151.74/293.09 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.09 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.09 active(U81(tt)) -> mark(nil) 1151.74/293.09 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.09 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.09 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.09 active(isNat(0')) -> mark(tt) 1151.74/293.09 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.09 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.09 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.09 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.09 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.09 active(isNatList(nil)) -> mark(tt) 1151.74/293.09 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.09 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.09 active(length(nil)) -> mark(0') 1151.74/293.09 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.09 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.09 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.09 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.09 active(U11(X)) -> U11(active(X)) 1151.74/293.09 active(U21(X)) -> U21(active(X)) 1151.74/293.09 active(U31(X)) -> U31(active(X)) 1151.74/293.09 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.09 active(U42(X)) -> U42(active(X)) 1151.74/293.09 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.09 active(U52(X)) -> U52(active(X)) 1151.74/293.09 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.09 active(U62(X)) -> U62(active(X)) 1151.74/293.09 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.09 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.09 active(s(X)) -> s(active(X)) 1151.74/293.09 active(length(X)) -> length(active(X)) 1151.74/293.09 active(U81(X)) -> U81(active(X)) 1151.74/293.09 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.09 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.09 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.09 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.09 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.09 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.09 U11(mark(X)) -> mark(U11(X)) 1151.74/293.09 U21(mark(X)) -> mark(U21(X)) 1151.74/293.09 U31(mark(X)) -> mark(U31(X)) 1151.74/293.09 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.09 U42(mark(X)) -> mark(U42(X)) 1151.74/293.09 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.09 U52(mark(X)) -> mark(U52(X)) 1151.74/293.09 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.09 U62(mark(X)) -> mark(U62(X)) 1151.74/293.09 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.09 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.09 s(mark(X)) -> mark(s(X)) 1151.74/293.09 length(mark(X)) -> mark(length(X)) 1151.74/293.09 U81(mark(X)) -> mark(U81(X)) 1151.74/293.09 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.09 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.09 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.09 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.09 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.09 proper(zeros) -> ok(zeros) 1151.74/293.09 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.09 proper(0') -> ok(0') 1151.74/293.09 proper(U11(X)) -> U11(proper(X)) 1151.74/293.09 proper(tt) -> ok(tt) 1151.74/293.09 proper(U21(X)) -> U21(proper(X)) 1151.74/293.09 proper(U31(X)) -> U31(proper(X)) 1151.74/293.09 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.09 proper(U42(X)) -> U42(proper(X)) 1151.74/293.09 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.09 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.09 proper(U52(X)) -> U52(proper(X)) 1151.74/293.09 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.09 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.09 proper(U62(X)) -> U62(proper(X)) 1151.74/293.09 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.09 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.09 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.09 proper(s(X)) -> s(proper(X)) 1151.74/293.09 proper(length(X)) -> length(proper(X)) 1151.74/293.09 proper(U81(X)) -> U81(proper(X)) 1151.74/293.09 proper(nil) -> ok(nil) 1151.74/293.09 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.09 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.09 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.09 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.09 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.09 U11(ok(X)) -> ok(U11(X)) 1151.74/293.09 U21(ok(X)) -> ok(U21(X)) 1151.74/293.09 U31(ok(X)) -> ok(U31(X)) 1151.74/293.09 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.09 U42(ok(X)) -> ok(U42(X)) 1151.74/293.09 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.09 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.09 U52(ok(X)) -> ok(U52(X)) 1151.74/293.09 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.09 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.09 U62(ok(X)) -> ok(U62(X)) 1151.74/293.09 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.09 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.09 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.09 s(ok(X)) -> ok(s(X)) 1151.74/293.09 length(ok(X)) -> ok(length(X)) 1151.74/293.09 U81(ok(X)) -> ok(U81(X)) 1151.74/293.09 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.09 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.09 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.09 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.09 top(mark(X)) -> top(proper(X)) 1151.74/293.09 top(ok(X)) -> top(active(X)) 1151.74/293.09 1151.74/293.09 Types: 1151.74/293.09 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.09 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.09 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.09 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.09 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.09 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.09 hole_top2_0 :: top 1151.74/293.09 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.09 1151.74/293.09 1151.74/293.09 Lemmas: 1151.74/293.09 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.74/293.09 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.74/293.09 1151.74/293.09 1151.74/293.09 Generator Equations: 1151.74/293.09 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.74/293.09 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.74/293.09 1151.74/293.09 1151.74/293.09 The following defined symbols remain to be analysed: 1151.74/293.09 isNatIList, active, U52, isNatList, U62, U72, isNat, s, length, U92, U93, take, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top 1151.74/293.09 1151.74/293.09 They will be analysed ascendingly in the following order: 1151.74/293.09 isNatIList < active 1151.74/293.09 U52 < active 1151.74/293.09 isNatList < active 1151.74/293.09 U62 < active 1151.74/293.09 U72 < active 1151.74/293.09 isNat < active 1151.74/293.09 s < active 1151.74/293.09 length < active 1151.74/293.09 U92 < active 1151.74/293.09 U93 < active 1151.74/293.09 take < active 1151.74/293.09 U11 < active 1151.74/293.09 U21 < active 1151.74/293.09 U31 < active 1151.74/293.09 U41 < active 1151.74/293.09 U51 < active 1151.74/293.09 U61 < active 1151.74/293.09 U71 < active 1151.74/293.09 U81 < active 1151.74/293.09 U91 < active 1151.74/293.09 active < top 1151.74/293.09 isNatIList < proper 1151.74/293.09 U52 < proper 1151.74/293.09 isNatList < proper 1151.74/293.09 U62 < proper 1151.74/293.09 U72 < proper 1151.74/293.09 isNat < proper 1151.74/293.09 s < proper 1151.74/293.09 length < proper 1151.74/293.09 U92 < proper 1151.74/293.09 U93 < proper 1151.74/293.09 take < proper 1151.74/293.09 U11 < proper 1151.74/293.09 U21 < proper 1151.74/293.09 U31 < proper 1151.74/293.09 U41 < proper 1151.74/293.09 U51 < proper 1151.74/293.09 U61 < proper 1151.74/293.09 U71 < proper 1151.74/293.09 U81 < proper 1151.74/293.09 U91 < proper 1151.74/293.09 proper < top 1151.74/293.09 1151.74/293.09 ---------------------------------------- 1151.74/293.09 1151.74/293.09 (15) RewriteLemmaProof (LOWER BOUND(ID)) 1151.74/293.09 Proved the following rewrite lemma: 1151.74/293.09 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.74/293.09 1151.74/293.09 Induction Base: 1151.74/293.09 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) 1151.74/293.09 1151.74/293.09 Induction Step: 1151.74/293.09 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n2892_0, 1)))) ->_R^Omega(1) 1151.74/293.09 mark(U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0)))) ->_IH 1151.74/293.09 mark(*4_0) 1151.74/293.09 1151.74/293.09 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.74/293.09 ---------------------------------------- 1151.74/293.09 1151.74/293.09 (16) 1151.74/293.09 Obligation: 1151.74/293.09 TRS: 1151.74/293.09 Rules: 1151.74/293.09 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.09 active(U11(tt)) -> mark(tt) 1151.74/293.09 active(U21(tt)) -> mark(tt) 1151.74/293.09 active(U31(tt)) -> mark(tt) 1151.74/293.09 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.09 active(U42(tt)) -> mark(tt) 1151.74/293.09 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.09 active(U52(tt)) -> mark(tt) 1151.74/293.09 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.09 active(U62(tt)) -> mark(tt) 1151.74/293.09 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.09 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.09 active(U81(tt)) -> mark(nil) 1151.74/293.09 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.09 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.09 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.09 active(isNat(0')) -> mark(tt) 1151.74/293.09 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.09 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.09 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.09 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.09 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.09 active(isNatList(nil)) -> mark(tt) 1151.74/293.09 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.09 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.09 active(length(nil)) -> mark(0') 1151.74/293.09 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.09 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.09 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.09 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.09 active(U11(X)) -> U11(active(X)) 1151.74/293.09 active(U21(X)) -> U21(active(X)) 1151.74/293.09 active(U31(X)) -> U31(active(X)) 1151.74/293.09 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.09 active(U42(X)) -> U42(active(X)) 1151.74/293.09 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.09 active(U52(X)) -> U52(active(X)) 1151.74/293.09 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.09 active(U62(X)) -> U62(active(X)) 1151.74/293.09 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.09 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.09 active(s(X)) -> s(active(X)) 1151.74/293.09 active(length(X)) -> length(active(X)) 1151.74/293.09 active(U81(X)) -> U81(active(X)) 1151.74/293.09 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.09 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.09 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.09 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.09 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.09 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.09 U11(mark(X)) -> mark(U11(X)) 1151.74/293.09 U21(mark(X)) -> mark(U21(X)) 1151.74/293.09 U31(mark(X)) -> mark(U31(X)) 1151.74/293.09 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.09 U42(mark(X)) -> mark(U42(X)) 1151.74/293.09 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.09 U52(mark(X)) -> mark(U52(X)) 1151.74/293.09 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.09 U62(mark(X)) -> mark(U62(X)) 1151.74/293.09 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.09 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.09 s(mark(X)) -> mark(s(X)) 1151.74/293.09 length(mark(X)) -> mark(length(X)) 1151.74/293.09 U81(mark(X)) -> mark(U81(X)) 1151.74/293.09 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.09 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.09 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.09 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.09 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.09 proper(zeros) -> ok(zeros) 1151.74/293.09 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.09 proper(0') -> ok(0') 1151.74/293.09 proper(U11(X)) -> U11(proper(X)) 1151.74/293.09 proper(tt) -> ok(tt) 1151.74/293.09 proper(U21(X)) -> U21(proper(X)) 1151.74/293.09 proper(U31(X)) -> U31(proper(X)) 1151.74/293.09 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.09 proper(U42(X)) -> U42(proper(X)) 1151.74/293.09 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.09 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.09 proper(U52(X)) -> U52(proper(X)) 1151.74/293.09 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.09 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.09 proper(U62(X)) -> U62(proper(X)) 1151.74/293.09 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.09 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.09 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.09 proper(s(X)) -> s(proper(X)) 1151.74/293.09 proper(length(X)) -> length(proper(X)) 1151.74/293.09 proper(U81(X)) -> U81(proper(X)) 1151.74/293.09 proper(nil) -> ok(nil) 1151.74/293.09 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.09 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.09 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.09 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.09 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.09 U11(ok(X)) -> ok(U11(X)) 1151.74/293.09 U21(ok(X)) -> ok(U21(X)) 1151.74/293.09 U31(ok(X)) -> ok(U31(X)) 1151.74/293.09 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.09 U42(ok(X)) -> ok(U42(X)) 1151.74/293.09 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.09 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.09 U52(ok(X)) -> ok(U52(X)) 1151.74/293.09 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.09 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.09 U62(ok(X)) -> ok(U62(X)) 1151.74/293.09 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.09 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.09 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.09 s(ok(X)) -> ok(s(X)) 1151.74/293.09 length(ok(X)) -> ok(length(X)) 1151.74/293.09 U81(ok(X)) -> ok(U81(X)) 1151.74/293.09 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.09 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.09 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.09 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.09 top(mark(X)) -> top(proper(X)) 1151.74/293.09 top(ok(X)) -> top(active(X)) 1151.74/293.09 1151.74/293.09 Types: 1151.74/293.09 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.09 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.09 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.09 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.09 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.09 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.09 hole_top2_0 :: top 1151.74/293.09 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.09 1151.74/293.09 1151.74/293.09 Lemmas: 1151.74/293.09 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.74/293.09 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.74/293.09 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.74/293.09 1151.74/293.09 1151.74/293.09 Generator Equations: 1151.74/293.09 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.74/293.09 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.74/293.09 1151.74/293.09 1151.74/293.09 The following defined symbols remain to be analysed: 1151.74/293.09 isNatList, active, U62, U72, isNat, s, length, U92, U93, take, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top 1151.74/293.09 1151.74/293.09 They will be analysed ascendingly in the following order: 1151.74/293.09 isNatList < active 1151.74/293.09 U62 < active 1151.74/293.09 U72 < active 1151.74/293.09 isNat < active 1151.74/293.09 s < active 1151.74/293.09 length < active 1151.74/293.09 U92 < active 1151.74/293.09 U93 < active 1151.74/293.09 take < active 1151.74/293.09 U11 < active 1151.74/293.09 U21 < active 1151.74/293.09 U31 < active 1151.74/293.09 U41 < active 1151.74/293.09 U51 < active 1151.74/293.09 U61 < active 1151.74/293.09 U71 < active 1151.74/293.09 U81 < active 1151.74/293.09 U91 < active 1151.74/293.09 active < top 1151.74/293.09 isNatList < proper 1151.74/293.09 U62 < proper 1151.74/293.09 U72 < proper 1151.74/293.09 isNat < proper 1151.74/293.09 s < proper 1151.74/293.09 length < proper 1151.74/293.09 U92 < proper 1151.74/293.09 U93 < proper 1151.74/293.09 take < proper 1151.74/293.09 U11 < proper 1151.74/293.09 U21 < proper 1151.74/293.09 U31 < proper 1151.74/293.09 U41 < proper 1151.74/293.09 U51 < proper 1151.74/293.09 U61 < proper 1151.74/293.09 U71 < proper 1151.74/293.09 U81 < proper 1151.74/293.09 U91 < proper 1151.74/293.09 proper < top 1151.74/293.09 1151.74/293.09 ---------------------------------------- 1151.74/293.09 1151.74/293.09 (17) RewriteLemmaProof (LOWER BOUND(ID)) 1151.74/293.09 Proved the following rewrite lemma: 1151.74/293.09 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.74/293.09 1151.74/293.09 Induction Base: 1151.74/293.09 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) 1151.74/293.09 1151.74/293.09 Induction Step: 1151.74/293.09 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n3782_0, 1)))) ->_R^Omega(1) 1151.74/293.09 mark(U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0)))) ->_IH 1151.74/293.09 mark(*4_0) 1151.74/293.09 1151.74/293.09 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.74/293.09 ---------------------------------------- 1151.74/293.09 1151.74/293.09 (18) 1151.74/293.09 Obligation: 1151.74/293.09 TRS: 1151.74/293.09 Rules: 1151.74/293.09 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.09 active(U11(tt)) -> mark(tt) 1151.74/293.09 active(U21(tt)) -> mark(tt) 1151.74/293.09 active(U31(tt)) -> mark(tt) 1151.74/293.09 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.09 active(U42(tt)) -> mark(tt) 1151.74/293.09 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.09 active(U52(tt)) -> mark(tt) 1151.74/293.09 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.09 active(U62(tt)) -> mark(tt) 1151.74/293.09 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.09 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.09 active(U81(tt)) -> mark(nil) 1151.74/293.09 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.09 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.09 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.09 active(isNat(0')) -> mark(tt) 1151.74/293.09 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.09 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.09 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.09 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.09 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.09 active(isNatList(nil)) -> mark(tt) 1151.74/293.09 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.09 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.09 active(length(nil)) -> mark(0') 1151.74/293.09 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.09 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.09 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.09 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.09 active(U11(X)) -> U11(active(X)) 1151.74/293.09 active(U21(X)) -> U21(active(X)) 1151.74/293.09 active(U31(X)) -> U31(active(X)) 1151.74/293.09 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.09 active(U42(X)) -> U42(active(X)) 1151.74/293.09 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.09 active(U52(X)) -> U52(active(X)) 1151.74/293.09 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.09 active(U62(X)) -> U62(active(X)) 1151.74/293.09 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.09 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.09 active(s(X)) -> s(active(X)) 1151.74/293.09 active(length(X)) -> length(active(X)) 1151.74/293.09 active(U81(X)) -> U81(active(X)) 1151.74/293.09 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.09 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.09 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.09 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.09 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.09 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.09 U11(mark(X)) -> mark(U11(X)) 1151.74/293.09 U21(mark(X)) -> mark(U21(X)) 1151.74/293.09 U31(mark(X)) -> mark(U31(X)) 1151.74/293.09 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.09 U42(mark(X)) -> mark(U42(X)) 1151.74/293.09 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.09 U52(mark(X)) -> mark(U52(X)) 1151.74/293.09 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.09 U62(mark(X)) -> mark(U62(X)) 1151.74/293.09 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.09 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.09 s(mark(X)) -> mark(s(X)) 1151.74/293.09 length(mark(X)) -> mark(length(X)) 1151.74/293.09 U81(mark(X)) -> mark(U81(X)) 1151.74/293.09 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.09 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.09 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.09 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.09 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.09 proper(zeros) -> ok(zeros) 1151.74/293.09 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.09 proper(0') -> ok(0') 1151.74/293.09 proper(U11(X)) -> U11(proper(X)) 1151.74/293.09 proper(tt) -> ok(tt) 1151.74/293.09 proper(U21(X)) -> U21(proper(X)) 1151.74/293.09 proper(U31(X)) -> U31(proper(X)) 1151.74/293.09 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.09 proper(U42(X)) -> U42(proper(X)) 1151.74/293.09 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.09 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.09 proper(U52(X)) -> U52(proper(X)) 1151.74/293.09 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.09 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.09 proper(U62(X)) -> U62(proper(X)) 1151.74/293.09 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.09 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.09 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.09 proper(s(X)) -> s(proper(X)) 1151.74/293.09 proper(length(X)) -> length(proper(X)) 1151.74/293.09 proper(U81(X)) -> U81(proper(X)) 1151.74/293.09 proper(nil) -> ok(nil) 1151.74/293.09 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.09 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.09 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.09 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.09 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.09 U11(ok(X)) -> ok(U11(X)) 1151.74/293.09 U21(ok(X)) -> ok(U21(X)) 1151.74/293.09 U31(ok(X)) -> ok(U31(X)) 1151.74/293.09 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.09 U42(ok(X)) -> ok(U42(X)) 1151.74/293.09 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.09 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.09 U52(ok(X)) -> ok(U52(X)) 1151.74/293.09 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.09 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.09 U62(ok(X)) -> ok(U62(X)) 1151.74/293.09 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.09 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.09 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.09 s(ok(X)) -> ok(s(X)) 1151.74/293.09 length(ok(X)) -> ok(length(X)) 1151.74/293.09 U81(ok(X)) -> ok(U81(X)) 1151.74/293.09 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.09 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.09 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.09 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.09 top(mark(X)) -> top(proper(X)) 1151.74/293.09 top(ok(X)) -> top(active(X)) 1151.74/293.09 1151.74/293.09 Types: 1151.74/293.09 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.09 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.09 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.09 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.09 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.10 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.10 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.10 hole_top2_0 :: top 1151.74/293.10 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.10 1151.74/293.10 1151.74/293.10 Lemmas: 1151.74/293.10 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.74/293.10 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.74/293.10 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.74/293.10 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.74/293.10 1151.74/293.10 1151.74/293.10 Generator Equations: 1151.74/293.10 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.74/293.10 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.74/293.10 1151.74/293.10 1151.74/293.10 The following defined symbols remain to be analysed: 1151.74/293.10 U72, active, isNat, s, length, U92, U93, take, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top 1151.74/293.10 1151.74/293.10 They will be analysed ascendingly in the following order: 1151.74/293.10 U72 < active 1151.74/293.10 isNat < active 1151.74/293.10 s < active 1151.74/293.10 length < active 1151.74/293.10 U92 < active 1151.74/293.10 U93 < active 1151.74/293.10 take < active 1151.74/293.10 U11 < active 1151.74/293.10 U21 < active 1151.74/293.10 U31 < active 1151.74/293.10 U41 < active 1151.74/293.10 U51 < active 1151.74/293.10 U61 < active 1151.74/293.10 U71 < active 1151.74/293.10 U81 < active 1151.74/293.10 U91 < active 1151.74/293.10 active < top 1151.74/293.10 U72 < proper 1151.74/293.10 isNat < proper 1151.74/293.10 s < proper 1151.74/293.10 length < proper 1151.74/293.10 U92 < proper 1151.74/293.10 U93 < proper 1151.74/293.10 take < proper 1151.74/293.10 U11 < proper 1151.74/293.10 U21 < proper 1151.74/293.10 U31 < proper 1151.74/293.10 U41 < proper 1151.74/293.10 U51 < proper 1151.74/293.10 U61 < proper 1151.74/293.10 U71 < proper 1151.74/293.10 U81 < proper 1151.74/293.10 U91 < proper 1151.74/293.10 proper < top 1151.74/293.10 1151.74/293.10 ---------------------------------------- 1151.74/293.10 1151.74/293.10 (19) RewriteLemmaProof (LOWER BOUND(ID)) 1151.74/293.10 Proved the following rewrite lemma: 1151.74/293.10 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.74/293.10 1151.74/293.10 Induction Base: 1151.74/293.10 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) 1151.74/293.10 1151.74/293.10 Induction Step: 1151.74/293.10 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n4758_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) 1151.74/293.10 mark(U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH 1151.74/293.10 mark(*4_0) 1151.74/293.10 1151.74/293.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.74/293.10 ---------------------------------------- 1151.74/293.10 1151.74/293.10 (20) 1151.74/293.10 Obligation: 1151.74/293.10 TRS: 1151.74/293.10 Rules: 1151.74/293.10 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.10 active(U11(tt)) -> mark(tt) 1151.74/293.10 active(U21(tt)) -> mark(tt) 1151.74/293.10 active(U31(tt)) -> mark(tt) 1151.74/293.10 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.10 active(U42(tt)) -> mark(tt) 1151.74/293.10 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.10 active(U52(tt)) -> mark(tt) 1151.74/293.10 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.10 active(U62(tt)) -> mark(tt) 1151.74/293.10 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.10 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.10 active(U81(tt)) -> mark(nil) 1151.74/293.10 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.10 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.10 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.10 active(isNat(0')) -> mark(tt) 1151.74/293.10 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.10 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.10 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.10 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.10 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.10 active(isNatList(nil)) -> mark(tt) 1151.74/293.10 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.10 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.10 active(length(nil)) -> mark(0') 1151.74/293.10 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.10 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.10 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.10 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.10 active(U11(X)) -> U11(active(X)) 1151.74/293.10 active(U21(X)) -> U21(active(X)) 1151.74/293.10 active(U31(X)) -> U31(active(X)) 1151.74/293.10 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.10 active(U42(X)) -> U42(active(X)) 1151.74/293.10 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.10 active(U52(X)) -> U52(active(X)) 1151.74/293.10 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.10 active(U62(X)) -> U62(active(X)) 1151.74/293.10 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.10 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.10 active(s(X)) -> s(active(X)) 1151.74/293.10 active(length(X)) -> length(active(X)) 1151.74/293.10 active(U81(X)) -> U81(active(X)) 1151.74/293.10 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.10 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.10 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.10 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.10 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.10 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.10 U11(mark(X)) -> mark(U11(X)) 1151.74/293.10 U21(mark(X)) -> mark(U21(X)) 1151.74/293.10 U31(mark(X)) -> mark(U31(X)) 1151.74/293.10 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.10 U42(mark(X)) -> mark(U42(X)) 1151.74/293.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.10 U52(mark(X)) -> mark(U52(X)) 1151.74/293.10 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.10 U62(mark(X)) -> mark(U62(X)) 1151.74/293.10 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.10 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.10 s(mark(X)) -> mark(s(X)) 1151.74/293.10 length(mark(X)) -> mark(length(X)) 1151.74/293.10 U81(mark(X)) -> mark(U81(X)) 1151.74/293.10 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.10 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.10 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.10 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.10 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.10 proper(zeros) -> ok(zeros) 1151.74/293.10 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.10 proper(0') -> ok(0') 1151.74/293.10 proper(U11(X)) -> U11(proper(X)) 1151.74/293.10 proper(tt) -> ok(tt) 1151.74/293.10 proper(U21(X)) -> U21(proper(X)) 1151.74/293.10 proper(U31(X)) -> U31(proper(X)) 1151.74/293.10 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.10 proper(U42(X)) -> U42(proper(X)) 1151.74/293.10 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.10 proper(U52(X)) -> U52(proper(X)) 1151.74/293.10 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.10 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.10 proper(U62(X)) -> U62(proper(X)) 1151.74/293.10 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.10 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.10 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.10 proper(s(X)) -> s(proper(X)) 1151.74/293.10 proper(length(X)) -> length(proper(X)) 1151.74/293.10 proper(U81(X)) -> U81(proper(X)) 1151.74/293.10 proper(nil) -> ok(nil) 1151.74/293.10 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.10 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.10 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.10 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.10 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.10 U11(ok(X)) -> ok(U11(X)) 1151.74/293.10 U21(ok(X)) -> ok(U21(X)) 1151.74/293.10 U31(ok(X)) -> ok(U31(X)) 1151.74/293.10 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.10 U42(ok(X)) -> ok(U42(X)) 1151.74/293.10 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.10 U52(ok(X)) -> ok(U52(X)) 1151.74/293.10 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.10 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.10 U62(ok(X)) -> ok(U62(X)) 1151.74/293.10 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.10 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.10 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.10 s(ok(X)) -> ok(s(X)) 1151.74/293.10 length(ok(X)) -> ok(length(X)) 1151.74/293.10 U81(ok(X)) -> ok(U81(X)) 1151.74/293.10 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.10 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.10 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.10 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.10 top(mark(X)) -> top(proper(X)) 1151.74/293.10 top(ok(X)) -> top(active(X)) 1151.74/293.10 1151.74/293.10 Types: 1151.74/293.10 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.10 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.10 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.10 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.10 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.10 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.10 hole_top2_0 :: top 1151.74/293.10 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.10 1151.74/293.10 1151.74/293.10 Lemmas: 1151.74/293.10 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.74/293.10 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.74/293.10 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.74/293.10 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.74/293.10 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.74/293.10 1151.74/293.10 1151.74/293.10 Generator Equations: 1151.74/293.10 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.74/293.10 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.74/293.10 1151.74/293.10 1151.74/293.10 The following defined symbols remain to be analysed: 1151.74/293.10 isNat, active, s, length, U92, U93, take, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top 1151.74/293.10 1151.74/293.10 They will be analysed ascendingly in the following order: 1151.74/293.10 isNat < active 1151.74/293.10 s < active 1151.74/293.10 length < active 1151.74/293.10 U92 < active 1151.74/293.10 U93 < active 1151.74/293.10 take < active 1151.74/293.10 U11 < active 1151.74/293.10 U21 < active 1151.74/293.10 U31 < active 1151.74/293.10 U41 < active 1151.74/293.10 U51 < active 1151.74/293.10 U61 < active 1151.74/293.10 U71 < active 1151.74/293.10 U81 < active 1151.74/293.10 U91 < active 1151.74/293.10 active < top 1151.74/293.10 isNat < proper 1151.74/293.10 s < proper 1151.74/293.10 length < proper 1151.74/293.10 U92 < proper 1151.74/293.10 U93 < proper 1151.74/293.10 take < proper 1151.74/293.10 U11 < proper 1151.74/293.10 U21 < proper 1151.74/293.10 U31 < proper 1151.74/293.10 U41 < proper 1151.74/293.10 U51 < proper 1151.74/293.10 U61 < proper 1151.74/293.10 U71 < proper 1151.74/293.10 U81 < proper 1151.74/293.10 U91 < proper 1151.74/293.10 proper < top 1151.74/293.10 1151.74/293.10 ---------------------------------------- 1151.74/293.10 1151.74/293.10 (21) RewriteLemmaProof (LOWER BOUND(ID)) 1151.74/293.10 Proved the following rewrite lemma: 1151.74/293.10 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0))) -> *4_0, rt in Omega(n7812_0) 1151.74/293.10 1151.74/293.10 Induction Base: 1151.74/293.10 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) 1151.74/293.10 1151.74/293.10 Induction Step: 1151.74/293.10 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n7812_0, 1)))) ->_R^Omega(1) 1151.74/293.10 mark(s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0)))) ->_IH 1151.74/293.10 mark(*4_0) 1151.74/293.10 1151.74/293.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.74/293.10 ---------------------------------------- 1151.74/293.10 1151.74/293.10 (22) 1151.74/293.10 Obligation: 1151.74/293.10 TRS: 1151.74/293.10 Rules: 1151.74/293.10 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.10 active(U11(tt)) -> mark(tt) 1151.74/293.10 active(U21(tt)) -> mark(tt) 1151.74/293.10 active(U31(tt)) -> mark(tt) 1151.74/293.10 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.10 active(U42(tt)) -> mark(tt) 1151.74/293.10 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.10 active(U52(tt)) -> mark(tt) 1151.74/293.10 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.10 active(U62(tt)) -> mark(tt) 1151.74/293.10 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.10 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.10 active(U81(tt)) -> mark(nil) 1151.74/293.10 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.10 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.10 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.10 active(isNat(0')) -> mark(tt) 1151.74/293.10 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.10 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.10 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.10 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.10 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.10 active(isNatList(nil)) -> mark(tt) 1151.74/293.10 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.10 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.10 active(length(nil)) -> mark(0') 1151.74/293.10 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.10 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.10 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.10 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.10 active(U11(X)) -> U11(active(X)) 1151.74/293.10 active(U21(X)) -> U21(active(X)) 1151.74/293.10 active(U31(X)) -> U31(active(X)) 1151.74/293.10 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.10 active(U42(X)) -> U42(active(X)) 1151.74/293.10 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.10 active(U52(X)) -> U52(active(X)) 1151.74/293.10 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.10 active(U62(X)) -> U62(active(X)) 1151.74/293.10 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.10 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.10 active(s(X)) -> s(active(X)) 1151.74/293.10 active(length(X)) -> length(active(X)) 1151.74/293.10 active(U81(X)) -> U81(active(X)) 1151.74/293.10 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.10 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.10 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.10 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.10 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.10 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.10 U11(mark(X)) -> mark(U11(X)) 1151.74/293.10 U21(mark(X)) -> mark(U21(X)) 1151.74/293.10 U31(mark(X)) -> mark(U31(X)) 1151.74/293.10 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.10 U42(mark(X)) -> mark(U42(X)) 1151.74/293.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.10 U52(mark(X)) -> mark(U52(X)) 1151.74/293.10 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.10 U62(mark(X)) -> mark(U62(X)) 1151.74/293.10 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.10 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.10 s(mark(X)) -> mark(s(X)) 1151.74/293.10 length(mark(X)) -> mark(length(X)) 1151.74/293.10 U81(mark(X)) -> mark(U81(X)) 1151.74/293.10 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.10 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.10 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.10 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.10 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.10 proper(zeros) -> ok(zeros) 1151.74/293.10 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.10 proper(0') -> ok(0') 1151.74/293.10 proper(U11(X)) -> U11(proper(X)) 1151.74/293.10 proper(tt) -> ok(tt) 1151.74/293.10 proper(U21(X)) -> U21(proper(X)) 1151.74/293.10 proper(U31(X)) -> U31(proper(X)) 1151.74/293.10 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.10 proper(U42(X)) -> U42(proper(X)) 1151.74/293.10 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.10 proper(U52(X)) -> U52(proper(X)) 1151.74/293.10 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.10 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.10 proper(U62(X)) -> U62(proper(X)) 1151.74/293.10 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.10 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.10 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.10 proper(s(X)) -> s(proper(X)) 1151.74/293.10 proper(length(X)) -> length(proper(X)) 1151.74/293.10 proper(U81(X)) -> U81(proper(X)) 1151.74/293.10 proper(nil) -> ok(nil) 1151.74/293.10 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.10 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.10 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.10 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.10 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.10 U11(ok(X)) -> ok(U11(X)) 1151.74/293.10 U21(ok(X)) -> ok(U21(X)) 1151.74/293.10 U31(ok(X)) -> ok(U31(X)) 1151.74/293.10 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.10 U42(ok(X)) -> ok(U42(X)) 1151.74/293.10 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.10 U52(ok(X)) -> ok(U52(X)) 1151.74/293.10 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.10 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.10 U62(ok(X)) -> ok(U62(X)) 1151.74/293.10 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.10 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.10 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.10 s(ok(X)) -> ok(s(X)) 1151.74/293.10 length(ok(X)) -> ok(length(X)) 1151.74/293.10 U81(ok(X)) -> ok(U81(X)) 1151.74/293.10 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.10 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.10 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.10 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.10 top(mark(X)) -> top(proper(X)) 1151.74/293.10 top(ok(X)) -> top(active(X)) 1151.74/293.10 1151.74/293.10 Types: 1151.74/293.10 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.10 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.10 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.10 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.10 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.10 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.10 hole_top2_0 :: top 1151.74/293.10 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.10 1151.74/293.10 1151.74/293.10 Lemmas: 1151.74/293.10 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.74/293.10 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.74/293.10 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.74/293.10 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.74/293.10 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.74/293.10 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0))) -> *4_0, rt in Omega(n7812_0) 1151.74/293.10 1151.74/293.10 1151.74/293.10 Generator Equations: 1151.74/293.10 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.74/293.10 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.74/293.10 1151.74/293.10 1151.74/293.10 The following defined symbols remain to be analysed: 1151.74/293.10 length, active, U92, U93, take, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top 1151.74/293.10 1151.74/293.10 They will be analysed ascendingly in the following order: 1151.74/293.10 length < active 1151.74/293.10 U92 < active 1151.74/293.10 U93 < active 1151.74/293.10 take < active 1151.74/293.10 U11 < active 1151.74/293.10 U21 < active 1151.74/293.10 U31 < active 1151.74/293.10 U41 < active 1151.74/293.10 U51 < active 1151.74/293.10 U61 < active 1151.74/293.10 U71 < active 1151.74/293.10 U81 < active 1151.74/293.10 U91 < active 1151.74/293.10 active < top 1151.74/293.10 length < proper 1151.74/293.10 U92 < proper 1151.74/293.10 U93 < proper 1151.74/293.10 take < proper 1151.74/293.10 U11 < proper 1151.74/293.10 U21 < proper 1151.74/293.10 U31 < proper 1151.74/293.10 U41 < proper 1151.74/293.10 U51 < proper 1151.74/293.10 U61 < proper 1151.74/293.10 U71 < proper 1151.74/293.10 U81 < proper 1151.74/293.10 U91 < proper 1151.74/293.10 proper < top 1151.74/293.10 1151.74/293.10 ---------------------------------------- 1151.74/293.10 1151.74/293.10 (23) RewriteLemmaProof (LOWER BOUND(ID)) 1151.74/293.10 Proved the following rewrite lemma: 1151.74/293.10 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9039_0))) -> *4_0, rt in Omega(n9039_0) 1151.74/293.10 1151.74/293.10 Induction Base: 1151.74/293.10 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) 1151.74/293.10 1151.74/293.10 Induction Step: 1151.74/293.10 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n9039_0, 1)))) ->_R^Omega(1) 1151.74/293.10 mark(length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9039_0)))) ->_IH 1151.74/293.10 mark(*4_0) 1151.74/293.10 1151.74/293.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.74/293.10 ---------------------------------------- 1151.74/293.10 1151.74/293.10 (24) 1151.74/293.10 Obligation: 1151.74/293.10 TRS: 1151.74/293.10 Rules: 1151.74/293.10 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.10 active(U11(tt)) -> mark(tt) 1151.74/293.10 active(U21(tt)) -> mark(tt) 1151.74/293.10 active(U31(tt)) -> mark(tt) 1151.74/293.10 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.10 active(U42(tt)) -> mark(tt) 1151.74/293.10 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.10 active(U52(tt)) -> mark(tt) 1151.74/293.10 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.10 active(U62(tt)) -> mark(tt) 1151.74/293.10 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.10 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.10 active(U81(tt)) -> mark(nil) 1151.74/293.10 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.10 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.10 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.10 active(isNat(0')) -> mark(tt) 1151.74/293.10 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.10 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.10 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.10 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.10 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.10 active(isNatList(nil)) -> mark(tt) 1151.74/293.10 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.10 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.10 active(length(nil)) -> mark(0') 1151.74/293.10 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.10 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.10 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.10 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.10 active(U11(X)) -> U11(active(X)) 1151.74/293.10 active(U21(X)) -> U21(active(X)) 1151.74/293.10 active(U31(X)) -> U31(active(X)) 1151.74/293.10 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.10 active(U42(X)) -> U42(active(X)) 1151.74/293.10 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.10 active(U52(X)) -> U52(active(X)) 1151.74/293.10 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.10 active(U62(X)) -> U62(active(X)) 1151.74/293.10 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.10 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.10 active(s(X)) -> s(active(X)) 1151.74/293.10 active(length(X)) -> length(active(X)) 1151.74/293.10 active(U81(X)) -> U81(active(X)) 1151.74/293.10 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.10 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.10 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.10 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.10 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.10 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.10 U11(mark(X)) -> mark(U11(X)) 1151.74/293.10 U21(mark(X)) -> mark(U21(X)) 1151.74/293.10 U31(mark(X)) -> mark(U31(X)) 1151.74/293.10 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.10 U42(mark(X)) -> mark(U42(X)) 1151.74/293.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.10 U52(mark(X)) -> mark(U52(X)) 1151.74/293.10 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.10 U62(mark(X)) -> mark(U62(X)) 1151.74/293.10 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.10 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.10 s(mark(X)) -> mark(s(X)) 1151.74/293.10 length(mark(X)) -> mark(length(X)) 1151.74/293.10 U81(mark(X)) -> mark(U81(X)) 1151.74/293.10 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.10 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.10 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.10 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.10 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.10 proper(zeros) -> ok(zeros) 1151.74/293.10 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.10 proper(0') -> ok(0') 1151.74/293.10 proper(U11(X)) -> U11(proper(X)) 1151.74/293.10 proper(tt) -> ok(tt) 1151.74/293.10 proper(U21(X)) -> U21(proper(X)) 1151.74/293.10 proper(U31(X)) -> U31(proper(X)) 1151.74/293.10 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.10 proper(U42(X)) -> U42(proper(X)) 1151.74/293.10 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.10 proper(U52(X)) -> U52(proper(X)) 1151.74/293.10 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.10 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.10 proper(U62(X)) -> U62(proper(X)) 1151.74/293.10 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.10 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.10 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.10 proper(s(X)) -> s(proper(X)) 1151.74/293.10 proper(length(X)) -> length(proper(X)) 1151.74/293.10 proper(U81(X)) -> U81(proper(X)) 1151.74/293.10 proper(nil) -> ok(nil) 1151.74/293.10 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.10 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.10 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.10 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.10 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.10 U11(ok(X)) -> ok(U11(X)) 1151.74/293.10 U21(ok(X)) -> ok(U21(X)) 1151.74/293.10 U31(ok(X)) -> ok(U31(X)) 1151.74/293.10 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.10 U42(ok(X)) -> ok(U42(X)) 1151.74/293.10 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.10 U52(ok(X)) -> ok(U52(X)) 1151.74/293.10 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.10 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.10 U62(ok(X)) -> ok(U62(X)) 1151.74/293.10 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.10 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.10 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.10 s(ok(X)) -> ok(s(X)) 1151.74/293.10 length(ok(X)) -> ok(length(X)) 1151.74/293.10 U81(ok(X)) -> ok(U81(X)) 1151.74/293.10 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.10 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.10 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.10 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.10 top(mark(X)) -> top(proper(X)) 1151.74/293.10 top(ok(X)) -> top(active(X)) 1151.74/293.10 1151.74/293.10 Types: 1151.74/293.10 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.10 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.10 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.10 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.10 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.10 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.10 hole_top2_0 :: top 1151.74/293.10 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.10 1151.74/293.10 1151.74/293.10 Lemmas: 1151.74/293.10 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.74/293.10 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.74/293.10 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.74/293.10 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.74/293.10 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.74/293.10 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0))) -> *4_0, rt in Omega(n7812_0) 1151.74/293.10 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9039_0))) -> *4_0, rt in Omega(n9039_0) 1151.74/293.10 1151.74/293.10 1151.74/293.10 Generator Equations: 1151.74/293.10 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.74/293.10 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.74/293.10 1151.74/293.10 1151.74/293.10 The following defined symbols remain to be analysed: 1151.74/293.10 U92, active, U93, take, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top 1151.74/293.10 1151.74/293.10 They will be analysed ascendingly in the following order: 1151.74/293.10 U92 < active 1151.74/293.10 U93 < active 1151.74/293.10 take < active 1151.74/293.10 U11 < active 1151.74/293.10 U21 < active 1151.74/293.10 U31 < active 1151.74/293.10 U41 < active 1151.74/293.10 U51 < active 1151.74/293.10 U61 < active 1151.74/293.10 U71 < active 1151.74/293.10 U81 < active 1151.74/293.10 U91 < active 1151.74/293.10 active < top 1151.74/293.10 U92 < proper 1151.74/293.10 U93 < proper 1151.74/293.10 take < proper 1151.74/293.10 U11 < proper 1151.74/293.10 U21 < proper 1151.74/293.10 U31 < proper 1151.74/293.10 U41 < proper 1151.74/293.10 U51 < proper 1151.74/293.10 U61 < proper 1151.74/293.10 U71 < proper 1151.74/293.10 U81 < proper 1151.74/293.10 U91 < proper 1151.74/293.10 proper < top 1151.74/293.10 1151.74/293.10 ---------------------------------------- 1151.74/293.10 1151.74/293.10 (25) RewriteLemmaProof (LOWER BOUND(ID)) 1151.74/293.10 Proved the following rewrite lemma: 1151.74/293.10 U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n10367_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n10367_0) 1151.74/293.10 1151.74/293.10 Induction Base: 1151.74/293.10 U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) 1151.74/293.10 1151.74/293.10 Induction Step: 1151.74/293.10 U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n10367_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) ->_R^Omega(1) 1151.74/293.10 mark(U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n10367_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d))) ->_IH 1151.74/293.10 mark(*4_0) 1151.74/293.10 1151.74/293.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.74/293.10 ---------------------------------------- 1151.74/293.10 1151.74/293.10 (26) 1151.74/293.10 Obligation: 1151.74/293.10 TRS: 1151.74/293.10 Rules: 1151.74/293.10 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.10 active(U11(tt)) -> mark(tt) 1151.74/293.10 active(U21(tt)) -> mark(tt) 1151.74/293.10 active(U31(tt)) -> mark(tt) 1151.74/293.10 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.10 active(U42(tt)) -> mark(tt) 1151.74/293.10 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.10 active(U52(tt)) -> mark(tt) 1151.74/293.10 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.10 active(U62(tt)) -> mark(tt) 1151.74/293.10 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.10 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.10 active(U81(tt)) -> mark(nil) 1151.74/293.10 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.10 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.10 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.10 active(isNat(0')) -> mark(tt) 1151.74/293.10 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.10 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.10 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.10 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.10 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.10 active(isNatList(nil)) -> mark(tt) 1151.74/293.10 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.10 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.10 active(length(nil)) -> mark(0') 1151.74/293.10 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.10 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.10 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.10 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.10 active(U11(X)) -> U11(active(X)) 1151.74/293.10 active(U21(X)) -> U21(active(X)) 1151.74/293.10 active(U31(X)) -> U31(active(X)) 1151.74/293.10 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.10 active(U42(X)) -> U42(active(X)) 1151.74/293.10 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.10 active(U52(X)) -> U52(active(X)) 1151.74/293.10 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.10 active(U62(X)) -> U62(active(X)) 1151.74/293.10 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.10 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.10 active(s(X)) -> s(active(X)) 1151.74/293.10 active(length(X)) -> length(active(X)) 1151.74/293.10 active(U81(X)) -> U81(active(X)) 1151.74/293.10 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.10 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.10 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.10 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.10 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.10 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.10 U11(mark(X)) -> mark(U11(X)) 1151.74/293.10 U21(mark(X)) -> mark(U21(X)) 1151.74/293.10 U31(mark(X)) -> mark(U31(X)) 1151.74/293.10 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.10 U42(mark(X)) -> mark(U42(X)) 1151.74/293.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.10 U52(mark(X)) -> mark(U52(X)) 1151.74/293.10 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.10 U62(mark(X)) -> mark(U62(X)) 1151.74/293.10 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.10 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.10 s(mark(X)) -> mark(s(X)) 1151.74/293.10 length(mark(X)) -> mark(length(X)) 1151.74/293.10 U81(mark(X)) -> mark(U81(X)) 1151.74/293.10 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.10 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.10 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.10 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.10 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.10 proper(zeros) -> ok(zeros) 1151.74/293.10 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.10 proper(0') -> ok(0') 1151.74/293.10 proper(U11(X)) -> U11(proper(X)) 1151.74/293.10 proper(tt) -> ok(tt) 1151.74/293.10 proper(U21(X)) -> U21(proper(X)) 1151.74/293.10 proper(U31(X)) -> U31(proper(X)) 1151.74/293.10 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.10 proper(U42(X)) -> U42(proper(X)) 1151.74/293.10 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.10 proper(U52(X)) -> U52(proper(X)) 1151.74/293.10 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.10 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.10 proper(U62(X)) -> U62(proper(X)) 1151.74/293.10 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.10 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.10 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.10 proper(s(X)) -> s(proper(X)) 1151.74/293.10 proper(length(X)) -> length(proper(X)) 1151.74/293.10 proper(U81(X)) -> U81(proper(X)) 1151.74/293.10 proper(nil) -> ok(nil) 1151.74/293.10 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.10 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.10 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.10 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.10 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.10 U11(ok(X)) -> ok(U11(X)) 1151.74/293.10 U21(ok(X)) -> ok(U21(X)) 1151.74/293.10 U31(ok(X)) -> ok(U31(X)) 1151.74/293.10 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.10 U42(ok(X)) -> ok(U42(X)) 1151.74/293.10 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.10 U52(ok(X)) -> ok(U52(X)) 1151.74/293.10 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.10 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.10 U62(ok(X)) -> ok(U62(X)) 1151.74/293.10 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.10 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.10 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.10 s(ok(X)) -> ok(s(X)) 1151.74/293.10 length(ok(X)) -> ok(length(X)) 1151.74/293.10 U81(ok(X)) -> ok(U81(X)) 1151.74/293.10 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.10 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.10 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.10 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.10 top(mark(X)) -> top(proper(X)) 1151.74/293.10 top(ok(X)) -> top(active(X)) 1151.74/293.10 1151.74/293.10 Types: 1151.74/293.10 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.10 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.10 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.10 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.10 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.10 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.10 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.10 hole_top2_0 :: top 1151.74/293.10 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.10 1151.74/293.10 1151.74/293.10 Lemmas: 1151.74/293.10 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.74/293.10 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.74/293.10 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.74/293.10 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.74/293.10 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.74/293.10 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0))) -> *4_0, rt in Omega(n7812_0) 1151.74/293.10 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9039_0))) -> *4_0, rt in Omega(n9039_0) 1151.74/293.10 U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n10367_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n10367_0) 1151.74/293.10 1151.74/293.10 1151.74/293.10 Generator Equations: 1151.74/293.10 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.74/293.10 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.74/293.10 1151.74/293.10 1151.74/293.10 The following defined symbols remain to be analysed: 1151.74/293.10 U93, active, take, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top 1151.74/293.10 1151.74/293.10 They will be analysed ascendingly in the following order: 1151.74/293.10 U93 < active 1151.74/293.10 take < active 1151.74/293.10 U11 < active 1151.74/293.10 U21 < active 1151.74/293.10 U31 < active 1151.74/293.10 U41 < active 1151.74/293.10 U51 < active 1151.74/293.10 U61 < active 1151.74/293.10 U71 < active 1151.74/293.10 U81 < active 1151.74/293.10 U91 < active 1151.74/293.10 active < top 1151.74/293.10 U93 < proper 1151.74/293.10 take < proper 1151.74/293.10 U11 < proper 1151.74/293.10 U21 < proper 1151.74/293.10 U31 < proper 1151.74/293.10 U41 < proper 1151.74/293.10 U51 < proper 1151.74/293.10 U61 < proper 1151.74/293.10 U71 < proper 1151.74/293.10 U81 < proper 1151.74/293.10 U91 < proper 1151.74/293.10 proper < top 1151.74/293.10 1151.74/293.10 ---------------------------------------- 1151.74/293.10 1151.74/293.10 (27) RewriteLemmaProof (LOWER BOUND(ID)) 1151.74/293.10 Proved the following rewrite lemma: 1151.74/293.10 U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18768_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n18768_0) 1151.74/293.10 1151.74/293.10 Induction Base: 1151.74/293.10 U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) 1151.74/293.10 1151.74/293.10 Induction Step: 1151.74/293.10 U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n18768_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) ->_R^Omega(1) 1151.74/293.10 mark(U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18768_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d))) ->_IH 1151.74/293.10 mark(*4_0) 1151.74/293.10 1151.74/293.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.74/293.10 ---------------------------------------- 1151.74/293.10 1151.74/293.10 (28) 1151.74/293.10 Obligation: 1151.74/293.10 TRS: 1151.74/293.10 Rules: 1151.74/293.10 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.10 active(U11(tt)) -> mark(tt) 1151.74/293.10 active(U21(tt)) -> mark(tt) 1151.74/293.10 active(U31(tt)) -> mark(tt) 1151.74/293.10 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.10 active(U42(tt)) -> mark(tt) 1151.74/293.10 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.11 active(U52(tt)) -> mark(tt) 1151.74/293.11 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.11 active(U62(tt)) -> mark(tt) 1151.74/293.11 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.11 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.11 active(U81(tt)) -> mark(nil) 1151.74/293.11 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.11 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.11 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.11 active(isNat(0')) -> mark(tt) 1151.74/293.11 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.11 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.11 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.11 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.11 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.11 active(isNatList(nil)) -> mark(tt) 1151.74/293.11 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.11 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.11 active(length(nil)) -> mark(0') 1151.74/293.11 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.11 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.11 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.11 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.11 active(U11(X)) -> U11(active(X)) 1151.74/293.11 active(U21(X)) -> U21(active(X)) 1151.74/293.11 active(U31(X)) -> U31(active(X)) 1151.74/293.11 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.11 active(U42(X)) -> U42(active(X)) 1151.74/293.11 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.11 active(U52(X)) -> U52(active(X)) 1151.74/293.11 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.11 active(U62(X)) -> U62(active(X)) 1151.74/293.11 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.11 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.11 active(s(X)) -> s(active(X)) 1151.74/293.11 active(length(X)) -> length(active(X)) 1151.74/293.11 active(U81(X)) -> U81(active(X)) 1151.74/293.11 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.11 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.11 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.11 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.11 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.11 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.11 U11(mark(X)) -> mark(U11(X)) 1151.74/293.11 U21(mark(X)) -> mark(U21(X)) 1151.74/293.11 U31(mark(X)) -> mark(U31(X)) 1151.74/293.11 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.11 U42(mark(X)) -> mark(U42(X)) 1151.74/293.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.11 U52(mark(X)) -> mark(U52(X)) 1151.74/293.11 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.11 U62(mark(X)) -> mark(U62(X)) 1151.74/293.11 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.11 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.11 s(mark(X)) -> mark(s(X)) 1151.74/293.11 length(mark(X)) -> mark(length(X)) 1151.74/293.11 U81(mark(X)) -> mark(U81(X)) 1151.74/293.11 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.11 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.11 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.11 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.11 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.11 proper(zeros) -> ok(zeros) 1151.74/293.11 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.11 proper(0') -> ok(0') 1151.74/293.11 proper(U11(X)) -> U11(proper(X)) 1151.74/293.11 proper(tt) -> ok(tt) 1151.74/293.11 proper(U21(X)) -> U21(proper(X)) 1151.74/293.11 proper(U31(X)) -> U31(proper(X)) 1151.74/293.11 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.11 proper(U42(X)) -> U42(proper(X)) 1151.74/293.11 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.11 proper(U52(X)) -> U52(proper(X)) 1151.74/293.11 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.11 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.11 proper(U62(X)) -> U62(proper(X)) 1151.74/293.11 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.11 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.11 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.11 proper(s(X)) -> s(proper(X)) 1151.74/293.11 proper(length(X)) -> length(proper(X)) 1151.74/293.11 proper(U81(X)) -> U81(proper(X)) 1151.74/293.11 proper(nil) -> ok(nil) 1151.74/293.11 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.11 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.11 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.11 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.11 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.11 U11(ok(X)) -> ok(U11(X)) 1151.74/293.11 U21(ok(X)) -> ok(U21(X)) 1151.74/293.11 U31(ok(X)) -> ok(U31(X)) 1151.74/293.11 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.11 U42(ok(X)) -> ok(U42(X)) 1151.74/293.11 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.11 U52(ok(X)) -> ok(U52(X)) 1151.74/293.11 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.11 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.11 U62(ok(X)) -> ok(U62(X)) 1151.74/293.11 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.11 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.11 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.11 s(ok(X)) -> ok(s(X)) 1151.74/293.11 length(ok(X)) -> ok(length(X)) 1151.74/293.11 U81(ok(X)) -> ok(U81(X)) 1151.74/293.11 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.11 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.11 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.11 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.11 top(mark(X)) -> top(proper(X)) 1151.74/293.11 top(ok(X)) -> top(active(X)) 1151.74/293.11 1151.74/293.11 Types: 1151.74/293.11 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.11 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.11 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.11 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.11 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.11 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.11 hole_top2_0 :: top 1151.74/293.11 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.11 1151.74/293.11 1151.74/293.11 Lemmas: 1151.74/293.11 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.74/293.11 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.74/293.11 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.74/293.11 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.74/293.11 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.74/293.11 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0))) -> *4_0, rt in Omega(n7812_0) 1151.74/293.11 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9039_0))) -> *4_0, rt in Omega(n9039_0) 1151.74/293.11 U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n10367_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n10367_0) 1151.74/293.11 U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18768_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n18768_0) 1151.74/293.11 1151.74/293.11 1151.74/293.11 Generator Equations: 1151.74/293.11 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.74/293.11 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.74/293.11 1151.74/293.11 1151.74/293.11 The following defined symbols remain to be analysed: 1151.74/293.11 take, active, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top 1151.74/293.11 1151.74/293.11 They will be analysed ascendingly in the following order: 1151.74/293.11 take < active 1151.74/293.11 U11 < active 1151.74/293.11 U21 < active 1151.74/293.11 U31 < active 1151.74/293.11 U41 < active 1151.74/293.11 U51 < active 1151.74/293.11 U61 < active 1151.74/293.11 U71 < active 1151.74/293.11 U81 < active 1151.74/293.11 U91 < active 1151.74/293.11 active < top 1151.74/293.11 take < proper 1151.74/293.11 U11 < proper 1151.74/293.11 U21 < proper 1151.74/293.11 U31 < proper 1151.74/293.11 U41 < proper 1151.74/293.11 U51 < proper 1151.74/293.11 U61 < proper 1151.74/293.11 U71 < proper 1151.74/293.11 U81 < proper 1151.74/293.11 U91 < proper 1151.74/293.11 proper < top 1151.74/293.11 1151.74/293.11 ---------------------------------------- 1151.74/293.11 1151.74/293.11 (29) RewriteLemmaProof (LOWER BOUND(ID)) 1151.74/293.11 Proved the following rewrite lemma: 1151.74/293.11 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n28179_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n28179_0) 1151.74/293.11 1151.74/293.11 Induction Base: 1151.74/293.11 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) 1151.74/293.11 1151.74/293.11 Induction Step: 1151.74/293.11 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n28179_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) 1151.74/293.11 mark(take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n28179_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH 1151.74/293.11 mark(*4_0) 1151.74/293.11 1151.74/293.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.74/293.11 ---------------------------------------- 1151.74/293.11 1151.74/293.11 (30) 1151.74/293.11 Obligation: 1151.74/293.11 TRS: 1151.74/293.11 Rules: 1151.74/293.11 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.11 active(U11(tt)) -> mark(tt) 1151.74/293.11 active(U21(tt)) -> mark(tt) 1151.74/293.11 active(U31(tt)) -> mark(tt) 1151.74/293.11 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.11 active(U42(tt)) -> mark(tt) 1151.74/293.11 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.11 active(U52(tt)) -> mark(tt) 1151.74/293.11 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.11 active(U62(tt)) -> mark(tt) 1151.74/293.11 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.11 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.11 active(U81(tt)) -> mark(nil) 1151.74/293.11 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.11 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.11 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.11 active(isNat(0')) -> mark(tt) 1151.74/293.11 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.11 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.11 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.11 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.11 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.11 active(isNatList(nil)) -> mark(tt) 1151.74/293.11 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.11 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.11 active(length(nil)) -> mark(0') 1151.74/293.11 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.11 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.11 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.11 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.11 active(U11(X)) -> U11(active(X)) 1151.74/293.11 active(U21(X)) -> U21(active(X)) 1151.74/293.11 active(U31(X)) -> U31(active(X)) 1151.74/293.11 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.11 active(U42(X)) -> U42(active(X)) 1151.74/293.11 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.11 active(U52(X)) -> U52(active(X)) 1151.74/293.11 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.11 active(U62(X)) -> U62(active(X)) 1151.74/293.11 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.11 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.11 active(s(X)) -> s(active(X)) 1151.74/293.11 active(length(X)) -> length(active(X)) 1151.74/293.11 active(U81(X)) -> U81(active(X)) 1151.74/293.11 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.11 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.11 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.11 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.11 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.11 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.11 U11(mark(X)) -> mark(U11(X)) 1151.74/293.11 U21(mark(X)) -> mark(U21(X)) 1151.74/293.11 U31(mark(X)) -> mark(U31(X)) 1151.74/293.11 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.11 U42(mark(X)) -> mark(U42(X)) 1151.74/293.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.11 U52(mark(X)) -> mark(U52(X)) 1151.74/293.11 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.11 U62(mark(X)) -> mark(U62(X)) 1151.74/293.11 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.11 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.11 s(mark(X)) -> mark(s(X)) 1151.74/293.11 length(mark(X)) -> mark(length(X)) 1151.74/293.11 U81(mark(X)) -> mark(U81(X)) 1151.74/293.11 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.11 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.11 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.11 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.11 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.11 proper(zeros) -> ok(zeros) 1151.74/293.11 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.11 proper(0') -> ok(0') 1151.74/293.11 proper(U11(X)) -> U11(proper(X)) 1151.74/293.11 proper(tt) -> ok(tt) 1151.74/293.11 proper(U21(X)) -> U21(proper(X)) 1151.74/293.11 proper(U31(X)) -> U31(proper(X)) 1151.74/293.11 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.11 proper(U42(X)) -> U42(proper(X)) 1151.74/293.11 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.11 proper(U52(X)) -> U52(proper(X)) 1151.74/293.11 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.11 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.11 proper(U62(X)) -> U62(proper(X)) 1151.74/293.11 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.11 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.11 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.11 proper(s(X)) -> s(proper(X)) 1151.74/293.11 proper(length(X)) -> length(proper(X)) 1151.74/293.11 proper(U81(X)) -> U81(proper(X)) 1151.74/293.11 proper(nil) -> ok(nil) 1151.74/293.11 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.11 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.11 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.11 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.11 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.11 U11(ok(X)) -> ok(U11(X)) 1151.74/293.11 U21(ok(X)) -> ok(U21(X)) 1151.74/293.11 U31(ok(X)) -> ok(U31(X)) 1151.74/293.11 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.11 U42(ok(X)) -> ok(U42(X)) 1151.74/293.11 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.11 U52(ok(X)) -> ok(U52(X)) 1151.74/293.11 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.11 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.11 U62(ok(X)) -> ok(U62(X)) 1151.74/293.11 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.11 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.11 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.11 s(ok(X)) -> ok(s(X)) 1151.74/293.11 length(ok(X)) -> ok(length(X)) 1151.74/293.11 U81(ok(X)) -> ok(U81(X)) 1151.74/293.11 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.11 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.11 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.11 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.11 top(mark(X)) -> top(proper(X)) 1151.74/293.11 top(ok(X)) -> top(active(X)) 1151.74/293.11 1151.74/293.11 Types: 1151.74/293.11 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.11 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.11 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.11 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.11 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.11 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.11 hole_top2_0 :: top 1151.74/293.11 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.11 1151.74/293.11 1151.74/293.11 Lemmas: 1151.74/293.11 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.74/293.11 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.74/293.11 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.74/293.11 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.74/293.11 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.74/293.11 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0))) -> *4_0, rt in Omega(n7812_0) 1151.74/293.11 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9039_0))) -> *4_0, rt in Omega(n9039_0) 1151.74/293.11 U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n10367_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n10367_0) 1151.74/293.11 U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18768_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n18768_0) 1151.74/293.11 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n28179_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n28179_0) 1151.74/293.11 1151.74/293.11 1151.74/293.11 Generator Equations: 1151.74/293.11 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.74/293.11 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.74/293.11 1151.74/293.11 1151.74/293.11 The following defined symbols remain to be analysed: 1151.74/293.11 U11, active, U21, U31, U41, U51, U61, U71, U81, U91, proper, top 1151.74/293.11 1151.74/293.11 They will be analysed ascendingly in the following order: 1151.74/293.11 U11 < active 1151.74/293.11 U21 < active 1151.74/293.11 U31 < active 1151.74/293.11 U41 < active 1151.74/293.11 U51 < active 1151.74/293.11 U61 < active 1151.74/293.11 U71 < active 1151.74/293.11 U81 < active 1151.74/293.11 U91 < active 1151.74/293.11 active < top 1151.74/293.11 U11 < proper 1151.74/293.11 U21 < proper 1151.74/293.11 U31 < proper 1151.74/293.11 U41 < proper 1151.74/293.11 U51 < proper 1151.74/293.11 U61 < proper 1151.74/293.11 U71 < proper 1151.74/293.11 U81 < proper 1151.74/293.11 U91 < proper 1151.74/293.11 proper < top 1151.74/293.11 1151.74/293.11 ---------------------------------------- 1151.74/293.11 1151.74/293.11 (31) RewriteLemmaProof (LOWER BOUND(ID)) 1151.74/293.11 Proved the following rewrite lemma: 1151.74/293.11 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n33135_0))) -> *4_0, rt in Omega(n33135_0) 1151.74/293.11 1151.74/293.11 Induction Base: 1151.74/293.11 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) 1151.74/293.11 1151.74/293.11 Induction Step: 1151.74/293.11 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n33135_0, 1)))) ->_R^Omega(1) 1151.74/293.11 mark(U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n33135_0)))) ->_IH 1151.74/293.11 mark(*4_0) 1151.74/293.11 1151.74/293.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.74/293.11 ---------------------------------------- 1151.74/293.11 1151.74/293.11 (32) 1151.74/293.11 Obligation: 1151.74/293.11 TRS: 1151.74/293.11 Rules: 1151.74/293.11 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.11 active(U11(tt)) -> mark(tt) 1151.74/293.11 active(U21(tt)) -> mark(tt) 1151.74/293.11 active(U31(tt)) -> mark(tt) 1151.74/293.11 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.11 active(U42(tt)) -> mark(tt) 1151.74/293.11 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.11 active(U52(tt)) -> mark(tt) 1151.74/293.11 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.11 active(U62(tt)) -> mark(tt) 1151.74/293.11 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.11 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.11 active(U81(tt)) -> mark(nil) 1151.74/293.11 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.11 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.11 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.11 active(isNat(0')) -> mark(tt) 1151.74/293.11 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.11 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.11 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.11 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.11 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.11 active(isNatList(nil)) -> mark(tt) 1151.74/293.11 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.11 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.11 active(length(nil)) -> mark(0') 1151.74/293.11 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.11 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.11 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.11 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.11 active(U11(X)) -> U11(active(X)) 1151.74/293.11 active(U21(X)) -> U21(active(X)) 1151.74/293.11 active(U31(X)) -> U31(active(X)) 1151.74/293.11 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.11 active(U42(X)) -> U42(active(X)) 1151.74/293.11 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.11 active(U52(X)) -> U52(active(X)) 1151.74/293.11 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.11 active(U62(X)) -> U62(active(X)) 1151.74/293.11 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.11 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.11 active(s(X)) -> s(active(X)) 1151.74/293.11 active(length(X)) -> length(active(X)) 1151.74/293.11 active(U81(X)) -> U81(active(X)) 1151.74/293.11 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.11 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.11 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.11 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.11 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.11 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.11 U11(mark(X)) -> mark(U11(X)) 1151.74/293.11 U21(mark(X)) -> mark(U21(X)) 1151.74/293.11 U31(mark(X)) -> mark(U31(X)) 1151.74/293.11 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.11 U42(mark(X)) -> mark(U42(X)) 1151.74/293.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.11 U52(mark(X)) -> mark(U52(X)) 1151.74/293.11 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.11 U62(mark(X)) -> mark(U62(X)) 1151.74/293.11 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.11 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.11 s(mark(X)) -> mark(s(X)) 1151.74/293.11 length(mark(X)) -> mark(length(X)) 1151.74/293.11 U81(mark(X)) -> mark(U81(X)) 1151.74/293.11 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.11 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.11 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.11 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.11 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.11 proper(zeros) -> ok(zeros) 1151.74/293.11 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.11 proper(0') -> ok(0') 1151.74/293.11 proper(U11(X)) -> U11(proper(X)) 1151.74/293.11 proper(tt) -> ok(tt) 1151.74/293.11 proper(U21(X)) -> U21(proper(X)) 1151.74/293.11 proper(U31(X)) -> U31(proper(X)) 1151.74/293.11 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.11 proper(U42(X)) -> U42(proper(X)) 1151.74/293.11 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.11 proper(U52(X)) -> U52(proper(X)) 1151.74/293.11 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.11 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.11 proper(U62(X)) -> U62(proper(X)) 1151.74/293.11 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.11 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.11 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.11 proper(s(X)) -> s(proper(X)) 1151.74/293.11 proper(length(X)) -> length(proper(X)) 1151.74/293.11 proper(U81(X)) -> U81(proper(X)) 1151.74/293.11 proper(nil) -> ok(nil) 1151.74/293.11 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.11 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.11 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.11 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.11 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.11 U11(ok(X)) -> ok(U11(X)) 1151.74/293.11 U21(ok(X)) -> ok(U21(X)) 1151.74/293.11 U31(ok(X)) -> ok(U31(X)) 1151.74/293.11 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.11 U42(ok(X)) -> ok(U42(X)) 1151.74/293.11 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.11 U52(ok(X)) -> ok(U52(X)) 1151.74/293.11 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.11 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.11 U62(ok(X)) -> ok(U62(X)) 1151.74/293.11 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.11 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.11 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.11 s(ok(X)) -> ok(s(X)) 1151.74/293.11 length(ok(X)) -> ok(length(X)) 1151.74/293.11 U81(ok(X)) -> ok(U81(X)) 1151.74/293.11 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.11 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.11 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.11 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.11 top(mark(X)) -> top(proper(X)) 1151.74/293.11 top(ok(X)) -> top(active(X)) 1151.74/293.11 1151.74/293.11 Types: 1151.74/293.11 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.11 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.11 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.11 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.11 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.11 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.11 hole_top2_0 :: top 1151.74/293.11 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.11 1151.74/293.11 1151.74/293.11 Lemmas: 1151.74/293.11 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.74/293.11 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.74/293.11 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.74/293.11 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.74/293.11 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.74/293.11 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0))) -> *4_0, rt in Omega(n7812_0) 1151.74/293.11 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9039_0))) -> *4_0, rt in Omega(n9039_0) 1151.74/293.11 U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n10367_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n10367_0) 1151.74/293.11 U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18768_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n18768_0) 1151.74/293.11 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n28179_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n28179_0) 1151.74/293.11 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n33135_0))) -> *4_0, rt in Omega(n33135_0) 1151.74/293.11 1151.74/293.11 1151.74/293.11 Generator Equations: 1151.74/293.11 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.74/293.11 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.74/293.11 1151.74/293.11 1151.74/293.11 The following defined symbols remain to be analysed: 1151.74/293.11 U21, active, U31, U41, U51, U61, U71, U81, U91, proper, top 1151.74/293.11 1151.74/293.11 They will be analysed ascendingly in the following order: 1151.74/293.11 U21 < active 1151.74/293.11 U31 < active 1151.74/293.11 U41 < active 1151.74/293.11 U51 < active 1151.74/293.11 U61 < active 1151.74/293.11 U71 < active 1151.74/293.11 U81 < active 1151.74/293.11 U91 < active 1151.74/293.11 active < top 1151.74/293.11 U21 < proper 1151.74/293.11 U31 < proper 1151.74/293.11 U41 < proper 1151.74/293.11 U51 < proper 1151.74/293.11 U61 < proper 1151.74/293.11 U71 < proper 1151.74/293.11 U81 < proper 1151.74/293.11 U91 < proper 1151.74/293.11 proper < top 1151.74/293.11 1151.74/293.11 ---------------------------------------- 1151.74/293.11 1151.74/293.11 (33) RewriteLemmaProof (LOWER BOUND(ID)) 1151.74/293.11 Proved the following rewrite lemma: 1151.74/293.11 U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35210_0))) -> *4_0, rt in Omega(n35210_0) 1151.74/293.11 1151.74/293.11 Induction Base: 1151.74/293.11 U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) 1151.74/293.11 1151.74/293.11 Induction Step: 1151.74/293.11 U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n35210_0, 1)))) ->_R^Omega(1) 1151.74/293.11 mark(U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35210_0)))) ->_IH 1151.74/293.11 mark(*4_0) 1151.74/293.11 1151.74/293.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.74/293.11 ---------------------------------------- 1151.74/293.11 1151.74/293.11 (34) 1151.74/293.11 Obligation: 1151.74/293.11 TRS: 1151.74/293.11 Rules: 1151.74/293.11 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.11 active(U11(tt)) -> mark(tt) 1151.74/293.11 active(U21(tt)) -> mark(tt) 1151.74/293.11 active(U31(tt)) -> mark(tt) 1151.74/293.11 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.11 active(U42(tt)) -> mark(tt) 1151.74/293.11 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.11 active(U52(tt)) -> mark(tt) 1151.74/293.11 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.11 active(U62(tt)) -> mark(tt) 1151.74/293.11 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.11 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.11 active(U81(tt)) -> mark(nil) 1151.74/293.11 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.11 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.11 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.11 active(isNat(0')) -> mark(tt) 1151.74/293.11 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.11 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.11 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.11 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.11 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.11 active(isNatList(nil)) -> mark(tt) 1151.74/293.11 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.11 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.11 active(length(nil)) -> mark(0') 1151.74/293.11 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.11 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.11 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.11 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.11 active(U11(X)) -> U11(active(X)) 1151.74/293.11 active(U21(X)) -> U21(active(X)) 1151.74/293.11 active(U31(X)) -> U31(active(X)) 1151.74/293.11 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.11 active(U42(X)) -> U42(active(X)) 1151.74/293.11 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.11 active(U52(X)) -> U52(active(X)) 1151.74/293.11 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.11 active(U62(X)) -> U62(active(X)) 1151.74/293.11 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.11 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.11 active(s(X)) -> s(active(X)) 1151.74/293.11 active(length(X)) -> length(active(X)) 1151.74/293.11 active(U81(X)) -> U81(active(X)) 1151.74/293.11 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.11 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.11 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.11 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.11 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.11 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.11 U11(mark(X)) -> mark(U11(X)) 1151.74/293.11 U21(mark(X)) -> mark(U21(X)) 1151.74/293.11 U31(mark(X)) -> mark(U31(X)) 1151.74/293.11 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.11 U42(mark(X)) -> mark(U42(X)) 1151.74/293.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.11 U52(mark(X)) -> mark(U52(X)) 1151.74/293.11 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.11 U62(mark(X)) -> mark(U62(X)) 1151.74/293.11 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.11 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.11 s(mark(X)) -> mark(s(X)) 1151.74/293.11 length(mark(X)) -> mark(length(X)) 1151.74/293.11 U81(mark(X)) -> mark(U81(X)) 1151.74/293.11 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.11 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.11 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.11 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.11 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.11 proper(zeros) -> ok(zeros) 1151.74/293.11 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.11 proper(0') -> ok(0') 1151.74/293.11 proper(U11(X)) -> U11(proper(X)) 1151.74/293.11 proper(tt) -> ok(tt) 1151.74/293.11 proper(U21(X)) -> U21(proper(X)) 1151.74/293.11 proper(U31(X)) -> U31(proper(X)) 1151.74/293.11 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.11 proper(U42(X)) -> U42(proper(X)) 1151.74/293.11 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.11 proper(U52(X)) -> U52(proper(X)) 1151.74/293.11 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.11 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.11 proper(U62(X)) -> U62(proper(X)) 1151.74/293.11 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.11 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.11 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.11 proper(s(X)) -> s(proper(X)) 1151.74/293.11 proper(length(X)) -> length(proper(X)) 1151.74/293.11 proper(U81(X)) -> U81(proper(X)) 1151.74/293.11 proper(nil) -> ok(nil) 1151.74/293.11 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.11 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.11 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.11 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.11 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.11 U11(ok(X)) -> ok(U11(X)) 1151.74/293.11 U21(ok(X)) -> ok(U21(X)) 1151.74/293.11 U31(ok(X)) -> ok(U31(X)) 1151.74/293.11 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.11 U42(ok(X)) -> ok(U42(X)) 1151.74/293.11 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.11 U52(ok(X)) -> ok(U52(X)) 1151.74/293.11 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.11 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.11 U62(ok(X)) -> ok(U62(X)) 1151.74/293.11 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.11 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.11 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.11 s(ok(X)) -> ok(s(X)) 1151.74/293.11 length(ok(X)) -> ok(length(X)) 1151.74/293.11 U81(ok(X)) -> ok(U81(X)) 1151.74/293.11 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.11 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.11 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.11 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.11 top(mark(X)) -> top(proper(X)) 1151.74/293.11 top(ok(X)) -> top(active(X)) 1151.74/293.11 1151.74/293.11 Types: 1151.74/293.11 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.11 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.11 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.11 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.11 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.11 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.11 hole_top2_0 :: top 1151.74/293.11 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.11 1151.74/293.11 1151.74/293.11 Lemmas: 1151.74/293.11 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.74/293.11 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.74/293.11 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.74/293.11 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.74/293.11 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.74/293.11 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0))) -> *4_0, rt in Omega(n7812_0) 1151.74/293.11 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9039_0))) -> *4_0, rt in Omega(n9039_0) 1151.74/293.11 U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n10367_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n10367_0) 1151.74/293.11 U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18768_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n18768_0) 1151.74/293.11 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n28179_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n28179_0) 1151.74/293.11 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n33135_0))) -> *4_0, rt in Omega(n33135_0) 1151.74/293.11 U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35210_0))) -> *4_0, rt in Omega(n35210_0) 1151.74/293.11 1151.74/293.11 1151.74/293.11 Generator Equations: 1151.74/293.11 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.74/293.11 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.74/293.11 1151.74/293.11 1151.74/293.11 The following defined symbols remain to be analysed: 1151.74/293.11 U31, active, U41, U51, U61, U71, U81, U91, proper, top 1151.74/293.11 1151.74/293.11 They will be analysed ascendingly in the following order: 1151.74/293.11 U31 < active 1151.74/293.11 U41 < active 1151.74/293.11 U51 < active 1151.74/293.11 U61 < active 1151.74/293.11 U71 < active 1151.74/293.11 U81 < active 1151.74/293.11 U91 < active 1151.74/293.11 active < top 1151.74/293.11 U31 < proper 1151.74/293.11 U41 < proper 1151.74/293.11 U51 < proper 1151.74/293.11 U61 < proper 1151.74/293.11 U71 < proper 1151.74/293.11 U81 < proper 1151.74/293.11 U91 < proper 1151.74/293.11 proper < top 1151.74/293.11 1151.74/293.11 ---------------------------------------- 1151.74/293.11 1151.74/293.11 (35) RewriteLemmaProof (LOWER BOUND(ID)) 1151.74/293.11 Proved the following rewrite lemma: 1151.74/293.11 U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n37386_0))) -> *4_0, rt in Omega(n37386_0) 1151.74/293.11 1151.74/293.11 Induction Base: 1151.74/293.11 U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) 1151.74/293.11 1151.74/293.11 Induction Step: 1151.74/293.11 U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n37386_0, 1)))) ->_R^Omega(1) 1151.74/293.11 mark(U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n37386_0)))) ->_IH 1151.74/293.11 mark(*4_0) 1151.74/293.11 1151.74/293.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.74/293.11 ---------------------------------------- 1151.74/293.11 1151.74/293.11 (36) 1151.74/293.11 Obligation: 1151.74/293.11 TRS: 1151.74/293.11 Rules: 1151.74/293.11 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.11 active(U11(tt)) -> mark(tt) 1151.74/293.11 active(U21(tt)) -> mark(tt) 1151.74/293.11 active(U31(tt)) -> mark(tt) 1151.74/293.11 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.11 active(U42(tt)) -> mark(tt) 1151.74/293.11 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.11 active(U52(tt)) -> mark(tt) 1151.74/293.11 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.11 active(U62(tt)) -> mark(tt) 1151.74/293.11 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.11 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.11 active(U81(tt)) -> mark(nil) 1151.74/293.11 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.11 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.11 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.11 active(isNat(0')) -> mark(tt) 1151.74/293.11 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.11 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.11 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.11 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.11 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.11 active(isNatList(nil)) -> mark(tt) 1151.74/293.11 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.11 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.11 active(length(nil)) -> mark(0') 1151.74/293.11 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.11 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.11 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.11 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.11 active(U11(X)) -> U11(active(X)) 1151.74/293.11 active(U21(X)) -> U21(active(X)) 1151.74/293.11 active(U31(X)) -> U31(active(X)) 1151.74/293.11 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.11 active(U42(X)) -> U42(active(X)) 1151.74/293.11 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.11 active(U52(X)) -> U52(active(X)) 1151.74/293.11 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.11 active(U62(X)) -> U62(active(X)) 1151.74/293.11 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.11 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.11 active(s(X)) -> s(active(X)) 1151.74/293.11 active(length(X)) -> length(active(X)) 1151.74/293.11 active(U81(X)) -> U81(active(X)) 1151.74/293.11 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.11 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.11 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.11 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.11 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.11 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.11 U11(mark(X)) -> mark(U11(X)) 1151.74/293.11 U21(mark(X)) -> mark(U21(X)) 1151.74/293.11 U31(mark(X)) -> mark(U31(X)) 1151.74/293.11 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.11 U42(mark(X)) -> mark(U42(X)) 1151.74/293.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.11 U52(mark(X)) -> mark(U52(X)) 1151.74/293.11 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.11 U62(mark(X)) -> mark(U62(X)) 1151.74/293.11 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.11 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.11 s(mark(X)) -> mark(s(X)) 1151.74/293.11 length(mark(X)) -> mark(length(X)) 1151.74/293.11 U81(mark(X)) -> mark(U81(X)) 1151.74/293.11 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.11 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.11 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.11 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.11 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.11 proper(zeros) -> ok(zeros) 1151.74/293.11 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.11 proper(0') -> ok(0') 1151.74/293.11 proper(U11(X)) -> U11(proper(X)) 1151.74/293.11 proper(tt) -> ok(tt) 1151.74/293.11 proper(U21(X)) -> U21(proper(X)) 1151.74/293.11 proper(U31(X)) -> U31(proper(X)) 1151.74/293.11 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.11 proper(U42(X)) -> U42(proper(X)) 1151.74/293.11 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.11 proper(U52(X)) -> U52(proper(X)) 1151.74/293.11 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.11 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.74/293.11 proper(U62(X)) -> U62(proper(X)) 1151.74/293.11 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.74/293.11 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.74/293.11 proper(isNat(X)) -> isNat(proper(X)) 1151.74/293.11 proper(s(X)) -> s(proper(X)) 1151.74/293.11 proper(length(X)) -> length(proper(X)) 1151.74/293.11 proper(U81(X)) -> U81(proper(X)) 1151.74/293.11 proper(nil) -> ok(nil) 1151.74/293.11 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.11 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.11 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.74/293.11 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.74/293.11 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.74/293.11 U11(ok(X)) -> ok(U11(X)) 1151.74/293.11 U21(ok(X)) -> ok(U21(X)) 1151.74/293.11 U31(ok(X)) -> ok(U31(X)) 1151.74/293.11 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.74/293.11 U42(ok(X)) -> ok(U42(X)) 1151.74/293.11 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.74/293.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.74/293.11 U52(ok(X)) -> ok(U52(X)) 1151.74/293.11 isNatList(ok(X)) -> ok(isNatList(X)) 1151.74/293.11 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.74/293.11 U62(ok(X)) -> ok(U62(X)) 1151.74/293.11 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.74/293.11 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.74/293.11 isNat(ok(X)) -> ok(isNat(X)) 1151.74/293.11 s(ok(X)) -> ok(s(X)) 1151.74/293.11 length(ok(X)) -> ok(length(X)) 1151.74/293.11 U81(ok(X)) -> ok(U81(X)) 1151.74/293.11 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.74/293.11 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.74/293.11 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.74/293.11 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.74/293.11 top(mark(X)) -> top(proper(X)) 1151.74/293.11 top(ok(X)) -> top(active(X)) 1151.74/293.11 1151.74/293.11 Types: 1151.74/293.11 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 zeros :: zeros:0':mark:tt:nil:ok 1151.74/293.11 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 0' :: zeros:0':mark:tt:nil:ok 1151.74/293.11 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 tt :: zeros:0':mark:tt:nil:ok 1151.74/293.11 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 nil :: zeros:0':mark:tt:nil:ok 1151.74/293.11 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.74/293.11 top :: zeros:0':mark:tt:nil:ok -> top 1151.74/293.11 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.74/293.11 hole_top2_0 :: top 1151.74/293.11 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.74/293.11 1151.74/293.11 1151.74/293.11 Lemmas: 1151.74/293.11 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.74/293.11 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.74/293.11 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.74/293.11 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.74/293.11 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.74/293.11 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0))) -> *4_0, rt in Omega(n7812_0) 1151.74/293.11 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9039_0))) -> *4_0, rt in Omega(n9039_0) 1151.74/293.11 U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n10367_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n10367_0) 1151.74/293.11 U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18768_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n18768_0) 1151.74/293.11 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n28179_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n28179_0) 1151.74/293.11 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n33135_0))) -> *4_0, rt in Omega(n33135_0) 1151.74/293.11 U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35210_0))) -> *4_0, rt in Omega(n35210_0) 1151.74/293.11 U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n37386_0))) -> *4_0, rt in Omega(n37386_0) 1151.74/293.11 1151.74/293.11 1151.74/293.11 Generator Equations: 1151.74/293.11 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.74/293.11 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.74/293.11 1151.74/293.11 1151.74/293.11 The following defined symbols remain to be analysed: 1151.74/293.11 U41, active, U51, U61, U71, U81, U91, proper, top 1151.74/293.11 1151.74/293.11 They will be analysed ascendingly in the following order: 1151.74/293.11 U41 < active 1151.74/293.11 U51 < active 1151.74/293.11 U61 < active 1151.74/293.11 U71 < active 1151.74/293.11 U81 < active 1151.74/293.11 U91 < active 1151.74/293.11 active < top 1151.74/293.11 U41 < proper 1151.74/293.11 U51 < proper 1151.74/293.11 U61 < proper 1151.74/293.11 U71 < proper 1151.74/293.11 U81 < proper 1151.74/293.11 U91 < proper 1151.74/293.11 proper < top 1151.74/293.11 1151.74/293.11 ---------------------------------------- 1151.74/293.11 1151.74/293.11 (37) RewriteLemmaProof (LOWER BOUND(ID)) 1151.74/293.11 Proved the following rewrite lemma: 1151.74/293.11 U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n39663_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n39663_0) 1151.74/293.11 1151.74/293.11 Induction Base: 1151.74/293.11 U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) 1151.74/293.11 1151.74/293.11 Induction Step: 1151.74/293.11 U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n39663_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) 1151.74/293.11 mark(U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n39663_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH 1151.74/293.11 mark(*4_0) 1151.74/293.11 1151.74/293.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.74/293.11 ---------------------------------------- 1151.74/293.11 1151.74/293.11 (38) 1151.74/293.11 Obligation: 1151.74/293.11 TRS: 1151.74/293.11 Rules: 1151.74/293.11 active(zeros) -> mark(cons(0', zeros)) 1151.74/293.11 active(U11(tt)) -> mark(tt) 1151.74/293.11 active(U21(tt)) -> mark(tt) 1151.74/293.11 active(U31(tt)) -> mark(tt) 1151.74/293.11 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.74/293.11 active(U42(tt)) -> mark(tt) 1151.74/293.11 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.74/293.11 active(U52(tt)) -> mark(tt) 1151.74/293.11 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.74/293.11 active(U62(tt)) -> mark(tt) 1151.74/293.11 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.74/293.11 active(U72(tt, L)) -> mark(s(length(L))) 1151.74/293.11 active(U81(tt)) -> mark(nil) 1151.74/293.11 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.74/293.11 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.74/293.11 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.74/293.11 active(isNat(0')) -> mark(tt) 1151.74/293.11 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.74/293.11 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.74/293.11 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.74/293.11 active(isNatIList(zeros)) -> mark(tt) 1151.74/293.11 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.74/293.11 active(isNatList(nil)) -> mark(tt) 1151.74/293.11 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.74/293.11 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.74/293.11 active(length(nil)) -> mark(0') 1151.74/293.11 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.74/293.11 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.74/293.11 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.74/293.11 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.74/293.11 active(U11(X)) -> U11(active(X)) 1151.74/293.11 active(U21(X)) -> U21(active(X)) 1151.74/293.11 active(U31(X)) -> U31(active(X)) 1151.74/293.11 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.74/293.11 active(U42(X)) -> U42(active(X)) 1151.74/293.11 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.74/293.11 active(U52(X)) -> U52(active(X)) 1151.74/293.11 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.74/293.11 active(U62(X)) -> U62(active(X)) 1151.74/293.11 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.74/293.11 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.74/293.11 active(s(X)) -> s(active(X)) 1151.74/293.11 active(length(X)) -> length(active(X)) 1151.74/293.11 active(U81(X)) -> U81(active(X)) 1151.74/293.11 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.74/293.11 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.74/293.11 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.74/293.11 active(take(X1, X2)) -> take(active(X1), X2) 1151.74/293.11 active(take(X1, X2)) -> take(X1, active(X2)) 1151.74/293.11 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.74/293.11 U11(mark(X)) -> mark(U11(X)) 1151.74/293.11 U21(mark(X)) -> mark(U21(X)) 1151.74/293.11 U31(mark(X)) -> mark(U31(X)) 1151.74/293.11 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.74/293.11 U42(mark(X)) -> mark(U42(X)) 1151.74/293.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.74/293.11 U52(mark(X)) -> mark(U52(X)) 1151.74/293.11 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.74/293.11 U62(mark(X)) -> mark(U62(X)) 1151.74/293.11 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.74/293.11 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.74/293.11 s(mark(X)) -> mark(s(X)) 1151.74/293.11 length(mark(X)) -> mark(length(X)) 1151.74/293.11 U81(mark(X)) -> mark(U81(X)) 1151.74/293.11 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.74/293.11 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.74/293.11 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.74/293.11 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.74/293.11 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.74/293.11 proper(zeros) -> ok(zeros) 1151.74/293.11 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.74/293.11 proper(0') -> ok(0') 1151.74/293.11 proper(U11(X)) -> U11(proper(X)) 1151.74/293.11 proper(tt) -> ok(tt) 1151.74/293.11 proper(U21(X)) -> U21(proper(X)) 1151.74/293.11 proper(U31(X)) -> U31(proper(X)) 1151.74/293.11 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.74/293.11 proper(U42(X)) -> U42(proper(X)) 1151.74/293.11 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.74/293.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.74/293.11 proper(U52(X)) -> U52(proper(X)) 1151.74/293.11 proper(isNatList(X)) -> isNatList(proper(X)) 1151.74/293.11 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.89/293.12 proper(U62(X)) -> U62(proper(X)) 1151.89/293.12 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.89/293.12 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.89/293.12 proper(isNat(X)) -> isNat(proper(X)) 1151.89/293.12 proper(s(X)) -> s(proper(X)) 1151.89/293.12 proper(length(X)) -> length(proper(X)) 1151.89/293.12 proper(U81(X)) -> U81(proper(X)) 1151.89/293.12 proper(nil) -> ok(nil) 1151.89/293.12 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.89/293.12 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.89/293.12 U11(ok(X)) -> ok(U11(X)) 1151.89/293.12 U21(ok(X)) -> ok(U21(X)) 1151.89/293.12 U31(ok(X)) -> ok(U31(X)) 1151.89/293.12 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.89/293.12 U42(ok(X)) -> ok(U42(X)) 1151.89/293.12 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.89/293.12 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.89/293.12 U52(ok(X)) -> ok(U52(X)) 1151.89/293.12 isNatList(ok(X)) -> ok(isNatList(X)) 1151.89/293.12 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.89/293.12 U62(ok(X)) -> ok(U62(X)) 1151.89/293.12 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.89/293.12 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.89/293.12 isNat(ok(X)) -> ok(isNat(X)) 1151.89/293.12 s(ok(X)) -> ok(s(X)) 1151.89/293.12 length(ok(X)) -> ok(length(X)) 1151.89/293.12 U81(ok(X)) -> ok(U81(X)) 1151.89/293.12 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.89/293.12 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.89/293.12 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.89/293.12 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.89/293.12 top(mark(X)) -> top(proper(X)) 1151.89/293.12 top(ok(X)) -> top(active(X)) 1151.89/293.12 1151.89/293.12 Types: 1151.89/293.12 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 zeros :: zeros:0':mark:tt:nil:ok 1151.89/293.12 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 0' :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 tt :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 nil :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 top :: zeros:0':mark:tt:nil:ok -> top 1151.89/293.12 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.89/293.12 hole_top2_0 :: top 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.89/293.12 1151.89/293.12 1151.89/293.12 Lemmas: 1151.89/293.12 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.89/293.12 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.89/293.12 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.89/293.12 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.89/293.12 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.89/293.12 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0))) -> *4_0, rt in Omega(n7812_0) 1151.89/293.12 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9039_0))) -> *4_0, rt in Omega(n9039_0) 1151.89/293.12 U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n10367_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n10367_0) 1151.89/293.12 U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18768_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n18768_0) 1151.89/293.12 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n28179_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n28179_0) 1151.89/293.12 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n33135_0))) -> *4_0, rt in Omega(n33135_0) 1151.89/293.12 U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35210_0))) -> *4_0, rt in Omega(n35210_0) 1151.89/293.12 U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n37386_0))) -> *4_0, rt in Omega(n37386_0) 1151.89/293.12 U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n39663_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n39663_0) 1151.89/293.12 1151.89/293.12 1151.89/293.12 Generator Equations: 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.89/293.12 1151.89/293.12 1151.89/293.12 The following defined symbols remain to be analysed: 1151.89/293.12 U51, active, U61, U71, U81, U91, proper, top 1151.89/293.12 1151.89/293.12 They will be analysed ascendingly in the following order: 1151.89/293.12 U51 < active 1151.89/293.12 U61 < active 1151.89/293.12 U71 < active 1151.89/293.12 U81 < active 1151.89/293.12 U91 < active 1151.89/293.12 active < top 1151.89/293.12 U51 < proper 1151.89/293.12 U61 < proper 1151.89/293.12 U71 < proper 1151.89/293.12 U81 < proper 1151.89/293.12 U91 < proper 1151.89/293.12 proper < top 1151.89/293.12 1151.89/293.12 ---------------------------------------- 1151.89/293.12 1151.89/293.12 (39) RewriteLemmaProof (LOWER BOUND(ID)) 1151.89/293.12 Proved the following rewrite lemma: 1151.89/293.12 U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45350_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45350_0) 1151.89/293.12 1151.89/293.12 Induction Base: 1151.89/293.12 U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) 1151.89/293.12 1151.89/293.12 Induction Step: 1151.89/293.12 U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n45350_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) 1151.89/293.12 mark(U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45350_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH 1151.89/293.12 mark(*4_0) 1151.89/293.12 1151.89/293.12 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.89/293.12 ---------------------------------------- 1151.89/293.12 1151.89/293.12 (40) 1151.89/293.12 Obligation: 1151.89/293.12 TRS: 1151.89/293.12 Rules: 1151.89/293.12 active(zeros) -> mark(cons(0', zeros)) 1151.89/293.12 active(U11(tt)) -> mark(tt) 1151.89/293.12 active(U21(tt)) -> mark(tt) 1151.89/293.12 active(U31(tt)) -> mark(tt) 1151.89/293.12 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.89/293.12 active(U42(tt)) -> mark(tt) 1151.89/293.12 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.89/293.12 active(U52(tt)) -> mark(tt) 1151.89/293.12 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.89/293.12 active(U62(tt)) -> mark(tt) 1151.89/293.12 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.89/293.12 active(U72(tt, L)) -> mark(s(length(L))) 1151.89/293.12 active(U81(tt)) -> mark(nil) 1151.89/293.12 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.89/293.12 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.89/293.12 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.89/293.12 active(isNat(0')) -> mark(tt) 1151.89/293.12 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.89/293.12 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.89/293.12 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.89/293.12 active(isNatIList(zeros)) -> mark(tt) 1151.89/293.12 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.89/293.12 active(isNatList(nil)) -> mark(tt) 1151.89/293.12 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.89/293.12 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.89/293.12 active(length(nil)) -> mark(0') 1151.89/293.12 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.89/293.12 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.89/293.12 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.89/293.12 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.89/293.12 active(U11(X)) -> U11(active(X)) 1151.89/293.12 active(U21(X)) -> U21(active(X)) 1151.89/293.12 active(U31(X)) -> U31(active(X)) 1151.89/293.12 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.89/293.12 active(U42(X)) -> U42(active(X)) 1151.89/293.12 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.89/293.12 active(U52(X)) -> U52(active(X)) 1151.89/293.12 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.89/293.12 active(U62(X)) -> U62(active(X)) 1151.89/293.12 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.89/293.12 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.89/293.12 active(s(X)) -> s(active(X)) 1151.89/293.12 active(length(X)) -> length(active(X)) 1151.89/293.12 active(U81(X)) -> U81(active(X)) 1151.89/293.12 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.89/293.12 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.89/293.12 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.89/293.12 active(take(X1, X2)) -> take(active(X1), X2) 1151.89/293.12 active(take(X1, X2)) -> take(X1, active(X2)) 1151.89/293.12 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.89/293.12 U11(mark(X)) -> mark(U11(X)) 1151.89/293.12 U21(mark(X)) -> mark(U21(X)) 1151.89/293.12 U31(mark(X)) -> mark(U31(X)) 1151.89/293.12 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.89/293.12 U42(mark(X)) -> mark(U42(X)) 1151.89/293.12 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.89/293.12 U52(mark(X)) -> mark(U52(X)) 1151.89/293.12 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.89/293.12 U62(mark(X)) -> mark(U62(X)) 1151.89/293.12 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.89/293.12 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.89/293.12 s(mark(X)) -> mark(s(X)) 1151.89/293.12 length(mark(X)) -> mark(length(X)) 1151.89/293.12 U81(mark(X)) -> mark(U81(X)) 1151.89/293.12 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.89/293.12 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.89/293.12 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.89/293.12 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.89/293.12 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.89/293.12 proper(zeros) -> ok(zeros) 1151.89/293.12 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.89/293.12 proper(0') -> ok(0') 1151.89/293.12 proper(U11(X)) -> U11(proper(X)) 1151.89/293.12 proper(tt) -> ok(tt) 1151.89/293.12 proper(U21(X)) -> U21(proper(X)) 1151.89/293.12 proper(U31(X)) -> U31(proper(X)) 1151.89/293.12 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.89/293.12 proper(U42(X)) -> U42(proper(X)) 1151.89/293.12 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.89/293.12 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.89/293.12 proper(U52(X)) -> U52(proper(X)) 1151.89/293.12 proper(isNatList(X)) -> isNatList(proper(X)) 1151.89/293.12 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.89/293.12 proper(U62(X)) -> U62(proper(X)) 1151.89/293.12 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.89/293.12 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.89/293.12 proper(isNat(X)) -> isNat(proper(X)) 1151.89/293.12 proper(s(X)) -> s(proper(X)) 1151.89/293.12 proper(length(X)) -> length(proper(X)) 1151.89/293.12 proper(U81(X)) -> U81(proper(X)) 1151.89/293.12 proper(nil) -> ok(nil) 1151.89/293.12 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.89/293.12 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.89/293.12 U11(ok(X)) -> ok(U11(X)) 1151.89/293.12 U21(ok(X)) -> ok(U21(X)) 1151.89/293.12 U31(ok(X)) -> ok(U31(X)) 1151.89/293.12 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.89/293.12 U42(ok(X)) -> ok(U42(X)) 1151.89/293.12 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.89/293.12 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.89/293.12 U52(ok(X)) -> ok(U52(X)) 1151.89/293.12 isNatList(ok(X)) -> ok(isNatList(X)) 1151.89/293.12 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.89/293.12 U62(ok(X)) -> ok(U62(X)) 1151.89/293.12 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.89/293.12 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.89/293.12 isNat(ok(X)) -> ok(isNat(X)) 1151.89/293.12 s(ok(X)) -> ok(s(X)) 1151.89/293.12 length(ok(X)) -> ok(length(X)) 1151.89/293.12 U81(ok(X)) -> ok(U81(X)) 1151.89/293.12 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.89/293.12 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.89/293.12 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.89/293.12 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.89/293.12 top(mark(X)) -> top(proper(X)) 1151.89/293.12 top(ok(X)) -> top(active(X)) 1151.89/293.12 1151.89/293.12 Types: 1151.89/293.12 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 zeros :: zeros:0':mark:tt:nil:ok 1151.89/293.12 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 0' :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 tt :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 nil :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 top :: zeros:0':mark:tt:nil:ok -> top 1151.89/293.12 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.89/293.12 hole_top2_0 :: top 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.89/293.12 1151.89/293.12 1151.89/293.12 Lemmas: 1151.89/293.12 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.89/293.12 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.89/293.12 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.89/293.12 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.89/293.12 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.89/293.12 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0))) -> *4_0, rt in Omega(n7812_0) 1151.89/293.12 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9039_0))) -> *4_0, rt in Omega(n9039_0) 1151.89/293.12 U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n10367_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n10367_0) 1151.89/293.12 U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18768_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n18768_0) 1151.89/293.12 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n28179_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n28179_0) 1151.89/293.12 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n33135_0))) -> *4_0, rt in Omega(n33135_0) 1151.89/293.12 U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35210_0))) -> *4_0, rt in Omega(n35210_0) 1151.89/293.12 U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n37386_0))) -> *4_0, rt in Omega(n37386_0) 1151.89/293.12 U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n39663_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n39663_0) 1151.89/293.12 U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45350_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45350_0) 1151.89/293.12 1151.89/293.12 1151.89/293.12 Generator Equations: 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.89/293.12 1151.89/293.12 1151.89/293.12 The following defined symbols remain to be analysed: 1151.89/293.12 U61, active, U71, U81, U91, proper, top 1151.89/293.12 1151.89/293.12 They will be analysed ascendingly in the following order: 1151.89/293.12 U61 < active 1151.89/293.12 U71 < active 1151.89/293.12 U81 < active 1151.89/293.12 U91 < active 1151.89/293.12 active < top 1151.89/293.12 U61 < proper 1151.89/293.12 U71 < proper 1151.89/293.12 U81 < proper 1151.89/293.12 U91 < proper 1151.89/293.12 proper < top 1151.89/293.12 1151.89/293.12 ---------------------------------------- 1151.89/293.12 1151.89/293.12 (41) RewriteLemmaProof (LOWER BOUND(ID)) 1151.89/293.12 Proved the following rewrite lemma: 1151.89/293.12 U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51343_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n51343_0) 1151.89/293.12 1151.89/293.12 Induction Base: 1151.89/293.12 U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) 1151.89/293.12 1151.89/293.12 Induction Step: 1151.89/293.12 U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n51343_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) 1151.89/293.12 mark(U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51343_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH 1151.89/293.12 mark(*4_0) 1151.89/293.12 1151.89/293.12 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.89/293.12 ---------------------------------------- 1151.89/293.12 1151.89/293.12 (42) 1151.89/293.12 Obligation: 1151.89/293.12 TRS: 1151.89/293.12 Rules: 1151.89/293.12 active(zeros) -> mark(cons(0', zeros)) 1151.89/293.12 active(U11(tt)) -> mark(tt) 1151.89/293.12 active(U21(tt)) -> mark(tt) 1151.89/293.12 active(U31(tt)) -> mark(tt) 1151.89/293.12 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.89/293.12 active(U42(tt)) -> mark(tt) 1151.89/293.12 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.89/293.12 active(U52(tt)) -> mark(tt) 1151.89/293.12 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.89/293.12 active(U62(tt)) -> mark(tt) 1151.89/293.12 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.89/293.12 active(U72(tt, L)) -> mark(s(length(L))) 1151.89/293.12 active(U81(tt)) -> mark(nil) 1151.89/293.12 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.89/293.12 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.89/293.12 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.89/293.12 active(isNat(0')) -> mark(tt) 1151.89/293.12 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.89/293.12 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.89/293.12 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.89/293.12 active(isNatIList(zeros)) -> mark(tt) 1151.89/293.12 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.89/293.12 active(isNatList(nil)) -> mark(tt) 1151.89/293.12 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.89/293.12 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.89/293.12 active(length(nil)) -> mark(0') 1151.89/293.12 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.89/293.12 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.89/293.12 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.89/293.12 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.89/293.12 active(U11(X)) -> U11(active(X)) 1151.89/293.12 active(U21(X)) -> U21(active(X)) 1151.89/293.12 active(U31(X)) -> U31(active(X)) 1151.89/293.12 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.89/293.12 active(U42(X)) -> U42(active(X)) 1151.89/293.12 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.89/293.12 active(U52(X)) -> U52(active(X)) 1151.89/293.12 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.89/293.12 active(U62(X)) -> U62(active(X)) 1151.89/293.12 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.89/293.12 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.89/293.12 active(s(X)) -> s(active(X)) 1151.89/293.12 active(length(X)) -> length(active(X)) 1151.89/293.12 active(U81(X)) -> U81(active(X)) 1151.89/293.12 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.89/293.12 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.89/293.12 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.89/293.12 active(take(X1, X2)) -> take(active(X1), X2) 1151.89/293.12 active(take(X1, X2)) -> take(X1, active(X2)) 1151.89/293.12 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.89/293.12 U11(mark(X)) -> mark(U11(X)) 1151.89/293.12 U21(mark(X)) -> mark(U21(X)) 1151.89/293.12 U31(mark(X)) -> mark(U31(X)) 1151.89/293.12 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.89/293.12 U42(mark(X)) -> mark(U42(X)) 1151.89/293.12 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.89/293.12 U52(mark(X)) -> mark(U52(X)) 1151.89/293.12 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.89/293.12 U62(mark(X)) -> mark(U62(X)) 1151.89/293.12 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.89/293.12 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.89/293.12 s(mark(X)) -> mark(s(X)) 1151.89/293.12 length(mark(X)) -> mark(length(X)) 1151.89/293.12 U81(mark(X)) -> mark(U81(X)) 1151.89/293.12 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.89/293.12 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.89/293.12 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.89/293.12 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.89/293.12 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.89/293.12 proper(zeros) -> ok(zeros) 1151.89/293.12 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.89/293.12 proper(0') -> ok(0') 1151.89/293.12 proper(U11(X)) -> U11(proper(X)) 1151.89/293.12 proper(tt) -> ok(tt) 1151.89/293.12 proper(U21(X)) -> U21(proper(X)) 1151.89/293.12 proper(U31(X)) -> U31(proper(X)) 1151.89/293.12 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.89/293.12 proper(U42(X)) -> U42(proper(X)) 1151.89/293.12 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.89/293.12 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.89/293.12 proper(U52(X)) -> U52(proper(X)) 1151.89/293.12 proper(isNatList(X)) -> isNatList(proper(X)) 1151.89/293.12 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.89/293.12 proper(U62(X)) -> U62(proper(X)) 1151.89/293.12 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.89/293.12 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.89/293.12 proper(isNat(X)) -> isNat(proper(X)) 1151.89/293.12 proper(s(X)) -> s(proper(X)) 1151.89/293.12 proper(length(X)) -> length(proper(X)) 1151.89/293.12 proper(U81(X)) -> U81(proper(X)) 1151.89/293.12 proper(nil) -> ok(nil) 1151.89/293.12 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.89/293.12 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.89/293.12 U11(ok(X)) -> ok(U11(X)) 1151.89/293.12 U21(ok(X)) -> ok(U21(X)) 1151.89/293.12 U31(ok(X)) -> ok(U31(X)) 1151.89/293.12 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.89/293.12 U42(ok(X)) -> ok(U42(X)) 1151.89/293.12 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.89/293.12 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.89/293.12 U52(ok(X)) -> ok(U52(X)) 1151.89/293.12 isNatList(ok(X)) -> ok(isNatList(X)) 1151.89/293.12 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.89/293.12 U62(ok(X)) -> ok(U62(X)) 1151.89/293.12 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.89/293.12 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.89/293.12 isNat(ok(X)) -> ok(isNat(X)) 1151.89/293.12 s(ok(X)) -> ok(s(X)) 1151.89/293.12 length(ok(X)) -> ok(length(X)) 1151.89/293.12 U81(ok(X)) -> ok(U81(X)) 1151.89/293.12 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.89/293.12 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.89/293.12 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.89/293.12 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.89/293.12 top(mark(X)) -> top(proper(X)) 1151.89/293.12 top(ok(X)) -> top(active(X)) 1151.89/293.12 1151.89/293.12 Types: 1151.89/293.12 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 zeros :: zeros:0':mark:tt:nil:ok 1151.89/293.12 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 0' :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 tt :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 nil :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 top :: zeros:0':mark:tt:nil:ok -> top 1151.89/293.12 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.89/293.12 hole_top2_0 :: top 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.89/293.12 1151.89/293.12 1151.89/293.12 Lemmas: 1151.89/293.12 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.89/293.12 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.89/293.12 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.89/293.12 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.89/293.12 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.89/293.12 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0))) -> *4_0, rt in Omega(n7812_0) 1151.89/293.12 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9039_0))) -> *4_0, rt in Omega(n9039_0) 1151.89/293.12 U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n10367_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n10367_0) 1151.89/293.12 U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18768_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n18768_0) 1151.89/293.12 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n28179_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n28179_0) 1151.89/293.12 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n33135_0))) -> *4_0, rt in Omega(n33135_0) 1151.89/293.12 U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35210_0))) -> *4_0, rt in Omega(n35210_0) 1151.89/293.12 U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n37386_0))) -> *4_0, rt in Omega(n37386_0) 1151.89/293.12 U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n39663_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n39663_0) 1151.89/293.12 U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45350_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45350_0) 1151.89/293.12 U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51343_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n51343_0) 1151.89/293.12 1151.89/293.12 1151.89/293.12 Generator Equations: 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.89/293.12 1151.89/293.12 1151.89/293.12 The following defined symbols remain to be analysed: 1151.89/293.12 U71, active, U81, U91, proper, top 1151.89/293.12 1151.89/293.12 They will be analysed ascendingly in the following order: 1151.89/293.12 U71 < active 1151.89/293.12 U81 < active 1151.89/293.12 U91 < active 1151.89/293.12 active < top 1151.89/293.12 U71 < proper 1151.89/293.12 U81 < proper 1151.89/293.12 U91 < proper 1151.89/293.12 proper < top 1151.89/293.12 1151.89/293.12 ---------------------------------------- 1151.89/293.12 1151.89/293.12 (43) RewriteLemmaProof (LOWER BOUND(ID)) 1151.89/293.12 Proved the following rewrite lemma: 1151.89/293.12 U71(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n57642_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n57642_0) 1151.89/293.12 1151.89/293.12 Induction Base: 1151.89/293.12 U71(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) 1151.89/293.12 1151.89/293.12 Induction Step: 1151.89/293.12 U71(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n57642_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) ->_R^Omega(1) 1151.89/293.12 mark(U71(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n57642_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c))) ->_IH 1151.89/293.12 mark(*4_0) 1151.89/293.12 1151.89/293.12 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.89/293.12 ---------------------------------------- 1151.89/293.12 1151.89/293.12 (44) 1151.89/293.12 Obligation: 1151.89/293.12 TRS: 1151.89/293.12 Rules: 1151.89/293.12 active(zeros) -> mark(cons(0', zeros)) 1151.89/293.12 active(U11(tt)) -> mark(tt) 1151.89/293.12 active(U21(tt)) -> mark(tt) 1151.89/293.12 active(U31(tt)) -> mark(tt) 1151.89/293.12 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.89/293.12 active(U42(tt)) -> mark(tt) 1151.89/293.12 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.89/293.12 active(U52(tt)) -> mark(tt) 1151.89/293.12 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.89/293.12 active(U62(tt)) -> mark(tt) 1151.89/293.12 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.89/293.12 active(U72(tt, L)) -> mark(s(length(L))) 1151.89/293.12 active(U81(tt)) -> mark(nil) 1151.89/293.12 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.89/293.12 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.89/293.12 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.89/293.12 active(isNat(0')) -> mark(tt) 1151.89/293.12 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.89/293.12 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.89/293.12 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.89/293.12 active(isNatIList(zeros)) -> mark(tt) 1151.89/293.12 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.89/293.12 active(isNatList(nil)) -> mark(tt) 1151.89/293.12 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.89/293.12 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.89/293.12 active(length(nil)) -> mark(0') 1151.89/293.12 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.89/293.12 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.89/293.12 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.89/293.12 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.89/293.12 active(U11(X)) -> U11(active(X)) 1151.89/293.12 active(U21(X)) -> U21(active(X)) 1151.89/293.12 active(U31(X)) -> U31(active(X)) 1151.89/293.12 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.89/293.12 active(U42(X)) -> U42(active(X)) 1151.89/293.12 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.89/293.12 active(U52(X)) -> U52(active(X)) 1151.89/293.12 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.89/293.12 active(U62(X)) -> U62(active(X)) 1151.89/293.12 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.89/293.12 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.89/293.12 active(s(X)) -> s(active(X)) 1151.89/293.12 active(length(X)) -> length(active(X)) 1151.89/293.12 active(U81(X)) -> U81(active(X)) 1151.89/293.12 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.89/293.12 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.89/293.12 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.89/293.12 active(take(X1, X2)) -> take(active(X1), X2) 1151.89/293.12 active(take(X1, X2)) -> take(X1, active(X2)) 1151.89/293.12 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.89/293.12 U11(mark(X)) -> mark(U11(X)) 1151.89/293.12 U21(mark(X)) -> mark(U21(X)) 1151.89/293.12 U31(mark(X)) -> mark(U31(X)) 1151.89/293.12 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.89/293.12 U42(mark(X)) -> mark(U42(X)) 1151.89/293.12 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.89/293.12 U52(mark(X)) -> mark(U52(X)) 1151.89/293.12 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.89/293.12 U62(mark(X)) -> mark(U62(X)) 1151.89/293.12 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.89/293.12 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.89/293.12 s(mark(X)) -> mark(s(X)) 1151.89/293.12 length(mark(X)) -> mark(length(X)) 1151.89/293.12 U81(mark(X)) -> mark(U81(X)) 1151.89/293.12 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.89/293.12 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.89/293.12 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.89/293.12 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.89/293.12 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.89/293.12 proper(zeros) -> ok(zeros) 1151.89/293.12 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.89/293.12 proper(0') -> ok(0') 1151.89/293.12 proper(U11(X)) -> U11(proper(X)) 1151.89/293.12 proper(tt) -> ok(tt) 1151.89/293.12 proper(U21(X)) -> U21(proper(X)) 1151.89/293.12 proper(U31(X)) -> U31(proper(X)) 1151.89/293.12 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.89/293.12 proper(U42(X)) -> U42(proper(X)) 1151.89/293.12 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.89/293.12 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.89/293.12 proper(U52(X)) -> U52(proper(X)) 1151.89/293.12 proper(isNatList(X)) -> isNatList(proper(X)) 1151.89/293.12 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.89/293.12 proper(U62(X)) -> U62(proper(X)) 1151.89/293.12 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.89/293.12 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.89/293.12 proper(isNat(X)) -> isNat(proper(X)) 1151.89/293.12 proper(s(X)) -> s(proper(X)) 1151.89/293.12 proper(length(X)) -> length(proper(X)) 1151.89/293.12 proper(U81(X)) -> U81(proper(X)) 1151.89/293.12 proper(nil) -> ok(nil) 1151.89/293.12 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.89/293.12 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.89/293.12 U11(ok(X)) -> ok(U11(X)) 1151.89/293.12 U21(ok(X)) -> ok(U21(X)) 1151.89/293.12 U31(ok(X)) -> ok(U31(X)) 1151.89/293.12 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.89/293.12 U42(ok(X)) -> ok(U42(X)) 1151.89/293.12 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.89/293.12 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.89/293.12 U52(ok(X)) -> ok(U52(X)) 1151.89/293.12 isNatList(ok(X)) -> ok(isNatList(X)) 1151.89/293.12 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.89/293.12 U62(ok(X)) -> ok(U62(X)) 1151.89/293.12 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.89/293.12 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.89/293.12 isNat(ok(X)) -> ok(isNat(X)) 1151.89/293.12 s(ok(X)) -> ok(s(X)) 1151.89/293.12 length(ok(X)) -> ok(length(X)) 1151.89/293.12 U81(ok(X)) -> ok(U81(X)) 1151.89/293.12 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.89/293.12 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.89/293.12 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.89/293.12 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.89/293.12 top(mark(X)) -> top(proper(X)) 1151.89/293.12 top(ok(X)) -> top(active(X)) 1151.89/293.12 1151.89/293.12 Types: 1151.89/293.12 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 zeros :: zeros:0':mark:tt:nil:ok 1151.89/293.12 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 0' :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 tt :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 nil :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 top :: zeros:0':mark:tt:nil:ok -> top 1151.89/293.12 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.89/293.12 hole_top2_0 :: top 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.89/293.12 1151.89/293.12 1151.89/293.12 Lemmas: 1151.89/293.12 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.89/293.12 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.89/293.12 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.89/293.12 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.89/293.12 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.89/293.12 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0))) -> *4_0, rt in Omega(n7812_0) 1151.89/293.12 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9039_0))) -> *4_0, rt in Omega(n9039_0) 1151.89/293.12 U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n10367_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n10367_0) 1151.89/293.12 U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18768_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n18768_0) 1151.89/293.12 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n28179_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n28179_0) 1151.89/293.12 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n33135_0))) -> *4_0, rt in Omega(n33135_0) 1151.89/293.12 U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35210_0))) -> *4_0, rt in Omega(n35210_0) 1151.89/293.12 U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n37386_0))) -> *4_0, rt in Omega(n37386_0) 1151.89/293.12 U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n39663_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n39663_0) 1151.89/293.12 U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45350_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45350_0) 1151.89/293.12 U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51343_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n51343_0) 1151.89/293.12 U71(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n57642_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n57642_0) 1151.89/293.12 1151.89/293.12 1151.89/293.12 Generator Equations: 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.89/293.12 1151.89/293.12 1151.89/293.12 The following defined symbols remain to be analysed: 1151.89/293.12 U81, active, U91, proper, top 1151.89/293.12 1151.89/293.12 They will be analysed ascendingly in the following order: 1151.89/293.12 U81 < active 1151.89/293.12 U91 < active 1151.89/293.12 active < top 1151.89/293.12 U81 < proper 1151.89/293.12 U91 < proper 1151.89/293.12 proper < top 1151.89/293.12 1151.89/293.12 ---------------------------------------- 1151.89/293.12 1151.89/293.12 (45) RewriteLemmaProof (LOWER BOUND(ID)) 1151.89/293.12 Proved the following rewrite lemma: 1151.89/293.12 U81(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n68024_0))) -> *4_0, rt in Omega(n68024_0) 1151.89/293.12 1151.89/293.12 Induction Base: 1151.89/293.12 U81(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) 1151.89/293.12 1151.89/293.12 Induction Step: 1151.89/293.12 U81(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n68024_0, 1)))) ->_R^Omega(1) 1151.89/293.12 mark(U81(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n68024_0)))) ->_IH 1151.89/293.12 mark(*4_0) 1151.89/293.12 1151.89/293.12 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.89/293.12 ---------------------------------------- 1151.89/293.12 1151.89/293.12 (46) 1151.89/293.12 Obligation: 1151.89/293.12 TRS: 1151.89/293.12 Rules: 1151.89/293.12 active(zeros) -> mark(cons(0', zeros)) 1151.89/293.12 active(U11(tt)) -> mark(tt) 1151.89/293.12 active(U21(tt)) -> mark(tt) 1151.89/293.12 active(U31(tt)) -> mark(tt) 1151.89/293.12 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.89/293.12 active(U42(tt)) -> mark(tt) 1151.89/293.12 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.89/293.12 active(U52(tt)) -> mark(tt) 1151.89/293.12 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.89/293.12 active(U62(tt)) -> mark(tt) 1151.89/293.12 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.89/293.12 active(U72(tt, L)) -> mark(s(length(L))) 1151.89/293.12 active(U81(tt)) -> mark(nil) 1151.89/293.12 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.89/293.12 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.89/293.12 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.89/293.12 active(isNat(0')) -> mark(tt) 1151.89/293.12 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.89/293.12 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.89/293.12 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.89/293.12 active(isNatIList(zeros)) -> mark(tt) 1151.89/293.12 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.89/293.12 active(isNatList(nil)) -> mark(tt) 1151.89/293.12 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.89/293.12 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.89/293.12 active(length(nil)) -> mark(0') 1151.89/293.12 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.89/293.12 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.89/293.12 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.89/293.12 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.89/293.12 active(U11(X)) -> U11(active(X)) 1151.89/293.12 active(U21(X)) -> U21(active(X)) 1151.89/293.12 active(U31(X)) -> U31(active(X)) 1151.89/293.12 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.89/293.12 active(U42(X)) -> U42(active(X)) 1151.89/293.12 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.89/293.12 active(U52(X)) -> U52(active(X)) 1151.89/293.12 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.89/293.12 active(U62(X)) -> U62(active(X)) 1151.89/293.12 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.89/293.12 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.89/293.12 active(s(X)) -> s(active(X)) 1151.89/293.12 active(length(X)) -> length(active(X)) 1151.89/293.12 active(U81(X)) -> U81(active(X)) 1151.89/293.12 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.89/293.12 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.89/293.12 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.89/293.12 active(take(X1, X2)) -> take(active(X1), X2) 1151.89/293.12 active(take(X1, X2)) -> take(X1, active(X2)) 1151.89/293.12 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.89/293.12 U11(mark(X)) -> mark(U11(X)) 1151.89/293.12 U21(mark(X)) -> mark(U21(X)) 1151.89/293.12 U31(mark(X)) -> mark(U31(X)) 1151.89/293.12 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.89/293.12 U42(mark(X)) -> mark(U42(X)) 1151.89/293.12 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.89/293.12 U52(mark(X)) -> mark(U52(X)) 1151.89/293.12 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.89/293.12 U62(mark(X)) -> mark(U62(X)) 1151.89/293.12 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.89/293.12 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.89/293.12 s(mark(X)) -> mark(s(X)) 1151.89/293.12 length(mark(X)) -> mark(length(X)) 1151.89/293.12 U81(mark(X)) -> mark(U81(X)) 1151.89/293.12 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.89/293.12 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.89/293.12 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.89/293.12 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.89/293.12 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.89/293.12 proper(zeros) -> ok(zeros) 1151.89/293.12 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.89/293.12 proper(0') -> ok(0') 1151.89/293.12 proper(U11(X)) -> U11(proper(X)) 1151.89/293.12 proper(tt) -> ok(tt) 1151.89/293.12 proper(U21(X)) -> U21(proper(X)) 1151.89/293.12 proper(U31(X)) -> U31(proper(X)) 1151.89/293.12 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.89/293.12 proper(U42(X)) -> U42(proper(X)) 1151.89/293.12 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.89/293.12 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.89/293.12 proper(U52(X)) -> U52(proper(X)) 1151.89/293.12 proper(isNatList(X)) -> isNatList(proper(X)) 1151.89/293.12 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.89/293.12 proper(U62(X)) -> U62(proper(X)) 1151.89/293.12 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.89/293.12 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.89/293.12 proper(isNat(X)) -> isNat(proper(X)) 1151.89/293.12 proper(s(X)) -> s(proper(X)) 1151.89/293.12 proper(length(X)) -> length(proper(X)) 1151.89/293.12 proper(U81(X)) -> U81(proper(X)) 1151.89/293.12 proper(nil) -> ok(nil) 1151.89/293.12 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.89/293.12 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.89/293.12 U11(ok(X)) -> ok(U11(X)) 1151.89/293.12 U21(ok(X)) -> ok(U21(X)) 1151.89/293.12 U31(ok(X)) -> ok(U31(X)) 1151.89/293.12 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.89/293.12 U42(ok(X)) -> ok(U42(X)) 1151.89/293.12 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.89/293.12 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.89/293.12 U52(ok(X)) -> ok(U52(X)) 1151.89/293.12 isNatList(ok(X)) -> ok(isNatList(X)) 1151.89/293.12 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.89/293.12 U62(ok(X)) -> ok(U62(X)) 1151.89/293.12 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.89/293.12 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.89/293.12 isNat(ok(X)) -> ok(isNat(X)) 1151.89/293.12 s(ok(X)) -> ok(s(X)) 1151.89/293.12 length(ok(X)) -> ok(length(X)) 1151.89/293.12 U81(ok(X)) -> ok(U81(X)) 1151.89/293.12 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.89/293.12 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.89/293.12 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.89/293.12 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.89/293.12 top(mark(X)) -> top(proper(X)) 1151.89/293.12 top(ok(X)) -> top(active(X)) 1151.89/293.12 1151.89/293.12 Types: 1151.89/293.12 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 zeros :: zeros:0':mark:tt:nil:ok 1151.89/293.12 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 0' :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 tt :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 nil :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 top :: zeros:0':mark:tt:nil:ok -> top 1151.89/293.12 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.89/293.12 hole_top2_0 :: top 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.89/293.12 1151.89/293.12 1151.89/293.12 Lemmas: 1151.89/293.12 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.89/293.12 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.89/293.12 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.89/293.12 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.89/293.12 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.89/293.12 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0))) -> *4_0, rt in Omega(n7812_0) 1151.89/293.12 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9039_0))) -> *4_0, rt in Omega(n9039_0) 1151.89/293.12 U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n10367_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n10367_0) 1151.89/293.12 U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18768_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n18768_0) 1151.89/293.12 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n28179_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n28179_0) 1151.89/293.12 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n33135_0))) -> *4_0, rt in Omega(n33135_0) 1151.89/293.12 U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35210_0))) -> *4_0, rt in Omega(n35210_0) 1151.89/293.12 U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n37386_0))) -> *4_0, rt in Omega(n37386_0) 1151.89/293.12 U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n39663_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n39663_0) 1151.89/293.12 U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45350_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45350_0) 1151.89/293.12 U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51343_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n51343_0) 1151.89/293.12 U71(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n57642_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n57642_0) 1151.89/293.12 U81(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n68024_0))) -> *4_0, rt in Omega(n68024_0) 1151.89/293.12 1151.89/293.12 1151.89/293.12 Generator Equations: 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.89/293.12 1151.89/293.12 1151.89/293.12 The following defined symbols remain to be analysed: 1151.89/293.12 U91, active, proper, top 1151.89/293.12 1151.89/293.12 They will be analysed ascendingly in the following order: 1151.89/293.12 U91 < active 1151.89/293.12 active < top 1151.89/293.12 U91 < proper 1151.89/293.12 proper < top 1151.89/293.12 1151.89/293.12 ---------------------------------------- 1151.89/293.12 1151.89/293.12 (47) RewriteLemmaProof (LOWER BOUND(ID)) 1151.89/293.12 Proved the following rewrite lemma: 1151.89/293.12 U91(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n71051_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n71051_0) 1151.89/293.12 1151.89/293.12 Induction Base: 1151.89/293.12 U91(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) 1151.89/293.12 1151.89/293.12 Induction Step: 1151.89/293.12 U91(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n71051_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) ->_R^Omega(1) 1151.89/293.12 mark(U91(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n71051_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d))) ->_IH 1151.89/293.12 mark(*4_0) 1151.89/293.12 1151.89/293.12 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1151.89/293.12 ---------------------------------------- 1151.89/293.12 1151.89/293.12 (48) 1151.89/293.12 Obligation: 1151.89/293.12 TRS: 1151.89/293.12 Rules: 1151.89/293.12 active(zeros) -> mark(cons(0', zeros)) 1151.89/293.12 active(U11(tt)) -> mark(tt) 1151.89/293.12 active(U21(tt)) -> mark(tt) 1151.89/293.12 active(U31(tt)) -> mark(tt) 1151.89/293.12 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 1151.89/293.12 active(U42(tt)) -> mark(tt) 1151.89/293.12 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 1151.89/293.12 active(U52(tt)) -> mark(tt) 1151.89/293.12 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 1151.89/293.12 active(U62(tt)) -> mark(tt) 1151.89/293.12 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 1151.89/293.12 active(U72(tt, L)) -> mark(s(length(L))) 1151.89/293.12 active(U81(tt)) -> mark(nil) 1151.89/293.12 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 1151.89/293.12 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 1151.89/293.12 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1151.89/293.12 active(isNat(0')) -> mark(tt) 1151.89/293.12 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 1151.89/293.12 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 1151.89/293.12 active(isNatIList(V)) -> mark(U31(isNatList(V))) 1151.89/293.12 active(isNatIList(zeros)) -> mark(tt) 1151.89/293.12 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 1151.89/293.12 active(isNatList(nil)) -> mark(tt) 1151.89/293.12 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 1151.89/293.12 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 1151.89/293.12 active(length(nil)) -> mark(0') 1151.89/293.12 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 1151.89/293.12 active(take(0', IL)) -> mark(U81(isNatIList(IL))) 1151.89/293.12 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 1151.89/293.12 active(cons(X1, X2)) -> cons(active(X1), X2) 1151.89/293.12 active(U11(X)) -> U11(active(X)) 1151.89/293.12 active(U21(X)) -> U21(active(X)) 1151.89/293.12 active(U31(X)) -> U31(active(X)) 1151.89/293.12 active(U41(X1, X2)) -> U41(active(X1), X2) 1151.89/293.12 active(U42(X)) -> U42(active(X)) 1151.89/293.12 active(U51(X1, X2)) -> U51(active(X1), X2) 1151.89/293.12 active(U52(X)) -> U52(active(X)) 1151.89/293.12 active(U61(X1, X2)) -> U61(active(X1), X2) 1151.89/293.12 active(U62(X)) -> U62(active(X)) 1151.89/293.12 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 1151.89/293.12 active(U72(X1, X2)) -> U72(active(X1), X2) 1151.89/293.12 active(s(X)) -> s(active(X)) 1151.89/293.12 active(length(X)) -> length(active(X)) 1151.89/293.12 active(U81(X)) -> U81(active(X)) 1151.89/293.12 active(U91(X1, X2, X3, X4)) -> U91(active(X1), X2, X3, X4) 1151.89/293.12 active(U92(X1, X2, X3, X4)) -> U92(active(X1), X2, X3, X4) 1151.89/293.12 active(U93(X1, X2, X3, X4)) -> U93(active(X1), X2, X3, X4) 1151.89/293.12 active(take(X1, X2)) -> take(active(X1), X2) 1151.89/293.12 active(take(X1, X2)) -> take(X1, active(X2)) 1151.89/293.12 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1151.89/293.12 U11(mark(X)) -> mark(U11(X)) 1151.89/293.12 U21(mark(X)) -> mark(U21(X)) 1151.89/293.12 U31(mark(X)) -> mark(U31(X)) 1151.89/293.12 U41(mark(X1), X2) -> mark(U41(X1, X2)) 1151.89/293.12 U42(mark(X)) -> mark(U42(X)) 1151.89/293.12 U51(mark(X1), X2) -> mark(U51(X1, X2)) 1151.89/293.12 U52(mark(X)) -> mark(U52(X)) 1151.89/293.12 U61(mark(X1), X2) -> mark(U61(X1, X2)) 1151.89/293.12 U62(mark(X)) -> mark(U62(X)) 1151.89/293.12 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 1151.89/293.12 U72(mark(X1), X2) -> mark(U72(X1, X2)) 1151.89/293.12 s(mark(X)) -> mark(s(X)) 1151.89/293.12 length(mark(X)) -> mark(length(X)) 1151.89/293.12 U81(mark(X)) -> mark(U81(X)) 1151.89/293.12 U91(mark(X1), X2, X3, X4) -> mark(U91(X1, X2, X3, X4)) 1151.89/293.12 U92(mark(X1), X2, X3, X4) -> mark(U92(X1, X2, X3, X4)) 1151.89/293.12 U93(mark(X1), X2, X3, X4) -> mark(U93(X1, X2, X3, X4)) 1151.89/293.12 take(mark(X1), X2) -> mark(take(X1, X2)) 1151.89/293.12 take(X1, mark(X2)) -> mark(take(X1, X2)) 1151.89/293.12 proper(zeros) -> ok(zeros) 1151.89/293.12 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1151.89/293.12 proper(0') -> ok(0') 1151.89/293.12 proper(U11(X)) -> U11(proper(X)) 1151.89/293.12 proper(tt) -> ok(tt) 1151.89/293.12 proper(U21(X)) -> U21(proper(X)) 1151.89/293.12 proper(U31(X)) -> U31(proper(X)) 1151.89/293.12 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 1151.89/293.12 proper(U42(X)) -> U42(proper(X)) 1151.89/293.12 proper(isNatIList(X)) -> isNatIList(proper(X)) 1151.89/293.12 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 1151.89/293.12 proper(U52(X)) -> U52(proper(X)) 1151.89/293.12 proper(isNatList(X)) -> isNatList(proper(X)) 1151.89/293.12 proper(U61(X1, X2)) -> U61(proper(X1), proper(X2)) 1151.89/293.12 proper(U62(X)) -> U62(proper(X)) 1151.89/293.12 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 1151.89/293.12 proper(U72(X1, X2)) -> U72(proper(X1), proper(X2)) 1151.89/293.12 proper(isNat(X)) -> isNat(proper(X)) 1151.89/293.12 proper(s(X)) -> s(proper(X)) 1151.89/293.12 proper(length(X)) -> length(proper(X)) 1151.89/293.12 proper(U81(X)) -> U81(proper(X)) 1151.89/293.12 proper(nil) -> ok(nil) 1151.89/293.12 proper(U91(X1, X2, X3, X4)) -> U91(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(U92(X1, X2, X3, X4)) -> U92(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(U93(X1, X2, X3, X4)) -> U93(proper(X1), proper(X2), proper(X3), proper(X4)) 1151.89/293.12 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1151.89/293.12 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1151.89/293.12 U11(ok(X)) -> ok(U11(X)) 1151.89/293.12 U21(ok(X)) -> ok(U21(X)) 1151.89/293.12 U31(ok(X)) -> ok(U31(X)) 1151.89/293.12 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 1151.89/293.12 U42(ok(X)) -> ok(U42(X)) 1151.89/293.12 isNatIList(ok(X)) -> ok(isNatIList(X)) 1151.89/293.12 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 1151.89/293.12 U52(ok(X)) -> ok(U52(X)) 1151.89/293.12 isNatList(ok(X)) -> ok(isNatList(X)) 1151.89/293.12 U61(ok(X1), ok(X2)) -> ok(U61(X1, X2)) 1151.89/293.12 U62(ok(X)) -> ok(U62(X)) 1151.89/293.12 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 1151.89/293.12 U72(ok(X1), ok(X2)) -> ok(U72(X1, X2)) 1151.89/293.12 isNat(ok(X)) -> ok(isNat(X)) 1151.89/293.12 s(ok(X)) -> ok(s(X)) 1151.89/293.12 length(ok(X)) -> ok(length(X)) 1151.89/293.12 U81(ok(X)) -> ok(U81(X)) 1151.89/293.12 U91(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U91(X1, X2, X3, X4)) 1151.89/293.12 U92(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U92(X1, X2, X3, X4)) 1151.89/293.12 U93(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U93(X1, X2, X3, X4)) 1151.89/293.12 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1151.89/293.12 top(mark(X)) -> top(proper(X)) 1151.89/293.12 top(ok(X)) -> top(active(X)) 1151.89/293.12 1151.89/293.12 Types: 1151.89/293.12 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 zeros :: zeros:0':mark:tt:nil:ok 1151.89/293.12 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 0' :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 tt :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U62 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U72 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 nil :: zeros:0':mark:tt:nil:ok 1151.89/293.12 U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1151.89/293.12 top :: zeros:0':mark:tt:nil:ok -> top 1151.89/293.12 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1151.89/293.12 hole_top2_0 :: top 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1151.89/293.12 1151.89/293.12 1151.89/293.12 Lemmas: 1151.89/293.12 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 1151.89/293.12 U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2106_0))) -> *4_0, rt in Omega(n2106_0) 1151.89/293.12 U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2892_0))) -> *4_0, rt in Omega(n2892_0) 1151.89/293.12 U62(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3782_0))) -> *4_0, rt in Omega(n3782_0) 1151.89/293.12 U72(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4758_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n4758_0) 1151.89/293.12 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7812_0))) -> *4_0, rt in Omega(n7812_0) 1151.89/293.12 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9039_0))) -> *4_0, rt in Omega(n9039_0) 1151.89/293.12 U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n10367_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n10367_0) 1151.89/293.12 U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18768_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n18768_0) 1151.89/293.12 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n28179_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n28179_0) 1151.89/293.12 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n33135_0))) -> *4_0, rt in Omega(n33135_0) 1151.89/293.12 U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35210_0))) -> *4_0, rt in Omega(n35210_0) 1151.89/293.12 U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n37386_0))) -> *4_0, rt in Omega(n37386_0) 1151.89/293.12 U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n39663_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n39663_0) 1151.89/293.12 U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45350_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45350_0) 1151.89/293.12 U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51343_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n51343_0) 1151.89/293.12 U71(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n57642_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n57642_0) 1151.89/293.12 U81(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n68024_0))) -> *4_0, rt in Omega(n68024_0) 1151.89/293.12 U91(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n71051_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) -> *4_0, rt in Omega(n71051_0) 1151.89/293.12 1151.89/293.12 1151.89/293.12 Generator Equations: 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1151.89/293.12 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1151.89/293.12 1151.89/293.12 1151.89/293.12 The following defined symbols remain to be analysed: 1151.89/293.12 active, proper, top 1151.89/293.12 1151.89/293.12 They will be analysed ascendingly in the following order: 1151.89/293.12 active < top 1151.89/293.12 proper < top 1152.00/293.20 EOF