1115.90/291.59 WORST_CASE(Omega(n^1), ?) 1126.86/294.37 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 1126.86/294.37 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 1126.86/294.37 1126.86/294.37 1126.86/294.37 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 1126.86/294.37 1126.86/294.37 (0) CpxTRS 1126.86/294.37 (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 1126.86/294.37 (2) CpxTRS 1126.86/294.37 (3) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 1126.86/294.37 (4) typed CpxTrs 1126.86/294.37 (5) OrderProof [LOWER BOUND(ID), 0 ms] 1126.86/294.37 (6) typed CpxTrs 1126.86/294.37 (7) RewriteLemmaProof [LOWER BOUND(ID), 569 ms] 1126.86/294.37 (8) BEST 1126.86/294.37 (9) proven lower bound 1126.86/294.37 (10) LowerBoundPropagationProof [FINISHED, 0 ms] 1126.86/294.37 (11) BOUNDS(n^1, INF) 1126.86/294.37 (12) typed CpxTrs 1126.86/294.37 (13) RewriteLemmaProof [LOWER BOUND(ID), 133 ms] 1126.86/294.37 (14) typed CpxTrs 1126.86/294.37 (15) RewriteLemmaProof [LOWER BOUND(ID), 75 ms] 1126.86/294.37 (16) typed CpxTrs 1126.86/294.37 (17) RewriteLemmaProof [LOWER BOUND(ID), 63 ms] 1126.86/294.37 (18) typed CpxTrs 1126.86/294.37 (19) RewriteLemmaProof [LOWER BOUND(ID), 37 ms] 1126.86/294.37 (20) typed CpxTrs 1126.86/294.37 (21) RewriteLemmaProof [LOWER BOUND(ID), 141 ms] 1126.86/294.37 (22) typed CpxTrs 1126.86/294.37 (23) RewriteLemmaProof [LOWER BOUND(ID), 115 ms] 1126.86/294.37 (24) typed CpxTrs 1126.86/294.37 (25) RewriteLemmaProof [LOWER BOUND(ID), 113 ms] 1126.86/294.37 (26) typed CpxTrs 1126.86/294.37 (27) RewriteLemmaProof [LOWER BOUND(ID), 206 ms] 1126.86/294.37 (28) typed CpxTrs 1126.86/294.37 1126.86/294.37 1126.86/294.37 ---------------------------------------- 1126.86/294.37 1126.86/294.37 (0) 1126.86/294.37 Obligation: 1126.86/294.37 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 1126.86/294.37 1126.86/294.37 1126.86/294.37 The TRS R consists of the following rules: 1126.86/294.37 1126.86/294.37 active(zeros) -> mark(cons(0, zeros)) 1126.86/294.37 active(U11(tt, L)) -> mark(U12(tt, L)) 1126.86/294.37 active(U12(tt, L)) -> mark(s(length(L))) 1126.86/294.37 active(U21(tt, IL, M, N)) -> mark(U22(tt, IL, M, N)) 1126.86/294.37 active(U22(tt, IL, M, N)) -> mark(U23(tt, IL, M, N)) 1126.86/294.37 active(U23(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1126.86/294.37 active(length(nil)) -> mark(0) 1126.86/294.37 active(length(cons(N, L))) -> mark(U11(tt, L)) 1126.86/294.37 active(take(0, IL)) -> mark(nil) 1126.86/294.37 active(take(s(M), cons(N, IL))) -> mark(U21(tt, IL, M, N)) 1126.86/294.37 active(cons(X1, X2)) -> cons(active(X1), X2) 1126.86/294.37 active(U11(X1, X2)) -> U11(active(X1), X2) 1126.86/294.37 active(U12(X1, X2)) -> U12(active(X1), X2) 1126.86/294.37 active(s(X)) -> s(active(X)) 1126.86/294.37 active(length(X)) -> length(active(X)) 1126.86/294.37 active(U21(X1, X2, X3, X4)) -> U21(active(X1), X2, X3, X4) 1126.86/294.37 active(U22(X1, X2, X3, X4)) -> U22(active(X1), X2, X3, X4) 1126.86/294.37 active(U23(X1, X2, X3, X4)) -> U23(active(X1), X2, X3, X4) 1126.86/294.37 active(take(X1, X2)) -> take(active(X1), X2) 1126.86/294.37 active(take(X1, X2)) -> take(X1, active(X2)) 1126.86/294.37 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1126.86/294.37 U11(mark(X1), X2) -> mark(U11(X1, X2)) 1126.86/294.37 U12(mark(X1), X2) -> mark(U12(X1, X2)) 1126.86/294.37 s(mark(X)) -> mark(s(X)) 1126.86/294.37 length(mark(X)) -> mark(length(X)) 1126.86/294.37 U21(mark(X1), X2, X3, X4) -> mark(U21(X1, X2, X3, X4)) 1126.86/294.37 U22(mark(X1), X2, X3, X4) -> mark(U22(X1, X2, X3, X4)) 1126.86/294.37 U23(mark(X1), X2, X3, X4) -> mark(U23(X1, X2, X3, X4)) 1126.86/294.37 take(mark(X1), X2) -> mark(take(X1, X2)) 1126.86/294.37 take(X1, mark(X2)) -> mark(take(X1, X2)) 1126.86/294.37 proper(zeros) -> ok(zeros) 1126.86/294.37 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1126.86/294.37 proper(0) -> ok(0) 1126.86/294.37 proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 1126.86/294.37 proper(tt) -> ok(tt) 1126.86/294.37 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 1126.86/294.37 proper(s(X)) -> s(proper(X)) 1126.86/294.37 proper(length(X)) -> length(proper(X)) 1126.86/294.37 proper(U21(X1, X2, X3, X4)) -> U21(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.37 proper(U22(X1, X2, X3, X4)) -> U22(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.37 proper(U23(X1, X2, X3, X4)) -> U23(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.37 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1126.86/294.37 proper(nil) -> ok(nil) 1126.86/294.37 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1126.86/294.37 U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 1126.86/294.37 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 1126.86/294.37 s(ok(X)) -> ok(s(X)) 1126.86/294.37 length(ok(X)) -> ok(length(X)) 1126.86/294.37 U21(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U21(X1, X2, X3, X4)) 1126.86/294.37 U22(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U22(X1, X2, X3, X4)) 1126.86/294.37 U23(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U23(X1, X2, X3, X4)) 1126.86/294.37 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1126.86/294.37 top(mark(X)) -> top(proper(X)) 1126.86/294.37 top(ok(X)) -> top(active(X)) 1126.86/294.37 1126.86/294.37 S is empty. 1126.86/294.37 Rewrite Strategy: FULL 1126.86/294.37 ---------------------------------------- 1126.86/294.37 1126.86/294.37 (1) RenamingProof (BOTH BOUNDS(ID, ID)) 1126.86/294.37 Renamed function symbols to avoid clashes with predefined symbol. 1126.86/294.37 ---------------------------------------- 1126.86/294.37 1126.86/294.37 (2) 1126.86/294.37 Obligation: 1126.86/294.37 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 1126.86/294.37 1126.86/294.37 1126.86/294.37 The TRS R consists of the following rules: 1126.86/294.37 1126.86/294.37 active(zeros) -> mark(cons(0', zeros)) 1126.86/294.37 active(U11(tt, L)) -> mark(U12(tt, L)) 1126.86/294.37 active(U12(tt, L)) -> mark(s(length(L))) 1126.86/294.37 active(U21(tt, IL, M, N)) -> mark(U22(tt, IL, M, N)) 1126.86/294.37 active(U22(tt, IL, M, N)) -> mark(U23(tt, IL, M, N)) 1126.86/294.37 active(U23(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1126.86/294.37 active(length(nil)) -> mark(0') 1126.86/294.37 active(length(cons(N, L))) -> mark(U11(tt, L)) 1126.86/294.37 active(take(0', IL)) -> mark(nil) 1126.86/294.37 active(take(s(M), cons(N, IL))) -> mark(U21(tt, IL, M, N)) 1126.86/294.37 active(cons(X1, X2)) -> cons(active(X1), X2) 1126.86/294.37 active(U11(X1, X2)) -> U11(active(X1), X2) 1126.86/294.37 active(U12(X1, X2)) -> U12(active(X1), X2) 1126.86/294.37 active(s(X)) -> s(active(X)) 1126.86/294.37 active(length(X)) -> length(active(X)) 1126.86/294.37 active(U21(X1, X2, X3, X4)) -> U21(active(X1), X2, X3, X4) 1126.86/294.37 active(U22(X1, X2, X3, X4)) -> U22(active(X1), X2, X3, X4) 1126.86/294.37 active(U23(X1, X2, X3, X4)) -> U23(active(X1), X2, X3, X4) 1126.86/294.37 active(take(X1, X2)) -> take(active(X1), X2) 1126.86/294.37 active(take(X1, X2)) -> take(X1, active(X2)) 1126.86/294.37 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1126.86/294.37 U11(mark(X1), X2) -> mark(U11(X1, X2)) 1126.86/294.37 U12(mark(X1), X2) -> mark(U12(X1, X2)) 1126.86/294.37 s(mark(X)) -> mark(s(X)) 1126.86/294.37 length(mark(X)) -> mark(length(X)) 1126.86/294.37 U21(mark(X1), X2, X3, X4) -> mark(U21(X1, X2, X3, X4)) 1126.86/294.37 U22(mark(X1), X2, X3, X4) -> mark(U22(X1, X2, X3, X4)) 1126.86/294.37 U23(mark(X1), X2, X3, X4) -> mark(U23(X1, X2, X3, X4)) 1126.86/294.37 take(mark(X1), X2) -> mark(take(X1, X2)) 1126.86/294.37 take(X1, mark(X2)) -> mark(take(X1, X2)) 1126.86/294.37 proper(zeros) -> ok(zeros) 1126.86/294.37 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1126.86/294.37 proper(0') -> ok(0') 1126.86/294.37 proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 1126.86/294.37 proper(tt) -> ok(tt) 1126.86/294.37 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 1126.86/294.37 proper(s(X)) -> s(proper(X)) 1126.86/294.37 proper(length(X)) -> length(proper(X)) 1126.86/294.37 proper(U21(X1, X2, X3, X4)) -> U21(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.37 proper(U22(X1, X2, X3, X4)) -> U22(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.37 proper(U23(X1, X2, X3, X4)) -> U23(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.37 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1126.86/294.37 proper(nil) -> ok(nil) 1126.86/294.37 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1126.86/294.37 U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 1126.86/294.37 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 1126.86/294.37 s(ok(X)) -> ok(s(X)) 1126.86/294.37 length(ok(X)) -> ok(length(X)) 1126.86/294.37 U21(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U21(X1, X2, X3, X4)) 1126.86/294.37 U22(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U22(X1, X2, X3, X4)) 1126.86/294.37 U23(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U23(X1, X2, X3, X4)) 1126.86/294.37 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1126.86/294.37 top(mark(X)) -> top(proper(X)) 1126.86/294.37 top(ok(X)) -> top(active(X)) 1126.86/294.37 1126.86/294.37 S is empty. 1126.86/294.37 Rewrite Strategy: FULL 1126.86/294.37 ---------------------------------------- 1126.86/294.37 1126.86/294.37 (3) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 1126.86/294.37 Infered types. 1126.86/294.37 ---------------------------------------- 1126.86/294.37 1126.86/294.37 (4) 1126.86/294.37 Obligation: 1126.86/294.37 TRS: 1126.86/294.37 Rules: 1126.86/294.37 active(zeros) -> mark(cons(0', zeros)) 1126.86/294.37 active(U11(tt, L)) -> mark(U12(tt, L)) 1126.86/294.37 active(U12(tt, L)) -> mark(s(length(L))) 1126.86/294.37 active(U21(tt, IL, M, N)) -> mark(U22(tt, IL, M, N)) 1126.86/294.37 active(U22(tt, IL, M, N)) -> mark(U23(tt, IL, M, N)) 1126.86/294.37 active(U23(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1126.86/294.37 active(length(nil)) -> mark(0') 1126.86/294.37 active(length(cons(N, L))) -> mark(U11(tt, L)) 1126.86/294.37 active(take(0', IL)) -> mark(nil) 1126.86/294.37 active(take(s(M), cons(N, IL))) -> mark(U21(tt, IL, M, N)) 1126.86/294.37 active(cons(X1, X2)) -> cons(active(X1), X2) 1126.86/294.37 active(U11(X1, X2)) -> U11(active(X1), X2) 1126.86/294.37 active(U12(X1, X2)) -> U12(active(X1), X2) 1126.86/294.37 active(s(X)) -> s(active(X)) 1126.86/294.37 active(length(X)) -> length(active(X)) 1126.86/294.37 active(U21(X1, X2, X3, X4)) -> U21(active(X1), X2, X3, X4) 1126.86/294.37 active(U22(X1, X2, X3, X4)) -> U22(active(X1), X2, X3, X4) 1126.86/294.37 active(U23(X1, X2, X3, X4)) -> U23(active(X1), X2, X3, X4) 1126.86/294.37 active(take(X1, X2)) -> take(active(X1), X2) 1126.86/294.37 active(take(X1, X2)) -> take(X1, active(X2)) 1126.86/294.37 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1126.86/294.37 U11(mark(X1), X2) -> mark(U11(X1, X2)) 1126.86/294.37 U12(mark(X1), X2) -> mark(U12(X1, X2)) 1126.86/294.37 s(mark(X)) -> mark(s(X)) 1126.86/294.37 length(mark(X)) -> mark(length(X)) 1126.86/294.37 U21(mark(X1), X2, X3, X4) -> mark(U21(X1, X2, X3, X4)) 1126.86/294.37 U22(mark(X1), X2, X3, X4) -> mark(U22(X1, X2, X3, X4)) 1126.86/294.37 U23(mark(X1), X2, X3, X4) -> mark(U23(X1, X2, X3, X4)) 1126.86/294.37 take(mark(X1), X2) -> mark(take(X1, X2)) 1126.86/294.37 take(X1, mark(X2)) -> mark(take(X1, X2)) 1126.86/294.37 proper(zeros) -> ok(zeros) 1126.86/294.37 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1126.86/294.37 proper(0') -> ok(0') 1126.86/294.37 proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 1126.86/294.37 proper(tt) -> ok(tt) 1126.86/294.37 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 1126.86/294.37 proper(s(X)) -> s(proper(X)) 1126.86/294.37 proper(length(X)) -> length(proper(X)) 1126.86/294.37 proper(U21(X1, X2, X3, X4)) -> U21(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.37 proper(U22(X1, X2, X3, X4)) -> U22(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.37 proper(U23(X1, X2, X3, X4)) -> U23(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.37 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1126.86/294.37 proper(nil) -> ok(nil) 1126.86/294.37 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1126.86/294.37 U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 1126.86/294.37 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 1126.86/294.37 s(ok(X)) -> ok(s(X)) 1126.86/294.37 length(ok(X)) -> ok(length(X)) 1126.86/294.37 U21(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U21(X1, X2, X3, X4)) 1126.86/294.37 U22(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U22(X1, X2, X3, X4)) 1126.86/294.37 U23(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U23(X1, X2, X3, X4)) 1126.86/294.37 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1126.86/294.37 top(mark(X)) -> top(proper(X)) 1126.86/294.37 top(ok(X)) -> top(active(X)) 1126.86/294.37 1126.86/294.37 Types: 1126.86/294.37 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 zeros :: zeros:0':mark:tt:nil:ok 1126.86/294.37 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 0' :: zeros:0':mark:tt:nil:ok 1126.86/294.37 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 tt :: zeros:0':mark:tt:nil:ok 1126.86/294.37 U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 U21 :: 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 1126.86/294.37 U22 :: 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 1126.86/294.37 U23 :: 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 1126.86/294.37 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 nil :: zeros:0':mark:tt:nil:ok 1126.86/294.37 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 top :: zeros:0':mark:tt:nil:ok -> top 1126.86/294.37 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1126.86/294.37 hole_top2_0 :: top 1126.86/294.37 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1126.86/294.37 1126.86/294.37 ---------------------------------------- 1126.86/294.37 1126.86/294.37 (5) OrderProof (LOWER BOUND(ID)) 1126.86/294.37 Heuristically decided to analyse the following defined symbols: 1126.86/294.37 active, cons, U12, s, length, U22, U23, take, U11, U21, proper, top 1126.86/294.37 1126.86/294.37 They will be analysed ascendingly in the following order: 1126.86/294.37 cons < active 1126.86/294.37 U12 < active 1126.86/294.37 s < active 1126.86/294.37 length < active 1126.86/294.37 U22 < active 1126.86/294.37 U23 < active 1126.86/294.37 take < active 1126.86/294.37 U11 < active 1126.86/294.37 U21 < active 1126.86/294.37 active < top 1126.86/294.37 cons < proper 1126.86/294.37 U12 < proper 1126.86/294.37 s < proper 1126.86/294.37 length < proper 1126.86/294.37 U22 < proper 1126.86/294.37 U23 < proper 1126.86/294.37 take < proper 1126.86/294.37 U11 < proper 1126.86/294.37 U21 < proper 1126.86/294.37 proper < top 1126.86/294.37 1126.86/294.37 ---------------------------------------- 1126.86/294.37 1126.86/294.37 (6) 1126.86/294.37 Obligation: 1126.86/294.37 TRS: 1126.86/294.37 Rules: 1126.86/294.37 active(zeros) -> mark(cons(0', zeros)) 1126.86/294.37 active(U11(tt, L)) -> mark(U12(tt, L)) 1126.86/294.37 active(U12(tt, L)) -> mark(s(length(L))) 1126.86/294.37 active(U21(tt, IL, M, N)) -> mark(U22(tt, IL, M, N)) 1126.86/294.37 active(U22(tt, IL, M, N)) -> mark(U23(tt, IL, M, N)) 1126.86/294.37 active(U23(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1126.86/294.37 active(length(nil)) -> mark(0') 1126.86/294.37 active(length(cons(N, L))) -> mark(U11(tt, L)) 1126.86/294.37 active(take(0', IL)) -> mark(nil) 1126.86/294.37 active(take(s(M), cons(N, IL))) -> mark(U21(tt, IL, M, N)) 1126.86/294.37 active(cons(X1, X2)) -> cons(active(X1), X2) 1126.86/294.37 active(U11(X1, X2)) -> U11(active(X1), X2) 1126.86/294.37 active(U12(X1, X2)) -> U12(active(X1), X2) 1126.86/294.37 active(s(X)) -> s(active(X)) 1126.86/294.37 active(length(X)) -> length(active(X)) 1126.86/294.37 active(U21(X1, X2, X3, X4)) -> U21(active(X1), X2, X3, X4) 1126.86/294.37 active(U22(X1, X2, X3, X4)) -> U22(active(X1), X2, X3, X4) 1126.86/294.37 active(U23(X1, X2, X3, X4)) -> U23(active(X1), X2, X3, X4) 1126.86/294.37 active(take(X1, X2)) -> take(active(X1), X2) 1126.86/294.37 active(take(X1, X2)) -> take(X1, active(X2)) 1126.86/294.37 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1126.86/294.37 U11(mark(X1), X2) -> mark(U11(X1, X2)) 1126.86/294.37 U12(mark(X1), X2) -> mark(U12(X1, X2)) 1126.86/294.37 s(mark(X)) -> mark(s(X)) 1126.86/294.37 length(mark(X)) -> mark(length(X)) 1126.86/294.37 U21(mark(X1), X2, X3, X4) -> mark(U21(X1, X2, X3, X4)) 1126.86/294.37 U22(mark(X1), X2, X3, X4) -> mark(U22(X1, X2, X3, X4)) 1126.86/294.37 U23(mark(X1), X2, X3, X4) -> mark(U23(X1, X2, X3, X4)) 1126.86/294.37 take(mark(X1), X2) -> mark(take(X1, X2)) 1126.86/294.37 take(X1, mark(X2)) -> mark(take(X1, X2)) 1126.86/294.37 proper(zeros) -> ok(zeros) 1126.86/294.37 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1126.86/294.37 proper(0') -> ok(0') 1126.86/294.37 proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 1126.86/294.37 proper(tt) -> ok(tt) 1126.86/294.37 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 1126.86/294.37 proper(s(X)) -> s(proper(X)) 1126.86/294.37 proper(length(X)) -> length(proper(X)) 1126.86/294.37 proper(U21(X1, X2, X3, X4)) -> U21(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.37 proper(U22(X1, X2, X3, X4)) -> U22(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.37 proper(U23(X1, X2, X3, X4)) -> U23(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.37 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1126.86/294.37 proper(nil) -> ok(nil) 1126.86/294.37 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1126.86/294.37 U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 1126.86/294.37 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 1126.86/294.37 s(ok(X)) -> ok(s(X)) 1126.86/294.37 length(ok(X)) -> ok(length(X)) 1126.86/294.37 U21(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U21(X1, X2, X3, X4)) 1126.86/294.37 U22(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U22(X1, X2, X3, X4)) 1126.86/294.37 U23(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U23(X1, X2, X3, X4)) 1126.86/294.37 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1126.86/294.37 top(mark(X)) -> top(proper(X)) 1126.86/294.37 top(ok(X)) -> top(active(X)) 1126.86/294.37 1126.86/294.37 Types: 1126.86/294.37 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 zeros :: zeros:0':mark:tt:nil:ok 1126.86/294.37 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 0' :: zeros:0':mark:tt:nil:ok 1126.86/294.37 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 tt :: zeros:0':mark:tt:nil:ok 1126.86/294.37 U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 U21 :: 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 1126.86/294.37 U22 :: 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 1126.86/294.37 U23 :: 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 1126.86/294.37 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 nil :: zeros:0':mark:tt:nil:ok 1126.86/294.37 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.37 top :: zeros:0':mark:tt:nil:ok -> top 1126.86/294.37 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1126.86/294.37 hole_top2_0 :: top 1126.86/294.37 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1126.86/294.37 1126.86/294.37 1126.86/294.37 Generator Equations: 1126.86/294.37 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1126.86/294.37 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1126.86/294.37 1126.86/294.37 1126.86/294.37 The following defined symbols remain to be analysed: 1126.86/294.37 cons, active, U12, s, length, U22, U23, take, U11, U21, proper, top 1126.86/294.37 1126.86/294.37 They will be analysed ascendingly in the following order: 1126.86/294.37 cons < active 1126.86/294.37 U12 < active 1126.86/294.37 s < active 1126.86/294.37 length < active 1126.86/294.37 U22 < active 1126.86/294.37 U23 < active 1126.86/294.37 take < active 1126.86/294.37 U11 < active 1126.86/294.37 U21 < active 1126.86/294.37 active < top 1126.86/294.37 cons < proper 1126.86/294.37 U12 < proper 1126.86/294.37 s < proper 1126.86/294.37 length < proper 1126.86/294.37 U22 < proper 1126.86/294.37 U23 < proper 1126.86/294.37 take < proper 1126.86/294.37 U11 < proper 1126.86/294.37 U21 < proper 1126.86/294.37 proper < top 1126.86/294.37 1126.86/294.37 ---------------------------------------- 1126.86/294.37 1126.86/294.37 (7) RewriteLemmaProof (LOWER BOUND(ID)) 1126.86/294.37 Proved the following rewrite lemma: 1126.86/294.37 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) 1126.86/294.37 1126.86/294.37 Induction Base: 1126.86/294.38 cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) 1126.86/294.38 1126.86/294.38 Induction Step: 1126.86/294.38 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) 1126.86/294.38 mark(cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH 1126.86/294.38 mark(*4_0) 1126.86/294.38 1126.86/294.38 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (8) 1126.86/294.38 Complex Obligation (BEST) 1126.86/294.38 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (9) 1126.86/294.38 Obligation: 1126.86/294.38 Proved the lower bound n^1 for the following obligation: 1126.86/294.38 1126.86/294.38 TRS: 1126.86/294.38 Rules: 1126.86/294.38 active(zeros) -> mark(cons(0', zeros)) 1126.86/294.38 active(U11(tt, L)) -> mark(U12(tt, L)) 1126.86/294.38 active(U12(tt, L)) -> mark(s(length(L))) 1126.86/294.38 active(U21(tt, IL, M, N)) -> mark(U22(tt, IL, M, N)) 1126.86/294.38 active(U22(tt, IL, M, N)) -> mark(U23(tt, IL, M, N)) 1126.86/294.38 active(U23(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1126.86/294.38 active(length(nil)) -> mark(0') 1126.86/294.38 active(length(cons(N, L))) -> mark(U11(tt, L)) 1126.86/294.38 active(take(0', IL)) -> mark(nil) 1126.86/294.38 active(take(s(M), cons(N, IL))) -> mark(U21(tt, IL, M, N)) 1126.86/294.38 active(cons(X1, X2)) -> cons(active(X1), X2) 1126.86/294.38 active(U11(X1, X2)) -> U11(active(X1), X2) 1126.86/294.38 active(U12(X1, X2)) -> U12(active(X1), X2) 1126.86/294.38 active(s(X)) -> s(active(X)) 1126.86/294.38 active(length(X)) -> length(active(X)) 1126.86/294.38 active(U21(X1, X2, X3, X4)) -> U21(active(X1), X2, X3, X4) 1126.86/294.38 active(U22(X1, X2, X3, X4)) -> U22(active(X1), X2, X3, X4) 1126.86/294.38 active(U23(X1, X2, X3, X4)) -> U23(active(X1), X2, X3, X4) 1126.86/294.38 active(take(X1, X2)) -> take(active(X1), X2) 1126.86/294.38 active(take(X1, X2)) -> take(X1, active(X2)) 1126.86/294.38 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1126.86/294.38 U11(mark(X1), X2) -> mark(U11(X1, X2)) 1126.86/294.38 U12(mark(X1), X2) -> mark(U12(X1, X2)) 1126.86/294.38 s(mark(X)) -> mark(s(X)) 1126.86/294.38 length(mark(X)) -> mark(length(X)) 1126.86/294.38 U21(mark(X1), X2, X3, X4) -> mark(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(mark(X1), X2, X3, X4) -> mark(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(mark(X1), X2, X3, X4) -> mark(U23(X1, X2, X3, X4)) 1126.86/294.38 take(mark(X1), X2) -> mark(take(X1, X2)) 1126.86/294.38 take(X1, mark(X2)) -> mark(take(X1, X2)) 1126.86/294.38 proper(zeros) -> ok(zeros) 1126.86/294.38 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1126.86/294.38 proper(0') -> ok(0') 1126.86/294.38 proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 1126.86/294.38 proper(tt) -> ok(tt) 1126.86/294.38 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 1126.86/294.38 proper(s(X)) -> s(proper(X)) 1126.86/294.38 proper(length(X)) -> length(proper(X)) 1126.86/294.38 proper(U21(X1, X2, X3, X4)) -> U21(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U22(X1, X2, X3, X4)) -> U22(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U23(X1, X2, X3, X4)) -> U23(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1126.86/294.38 proper(nil) -> ok(nil) 1126.86/294.38 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1126.86/294.38 U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 1126.86/294.38 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 1126.86/294.38 s(ok(X)) -> ok(s(X)) 1126.86/294.38 length(ok(X)) -> ok(length(X)) 1126.86/294.38 U21(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U23(X1, X2, X3, X4)) 1126.86/294.38 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1126.86/294.38 top(mark(X)) -> top(proper(X)) 1126.86/294.38 top(ok(X)) -> top(active(X)) 1126.86/294.38 1126.86/294.38 Types: 1126.86/294.38 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 zeros :: zeros:0':mark:tt:nil:ok 1126.86/294.38 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 0' :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 tt :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 U21 :: 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 1126.86/294.38 U22 :: 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 1126.86/294.38 U23 :: 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 1126.86/294.38 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 nil :: zeros:0':mark:tt:nil:ok 1126.86/294.38 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 top :: zeros:0':mark:tt:nil:ok -> top 1126.86/294.38 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1126.86/294.38 hole_top2_0 :: top 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1126.86/294.38 1126.86/294.38 1126.86/294.38 Generator Equations: 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1126.86/294.38 1126.86/294.38 1126.86/294.38 The following defined symbols remain to be analysed: 1126.86/294.38 cons, active, U12, s, length, U22, U23, take, U11, U21, proper, top 1126.86/294.38 1126.86/294.38 They will be analysed ascendingly in the following order: 1126.86/294.38 cons < active 1126.86/294.38 U12 < active 1126.86/294.38 s < active 1126.86/294.38 length < active 1126.86/294.38 U22 < active 1126.86/294.38 U23 < active 1126.86/294.38 take < active 1126.86/294.38 U11 < active 1126.86/294.38 U21 < active 1126.86/294.38 active < top 1126.86/294.38 cons < proper 1126.86/294.38 U12 < proper 1126.86/294.38 s < proper 1126.86/294.38 length < proper 1126.86/294.38 U22 < proper 1126.86/294.38 U23 < proper 1126.86/294.38 take < proper 1126.86/294.38 U11 < proper 1126.86/294.38 U21 < proper 1126.86/294.38 proper < top 1126.86/294.38 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (10) LowerBoundPropagationProof (FINISHED) 1126.86/294.38 Propagated lower bound. 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (11) 1126.86/294.38 BOUNDS(n^1, INF) 1126.86/294.38 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (12) 1126.86/294.38 Obligation: 1126.86/294.38 TRS: 1126.86/294.38 Rules: 1126.86/294.38 active(zeros) -> mark(cons(0', zeros)) 1126.86/294.38 active(U11(tt, L)) -> mark(U12(tt, L)) 1126.86/294.38 active(U12(tt, L)) -> mark(s(length(L))) 1126.86/294.38 active(U21(tt, IL, M, N)) -> mark(U22(tt, IL, M, N)) 1126.86/294.38 active(U22(tt, IL, M, N)) -> mark(U23(tt, IL, M, N)) 1126.86/294.38 active(U23(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1126.86/294.38 active(length(nil)) -> mark(0') 1126.86/294.38 active(length(cons(N, L))) -> mark(U11(tt, L)) 1126.86/294.38 active(take(0', IL)) -> mark(nil) 1126.86/294.38 active(take(s(M), cons(N, IL))) -> mark(U21(tt, IL, M, N)) 1126.86/294.38 active(cons(X1, X2)) -> cons(active(X1), X2) 1126.86/294.38 active(U11(X1, X2)) -> U11(active(X1), X2) 1126.86/294.38 active(U12(X1, X2)) -> U12(active(X1), X2) 1126.86/294.38 active(s(X)) -> s(active(X)) 1126.86/294.38 active(length(X)) -> length(active(X)) 1126.86/294.38 active(U21(X1, X2, X3, X4)) -> U21(active(X1), X2, X3, X4) 1126.86/294.38 active(U22(X1, X2, X3, X4)) -> U22(active(X1), X2, X3, X4) 1126.86/294.38 active(U23(X1, X2, X3, X4)) -> U23(active(X1), X2, X3, X4) 1126.86/294.38 active(take(X1, X2)) -> take(active(X1), X2) 1126.86/294.38 active(take(X1, X2)) -> take(X1, active(X2)) 1126.86/294.38 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1126.86/294.38 U11(mark(X1), X2) -> mark(U11(X1, X2)) 1126.86/294.38 U12(mark(X1), X2) -> mark(U12(X1, X2)) 1126.86/294.38 s(mark(X)) -> mark(s(X)) 1126.86/294.38 length(mark(X)) -> mark(length(X)) 1126.86/294.38 U21(mark(X1), X2, X3, X4) -> mark(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(mark(X1), X2, X3, X4) -> mark(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(mark(X1), X2, X3, X4) -> mark(U23(X1, X2, X3, X4)) 1126.86/294.38 take(mark(X1), X2) -> mark(take(X1, X2)) 1126.86/294.38 take(X1, mark(X2)) -> mark(take(X1, X2)) 1126.86/294.38 proper(zeros) -> ok(zeros) 1126.86/294.38 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1126.86/294.38 proper(0') -> ok(0') 1126.86/294.38 proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 1126.86/294.38 proper(tt) -> ok(tt) 1126.86/294.38 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 1126.86/294.38 proper(s(X)) -> s(proper(X)) 1126.86/294.38 proper(length(X)) -> length(proper(X)) 1126.86/294.38 proper(U21(X1, X2, X3, X4)) -> U21(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U22(X1, X2, X3, X4)) -> U22(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U23(X1, X2, X3, X4)) -> U23(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1126.86/294.38 proper(nil) -> ok(nil) 1126.86/294.38 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1126.86/294.38 U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 1126.86/294.38 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 1126.86/294.38 s(ok(X)) -> ok(s(X)) 1126.86/294.38 length(ok(X)) -> ok(length(X)) 1126.86/294.38 U21(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U23(X1, X2, X3, X4)) 1126.86/294.38 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1126.86/294.38 top(mark(X)) -> top(proper(X)) 1126.86/294.38 top(ok(X)) -> top(active(X)) 1126.86/294.38 1126.86/294.38 Types: 1126.86/294.38 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 zeros :: zeros:0':mark:tt:nil:ok 1126.86/294.38 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 0' :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 tt :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 U21 :: 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 1126.86/294.38 U22 :: 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 1126.86/294.38 U23 :: 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 1126.86/294.38 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 nil :: zeros:0':mark:tt:nil:ok 1126.86/294.38 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 top :: zeros:0':mark:tt:nil:ok -> top 1126.86/294.38 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1126.86/294.38 hole_top2_0 :: top 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1126.86/294.38 1126.86/294.38 1126.86/294.38 Lemmas: 1126.86/294.38 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) 1126.86/294.38 1126.86/294.38 1126.86/294.38 Generator Equations: 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1126.86/294.38 1126.86/294.38 1126.86/294.38 The following defined symbols remain to be analysed: 1126.86/294.38 U12, active, s, length, U22, U23, take, U11, U21, proper, top 1126.86/294.38 1126.86/294.38 They will be analysed ascendingly in the following order: 1126.86/294.38 U12 < active 1126.86/294.38 s < active 1126.86/294.38 length < active 1126.86/294.38 U22 < active 1126.86/294.38 U23 < active 1126.86/294.38 take < active 1126.86/294.38 U11 < active 1126.86/294.38 U21 < active 1126.86/294.38 active < top 1126.86/294.38 U12 < proper 1126.86/294.38 s < proper 1126.86/294.38 length < proper 1126.86/294.38 U22 < proper 1126.86/294.38 U23 < proper 1126.86/294.38 take < proper 1126.86/294.38 U11 < proper 1126.86/294.38 U21 < proper 1126.86/294.38 proper < top 1126.86/294.38 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (13) RewriteLemmaProof (LOWER BOUND(ID)) 1126.86/294.38 Proved the following rewrite lemma: 1126.86/294.38 U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1196_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n1196_0) 1126.86/294.38 1126.86/294.38 Induction Base: 1126.86/294.38 U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) 1126.86/294.38 1126.86/294.38 Induction Step: 1126.86/294.38 U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n1196_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) 1126.86/294.38 mark(U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1196_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH 1126.86/294.38 mark(*4_0) 1126.86/294.38 1126.86/294.38 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (14) 1126.86/294.38 Obligation: 1126.86/294.38 TRS: 1126.86/294.38 Rules: 1126.86/294.38 active(zeros) -> mark(cons(0', zeros)) 1126.86/294.38 active(U11(tt, L)) -> mark(U12(tt, L)) 1126.86/294.38 active(U12(tt, L)) -> mark(s(length(L))) 1126.86/294.38 active(U21(tt, IL, M, N)) -> mark(U22(tt, IL, M, N)) 1126.86/294.38 active(U22(tt, IL, M, N)) -> mark(U23(tt, IL, M, N)) 1126.86/294.38 active(U23(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1126.86/294.38 active(length(nil)) -> mark(0') 1126.86/294.38 active(length(cons(N, L))) -> mark(U11(tt, L)) 1126.86/294.38 active(take(0', IL)) -> mark(nil) 1126.86/294.38 active(take(s(M), cons(N, IL))) -> mark(U21(tt, IL, M, N)) 1126.86/294.38 active(cons(X1, X2)) -> cons(active(X1), X2) 1126.86/294.38 active(U11(X1, X2)) -> U11(active(X1), X2) 1126.86/294.38 active(U12(X1, X2)) -> U12(active(X1), X2) 1126.86/294.38 active(s(X)) -> s(active(X)) 1126.86/294.38 active(length(X)) -> length(active(X)) 1126.86/294.38 active(U21(X1, X2, X3, X4)) -> U21(active(X1), X2, X3, X4) 1126.86/294.38 active(U22(X1, X2, X3, X4)) -> U22(active(X1), X2, X3, X4) 1126.86/294.38 active(U23(X1, X2, X3, X4)) -> U23(active(X1), X2, X3, X4) 1126.86/294.38 active(take(X1, X2)) -> take(active(X1), X2) 1126.86/294.38 active(take(X1, X2)) -> take(X1, active(X2)) 1126.86/294.38 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1126.86/294.38 U11(mark(X1), X2) -> mark(U11(X1, X2)) 1126.86/294.38 U12(mark(X1), X2) -> mark(U12(X1, X2)) 1126.86/294.38 s(mark(X)) -> mark(s(X)) 1126.86/294.38 length(mark(X)) -> mark(length(X)) 1126.86/294.38 U21(mark(X1), X2, X3, X4) -> mark(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(mark(X1), X2, X3, X4) -> mark(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(mark(X1), X2, X3, X4) -> mark(U23(X1, X2, X3, X4)) 1126.86/294.38 take(mark(X1), X2) -> mark(take(X1, X2)) 1126.86/294.38 take(X1, mark(X2)) -> mark(take(X1, X2)) 1126.86/294.38 proper(zeros) -> ok(zeros) 1126.86/294.38 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1126.86/294.38 proper(0') -> ok(0') 1126.86/294.38 proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 1126.86/294.38 proper(tt) -> ok(tt) 1126.86/294.38 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 1126.86/294.38 proper(s(X)) -> s(proper(X)) 1126.86/294.38 proper(length(X)) -> length(proper(X)) 1126.86/294.38 proper(U21(X1, X2, X3, X4)) -> U21(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U22(X1, X2, X3, X4)) -> U22(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U23(X1, X2, X3, X4)) -> U23(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1126.86/294.38 proper(nil) -> ok(nil) 1126.86/294.38 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1126.86/294.38 U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 1126.86/294.38 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 1126.86/294.38 s(ok(X)) -> ok(s(X)) 1126.86/294.38 length(ok(X)) -> ok(length(X)) 1126.86/294.38 U21(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U23(X1, X2, X3, X4)) 1126.86/294.38 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1126.86/294.38 top(mark(X)) -> top(proper(X)) 1126.86/294.38 top(ok(X)) -> top(active(X)) 1126.86/294.38 1126.86/294.38 Types: 1126.86/294.38 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 zeros :: zeros:0':mark:tt:nil:ok 1126.86/294.38 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 0' :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 tt :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 U21 :: 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 1126.86/294.38 U22 :: 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 1126.86/294.38 U23 :: 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 1126.86/294.38 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 nil :: zeros:0':mark:tt:nil:ok 1126.86/294.38 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 top :: zeros:0':mark:tt:nil:ok -> top 1126.86/294.38 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1126.86/294.38 hole_top2_0 :: top 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1126.86/294.38 1126.86/294.38 1126.86/294.38 Lemmas: 1126.86/294.38 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) 1126.86/294.38 U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1196_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n1196_0) 1126.86/294.38 1126.86/294.38 1126.86/294.38 Generator Equations: 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1126.86/294.38 1126.86/294.38 1126.86/294.38 The following defined symbols remain to be analysed: 1126.86/294.38 s, active, length, U22, U23, take, U11, U21, proper, top 1126.86/294.38 1126.86/294.38 They will be analysed ascendingly in the following order: 1126.86/294.38 s < active 1126.86/294.38 length < active 1126.86/294.38 U22 < active 1126.86/294.38 U23 < active 1126.86/294.38 take < active 1126.86/294.38 U11 < active 1126.86/294.38 U21 < active 1126.86/294.38 active < top 1126.86/294.38 s < proper 1126.86/294.38 length < proper 1126.86/294.38 U22 < proper 1126.86/294.38 U23 < proper 1126.86/294.38 take < proper 1126.86/294.38 U11 < proper 1126.86/294.38 U21 < proper 1126.86/294.38 proper < top 1126.86/294.38 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (15) RewriteLemmaProof (LOWER BOUND(ID)) 1126.86/294.38 Proved the following rewrite lemma: 1126.86/294.38 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2693_0))) -> *4_0, rt in Omega(n2693_0) 1126.86/294.38 1126.86/294.38 Induction Base: 1126.86/294.38 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) 1126.86/294.38 1126.86/294.38 Induction Step: 1126.86/294.38 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n2693_0, 1)))) ->_R^Omega(1) 1126.86/294.38 mark(s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2693_0)))) ->_IH 1126.86/294.38 mark(*4_0) 1126.86/294.38 1126.86/294.38 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (16) 1126.86/294.38 Obligation: 1126.86/294.38 TRS: 1126.86/294.38 Rules: 1126.86/294.38 active(zeros) -> mark(cons(0', zeros)) 1126.86/294.38 active(U11(tt, L)) -> mark(U12(tt, L)) 1126.86/294.38 active(U12(tt, L)) -> mark(s(length(L))) 1126.86/294.38 active(U21(tt, IL, M, N)) -> mark(U22(tt, IL, M, N)) 1126.86/294.38 active(U22(tt, IL, M, N)) -> mark(U23(tt, IL, M, N)) 1126.86/294.38 active(U23(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1126.86/294.38 active(length(nil)) -> mark(0') 1126.86/294.38 active(length(cons(N, L))) -> mark(U11(tt, L)) 1126.86/294.38 active(take(0', IL)) -> mark(nil) 1126.86/294.38 active(take(s(M), cons(N, IL))) -> mark(U21(tt, IL, M, N)) 1126.86/294.38 active(cons(X1, X2)) -> cons(active(X1), X2) 1126.86/294.38 active(U11(X1, X2)) -> U11(active(X1), X2) 1126.86/294.38 active(U12(X1, X2)) -> U12(active(X1), X2) 1126.86/294.38 active(s(X)) -> s(active(X)) 1126.86/294.38 active(length(X)) -> length(active(X)) 1126.86/294.38 active(U21(X1, X2, X3, X4)) -> U21(active(X1), X2, X3, X4) 1126.86/294.38 active(U22(X1, X2, X3, X4)) -> U22(active(X1), X2, X3, X4) 1126.86/294.38 active(U23(X1, X2, X3, X4)) -> U23(active(X1), X2, X3, X4) 1126.86/294.38 active(take(X1, X2)) -> take(active(X1), X2) 1126.86/294.38 active(take(X1, X2)) -> take(X1, active(X2)) 1126.86/294.38 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1126.86/294.38 U11(mark(X1), X2) -> mark(U11(X1, X2)) 1126.86/294.38 U12(mark(X1), X2) -> mark(U12(X1, X2)) 1126.86/294.38 s(mark(X)) -> mark(s(X)) 1126.86/294.38 length(mark(X)) -> mark(length(X)) 1126.86/294.38 U21(mark(X1), X2, X3, X4) -> mark(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(mark(X1), X2, X3, X4) -> mark(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(mark(X1), X2, X3, X4) -> mark(U23(X1, X2, X3, X4)) 1126.86/294.38 take(mark(X1), X2) -> mark(take(X1, X2)) 1126.86/294.38 take(X1, mark(X2)) -> mark(take(X1, X2)) 1126.86/294.38 proper(zeros) -> ok(zeros) 1126.86/294.38 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1126.86/294.38 proper(0') -> ok(0') 1126.86/294.38 proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 1126.86/294.38 proper(tt) -> ok(tt) 1126.86/294.38 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 1126.86/294.38 proper(s(X)) -> s(proper(X)) 1126.86/294.38 proper(length(X)) -> length(proper(X)) 1126.86/294.38 proper(U21(X1, X2, X3, X4)) -> U21(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U22(X1, X2, X3, X4)) -> U22(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U23(X1, X2, X3, X4)) -> U23(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1126.86/294.38 proper(nil) -> ok(nil) 1126.86/294.38 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1126.86/294.38 U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 1126.86/294.38 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 1126.86/294.38 s(ok(X)) -> ok(s(X)) 1126.86/294.38 length(ok(X)) -> ok(length(X)) 1126.86/294.38 U21(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U23(X1, X2, X3, X4)) 1126.86/294.38 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1126.86/294.38 top(mark(X)) -> top(proper(X)) 1126.86/294.38 top(ok(X)) -> top(active(X)) 1126.86/294.38 1126.86/294.38 Types: 1126.86/294.38 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 zeros :: zeros:0':mark:tt:nil:ok 1126.86/294.38 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 0' :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 tt :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 U21 :: 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 1126.86/294.38 U22 :: 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 1126.86/294.38 U23 :: 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 1126.86/294.38 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 nil :: zeros:0':mark:tt:nil:ok 1126.86/294.38 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 top :: zeros:0':mark:tt:nil:ok -> top 1126.86/294.38 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1126.86/294.38 hole_top2_0 :: top 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1126.86/294.38 1126.86/294.38 1126.86/294.38 Lemmas: 1126.86/294.38 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) 1126.86/294.38 U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1196_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n1196_0) 1126.86/294.38 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2693_0))) -> *4_0, rt in Omega(n2693_0) 1126.86/294.38 1126.86/294.38 1126.86/294.38 Generator Equations: 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1126.86/294.38 1126.86/294.38 1126.86/294.38 The following defined symbols remain to be analysed: 1126.86/294.38 length, active, U22, U23, take, U11, U21, proper, top 1126.86/294.38 1126.86/294.38 They will be analysed ascendingly in the following order: 1126.86/294.38 length < active 1126.86/294.38 U22 < active 1126.86/294.38 U23 < active 1126.86/294.38 take < active 1126.86/294.38 U11 < active 1126.86/294.38 U21 < active 1126.86/294.38 active < top 1126.86/294.38 length < proper 1126.86/294.38 U22 < proper 1126.86/294.38 U23 < proper 1126.86/294.38 take < proper 1126.86/294.38 U11 < proper 1126.86/294.38 U21 < proper 1126.86/294.38 proper < top 1126.86/294.38 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (17) RewriteLemmaProof (LOWER BOUND(ID)) 1126.86/294.38 Proved the following rewrite lemma: 1126.86/294.38 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3422_0))) -> *4_0, rt in Omega(n3422_0) 1126.86/294.38 1126.86/294.38 Induction Base: 1126.86/294.38 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) 1126.86/294.38 1126.86/294.38 Induction Step: 1126.86/294.38 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n3422_0, 1)))) ->_R^Omega(1) 1126.86/294.38 mark(length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3422_0)))) ->_IH 1126.86/294.38 mark(*4_0) 1126.86/294.38 1126.86/294.38 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (18) 1126.86/294.38 Obligation: 1126.86/294.38 TRS: 1126.86/294.38 Rules: 1126.86/294.38 active(zeros) -> mark(cons(0', zeros)) 1126.86/294.38 active(U11(tt, L)) -> mark(U12(tt, L)) 1126.86/294.38 active(U12(tt, L)) -> mark(s(length(L))) 1126.86/294.38 active(U21(tt, IL, M, N)) -> mark(U22(tt, IL, M, N)) 1126.86/294.38 active(U22(tt, IL, M, N)) -> mark(U23(tt, IL, M, N)) 1126.86/294.38 active(U23(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1126.86/294.38 active(length(nil)) -> mark(0') 1126.86/294.38 active(length(cons(N, L))) -> mark(U11(tt, L)) 1126.86/294.38 active(take(0', IL)) -> mark(nil) 1126.86/294.38 active(take(s(M), cons(N, IL))) -> mark(U21(tt, IL, M, N)) 1126.86/294.38 active(cons(X1, X2)) -> cons(active(X1), X2) 1126.86/294.38 active(U11(X1, X2)) -> U11(active(X1), X2) 1126.86/294.38 active(U12(X1, X2)) -> U12(active(X1), X2) 1126.86/294.38 active(s(X)) -> s(active(X)) 1126.86/294.38 active(length(X)) -> length(active(X)) 1126.86/294.38 active(U21(X1, X2, X3, X4)) -> U21(active(X1), X2, X3, X4) 1126.86/294.38 active(U22(X1, X2, X3, X4)) -> U22(active(X1), X2, X3, X4) 1126.86/294.38 active(U23(X1, X2, X3, X4)) -> U23(active(X1), X2, X3, X4) 1126.86/294.38 active(take(X1, X2)) -> take(active(X1), X2) 1126.86/294.38 active(take(X1, X2)) -> take(X1, active(X2)) 1126.86/294.38 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1126.86/294.38 U11(mark(X1), X2) -> mark(U11(X1, X2)) 1126.86/294.38 U12(mark(X1), X2) -> mark(U12(X1, X2)) 1126.86/294.38 s(mark(X)) -> mark(s(X)) 1126.86/294.38 length(mark(X)) -> mark(length(X)) 1126.86/294.38 U21(mark(X1), X2, X3, X4) -> mark(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(mark(X1), X2, X3, X4) -> mark(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(mark(X1), X2, X3, X4) -> mark(U23(X1, X2, X3, X4)) 1126.86/294.38 take(mark(X1), X2) -> mark(take(X1, X2)) 1126.86/294.38 take(X1, mark(X2)) -> mark(take(X1, X2)) 1126.86/294.38 proper(zeros) -> ok(zeros) 1126.86/294.38 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1126.86/294.38 proper(0') -> ok(0') 1126.86/294.38 proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 1126.86/294.38 proper(tt) -> ok(tt) 1126.86/294.38 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 1126.86/294.38 proper(s(X)) -> s(proper(X)) 1126.86/294.38 proper(length(X)) -> length(proper(X)) 1126.86/294.38 proper(U21(X1, X2, X3, X4)) -> U21(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U22(X1, X2, X3, X4)) -> U22(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U23(X1, X2, X3, X4)) -> U23(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1126.86/294.38 proper(nil) -> ok(nil) 1126.86/294.38 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1126.86/294.38 U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 1126.86/294.38 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 1126.86/294.38 s(ok(X)) -> ok(s(X)) 1126.86/294.38 length(ok(X)) -> ok(length(X)) 1126.86/294.38 U21(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U23(X1, X2, X3, X4)) 1126.86/294.38 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1126.86/294.38 top(mark(X)) -> top(proper(X)) 1126.86/294.38 top(ok(X)) -> top(active(X)) 1126.86/294.38 1126.86/294.38 Types: 1126.86/294.38 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 zeros :: zeros:0':mark:tt:nil:ok 1126.86/294.38 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 0' :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 tt :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 U21 :: 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 1126.86/294.38 U22 :: 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 1126.86/294.38 U23 :: 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 1126.86/294.38 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 nil :: zeros:0':mark:tt:nil:ok 1126.86/294.38 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 top :: zeros:0':mark:tt:nil:ok -> top 1126.86/294.38 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1126.86/294.38 hole_top2_0 :: top 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1126.86/294.38 1126.86/294.38 1126.86/294.38 Lemmas: 1126.86/294.38 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) 1126.86/294.38 U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1196_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n1196_0) 1126.86/294.38 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2693_0))) -> *4_0, rt in Omega(n2693_0) 1126.86/294.38 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3422_0))) -> *4_0, rt in Omega(n3422_0) 1126.86/294.38 1126.86/294.38 1126.86/294.38 Generator Equations: 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1126.86/294.38 1126.86/294.38 1126.86/294.38 The following defined symbols remain to be analysed: 1126.86/294.38 U22, active, U23, take, U11, U21, proper, top 1126.86/294.38 1126.86/294.38 They will be analysed ascendingly in the following order: 1126.86/294.38 U22 < active 1126.86/294.38 U23 < active 1126.86/294.38 take < active 1126.86/294.38 U11 < active 1126.86/294.38 U21 < active 1126.86/294.38 active < top 1126.86/294.38 U22 < proper 1126.86/294.38 U23 < proper 1126.86/294.38 take < proper 1126.86/294.38 U11 < proper 1126.86/294.38 U21 < proper 1126.86/294.38 proper < top 1126.86/294.38 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (19) RewriteLemmaProof (LOWER BOUND(ID)) 1126.86/294.38 Proved the following rewrite lemma: 1126.86/294.38 U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4252_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(n4252_0) 1126.86/294.38 1126.86/294.38 Induction Base: 1126.86/294.38 U22(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)) 1126.86/294.38 1126.86/294.38 Induction Step: 1126.86/294.38 U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n4252_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) 1126.86/294.38 mark(U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4252_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 1126.86/294.38 mark(*4_0) 1126.86/294.38 1126.86/294.38 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (20) 1126.86/294.38 Obligation: 1126.86/294.38 TRS: 1126.86/294.38 Rules: 1126.86/294.38 active(zeros) -> mark(cons(0', zeros)) 1126.86/294.38 active(U11(tt, L)) -> mark(U12(tt, L)) 1126.86/294.38 active(U12(tt, L)) -> mark(s(length(L))) 1126.86/294.38 active(U21(tt, IL, M, N)) -> mark(U22(tt, IL, M, N)) 1126.86/294.38 active(U22(tt, IL, M, N)) -> mark(U23(tt, IL, M, N)) 1126.86/294.38 active(U23(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1126.86/294.38 active(length(nil)) -> mark(0') 1126.86/294.38 active(length(cons(N, L))) -> mark(U11(tt, L)) 1126.86/294.38 active(take(0', IL)) -> mark(nil) 1126.86/294.38 active(take(s(M), cons(N, IL))) -> mark(U21(tt, IL, M, N)) 1126.86/294.38 active(cons(X1, X2)) -> cons(active(X1), X2) 1126.86/294.38 active(U11(X1, X2)) -> U11(active(X1), X2) 1126.86/294.38 active(U12(X1, X2)) -> U12(active(X1), X2) 1126.86/294.38 active(s(X)) -> s(active(X)) 1126.86/294.38 active(length(X)) -> length(active(X)) 1126.86/294.38 active(U21(X1, X2, X3, X4)) -> U21(active(X1), X2, X3, X4) 1126.86/294.38 active(U22(X1, X2, X3, X4)) -> U22(active(X1), X2, X3, X4) 1126.86/294.38 active(U23(X1, X2, X3, X4)) -> U23(active(X1), X2, X3, X4) 1126.86/294.38 active(take(X1, X2)) -> take(active(X1), X2) 1126.86/294.38 active(take(X1, X2)) -> take(X1, active(X2)) 1126.86/294.38 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1126.86/294.38 U11(mark(X1), X2) -> mark(U11(X1, X2)) 1126.86/294.38 U12(mark(X1), X2) -> mark(U12(X1, X2)) 1126.86/294.38 s(mark(X)) -> mark(s(X)) 1126.86/294.38 length(mark(X)) -> mark(length(X)) 1126.86/294.38 U21(mark(X1), X2, X3, X4) -> mark(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(mark(X1), X2, X3, X4) -> mark(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(mark(X1), X2, X3, X4) -> mark(U23(X1, X2, X3, X4)) 1126.86/294.38 take(mark(X1), X2) -> mark(take(X1, X2)) 1126.86/294.38 take(X1, mark(X2)) -> mark(take(X1, X2)) 1126.86/294.38 proper(zeros) -> ok(zeros) 1126.86/294.38 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1126.86/294.38 proper(0') -> ok(0') 1126.86/294.38 proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 1126.86/294.38 proper(tt) -> ok(tt) 1126.86/294.38 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 1126.86/294.38 proper(s(X)) -> s(proper(X)) 1126.86/294.38 proper(length(X)) -> length(proper(X)) 1126.86/294.38 proper(U21(X1, X2, X3, X4)) -> U21(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U22(X1, X2, X3, X4)) -> U22(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U23(X1, X2, X3, X4)) -> U23(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1126.86/294.38 proper(nil) -> ok(nil) 1126.86/294.38 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1126.86/294.38 U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 1126.86/294.38 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 1126.86/294.38 s(ok(X)) -> ok(s(X)) 1126.86/294.38 length(ok(X)) -> ok(length(X)) 1126.86/294.38 U21(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U23(X1, X2, X3, X4)) 1126.86/294.38 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1126.86/294.38 top(mark(X)) -> top(proper(X)) 1126.86/294.38 top(ok(X)) -> top(active(X)) 1126.86/294.38 1126.86/294.38 Types: 1126.86/294.38 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 zeros :: zeros:0':mark:tt:nil:ok 1126.86/294.38 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 0' :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 tt :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 U21 :: 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 1126.86/294.38 U22 :: 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 1126.86/294.38 U23 :: 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 1126.86/294.38 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 nil :: zeros:0':mark:tt:nil:ok 1126.86/294.38 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 top :: zeros:0':mark:tt:nil:ok -> top 1126.86/294.38 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1126.86/294.38 hole_top2_0 :: top 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1126.86/294.38 1126.86/294.38 1126.86/294.38 Lemmas: 1126.86/294.38 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) 1126.86/294.38 U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1196_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n1196_0) 1126.86/294.38 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2693_0))) -> *4_0, rt in Omega(n2693_0) 1126.86/294.38 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3422_0))) -> *4_0, rt in Omega(n3422_0) 1126.86/294.38 U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4252_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(n4252_0) 1126.86/294.38 1126.86/294.38 1126.86/294.38 Generator Equations: 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1126.86/294.38 1126.86/294.38 1126.86/294.38 The following defined symbols remain to be analysed: 1126.86/294.38 U23, active, take, U11, U21, proper, top 1126.86/294.38 1126.86/294.38 They will be analysed ascendingly in the following order: 1126.86/294.38 U23 < active 1126.86/294.38 take < active 1126.86/294.38 U11 < active 1126.86/294.38 U21 < active 1126.86/294.38 active < top 1126.86/294.38 U23 < proper 1126.86/294.38 take < proper 1126.86/294.38 U11 < proper 1126.86/294.38 U21 < proper 1126.86/294.38 proper < top 1126.86/294.38 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (21) RewriteLemmaProof (LOWER BOUND(ID)) 1126.86/294.38 Proved the following rewrite lemma: 1126.86/294.38 U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9047_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(n9047_0) 1126.86/294.38 1126.86/294.38 Induction Base: 1126.86/294.38 U23(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)) 1126.86/294.38 1126.86/294.38 Induction Step: 1126.86/294.38 U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n9047_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) 1126.86/294.38 mark(U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9047_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 1126.86/294.38 mark(*4_0) 1126.86/294.38 1126.86/294.38 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (22) 1126.86/294.38 Obligation: 1126.86/294.38 TRS: 1126.86/294.38 Rules: 1126.86/294.38 active(zeros) -> mark(cons(0', zeros)) 1126.86/294.38 active(U11(tt, L)) -> mark(U12(tt, L)) 1126.86/294.38 active(U12(tt, L)) -> mark(s(length(L))) 1126.86/294.38 active(U21(tt, IL, M, N)) -> mark(U22(tt, IL, M, N)) 1126.86/294.38 active(U22(tt, IL, M, N)) -> mark(U23(tt, IL, M, N)) 1126.86/294.38 active(U23(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1126.86/294.38 active(length(nil)) -> mark(0') 1126.86/294.38 active(length(cons(N, L))) -> mark(U11(tt, L)) 1126.86/294.38 active(take(0', IL)) -> mark(nil) 1126.86/294.38 active(take(s(M), cons(N, IL))) -> mark(U21(tt, IL, M, N)) 1126.86/294.38 active(cons(X1, X2)) -> cons(active(X1), X2) 1126.86/294.38 active(U11(X1, X2)) -> U11(active(X1), X2) 1126.86/294.38 active(U12(X1, X2)) -> U12(active(X1), X2) 1126.86/294.38 active(s(X)) -> s(active(X)) 1126.86/294.38 active(length(X)) -> length(active(X)) 1126.86/294.38 active(U21(X1, X2, X3, X4)) -> U21(active(X1), X2, X3, X4) 1126.86/294.38 active(U22(X1, X2, X3, X4)) -> U22(active(X1), X2, X3, X4) 1126.86/294.38 active(U23(X1, X2, X3, X4)) -> U23(active(X1), X2, X3, X4) 1126.86/294.38 active(take(X1, X2)) -> take(active(X1), X2) 1126.86/294.38 active(take(X1, X2)) -> take(X1, active(X2)) 1126.86/294.38 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1126.86/294.38 U11(mark(X1), X2) -> mark(U11(X1, X2)) 1126.86/294.38 U12(mark(X1), X2) -> mark(U12(X1, X2)) 1126.86/294.38 s(mark(X)) -> mark(s(X)) 1126.86/294.38 length(mark(X)) -> mark(length(X)) 1126.86/294.38 U21(mark(X1), X2, X3, X4) -> mark(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(mark(X1), X2, X3, X4) -> mark(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(mark(X1), X2, X3, X4) -> mark(U23(X1, X2, X3, X4)) 1126.86/294.38 take(mark(X1), X2) -> mark(take(X1, X2)) 1126.86/294.38 take(X1, mark(X2)) -> mark(take(X1, X2)) 1126.86/294.38 proper(zeros) -> ok(zeros) 1126.86/294.38 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1126.86/294.38 proper(0') -> ok(0') 1126.86/294.38 proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 1126.86/294.38 proper(tt) -> ok(tt) 1126.86/294.38 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 1126.86/294.38 proper(s(X)) -> s(proper(X)) 1126.86/294.38 proper(length(X)) -> length(proper(X)) 1126.86/294.38 proper(U21(X1, X2, X3, X4)) -> U21(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U22(X1, X2, X3, X4)) -> U22(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U23(X1, X2, X3, X4)) -> U23(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1126.86/294.38 proper(nil) -> ok(nil) 1126.86/294.38 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1126.86/294.38 U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 1126.86/294.38 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 1126.86/294.38 s(ok(X)) -> ok(s(X)) 1126.86/294.38 length(ok(X)) -> ok(length(X)) 1126.86/294.38 U21(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U23(X1, X2, X3, X4)) 1126.86/294.38 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1126.86/294.38 top(mark(X)) -> top(proper(X)) 1126.86/294.38 top(ok(X)) -> top(active(X)) 1126.86/294.38 1126.86/294.38 Types: 1126.86/294.38 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 zeros :: zeros:0':mark:tt:nil:ok 1126.86/294.38 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 0' :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 tt :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 U21 :: 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 1126.86/294.38 U22 :: 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 1126.86/294.38 U23 :: 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 1126.86/294.38 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 nil :: zeros:0':mark:tt:nil:ok 1126.86/294.38 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 top :: zeros:0':mark:tt:nil:ok -> top 1126.86/294.38 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1126.86/294.38 hole_top2_0 :: top 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1126.86/294.38 1126.86/294.38 1126.86/294.38 Lemmas: 1126.86/294.38 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) 1126.86/294.38 U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1196_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n1196_0) 1126.86/294.38 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2693_0))) -> *4_0, rt in Omega(n2693_0) 1126.86/294.38 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3422_0))) -> *4_0, rt in Omega(n3422_0) 1126.86/294.38 U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4252_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(n4252_0) 1126.86/294.38 U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9047_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(n9047_0) 1126.86/294.38 1126.86/294.38 1126.86/294.38 Generator Equations: 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1126.86/294.38 1126.86/294.38 1126.86/294.38 The following defined symbols remain to be analysed: 1126.86/294.38 take, active, U11, U21, proper, top 1126.86/294.38 1126.86/294.38 They will be analysed ascendingly in the following order: 1126.86/294.38 take < active 1126.86/294.38 U11 < active 1126.86/294.38 U21 < active 1126.86/294.38 active < top 1126.86/294.38 take < proper 1126.86/294.38 U11 < proper 1126.86/294.38 U21 < proper 1126.86/294.38 proper < top 1126.86/294.38 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (23) RewriteLemmaProof (LOWER BOUND(ID)) 1126.86/294.38 Proved the following rewrite lemma: 1126.86/294.38 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n14852_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n14852_0) 1126.86/294.38 1126.86/294.38 Induction Base: 1126.86/294.38 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) 1126.86/294.38 1126.86/294.38 Induction Step: 1126.86/294.38 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n14852_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) 1126.86/294.38 mark(take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n14852_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH 1126.86/294.38 mark(*4_0) 1126.86/294.38 1126.86/294.38 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (24) 1126.86/294.38 Obligation: 1126.86/294.38 TRS: 1126.86/294.38 Rules: 1126.86/294.38 active(zeros) -> mark(cons(0', zeros)) 1126.86/294.38 active(U11(tt, L)) -> mark(U12(tt, L)) 1126.86/294.38 active(U12(tt, L)) -> mark(s(length(L))) 1126.86/294.38 active(U21(tt, IL, M, N)) -> mark(U22(tt, IL, M, N)) 1126.86/294.38 active(U22(tt, IL, M, N)) -> mark(U23(tt, IL, M, N)) 1126.86/294.38 active(U23(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1126.86/294.38 active(length(nil)) -> mark(0') 1126.86/294.38 active(length(cons(N, L))) -> mark(U11(tt, L)) 1126.86/294.38 active(take(0', IL)) -> mark(nil) 1126.86/294.38 active(take(s(M), cons(N, IL))) -> mark(U21(tt, IL, M, N)) 1126.86/294.38 active(cons(X1, X2)) -> cons(active(X1), X2) 1126.86/294.38 active(U11(X1, X2)) -> U11(active(X1), X2) 1126.86/294.38 active(U12(X1, X2)) -> U12(active(X1), X2) 1126.86/294.38 active(s(X)) -> s(active(X)) 1126.86/294.38 active(length(X)) -> length(active(X)) 1126.86/294.38 active(U21(X1, X2, X3, X4)) -> U21(active(X1), X2, X3, X4) 1126.86/294.38 active(U22(X1, X2, X3, X4)) -> U22(active(X1), X2, X3, X4) 1126.86/294.38 active(U23(X1, X2, X3, X4)) -> U23(active(X1), X2, X3, X4) 1126.86/294.38 active(take(X1, X2)) -> take(active(X1), X2) 1126.86/294.38 active(take(X1, X2)) -> take(X1, active(X2)) 1126.86/294.38 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1126.86/294.38 U11(mark(X1), X2) -> mark(U11(X1, X2)) 1126.86/294.38 U12(mark(X1), X2) -> mark(U12(X1, X2)) 1126.86/294.38 s(mark(X)) -> mark(s(X)) 1126.86/294.38 length(mark(X)) -> mark(length(X)) 1126.86/294.38 U21(mark(X1), X2, X3, X4) -> mark(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(mark(X1), X2, X3, X4) -> mark(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(mark(X1), X2, X3, X4) -> mark(U23(X1, X2, X3, X4)) 1126.86/294.38 take(mark(X1), X2) -> mark(take(X1, X2)) 1126.86/294.38 take(X1, mark(X2)) -> mark(take(X1, X2)) 1126.86/294.38 proper(zeros) -> ok(zeros) 1126.86/294.38 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1126.86/294.38 proper(0') -> ok(0') 1126.86/294.38 proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 1126.86/294.38 proper(tt) -> ok(tt) 1126.86/294.38 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 1126.86/294.38 proper(s(X)) -> s(proper(X)) 1126.86/294.38 proper(length(X)) -> length(proper(X)) 1126.86/294.38 proper(U21(X1, X2, X3, X4)) -> U21(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U22(X1, X2, X3, X4)) -> U22(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U23(X1, X2, X3, X4)) -> U23(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1126.86/294.38 proper(nil) -> ok(nil) 1126.86/294.38 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1126.86/294.38 U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 1126.86/294.38 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 1126.86/294.38 s(ok(X)) -> ok(s(X)) 1126.86/294.38 length(ok(X)) -> ok(length(X)) 1126.86/294.38 U21(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U23(X1, X2, X3, X4)) 1126.86/294.38 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1126.86/294.38 top(mark(X)) -> top(proper(X)) 1126.86/294.38 top(ok(X)) -> top(active(X)) 1126.86/294.38 1126.86/294.38 Types: 1126.86/294.38 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 zeros :: zeros:0':mark:tt:nil:ok 1126.86/294.38 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 0' :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 tt :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 U21 :: 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 1126.86/294.38 U22 :: 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 1126.86/294.38 U23 :: 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 1126.86/294.38 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 nil :: zeros:0':mark:tt:nil:ok 1126.86/294.38 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 top :: zeros:0':mark:tt:nil:ok -> top 1126.86/294.38 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1126.86/294.38 hole_top2_0 :: top 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1126.86/294.38 1126.86/294.38 1126.86/294.38 Lemmas: 1126.86/294.38 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) 1126.86/294.38 U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1196_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n1196_0) 1126.86/294.38 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2693_0))) -> *4_0, rt in Omega(n2693_0) 1126.86/294.38 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3422_0))) -> *4_0, rt in Omega(n3422_0) 1126.86/294.38 U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4252_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(n4252_0) 1126.86/294.38 U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9047_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(n9047_0) 1126.86/294.38 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n14852_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n14852_0) 1126.86/294.38 1126.86/294.38 1126.86/294.38 Generator Equations: 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1126.86/294.38 1126.86/294.38 1126.86/294.38 The following defined symbols remain to be analysed: 1126.86/294.38 U11, active, U21, proper, top 1126.86/294.38 1126.86/294.38 They will be analysed ascendingly in the following order: 1126.86/294.38 U11 < active 1126.86/294.38 U21 < active 1126.86/294.38 active < top 1126.86/294.38 U11 < proper 1126.86/294.38 U21 < proper 1126.86/294.38 proper < top 1126.86/294.38 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (25) RewriteLemmaProof (LOWER BOUND(ID)) 1126.86/294.38 Proved the following rewrite lemma: 1126.86/294.38 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18274_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n18274_0) 1126.86/294.38 1126.86/294.38 Induction Base: 1126.86/294.38 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) 1126.86/294.38 1126.86/294.38 Induction Step: 1126.86/294.38 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n18274_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) 1126.86/294.38 mark(U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18274_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH 1126.86/294.38 mark(*4_0) 1126.86/294.38 1126.86/294.38 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1126.86/294.38 ---------------------------------------- 1126.86/294.38 1126.86/294.38 (26) 1126.86/294.38 Obligation: 1126.86/294.38 TRS: 1126.86/294.38 Rules: 1126.86/294.38 active(zeros) -> mark(cons(0', zeros)) 1126.86/294.38 active(U11(tt, L)) -> mark(U12(tt, L)) 1126.86/294.38 active(U12(tt, L)) -> mark(s(length(L))) 1126.86/294.38 active(U21(tt, IL, M, N)) -> mark(U22(tt, IL, M, N)) 1126.86/294.38 active(U22(tt, IL, M, N)) -> mark(U23(tt, IL, M, N)) 1126.86/294.38 active(U23(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1126.86/294.38 active(length(nil)) -> mark(0') 1126.86/294.38 active(length(cons(N, L))) -> mark(U11(tt, L)) 1126.86/294.38 active(take(0', IL)) -> mark(nil) 1126.86/294.38 active(take(s(M), cons(N, IL))) -> mark(U21(tt, IL, M, N)) 1126.86/294.38 active(cons(X1, X2)) -> cons(active(X1), X2) 1126.86/294.38 active(U11(X1, X2)) -> U11(active(X1), X2) 1126.86/294.38 active(U12(X1, X2)) -> U12(active(X1), X2) 1126.86/294.38 active(s(X)) -> s(active(X)) 1126.86/294.38 active(length(X)) -> length(active(X)) 1126.86/294.38 active(U21(X1, X2, X3, X4)) -> U21(active(X1), X2, X3, X4) 1126.86/294.38 active(U22(X1, X2, X3, X4)) -> U22(active(X1), X2, X3, X4) 1126.86/294.38 active(U23(X1, X2, X3, X4)) -> U23(active(X1), X2, X3, X4) 1126.86/294.38 active(take(X1, X2)) -> take(active(X1), X2) 1126.86/294.38 active(take(X1, X2)) -> take(X1, active(X2)) 1126.86/294.38 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1126.86/294.38 U11(mark(X1), X2) -> mark(U11(X1, X2)) 1126.86/294.38 U12(mark(X1), X2) -> mark(U12(X1, X2)) 1126.86/294.38 s(mark(X)) -> mark(s(X)) 1126.86/294.38 length(mark(X)) -> mark(length(X)) 1126.86/294.38 U21(mark(X1), X2, X3, X4) -> mark(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(mark(X1), X2, X3, X4) -> mark(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(mark(X1), X2, X3, X4) -> mark(U23(X1, X2, X3, X4)) 1126.86/294.38 take(mark(X1), X2) -> mark(take(X1, X2)) 1126.86/294.38 take(X1, mark(X2)) -> mark(take(X1, X2)) 1126.86/294.38 proper(zeros) -> ok(zeros) 1126.86/294.38 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1126.86/294.38 proper(0') -> ok(0') 1126.86/294.38 proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 1126.86/294.38 proper(tt) -> ok(tt) 1126.86/294.38 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 1126.86/294.38 proper(s(X)) -> s(proper(X)) 1126.86/294.38 proper(length(X)) -> length(proper(X)) 1126.86/294.38 proper(U21(X1, X2, X3, X4)) -> U21(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U22(X1, X2, X3, X4)) -> U22(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(U23(X1, X2, X3, X4)) -> U23(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.38 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1126.86/294.38 proper(nil) -> ok(nil) 1126.86/294.38 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1126.86/294.38 U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 1126.86/294.38 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 1126.86/294.38 s(ok(X)) -> ok(s(X)) 1126.86/294.38 length(ok(X)) -> ok(length(X)) 1126.86/294.38 U21(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U21(X1, X2, X3, X4)) 1126.86/294.38 U22(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U22(X1, X2, X3, X4)) 1126.86/294.38 U23(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U23(X1, X2, X3, X4)) 1126.86/294.38 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1126.86/294.38 top(mark(X)) -> top(proper(X)) 1126.86/294.38 top(ok(X)) -> top(active(X)) 1126.86/294.38 1126.86/294.38 Types: 1126.86/294.38 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 zeros :: zeros:0':mark:tt:nil:ok 1126.86/294.38 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 0' :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 tt :: zeros:0':mark:tt:nil:ok 1126.86/294.38 U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 U21 :: 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 1126.86/294.38 U22 :: 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 1126.86/294.38 U23 :: 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 1126.86/294.38 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 nil :: zeros:0':mark:tt:nil:ok 1126.86/294.38 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.38 top :: zeros:0':mark:tt:nil:ok -> top 1126.86/294.38 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1126.86/294.38 hole_top2_0 :: top 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1126.86/294.38 1126.86/294.38 1126.86/294.38 Lemmas: 1126.86/294.38 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) 1126.86/294.38 U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1196_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n1196_0) 1126.86/294.38 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2693_0))) -> *4_0, rt in Omega(n2693_0) 1126.86/294.38 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3422_0))) -> *4_0, rt in Omega(n3422_0) 1126.86/294.38 U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4252_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(n4252_0) 1126.86/294.38 U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9047_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(n9047_0) 1126.86/294.38 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n14852_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n14852_0) 1126.86/294.38 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18274_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n18274_0) 1126.86/294.38 1126.86/294.38 1126.86/294.38 Generator Equations: 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1126.86/294.38 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1126.86/294.38 1126.86/294.38 1126.86/294.38 The following defined symbols remain to be analysed: 1126.86/294.39 U21, active, proper, top 1126.86/294.39 1126.86/294.39 They will be analysed ascendingly in the following order: 1126.86/294.39 U21 < active 1126.86/294.39 active < top 1126.86/294.39 U21 < proper 1126.86/294.39 proper < top 1126.86/294.39 1126.86/294.39 ---------------------------------------- 1126.86/294.39 1126.86/294.39 (27) RewriteLemmaProof (LOWER BOUND(ID)) 1126.86/294.39 Proved the following rewrite lemma: 1126.86/294.39 U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n21803_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(n21803_0) 1126.86/294.39 1126.86/294.39 Induction Base: 1126.86/294.39 U21(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)) 1126.86/294.39 1126.86/294.39 Induction Step: 1126.86/294.39 U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n21803_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) 1126.86/294.39 mark(U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n21803_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 1126.86/294.39 mark(*4_0) 1126.86/294.39 1126.86/294.39 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1126.86/294.39 ---------------------------------------- 1126.86/294.39 1126.86/294.39 (28) 1126.86/294.39 Obligation: 1126.86/294.39 TRS: 1126.86/294.39 Rules: 1126.86/294.39 active(zeros) -> mark(cons(0', zeros)) 1126.86/294.39 active(U11(tt, L)) -> mark(U12(tt, L)) 1126.86/294.39 active(U12(tt, L)) -> mark(s(length(L))) 1126.86/294.39 active(U21(tt, IL, M, N)) -> mark(U22(tt, IL, M, N)) 1126.86/294.39 active(U22(tt, IL, M, N)) -> mark(U23(tt, IL, M, N)) 1126.86/294.39 active(U23(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 1126.86/294.39 active(length(nil)) -> mark(0') 1126.86/294.39 active(length(cons(N, L))) -> mark(U11(tt, L)) 1126.86/294.39 active(take(0', IL)) -> mark(nil) 1126.86/294.39 active(take(s(M), cons(N, IL))) -> mark(U21(tt, IL, M, N)) 1126.86/294.39 active(cons(X1, X2)) -> cons(active(X1), X2) 1126.86/294.39 active(U11(X1, X2)) -> U11(active(X1), X2) 1126.86/294.39 active(U12(X1, X2)) -> U12(active(X1), X2) 1126.86/294.39 active(s(X)) -> s(active(X)) 1126.86/294.39 active(length(X)) -> length(active(X)) 1126.86/294.39 active(U21(X1, X2, X3, X4)) -> U21(active(X1), X2, X3, X4) 1126.86/294.39 active(U22(X1, X2, X3, X4)) -> U22(active(X1), X2, X3, X4) 1126.86/294.39 active(U23(X1, X2, X3, X4)) -> U23(active(X1), X2, X3, X4) 1126.86/294.39 active(take(X1, X2)) -> take(active(X1), X2) 1126.86/294.39 active(take(X1, X2)) -> take(X1, active(X2)) 1126.86/294.39 cons(mark(X1), X2) -> mark(cons(X1, X2)) 1126.86/294.39 U11(mark(X1), X2) -> mark(U11(X1, X2)) 1126.86/294.39 U12(mark(X1), X2) -> mark(U12(X1, X2)) 1126.86/294.39 s(mark(X)) -> mark(s(X)) 1126.86/294.39 length(mark(X)) -> mark(length(X)) 1126.86/294.39 U21(mark(X1), X2, X3, X4) -> mark(U21(X1, X2, X3, X4)) 1126.86/294.39 U22(mark(X1), X2, X3, X4) -> mark(U22(X1, X2, X3, X4)) 1126.86/294.39 U23(mark(X1), X2, X3, X4) -> mark(U23(X1, X2, X3, X4)) 1126.86/294.39 take(mark(X1), X2) -> mark(take(X1, X2)) 1126.86/294.39 take(X1, mark(X2)) -> mark(take(X1, X2)) 1126.86/294.39 proper(zeros) -> ok(zeros) 1126.86/294.39 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 1126.86/294.39 proper(0') -> ok(0') 1126.86/294.39 proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 1126.86/294.39 proper(tt) -> ok(tt) 1126.86/294.39 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 1126.86/294.39 proper(s(X)) -> s(proper(X)) 1126.86/294.39 proper(length(X)) -> length(proper(X)) 1126.86/294.39 proper(U21(X1, X2, X3, X4)) -> U21(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.39 proper(U22(X1, X2, X3, X4)) -> U22(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.39 proper(U23(X1, X2, X3, X4)) -> U23(proper(X1), proper(X2), proper(X3), proper(X4)) 1126.86/294.39 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 1126.86/294.39 proper(nil) -> ok(nil) 1126.86/294.39 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 1126.86/294.39 U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 1126.86/294.39 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 1126.86/294.39 s(ok(X)) -> ok(s(X)) 1126.86/294.39 length(ok(X)) -> ok(length(X)) 1126.86/294.39 U21(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U21(X1, X2, X3, X4)) 1126.86/294.39 U22(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U22(X1, X2, X3, X4)) 1126.86/294.39 U23(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U23(X1, X2, X3, X4)) 1126.86/294.39 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 1126.86/294.39 top(mark(X)) -> top(proper(X)) 1126.86/294.39 top(ok(X)) -> top(active(X)) 1126.86/294.39 1126.86/294.39 Types: 1126.86/294.39 active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.39 zeros :: zeros:0':mark:tt:nil:ok 1126.86/294.39 mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.39 cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.39 0' :: zeros:0':mark:tt:nil:ok 1126.86/294.39 U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.39 tt :: zeros:0':mark:tt:nil:ok 1126.86/294.39 U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.39 s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.39 length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.39 U21 :: 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 1126.86/294.39 U22 :: 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 1126.86/294.39 U23 :: 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 1126.86/294.39 take :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.39 nil :: zeros:0':mark:tt:nil:ok 1126.86/294.39 proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.39 ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 1126.86/294.39 top :: zeros:0':mark:tt:nil:ok -> top 1126.86/294.39 hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok 1126.86/294.39 hole_top2_0 :: top 1126.86/294.39 gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok 1126.86/294.39 1126.86/294.39 1126.86/294.39 Lemmas: 1126.86/294.39 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) 1126.86/294.39 U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1196_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n1196_0) 1126.86/294.39 s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2693_0))) -> *4_0, rt in Omega(n2693_0) 1126.86/294.39 length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3422_0))) -> *4_0, rt in Omega(n3422_0) 1126.86/294.39 U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4252_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(n4252_0) 1126.86/294.39 U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9047_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(n9047_0) 1126.86/294.39 take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n14852_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n14852_0) 1126.86/294.39 U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18274_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n18274_0) 1126.86/294.39 U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n21803_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(n21803_0) 1126.86/294.39 1126.86/294.39 1126.86/294.39 Generator Equations: 1126.86/294.39 gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros 1126.86/294.39 gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) 1126.86/294.39 1126.86/294.39 1126.86/294.39 The following defined symbols remain to be analysed: 1126.86/294.39 active, proper, top 1126.86/294.39 1126.86/294.39 They will be analysed ascendingly in the following order: 1126.86/294.39 active < top 1126.86/294.39 proper < top 1127.18/294.49 EOF