WORST_CASE(Omega(n^1),?) proof of /export/starexec/sandbox2/benchmark/theBenchmark.trs # AProVE Commit ID: c69e44bd14796315568835c1ffa2502984884775 mhark 20210624 unpublished The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 2236 ms] (2) CpxRelTRS (3) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CpxRelTRS (5) SlicingProof [LOWER BOUND(ID), 0 ms] (6) CpxRelTRS (7) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (8) typed CpxTrs (9) OrderProof [LOWER BOUND(ID), 7 ms] (10) typed CpxTrs (11) RewriteLemmaProof [LOWER BOUND(ID), 46.1 s] (12) typed CpxTrs (13) RewriteLemmaProof [LOWER BOUND(ID), 47 ms] (14) typed CpxTrs (15) RewriteLemmaProof [LOWER BOUND(ID), 70 ms] (16) typed CpxTrs (17) RewriteLemmaProof [LOWER BOUND(ID), 818 ms] (18) typed CpxTrs (19) RewriteLemmaProof [LOWER BOUND(ID), 100 ms] (20) typed CpxTrs (21) RewriteLemmaProof [LOWER BOUND(ID), 364 ms] (22) typed CpxTrs (23) RewriteLemmaProof [LOWER BOUND(ID), 30 ms] (24) typed CpxTrs (25) RewriteLemmaProof [LOWER BOUND(ID), 857 ms] (26) typed CpxTrs (27) RewriteLemmaProof [LOWER BOUND(ID), 142 ms] (28) typed CpxTrs (29) RewriteLemmaProof [LOWER BOUND(ID), 16.8 s] (30) BEST (31) proven lower bound (32) LowerBoundPropagationProof [FINISHED, 0 ms] (33) BOUNDS(n^1, INF) (34) typed CpxTrs (35) RewriteLemmaProof [LOWER BOUND(ID), 6431 ms] (36) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0) -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0) -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0, z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0, z0) -> c13 A__FIRST(s(z0), cons(z1, z2)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0) -> c16 A__HALF(s(0)) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0, z1)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0) -> c32 MARK(nil) -> c33 The (relative) TRS S consists of the following rules: a__terms(z0) -> cons(recip(a__sqr(mark(z0))), terms(s(z0))) a__terms(z0) -> terms(z0) a__sqr(0) -> 0 a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0) -> 0 a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0, z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0, z0) -> nil a__first(s(z0), cons(z1, z2)) -> cons(mark(z1), first(z0, z2)) a__first(z0, z1) -> first(z0, z1) a__half(0) -> 0 a__half(s(0)) -> 0 a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0, z1)) -> cons(mark(z0), z1) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0) -> 0 mark(nil) -> nil Rewrite Strategy: INNERMOST ---------------------------------------- (1) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (2) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0) -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0) -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0, z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0, z0) -> c13 A__FIRST(s(z0), cons(z1, z2)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0) -> c16 A__HALF(s(0)) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0, z1)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0) -> c32 MARK(nil) -> c33 The (relative) TRS S consists of the following rules: a__terms(z0) -> cons(recip(a__sqr(mark(z0))), terms(s(z0))) a__terms(z0) -> terms(z0) a__sqr(0) -> 0 a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0) -> 0 a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0, z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0, z0) -> nil a__first(s(z0), cons(z1, z2)) -> cons(mark(z1), first(z0, z2)) a__first(z0, z1) -> first(z0, z1) a__half(0) -> 0 a__half(s(0)) -> 0 a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0, z1)) -> cons(mark(z0), z1) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0) -> 0 mark(nil) -> nil Rewrite Strategy: INNERMOST ---------------------------------------- (3) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (4) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1, z2)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0, z1)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 The (relative) TRS S consists of the following rules: a__terms(z0) -> cons(recip(a__sqr(mark(z0))), terms(s(z0))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1, z2)) -> cons(mark(z1), first(z0, z2)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0, z1)) -> cons(mark(z0), z1) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Rewrite Strategy: INNERMOST ---------------------------------------- (5) SlicingProof (LOWER BOUND(ID)) Sliced the following arguments: cons/1 ---------------------------------------- (6) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 The (relative) TRS S consists of the following rules: a__terms(z0) -> cons(recip(a__sqr(mark(z0)))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1)) -> cons(mark(z1)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0)) -> cons(mark(z0)) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (8) Obligation: Innermost TRS: Rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 a__terms(z0) -> cons(recip(a__sqr(mark(z0)))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1)) -> cons(mark(z1)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0)) -> cons(mark(z0)) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Types: A__TERMS :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c:c1 c :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c:c1 A__SQR :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c2:c3:c4:c5 mark :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil MARK :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c1 :: c:c1 0' :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c2 :: c2:c3:c4:c5 s :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c3 :: c9:c10:c11:c12 -> c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__ADD :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c9:c10:c11:c12 a__sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c4 :: c9:c10:c11:c12 -> c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__DBL :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c6:c7:c8 c5 :: c2:c3:c4:c5 c6 :: c6:c7:c8 c7 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c6:c7:c8 c8 :: c6:c7:c8 c9 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c10 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c11 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c12 :: c9:c10:c11:c12 A__FIRST :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c13:c14:c15 c13 :: c13:c14:c15 cons :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c14 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c13:c14:c15 c15 :: c13:c14:c15 A__HALF :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c16:c17:c18:c19:c20 c16 :: c16:c17:c18:c19:c20 c17 :: c16:c17:c18:c19:c20 c18 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c19 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 c20 :: c16:c17:c18:c19:c20 terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c21 :: c:c1 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c22 :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c23 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c24 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c25 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c26 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c27 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c28 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c29 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 recip :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c30 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c31 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c32 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 nil :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c33 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 a__terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c:c11_34 :: c:c1 hole_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil2_34 :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c2:c3:c4:c53_34 :: c2:c3:c4:c5 hole_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c334_34 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 hole_c9:c10:c11:c125_34 :: c9:c10:c11:c12 hole_c6:c7:c86_34 :: c6:c7:c8 hole_c13:c14:c157_34 :: c13:c14:c15 hole_c16:c17:c18:c19:c208_34 :: c16:c17:c18:c19:c20 gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34 :: Nat -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil gen_c2:c3:c4:c510_34 :: Nat -> c2:c3:c4:c5 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34 :: Nat -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 gen_c9:c10:c11:c1212_34 :: Nat -> c9:c10:c11:c12 gen_c6:c7:c813_34 :: Nat -> c6:c7:c8 gen_c16:c17:c18:c19:c2014_34 :: Nat -> c16:c17:c18:c19:c20 ---------------------------------------- (9) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: A__TERMS, A__SQR, mark, MARK, A__ADD, a__sqr, a__dbl, A__DBL, A__HALF, a__terms, a__add, a__half They will be analysed ascendingly in the following order: A__TERMS = A__SQR mark < A__TERMS A__TERMS = MARK A__TERMS = A__ADD A__TERMS = A__DBL A__TERMS = A__HALF mark < A__SQR A__SQR = MARK A__SQR = A__ADD a__sqr < A__SQR a__dbl < A__SQR A__SQR = A__DBL A__SQR = A__HALF mark < MARK mark < A__ADD mark = a__sqr mark = a__dbl mark < A__DBL mark < A__HALF mark = a__terms mark = a__add mark = a__half MARK = A__ADD MARK = A__DBL MARK = A__HALF A__ADD = A__DBL A__ADD = A__HALF a__sqr = a__dbl a__sqr = a__terms a__sqr = a__add a__sqr = a__half a__dbl = a__terms a__dbl = a__add a__dbl = a__half A__DBL = A__HALF a__terms = a__add a__terms = a__half a__add = a__half ---------------------------------------- (10) Obligation: Innermost TRS: Rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 a__terms(z0) -> cons(recip(a__sqr(mark(z0)))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1)) -> cons(mark(z1)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0)) -> cons(mark(z0)) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Types: A__TERMS :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c:c1 c :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c:c1 A__SQR :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c2:c3:c4:c5 mark :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil MARK :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c1 :: c:c1 0' :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c2 :: c2:c3:c4:c5 s :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c3 :: c9:c10:c11:c12 -> c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__ADD :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c9:c10:c11:c12 a__sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c4 :: c9:c10:c11:c12 -> c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__DBL :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c6:c7:c8 c5 :: c2:c3:c4:c5 c6 :: c6:c7:c8 c7 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c6:c7:c8 c8 :: c6:c7:c8 c9 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c10 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c11 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c12 :: c9:c10:c11:c12 A__FIRST :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c13:c14:c15 c13 :: c13:c14:c15 cons :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c14 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c13:c14:c15 c15 :: c13:c14:c15 A__HALF :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c16:c17:c18:c19:c20 c16 :: c16:c17:c18:c19:c20 c17 :: c16:c17:c18:c19:c20 c18 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c19 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 c20 :: c16:c17:c18:c19:c20 terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c21 :: c:c1 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c22 :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c23 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c24 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c25 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c26 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c27 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c28 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c29 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 recip :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c30 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c31 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c32 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 nil :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c33 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 a__terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c:c11_34 :: c:c1 hole_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil2_34 :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c2:c3:c4:c53_34 :: c2:c3:c4:c5 hole_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c334_34 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 hole_c9:c10:c11:c125_34 :: c9:c10:c11:c12 hole_c6:c7:c86_34 :: c6:c7:c8 hole_c13:c14:c157_34 :: c13:c14:c15 hole_c16:c17:c18:c19:c208_34 :: c16:c17:c18:c19:c20 gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34 :: Nat -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil gen_c2:c3:c4:c510_34 :: Nat -> c2:c3:c4:c5 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34 :: Nat -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 gen_c9:c10:c11:c1212_34 :: Nat -> c9:c10:c11:c12 gen_c6:c7:c813_34 :: Nat -> c6:c7:c8 gen_c16:c17:c18:c19:c2014_34 :: Nat -> c16:c17:c18:c19:c20 Generator Equations: gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0) <=> 0' gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(x, 1)) <=> s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(x)) gen_c2:c3:c4:c510_34(0) <=> c2 gen_c2:c3:c4:c510_34(+(x, 1)) <=> c3(c9(c32), gen_c2:c3:c4:c510_34(x), c32) gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(0) <=> c32 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(+(x, 1)) <=> c21(c(c2, c32), gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(x)) gen_c9:c10:c11:c1212_34(0) <=> c9(c32) gen_c9:c10:c11:c1212_34(+(x, 1)) <=> c10(gen_c9:c10:c11:c1212_34(x), c32) gen_c6:c7:c813_34(0) <=> c6 gen_c6:c7:c813_34(+(x, 1)) <=> c7(gen_c6:c7:c813_34(x), c32) gen_c16:c17:c18:c19:c2014_34(0) <=> c16 gen_c16:c17:c18:c19:c2014_34(+(x, 1)) <=> c18(gen_c16:c17:c18:c19:c2014_34(x), c32) The following defined symbols remain to be analysed: a__terms, A__TERMS, A__SQR, mark, MARK, A__ADD, a__sqr, a__dbl, A__DBL, A__HALF, a__add, a__half They will be analysed ascendingly in the following order: A__TERMS = A__SQR mark < A__TERMS A__TERMS = MARK A__TERMS = A__ADD A__TERMS = A__DBL A__TERMS = A__HALF mark < A__SQR A__SQR = MARK A__SQR = A__ADD a__sqr < A__SQR a__dbl < A__SQR A__SQR = A__DBL A__SQR = A__HALF mark < MARK mark < A__ADD mark = a__sqr mark = a__dbl mark < A__DBL mark < A__HALF mark = a__terms mark = a__add mark = a__half MARK = A__ADD MARK = A__DBL MARK = A__HALF A__ADD = A__DBL A__ADD = A__HALF a__sqr = a__dbl a__sqr = a__terms a__sqr = a__add a__sqr = a__half a__dbl = a__terms a__dbl = a__add a__dbl = a__half A__DBL = A__HALF a__terms = a__add a__terms = a__half a__add = a__half ---------------------------------------- (11) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2709412_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2709412_34), rt in Omega(0) Induction Base: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0)) ->_R^Omega(0) 0' Induction Step: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2709412_34, 1))) ->_R^Omega(0) s(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2709412_34))) ->_IH s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(c2709413_34)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (12) Obligation: Innermost TRS: Rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 a__terms(z0) -> cons(recip(a__sqr(mark(z0)))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1)) -> cons(mark(z1)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0)) -> cons(mark(z0)) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Types: A__TERMS :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c:c1 c :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c:c1 A__SQR :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c2:c3:c4:c5 mark :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil MARK :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c1 :: c:c1 0' :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c2 :: c2:c3:c4:c5 s :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c3 :: c9:c10:c11:c12 -> c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__ADD :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c9:c10:c11:c12 a__sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c4 :: c9:c10:c11:c12 -> c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__DBL :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c6:c7:c8 c5 :: c2:c3:c4:c5 c6 :: c6:c7:c8 c7 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c6:c7:c8 c8 :: c6:c7:c8 c9 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c10 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c11 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c12 :: c9:c10:c11:c12 A__FIRST :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c13:c14:c15 c13 :: c13:c14:c15 cons :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c14 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c13:c14:c15 c15 :: c13:c14:c15 A__HALF :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c16:c17:c18:c19:c20 c16 :: c16:c17:c18:c19:c20 c17 :: c16:c17:c18:c19:c20 c18 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c19 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 c20 :: c16:c17:c18:c19:c20 terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c21 :: c:c1 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c22 :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c23 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c24 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c25 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c26 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c27 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c28 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c29 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 recip :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c30 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c31 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c32 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 nil :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c33 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 a__terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c:c11_34 :: c:c1 hole_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil2_34 :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c2:c3:c4:c53_34 :: c2:c3:c4:c5 hole_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c334_34 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 hole_c9:c10:c11:c125_34 :: c9:c10:c11:c12 hole_c6:c7:c86_34 :: c6:c7:c8 hole_c13:c14:c157_34 :: c13:c14:c15 hole_c16:c17:c18:c19:c208_34 :: c16:c17:c18:c19:c20 gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34 :: Nat -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil gen_c2:c3:c4:c510_34 :: Nat -> c2:c3:c4:c5 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34 :: Nat -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 gen_c9:c10:c11:c1212_34 :: Nat -> c9:c10:c11:c12 gen_c6:c7:c813_34 :: Nat -> c6:c7:c8 gen_c16:c17:c18:c19:c2014_34 :: Nat -> c16:c17:c18:c19:c20 Lemmas: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2709412_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2709412_34), rt in Omega(0) Generator Equations: gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0) <=> 0' gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(x, 1)) <=> s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(x)) gen_c2:c3:c4:c510_34(0) <=> c2 gen_c2:c3:c4:c510_34(+(x, 1)) <=> c3(c9(c32), gen_c2:c3:c4:c510_34(x), c32) gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(0) <=> c32 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(+(x, 1)) <=> c21(c(c2, c32), gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(x)) gen_c9:c10:c11:c1212_34(0) <=> c9(c32) gen_c9:c10:c11:c1212_34(+(x, 1)) <=> c10(gen_c9:c10:c11:c1212_34(x), c32) gen_c6:c7:c813_34(0) <=> c6 gen_c6:c7:c813_34(+(x, 1)) <=> c7(gen_c6:c7:c813_34(x), c32) gen_c16:c17:c18:c19:c2014_34(0) <=> c16 gen_c16:c17:c18:c19:c2014_34(+(x, 1)) <=> c18(gen_c16:c17:c18:c19:c2014_34(x), c32) The following defined symbols remain to be analysed: a__dbl, A__TERMS, A__SQR, MARK, A__ADD, a__sqr, A__DBL, A__HALF, a__terms, a__add, a__half They will be analysed ascendingly in the following order: A__TERMS = A__SQR mark < A__TERMS A__TERMS = MARK A__TERMS = A__ADD A__TERMS = A__DBL A__TERMS = A__HALF mark < A__SQR A__SQR = MARK A__SQR = A__ADD a__sqr < A__SQR a__dbl < A__SQR A__SQR = A__DBL A__SQR = A__HALF mark < MARK mark < A__ADD mark = a__sqr mark = a__dbl mark < A__DBL mark < A__HALF mark = a__terms mark = a__add mark = a__half MARK = A__ADD MARK = A__DBL MARK = A__HALF A__ADD = A__DBL A__ADD = A__HALF a__sqr = a__dbl a__sqr = a__terms a__sqr = a__add a__sqr = a__half a__dbl = a__terms a__dbl = a__add a__dbl = a__half A__DBL = A__HALF a__terms = a__add a__terms = a__half a__add = a__half ---------------------------------------- (13) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2726624_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2726624_34)), rt in Omega(0) Induction Base: a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0)) ->_R^Omega(0) 0' Induction Step: a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2726624_34, 1))) ->_R^Omega(0) s(s(a__dbl(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2726624_34))))) ->_L^Omega(0) s(s(a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2726624_34)))) ->_IH s(s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, c2726625_34)))) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (14) Obligation: Innermost TRS: Rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 a__terms(z0) -> cons(recip(a__sqr(mark(z0)))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1)) -> cons(mark(z1)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0)) -> cons(mark(z0)) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Types: A__TERMS :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c:c1 c :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c:c1 A__SQR :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c2:c3:c4:c5 mark :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil MARK :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c1 :: c:c1 0' :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c2 :: c2:c3:c4:c5 s :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c3 :: c9:c10:c11:c12 -> c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__ADD :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c9:c10:c11:c12 a__sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c4 :: c9:c10:c11:c12 -> c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__DBL :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c6:c7:c8 c5 :: c2:c3:c4:c5 c6 :: c6:c7:c8 c7 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c6:c7:c8 c8 :: c6:c7:c8 c9 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c10 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c11 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c12 :: c9:c10:c11:c12 A__FIRST :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c13:c14:c15 c13 :: c13:c14:c15 cons :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c14 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c13:c14:c15 c15 :: c13:c14:c15 A__HALF :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c16:c17:c18:c19:c20 c16 :: c16:c17:c18:c19:c20 c17 :: c16:c17:c18:c19:c20 c18 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c19 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 c20 :: c16:c17:c18:c19:c20 terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c21 :: c:c1 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c22 :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c23 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c24 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c25 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c26 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c27 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c28 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c29 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 recip :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c30 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c31 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c32 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 nil :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c33 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 a__terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c:c11_34 :: c:c1 hole_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil2_34 :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c2:c3:c4:c53_34 :: c2:c3:c4:c5 hole_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c334_34 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 hole_c9:c10:c11:c125_34 :: c9:c10:c11:c12 hole_c6:c7:c86_34 :: c6:c7:c8 hole_c13:c14:c157_34 :: c13:c14:c15 hole_c16:c17:c18:c19:c208_34 :: c16:c17:c18:c19:c20 gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34 :: Nat -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil gen_c2:c3:c4:c510_34 :: Nat -> c2:c3:c4:c5 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34 :: Nat -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 gen_c9:c10:c11:c1212_34 :: Nat -> c9:c10:c11:c12 gen_c6:c7:c813_34 :: Nat -> c6:c7:c8 gen_c16:c17:c18:c19:c2014_34 :: Nat -> c16:c17:c18:c19:c20 Lemmas: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2709412_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2709412_34), rt in Omega(0) a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2726624_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2726624_34)), rt in Omega(0) Generator Equations: gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0) <=> 0' gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(x, 1)) <=> s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(x)) gen_c2:c3:c4:c510_34(0) <=> c2 gen_c2:c3:c4:c510_34(+(x, 1)) <=> c3(c9(c32), gen_c2:c3:c4:c510_34(x), c32) gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(0) <=> c32 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(+(x, 1)) <=> c21(c(c2, c32), gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(x)) gen_c9:c10:c11:c1212_34(0) <=> c9(c32) gen_c9:c10:c11:c1212_34(+(x, 1)) <=> c10(gen_c9:c10:c11:c1212_34(x), c32) gen_c6:c7:c813_34(0) <=> c6 gen_c6:c7:c813_34(+(x, 1)) <=> c7(gen_c6:c7:c813_34(x), c32) gen_c16:c17:c18:c19:c2014_34(0) <=> c16 gen_c16:c17:c18:c19:c2014_34(+(x, 1)) <=> c18(gen_c16:c17:c18:c19:c2014_34(x), c32) The following defined symbols remain to be analysed: a__half, A__TERMS, A__SQR, mark, MARK, A__ADD, a__sqr, A__DBL, A__HALF, a__terms, a__add They will be analysed ascendingly in the following order: A__TERMS = A__SQR mark < A__TERMS A__TERMS = MARK A__TERMS = A__ADD A__TERMS = A__DBL A__TERMS = A__HALF mark < A__SQR A__SQR = MARK A__SQR = A__ADD a__sqr < A__SQR a__dbl < A__SQR A__SQR = A__DBL A__SQR = A__HALF mark < MARK mark < A__ADD mark = a__sqr mark = a__dbl mark < A__DBL mark < A__HALF mark = a__terms mark = a__add mark = a__half MARK = A__ADD MARK = A__DBL MARK = A__HALF A__ADD = A__DBL A__ADD = A__HALF a__sqr = a__dbl a__sqr = a__terms a__sqr = a__add a__sqr = a__half a__dbl = a__terms a__dbl = a__add a__dbl = a__half A__DBL = A__HALF a__terms = a__add a__terms = a__half a__add = a__half ---------------------------------------- (15) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2727562_34))) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2727562_34), rt in Omega(0) Induction Base: a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, 0))) ->_R^Omega(0) 0' Induction Step: a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, +(n2727562_34, 1)))) ->_R^Omega(0) s(a__half(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2727562_34))))) ->_L^Omega(0) s(a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2727562_34)))) ->_IH s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(c2727563_34)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (16) Obligation: Innermost TRS: Rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 a__terms(z0) -> cons(recip(a__sqr(mark(z0)))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1)) -> cons(mark(z1)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0)) -> cons(mark(z0)) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Types: A__TERMS :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c:c1 c :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c:c1 A__SQR :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c2:c3:c4:c5 mark :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil MARK :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c1 :: c:c1 0' :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c2 :: c2:c3:c4:c5 s :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c3 :: c9:c10:c11:c12 -> c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__ADD :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c9:c10:c11:c12 a__sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c4 :: c9:c10:c11:c12 -> c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__DBL :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c6:c7:c8 c5 :: c2:c3:c4:c5 c6 :: c6:c7:c8 c7 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c6:c7:c8 c8 :: c6:c7:c8 c9 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c10 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c11 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c12 :: c9:c10:c11:c12 A__FIRST :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c13:c14:c15 c13 :: c13:c14:c15 cons :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c14 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c13:c14:c15 c15 :: c13:c14:c15 A__HALF :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c16:c17:c18:c19:c20 c16 :: c16:c17:c18:c19:c20 c17 :: c16:c17:c18:c19:c20 c18 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c19 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 c20 :: c16:c17:c18:c19:c20 terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c21 :: c:c1 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c22 :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c23 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c24 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c25 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c26 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c27 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c28 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c29 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 recip :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c30 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c31 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c32 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 nil :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c33 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 a__terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c:c11_34 :: c:c1 hole_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil2_34 :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c2:c3:c4:c53_34 :: c2:c3:c4:c5 hole_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c334_34 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 hole_c9:c10:c11:c125_34 :: c9:c10:c11:c12 hole_c6:c7:c86_34 :: c6:c7:c8 hole_c13:c14:c157_34 :: c13:c14:c15 hole_c16:c17:c18:c19:c208_34 :: c16:c17:c18:c19:c20 gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34 :: Nat -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil gen_c2:c3:c4:c510_34 :: Nat -> c2:c3:c4:c5 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34 :: Nat -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 gen_c9:c10:c11:c1212_34 :: Nat -> c9:c10:c11:c12 gen_c6:c7:c813_34 :: Nat -> c6:c7:c8 gen_c16:c17:c18:c19:c2014_34 :: Nat -> c16:c17:c18:c19:c20 Lemmas: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2709412_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2709412_34), rt in Omega(0) a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2726624_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2726624_34)), rt in Omega(0) a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2727562_34))) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2727562_34), rt in Omega(0) Generator Equations: gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0) <=> 0' gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(x, 1)) <=> s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(x)) gen_c2:c3:c4:c510_34(0) <=> c2 gen_c2:c3:c4:c510_34(+(x, 1)) <=> c3(c9(c32), gen_c2:c3:c4:c510_34(x), c32) gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(0) <=> c32 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(+(x, 1)) <=> c21(c(c2, c32), gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(x)) gen_c9:c10:c11:c1212_34(0) <=> c9(c32) gen_c9:c10:c11:c1212_34(+(x, 1)) <=> c10(gen_c9:c10:c11:c1212_34(x), c32) gen_c6:c7:c813_34(0) <=> c6 gen_c6:c7:c813_34(+(x, 1)) <=> c7(gen_c6:c7:c813_34(x), c32) gen_c16:c17:c18:c19:c2014_34(0) <=> c16 gen_c16:c17:c18:c19:c2014_34(+(x, 1)) <=> c18(gen_c16:c17:c18:c19:c2014_34(x), c32) The following defined symbols remain to be analysed: a__terms, A__TERMS, A__SQR, mark, MARK, A__ADD, a__sqr, a__dbl, A__DBL, A__HALF, a__add They will be analysed ascendingly in the following order: A__TERMS = A__SQR mark < A__TERMS A__TERMS = MARK A__TERMS = A__ADD A__TERMS = A__DBL A__TERMS = A__HALF mark < A__SQR A__SQR = MARK A__SQR = A__ADD a__sqr < A__SQR a__dbl < A__SQR A__SQR = A__DBL A__SQR = A__HALF mark < MARK mark < A__ADD mark = a__sqr mark = a__dbl mark < A__DBL mark < A__HALF mark = a__terms mark = a__add mark = a__half MARK = A__ADD MARK = A__DBL MARK = A__HALF A__ADD = A__DBL A__ADD = A__HALF a__sqr = a__dbl a__sqr = a__terms a__sqr = a__add a__sqr = a__half a__dbl = a__terms a__dbl = a__add a__dbl = a__half A__DBL = A__HALF a__terms = a__add a__terms = a__half a__add = a__half ---------------------------------------- (17) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2730920_34)) -> *15_34, rt in Omega(0) Induction Base: a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0)) Induction Step: a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2730920_34, 1))) ->_R^Omega(0) s(a__add(a__sqr(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2730920_34))), a__dbl(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2730920_34))))) ->_L^Omega(0) s(a__add(a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2730920_34)), a__dbl(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2730920_34))))) ->_IH s(a__add(*15_34, a__dbl(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2730920_34))))) ->_L^Omega(0) s(a__add(*15_34, a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2730920_34)))) ->_L^Omega(0) s(a__add(*15_34, gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2730920_34)))) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (18) Obligation: Innermost TRS: Rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 a__terms(z0) -> cons(recip(a__sqr(mark(z0)))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1)) -> cons(mark(z1)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0)) -> cons(mark(z0)) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Types: A__TERMS :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c:c1 c :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c:c1 A__SQR :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c2:c3:c4:c5 mark :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil MARK :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c1 :: c:c1 0' :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c2 :: c2:c3:c4:c5 s :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c3 :: c9:c10:c11:c12 -> c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__ADD :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c9:c10:c11:c12 a__sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c4 :: c9:c10:c11:c12 -> c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__DBL :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c6:c7:c8 c5 :: c2:c3:c4:c5 c6 :: c6:c7:c8 c7 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c6:c7:c8 c8 :: c6:c7:c8 c9 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c10 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c11 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c12 :: c9:c10:c11:c12 A__FIRST :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c13:c14:c15 c13 :: c13:c14:c15 cons :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c14 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c13:c14:c15 c15 :: c13:c14:c15 A__HALF :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c16:c17:c18:c19:c20 c16 :: c16:c17:c18:c19:c20 c17 :: c16:c17:c18:c19:c20 c18 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c19 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 c20 :: c16:c17:c18:c19:c20 terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c21 :: c:c1 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c22 :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c23 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c24 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c25 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c26 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c27 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c28 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c29 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 recip :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c30 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c31 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c32 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 nil :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c33 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 a__terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c:c11_34 :: c:c1 hole_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil2_34 :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c2:c3:c4:c53_34 :: c2:c3:c4:c5 hole_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c334_34 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 hole_c9:c10:c11:c125_34 :: c9:c10:c11:c12 hole_c6:c7:c86_34 :: c6:c7:c8 hole_c13:c14:c157_34 :: c13:c14:c15 hole_c16:c17:c18:c19:c208_34 :: c16:c17:c18:c19:c20 gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34 :: Nat -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil gen_c2:c3:c4:c510_34 :: Nat -> c2:c3:c4:c5 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34 :: Nat -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 gen_c9:c10:c11:c1212_34 :: Nat -> c9:c10:c11:c12 gen_c6:c7:c813_34 :: Nat -> c6:c7:c8 gen_c16:c17:c18:c19:c2014_34 :: Nat -> c16:c17:c18:c19:c20 Lemmas: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2709412_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2709412_34), rt in Omega(0) a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2726624_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2726624_34)), rt in Omega(0) a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2727562_34))) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2727562_34), rt in Omega(0) a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2730920_34)) -> *15_34, rt in Omega(0) Generator Equations: gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0) <=> 0' gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(x, 1)) <=> s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(x)) gen_c2:c3:c4:c510_34(0) <=> c2 gen_c2:c3:c4:c510_34(+(x, 1)) <=> c3(c9(c32), gen_c2:c3:c4:c510_34(x), c32) gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(0) <=> c32 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(+(x, 1)) <=> c21(c(c2, c32), gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(x)) gen_c9:c10:c11:c1212_34(0) <=> c9(c32) gen_c9:c10:c11:c1212_34(+(x, 1)) <=> c10(gen_c9:c10:c11:c1212_34(x), c32) gen_c6:c7:c813_34(0) <=> c6 gen_c6:c7:c813_34(+(x, 1)) <=> c7(gen_c6:c7:c813_34(x), c32) gen_c16:c17:c18:c19:c2014_34(0) <=> c16 gen_c16:c17:c18:c19:c2014_34(+(x, 1)) <=> c18(gen_c16:c17:c18:c19:c2014_34(x), c32) The following defined symbols remain to be analysed: a__add, A__TERMS, A__SQR, mark, MARK, A__ADD, a__dbl, A__DBL, A__HALF, a__terms, a__half They will be analysed ascendingly in the following order: A__TERMS = A__SQR mark < A__TERMS A__TERMS = MARK A__TERMS = A__ADD A__TERMS = A__DBL A__TERMS = A__HALF mark < A__SQR A__SQR = MARK A__SQR = A__ADD a__sqr < A__SQR a__dbl < A__SQR A__SQR = A__DBL A__SQR = A__HALF mark < MARK mark < A__ADD mark = a__sqr mark = a__dbl mark < A__DBL mark < A__HALF mark = a__terms mark = a__add mark = a__half MARK = A__ADD MARK = A__DBL MARK = A__HALF A__ADD = A__DBL A__ADD = A__HALF a__sqr = a__dbl a__sqr = a__terms a__sqr = a__add a__sqr = a__half a__dbl = a__terms a__dbl = a__add a__dbl = a__half A__DBL = A__HALF a__terms = a__add a__terms = a__half a__add = a__half ---------------------------------------- (19) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2735539_34), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2735539_34, b)), rt in Omega(0) Induction Base: a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) ->_R^Omega(0) mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) ->_L^Omega(0) gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b) Induction Step: a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2735539_34, 1)), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) ->_R^Omega(0) s(a__add(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2735539_34)), mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)))) ->_L^Omega(0) s(a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2735539_34), mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)))) ->_L^Omega(0) s(a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2735539_34), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b))) ->_IH s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(b, c2735540_34))) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (20) Obligation: Innermost TRS: Rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 a__terms(z0) -> cons(recip(a__sqr(mark(z0)))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1)) -> cons(mark(z1)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0)) -> cons(mark(z0)) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Types: A__TERMS :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c:c1 c :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c:c1 A__SQR :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c2:c3:c4:c5 mark :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil MARK :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c1 :: c:c1 0' :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c2 :: c2:c3:c4:c5 s :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c3 :: c9:c10:c11:c12 -> c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__ADD :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c9:c10:c11:c12 a__sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c4 :: c9:c10:c11:c12 -> c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__DBL :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c6:c7:c8 c5 :: c2:c3:c4:c5 c6 :: c6:c7:c8 c7 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c6:c7:c8 c8 :: c6:c7:c8 c9 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c10 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c11 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c12 :: c9:c10:c11:c12 A__FIRST :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c13:c14:c15 c13 :: c13:c14:c15 cons :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c14 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c13:c14:c15 c15 :: c13:c14:c15 A__HALF :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c16:c17:c18:c19:c20 c16 :: c16:c17:c18:c19:c20 c17 :: c16:c17:c18:c19:c20 c18 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c19 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 c20 :: c16:c17:c18:c19:c20 terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c21 :: c:c1 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c22 :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c23 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c24 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c25 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c26 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c27 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c28 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c29 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 recip :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c30 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c31 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c32 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 nil :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c33 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 a__terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c:c11_34 :: c:c1 hole_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil2_34 :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c2:c3:c4:c53_34 :: c2:c3:c4:c5 hole_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c334_34 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 hole_c9:c10:c11:c125_34 :: c9:c10:c11:c12 hole_c6:c7:c86_34 :: c6:c7:c8 hole_c13:c14:c157_34 :: c13:c14:c15 hole_c16:c17:c18:c19:c208_34 :: c16:c17:c18:c19:c20 gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34 :: Nat -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil gen_c2:c3:c4:c510_34 :: Nat -> c2:c3:c4:c5 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34 :: Nat -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 gen_c9:c10:c11:c1212_34 :: Nat -> c9:c10:c11:c12 gen_c6:c7:c813_34 :: Nat -> c6:c7:c8 gen_c16:c17:c18:c19:c2014_34 :: Nat -> c16:c17:c18:c19:c20 Lemmas: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2709412_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2709412_34), rt in Omega(0) a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2726624_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2726624_34)), rt in Omega(0) a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2727562_34))) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2727562_34), rt in Omega(0) a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2730920_34)) -> *15_34, rt in Omega(0) a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2735539_34), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2735539_34, b)), rt in Omega(0) Generator Equations: gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0) <=> 0' gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(x, 1)) <=> s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(x)) gen_c2:c3:c4:c510_34(0) <=> c2 gen_c2:c3:c4:c510_34(+(x, 1)) <=> c3(c9(c32), gen_c2:c3:c4:c510_34(x), c32) gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(0) <=> c32 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(+(x, 1)) <=> c21(c(c2, c32), gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(x)) gen_c9:c10:c11:c1212_34(0) <=> c9(c32) gen_c9:c10:c11:c1212_34(+(x, 1)) <=> c10(gen_c9:c10:c11:c1212_34(x), c32) gen_c6:c7:c813_34(0) <=> c6 gen_c6:c7:c813_34(+(x, 1)) <=> c7(gen_c6:c7:c813_34(x), c32) gen_c16:c17:c18:c19:c2014_34(0) <=> c16 gen_c16:c17:c18:c19:c2014_34(+(x, 1)) <=> c18(gen_c16:c17:c18:c19:c2014_34(x), c32) The following defined symbols remain to be analysed: mark, A__TERMS, A__SQR, MARK, A__ADD, a__sqr, a__dbl, A__DBL, A__HALF, a__terms, a__half They will be analysed ascendingly in the following order: A__TERMS = A__SQR mark < A__TERMS A__TERMS = MARK A__TERMS = A__ADD A__TERMS = A__DBL A__TERMS = A__HALF mark < A__SQR A__SQR = MARK A__SQR = A__ADD a__sqr < A__SQR a__dbl < A__SQR A__SQR = A__DBL A__SQR = A__HALF mark < MARK mark < A__ADD mark = a__sqr mark = a__dbl mark < A__DBL mark < A__HALF mark = a__terms mark = a__add mark = a__half MARK = A__ADD MARK = A__DBL MARK = A__HALF A__ADD = A__DBL A__ADD = A__HALF a__sqr = a__dbl a__sqr = a__terms a__sqr = a__add a__sqr = a__half a__dbl = a__terms a__dbl = a__add a__dbl = a__half A__DBL = A__HALF a__terms = a__add a__terms = a__half a__add = a__half ---------------------------------------- (21) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34), rt in Omega(0) Induction Base: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0)) ->_R^Omega(0) 0' Induction Step: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2739827_34, 1))) ->_R^Omega(0) s(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34))) ->_IH s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(c2739828_34)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (22) Obligation: Innermost TRS: Rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 a__terms(z0) -> cons(recip(a__sqr(mark(z0)))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1)) -> cons(mark(z1)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0)) -> cons(mark(z0)) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Types: A__TERMS :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c:c1 c :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c:c1 A__SQR :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c2:c3:c4:c5 mark :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil MARK :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c1 :: c:c1 0' :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c2 :: c2:c3:c4:c5 s :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c3 :: c9:c10:c11:c12 -> c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__ADD :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c9:c10:c11:c12 a__sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c4 :: c9:c10:c11:c12 -> c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__DBL :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c6:c7:c8 c5 :: c2:c3:c4:c5 c6 :: c6:c7:c8 c7 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c6:c7:c8 c8 :: c6:c7:c8 c9 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c10 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c11 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c12 :: c9:c10:c11:c12 A__FIRST :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c13:c14:c15 c13 :: c13:c14:c15 cons :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c14 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c13:c14:c15 c15 :: c13:c14:c15 A__HALF :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c16:c17:c18:c19:c20 c16 :: c16:c17:c18:c19:c20 c17 :: c16:c17:c18:c19:c20 c18 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c19 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 c20 :: c16:c17:c18:c19:c20 terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c21 :: c:c1 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c22 :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c23 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c24 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c25 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c26 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c27 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c28 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c29 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 recip :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c30 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c31 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c32 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 nil :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c33 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 a__terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c:c11_34 :: c:c1 hole_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil2_34 :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c2:c3:c4:c53_34 :: c2:c3:c4:c5 hole_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c334_34 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 hole_c9:c10:c11:c125_34 :: c9:c10:c11:c12 hole_c6:c7:c86_34 :: c6:c7:c8 hole_c13:c14:c157_34 :: c13:c14:c15 hole_c16:c17:c18:c19:c208_34 :: c16:c17:c18:c19:c20 gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34 :: Nat -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil gen_c2:c3:c4:c510_34 :: Nat -> c2:c3:c4:c5 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34 :: Nat -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 gen_c9:c10:c11:c1212_34 :: Nat -> c9:c10:c11:c12 gen_c6:c7:c813_34 :: Nat -> c6:c7:c8 gen_c16:c17:c18:c19:c2014_34 :: Nat -> c16:c17:c18:c19:c20 Lemmas: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34), rt in Omega(0) a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2726624_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2726624_34)), rt in Omega(0) a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2727562_34))) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2727562_34), rt in Omega(0) a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2730920_34)) -> *15_34, rt in Omega(0) a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2735539_34), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2735539_34, b)), rt in Omega(0) Generator Equations: gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0) <=> 0' gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(x, 1)) <=> s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(x)) gen_c2:c3:c4:c510_34(0) <=> c2 gen_c2:c3:c4:c510_34(+(x, 1)) <=> c3(c9(c32), gen_c2:c3:c4:c510_34(x), c32) gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(0) <=> c32 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(+(x, 1)) <=> c21(c(c2, c32), gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(x)) gen_c9:c10:c11:c1212_34(0) <=> c9(c32) gen_c9:c10:c11:c1212_34(+(x, 1)) <=> c10(gen_c9:c10:c11:c1212_34(x), c32) gen_c6:c7:c813_34(0) <=> c6 gen_c6:c7:c813_34(+(x, 1)) <=> c7(gen_c6:c7:c813_34(x), c32) gen_c16:c17:c18:c19:c2014_34(0) <=> c16 gen_c16:c17:c18:c19:c2014_34(+(x, 1)) <=> c18(gen_c16:c17:c18:c19:c2014_34(x), c32) The following defined symbols remain to be analysed: a__dbl, A__TERMS, A__SQR, MARK, A__ADD, a__sqr, A__DBL, A__HALF, a__terms, a__half They will be analysed ascendingly in the following order: A__TERMS = A__SQR mark < A__TERMS A__TERMS = MARK A__TERMS = A__ADD A__TERMS = A__DBL A__TERMS = A__HALF mark < A__SQR A__SQR = MARK A__SQR = A__ADD a__sqr < A__SQR a__dbl < A__SQR A__SQR = A__DBL A__SQR = A__HALF mark < MARK mark < A__ADD mark = a__sqr mark = a__dbl mark < A__DBL mark < A__HALF mark = a__terms mark = a__add mark = a__half MARK = A__ADD MARK = A__DBL MARK = A__HALF A__ADD = A__DBL A__ADD = A__HALF a__sqr = a__dbl a__sqr = a__terms a__sqr = a__add a__sqr = a__half a__dbl = a__terms a__dbl = a__add a__dbl = a__half A__DBL = A__HALF a__terms = a__add a__terms = a__half a__add = a__half ---------------------------------------- (23) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2757109_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2757109_34)), rt in Omega(0) Induction Base: a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0)) ->_R^Omega(0) 0' Induction Step: a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2757109_34, 1))) ->_R^Omega(0) s(s(a__dbl(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2757109_34))))) ->_L^Omega(0) s(s(a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2757109_34)))) ->_IH s(s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, c2757110_34)))) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (24) Obligation: Innermost TRS: Rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 a__terms(z0) -> cons(recip(a__sqr(mark(z0)))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1)) -> cons(mark(z1)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0)) -> cons(mark(z0)) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Types: A__TERMS :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c:c1 c :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c:c1 A__SQR :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c2:c3:c4:c5 mark :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil MARK :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c1 :: c:c1 0' :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c2 :: c2:c3:c4:c5 s :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c3 :: c9:c10:c11:c12 -> c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__ADD :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c9:c10:c11:c12 a__sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c4 :: c9:c10:c11:c12 -> c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__DBL :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c6:c7:c8 c5 :: c2:c3:c4:c5 c6 :: c6:c7:c8 c7 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c6:c7:c8 c8 :: c6:c7:c8 c9 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c10 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c11 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c12 :: c9:c10:c11:c12 A__FIRST :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c13:c14:c15 c13 :: c13:c14:c15 cons :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c14 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c13:c14:c15 c15 :: c13:c14:c15 A__HALF :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c16:c17:c18:c19:c20 c16 :: c16:c17:c18:c19:c20 c17 :: c16:c17:c18:c19:c20 c18 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c19 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 c20 :: c16:c17:c18:c19:c20 terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c21 :: c:c1 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c22 :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c23 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c24 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c25 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c26 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c27 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c28 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c29 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 recip :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c30 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c31 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c32 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 nil :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c33 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 a__terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c:c11_34 :: c:c1 hole_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil2_34 :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c2:c3:c4:c53_34 :: c2:c3:c4:c5 hole_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c334_34 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 hole_c9:c10:c11:c125_34 :: c9:c10:c11:c12 hole_c6:c7:c86_34 :: c6:c7:c8 hole_c13:c14:c157_34 :: c13:c14:c15 hole_c16:c17:c18:c19:c208_34 :: c16:c17:c18:c19:c20 gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34 :: Nat -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil gen_c2:c3:c4:c510_34 :: Nat -> c2:c3:c4:c5 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34 :: Nat -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 gen_c9:c10:c11:c1212_34 :: Nat -> c9:c10:c11:c12 gen_c6:c7:c813_34 :: Nat -> c6:c7:c8 gen_c16:c17:c18:c19:c2014_34 :: Nat -> c16:c17:c18:c19:c20 Lemmas: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34), rt in Omega(0) a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2757109_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2757109_34)), rt in Omega(0) a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2727562_34))) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2727562_34), rt in Omega(0) a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2730920_34)) -> *15_34, rt in Omega(0) a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2735539_34), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2735539_34, b)), rt in Omega(0) Generator Equations: gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0) <=> 0' gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(x, 1)) <=> s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(x)) gen_c2:c3:c4:c510_34(0) <=> c2 gen_c2:c3:c4:c510_34(+(x, 1)) <=> c3(c9(c32), gen_c2:c3:c4:c510_34(x), c32) gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(0) <=> c32 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(+(x, 1)) <=> c21(c(c2, c32), gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(x)) gen_c9:c10:c11:c1212_34(0) <=> c9(c32) gen_c9:c10:c11:c1212_34(+(x, 1)) <=> c10(gen_c9:c10:c11:c1212_34(x), c32) gen_c6:c7:c813_34(0) <=> c6 gen_c6:c7:c813_34(+(x, 1)) <=> c7(gen_c6:c7:c813_34(x), c32) gen_c16:c17:c18:c19:c2014_34(0) <=> c16 gen_c16:c17:c18:c19:c2014_34(+(x, 1)) <=> c18(gen_c16:c17:c18:c19:c2014_34(x), c32) The following defined symbols remain to be analysed: a__terms, A__TERMS, A__SQR, MARK, A__ADD, a__sqr, A__DBL, A__HALF, a__half They will be analysed ascendingly in the following order: A__TERMS = A__SQR mark < A__TERMS A__TERMS = MARK A__TERMS = A__ADD A__TERMS = A__DBL A__TERMS = A__HALF mark < A__SQR A__SQR = MARK A__SQR = A__ADD a__sqr < A__SQR a__dbl < A__SQR A__SQR = A__DBL A__SQR = A__HALF mark < MARK mark < A__ADD mark = a__sqr mark = a__dbl mark < A__DBL mark < A__HALF mark = a__terms mark = a__add mark = a__half MARK = A__ADD MARK = A__DBL MARK = A__HALF A__ADD = A__DBL A__ADD = A__HALF a__sqr = a__dbl a__sqr = a__terms a__sqr = a__add a__sqr = a__half a__dbl = a__terms a__dbl = a__add a__dbl = a__half A__DBL = A__HALF a__terms = a__add a__terms = a__half a__add = a__half ---------------------------------------- (25) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2768789_34))) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2768789_34), rt in Omega(0) Induction Base: a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, 0))) ->_R^Omega(0) 0' Induction Step: a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, +(n2768789_34, 1)))) ->_R^Omega(0) s(a__half(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2768789_34))))) ->_L^Omega(0) s(a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2768789_34)))) ->_IH s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(c2768790_34)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (26) Obligation: Innermost TRS: Rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 a__terms(z0) -> cons(recip(a__sqr(mark(z0)))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1)) -> cons(mark(z1)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0)) -> cons(mark(z0)) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Types: A__TERMS :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c:c1 c :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c:c1 A__SQR :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c2:c3:c4:c5 mark :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil MARK :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c1 :: c:c1 0' :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c2 :: c2:c3:c4:c5 s :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c3 :: c9:c10:c11:c12 -> c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__ADD :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c9:c10:c11:c12 a__sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c4 :: c9:c10:c11:c12 -> c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__DBL :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c6:c7:c8 c5 :: c2:c3:c4:c5 c6 :: c6:c7:c8 c7 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c6:c7:c8 c8 :: c6:c7:c8 c9 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c10 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c11 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c12 :: c9:c10:c11:c12 A__FIRST :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c13:c14:c15 c13 :: c13:c14:c15 cons :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c14 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c13:c14:c15 c15 :: c13:c14:c15 A__HALF :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c16:c17:c18:c19:c20 c16 :: c16:c17:c18:c19:c20 c17 :: c16:c17:c18:c19:c20 c18 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c19 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 c20 :: c16:c17:c18:c19:c20 terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c21 :: c:c1 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c22 :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c23 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c24 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c25 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c26 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c27 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c28 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c29 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 recip :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c30 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c31 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c32 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 nil :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c33 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 a__terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c:c11_34 :: c:c1 hole_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil2_34 :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c2:c3:c4:c53_34 :: c2:c3:c4:c5 hole_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c334_34 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 hole_c9:c10:c11:c125_34 :: c9:c10:c11:c12 hole_c6:c7:c86_34 :: c6:c7:c8 hole_c13:c14:c157_34 :: c13:c14:c15 hole_c16:c17:c18:c19:c208_34 :: c16:c17:c18:c19:c20 gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34 :: Nat -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil gen_c2:c3:c4:c510_34 :: Nat -> c2:c3:c4:c5 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34 :: Nat -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 gen_c9:c10:c11:c1212_34 :: Nat -> c9:c10:c11:c12 gen_c6:c7:c813_34 :: Nat -> c6:c7:c8 gen_c16:c17:c18:c19:c2014_34 :: Nat -> c16:c17:c18:c19:c20 Lemmas: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34), rt in Omega(0) a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2757109_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2757109_34)), rt in Omega(0) a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2768789_34))) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2768789_34), rt in Omega(0) a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2730920_34)) -> *15_34, rt in Omega(0) a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2735539_34), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2735539_34, b)), rt in Omega(0) Generator Equations: gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0) <=> 0' gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(x, 1)) <=> s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(x)) gen_c2:c3:c4:c510_34(0) <=> c2 gen_c2:c3:c4:c510_34(+(x, 1)) <=> c3(c9(c32), gen_c2:c3:c4:c510_34(x), c32) gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(0) <=> c32 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(+(x, 1)) <=> c21(c(c2, c32), gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(x)) gen_c9:c10:c11:c1212_34(0) <=> c9(c32) gen_c9:c10:c11:c1212_34(+(x, 1)) <=> c10(gen_c9:c10:c11:c1212_34(x), c32) gen_c6:c7:c813_34(0) <=> c6 gen_c6:c7:c813_34(+(x, 1)) <=> c7(gen_c6:c7:c813_34(x), c32) gen_c16:c17:c18:c19:c2014_34(0) <=> c16 gen_c16:c17:c18:c19:c2014_34(+(x, 1)) <=> c18(gen_c16:c17:c18:c19:c2014_34(x), c32) The following defined symbols remain to be analysed: a__sqr, A__TERMS, A__SQR, MARK, A__ADD, A__DBL, A__HALF They will be analysed ascendingly in the following order: A__TERMS = A__SQR mark < A__TERMS A__TERMS = MARK A__TERMS = A__ADD A__TERMS = A__DBL A__TERMS = A__HALF mark < A__SQR A__SQR = MARK A__SQR = A__ADD a__sqr < A__SQR a__dbl < A__SQR A__SQR = A__DBL A__SQR = A__HALF mark < MARK mark < A__ADD mark = a__sqr mark = a__dbl mark < A__DBL mark < A__HALF mark = a__terms mark = a__add mark = a__half MARK = A__ADD MARK = A__DBL MARK = A__HALF A__ADD = A__DBL A__ADD = A__HALF a__sqr = a__dbl a__sqr = a__terms a__sqr = a__add a__sqr = a__half a__dbl = a__terms a__dbl = a__add a__dbl = a__half A__DBL = A__HALF a__terms = a__add a__terms = a__half a__add = a__half ---------------------------------------- (27) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2769960_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(n2769960_34, n2769960_34)), rt in Omega(0) Induction Base: a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0)) ->_R^Omega(0) 0' Induction Step: a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2769960_34, 1))) ->_R^Omega(0) s(a__add(a__sqr(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2769960_34))), a__dbl(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2769960_34))))) ->_L^Omega(0) s(a__add(a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2769960_34)), a__dbl(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2769960_34))))) ->_IH s(a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(c2769961_34, c2769961_34)), a__dbl(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2769960_34))))) ->_L^Omega(0) s(a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(n2769960_34, n2769960_34)), a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2769960_34)))) ->_L^Omega(0) s(a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(n2769960_34, n2769960_34)), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2769960_34)))) ->_L^Omega(0) s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(*(n2769960_34, n2769960_34), *(2, n2769960_34)))) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (28) Obligation: Innermost TRS: Rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 a__terms(z0) -> cons(recip(a__sqr(mark(z0)))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1)) -> cons(mark(z1)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0)) -> cons(mark(z0)) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Types: A__TERMS :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c:c1 c :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c:c1 A__SQR :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c2:c3:c4:c5 mark :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil MARK :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c1 :: c:c1 0' :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c2 :: c2:c3:c4:c5 s :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c3 :: c9:c10:c11:c12 -> c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__ADD :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c9:c10:c11:c12 a__sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c4 :: c9:c10:c11:c12 -> c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__DBL :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c6:c7:c8 c5 :: c2:c3:c4:c5 c6 :: c6:c7:c8 c7 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c6:c7:c8 c8 :: c6:c7:c8 c9 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c10 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c11 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c12 :: c9:c10:c11:c12 A__FIRST :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c13:c14:c15 c13 :: c13:c14:c15 cons :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c14 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c13:c14:c15 c15 :: c13:c14:c15 A__HALF :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c16:c17:c18:c19:c20 c16 :: c16:c17:c18:c19:c20 c17 :: c16:c17:c18:c19:c20 c18 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c19 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 c20 :: c16:c17:c18:c19:c20 terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c21 :: c:c1 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c22 :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c23 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c24 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c25 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c26 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c27 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c28 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c29 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 recip :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c30 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c31 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c32 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 nil :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c33 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 a__terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c:c11_34 :: c:c1 hole_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil2_34 :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c2:c3:c4:c53_34 :: c2:c3:c4:c5 hole_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c334_34 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 hole_c9:c10:c11:c125_34 :: c9:c10:c11:c12 hole_c6:c7:c86_34 :: c6:c7:c8 hole_c13:c14:c157_34 :: c13:c14:c15 hole_c16:c17:c18:c19:c208_34 :: c16:c17:c18:c19:c20 gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34 :: Nat -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil gen_c2:c3:c4:c510_34 :: Nat -> c2:c3:c4:c5 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34 :: Nat -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 gen_c9:c10:c11:c1212_34 :: Nat -> c9:c10:c11:c12 gen_c6:c7:c813_34 :: Nat -> c6:c7:c8 gen_c16:c17:c18:c19:c2014_34 :: Nat -> c16:c17:c18:c19:c20 Lemmas: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34), rt in Omega(0) a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2757109_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2757109_34)), rt in Omega(0) a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2768789_34))) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2768789_34), rt in Omega(0) a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2769960_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(n2769960_34, n2769960_34)), rt in Omega(0) a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2735539_34), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2735539_34, b)), rt in Omega(0) Generator Equations: gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0) <=> 0' gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(x, 1)) <=> s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(x)) gen_c2:c3:c4:c510_34(0) <=> c2 gen_c2:c3:c4:c510_34(+(x, 1)) <=> c3(c9(c32), gen_c2:c3:c4:c510_34(x), c32) gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(0) <=> c32 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(+(x, 1)) <=> c21(c(c2, c32), gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(x)) gen_c9:c10:c11:c1212_34(0) <=> c9(c32) gen_c9:c10:c11:c1212_34(+(x, 1)) <=> c10(gen_c9:c10:c11:c1212_34(x), c32) gen_c6:c7:c813_34(0) <=> c6 gen_c6:c7:c813_34(+(x, 1)) <=> c7(gen_c6:c7:c813_34(x), c32) gen_c16:c17:c18:c19:c2014_34(0) <=> c16 gen_c16:c17:c18:c19:c2014_34(+(x, 1)) <=> c18(gen_c16:c17:c18:c19:c2014_34(x), c32) The following defined symbols remain to be analysed: A__SQR, A__TERMS, MARK, A__ADD, A__DBL, A__HALF They will be analysed ascendingly in the following order: A__TERMS = A__SQR A__TERMS = MARK A__TERMS = A__ADD A__TERMS = A__DBL A__TERMS = A__HALF A__SQR = MARK A__SQR = A__ADD A__SQR = A__DBL A__SQR = A__HALF MARK = A__ADD MARK = A__DBL MARK = A__HALF A__ADD = A__DBL A__ADD = A__HALF A__DBL = A__HALF ---------------------------------------- (29) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: A__ADD(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2812477_34), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) -> *15_34, rt in Omega(n2812477_34) Induction Base: A__ADD(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) Induction Step: A__ADD(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2812477_34, 1)), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) ->_R^Omega(1) c10(A__ADD(mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2812477_34)), mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b))), MARK(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2812477_34))) ->_L^Omega(0) c10(A__ADD(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2812477_34), mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b))), MARK(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2812477_34))) ->_L^Omega(0) c10(A__ADD(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2812477_34), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)), MARK(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2812477_34))) ->_IH c10(*15_34, MARK(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2812477_34))) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (30) Complex Obligation (BEST) ---------------------------------------- (31) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 a__terms(z0) -> cons(recip(a__sqr(mark(z0)))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1)) -> cons(mark(z1)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0)) -> cons(mark(z0)) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Types: A__TERMS :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c:c1 c :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c:c1 A__SQR :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c2:c3:c4:c5 mark :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil MARK :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c1 :: c:c1 0' :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c2 :: c2:c3:c4:c5 s :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c3 :: c9:c10:c11:c12 -> c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__ADD :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c9:c10:c11:c12 a__sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c4 :: c9:c10:c11:c12 -> c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__DBL :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c6:c7:c8 c5 :: c2:c3:c4:c5 c6 :: c6:c7:c8 c7 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c6:c7:c8 c8 :: c6:c7:c8 c9 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c10 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c11 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c12 :: c9:c10:c11:c12 A__FIRST :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c13:c14:c15 c13 :: c13:c14:c15 cons :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c14 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c13:c14:c15 c15 :: c13:c14:c15 A__HALF :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c16:c17:c18:c19:c20 c16 :: c16:c17:c18:c19:c20 c17 :: c16:c17:c18:c19:c20 c18 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c19 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 c20 :: c16:c17:c18:c19:c20 terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c21 :: c:c1 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c22 :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c23 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c24 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c25 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c26 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c27 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c28 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c29 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 recip :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c30 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c31 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c32 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 nil :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c33 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 a__terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c:c11_34 :: c:c1 hole_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil2_34 :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c2:c3:c4:c53_34 :: c2:c3:c4:c5 hole_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c334_34 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 hole_c9:c10:c11:c125_34 :: c9:c10:c11:c12 hole_c6:c7:c86_34 :: c6:c7:c8 hole_c13:c14:c157_34 :: c13:c14:c15 hole_c16:c17:c18:c19:c208_34 :: c16:c17:c18:c19:c20 gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34 :: Nat -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil gen_c2:c3:c4:c510_34 :: Nat -> c2:c3:c4:c5 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34 :: Nat -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 gen_c9:c10:c11:c1212_34 :: Nat -> c9:c10:c11:c12 gen_c6:c7:c813_34 :: Nat -> c6:c7:c8 gen_c16:c17:c18:c19:c2014_34 :: Nat -> c16:c17:c18:c19:c20 Lemmas: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34), rt in Omega(0) a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2757109_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2757109_34)), rt in Omega(0) a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2768789_34))) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2768789_34), rt in Omega(0) a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2769960_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(n2769960_34, n2769960_34)), rt in Omega(0) a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2735539_34), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2735539_34, b)), rt in Omega(0) Generator Equations: gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0) <=> 0' gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(x, 1)) <=> s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(x)) gen_c2:c3:c4:c510_34(0) <=> c2 gen_c2:c3:c4:c510_34(+(x, 1)) <=> c3(c9(c32), gen_c2:c3:c4:c510_34(x), c32) gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(0) <=> c32 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(+(x, 1)) <=> c21(c(c2, c32), gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(x)) gen_c9:c10:c11:c1212_34(0) <=> c9(c32) gen_c9:c10:c11:c1212_34(+(x, 1)) <=> c10(gen_c9:c10:c11:c1212_34(x), c32) gen_c6:c7:c813_34(0) <=> c6 gen_c6:c7:c813_34(+(x, 1)) <=> c7(gen_c6:c7:c813_34(x), c32) gen_c16:c17:c18:c19:c2014_34(0) <=> c16 gen_c16:c17:c18:c19:c2014_34(+(x, 1)) <=> c18(gen_c16:c17:c18:c19:c2014_34(x), c32) The following defined symbols remain to be analysed: A__ADD, A__TERMS, MARK, A__DBL, A__HALF They will be analysed ascendingly in the following order: A__TERMS = A__SQR A__TERMS = MARK A__TERMS = A__ADD A__TERMS = A__DBL A__TERMS = A__HALF A__SQR = MARK A__SQR = A__ADD A__SQR = A__DBL A__SQR = A__HALF MARK = A__ADD MARK = A__DBL MARK = A__HALF A__ADD = A__DBL A__ADD = A__HALF A__DBL = A__HALF ---------------------------------------- (32) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (33) BOUNDS(n^1, INF) ---------------------------------------- (34) Obligation: Innermost TRS: Rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 a__terms(z0) -> cons(recip(a__sqr(mark(z0)))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1)) -> cons(mark(z1)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0)) -> cons(mark(z0)) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Types: A__TERMS :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c:c1 c :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c:c1 A__SQR :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c2:c3:c4:c5 mark :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil MARK :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c1 :: c:c1 0' :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c2 :: c2:c3:c4:c5 s :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c3 :: c9:c10:c11:c12 -> c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__ADD :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c9:c10:c11:c12 a__sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c4 :: c9:c10:c11:c12 -> c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__DBL :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c6:c7:c8 c5 :: c2:c3:c4:c5 c6 :: c6:c7:c8 c7 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c6:c7:c8 c8 :: c6:c7:c8 c9 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c10 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c11 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c12 :: c9:c10:c11:c12 A__FIRST :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c13:c14:c15 c13 :: c13:c14:c15 cons :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c14 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c13:c14:c15 c15 :: c13:c14:c15 A__HALF :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c16:c17:c18:c19:c20 c16 :: c16:c17:c18:c19:c20 c17 :: c16:c17:c18:c19:c20 c18 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c19 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 c20 :: c16:c17:c18:c19:c20 terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c21 :: c:c1 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c22 :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c23 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c24 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c25 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c26 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c27 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c28 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c29 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 recip :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c30 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c31 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c32 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 nil :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c33 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 a__terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c:c11_34 :: c:c1 hole_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil2_34 :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c2:c3:c4:c53_34 :: c2:c3:c4:c5 hole_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c334_34 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 hole_c9:c10:c11:c125_34 :: c9:c10:c11:c12 hole_c6:c7:c86_34 :: c6:c7:c8 hole_c13:c14:c157_34 :: c13:c14:c15 hole_c16:c17:c18:c19:c208_34 :: c16:c17:c18:c19:c20 gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34 :: Nat -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil gen_c2:c3:c4:c510_34 :: Nat -> c2:c3:c4:c5 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34 :: Nat -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 gen_c9:c10:c11:c1212_34 :: Nat -> c9:c10:c11:c12 gen_c6:c7:c813_34 :: Nat -> c6:c7:c8 gen_c16:c17:c18:c19:c2014_34 :: Nat -> c16:c17:c18:c19:c20 Lemmas: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34), rt in Omega(0) a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2757109_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2757109_34)), rt in Omega(0) a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2768789_34))) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2768789_34), rt in Omega(0) a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2769960_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(n2769960_34, n2769960_34)), rt in Omega(0) a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2735539_34), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2735539_34, b)), rt in Omega(0) A__ADD(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2812477_34), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) -> *15_34, rt in Omega(n2812477_34) Generator Equations: gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0) <=> 0' gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(x, 1)) <=> s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(x)) gen_c2:c3:c4:c510_34(0) <=> c2 gen_c2:c3:c4:c510_34(+(x, 1)) <=> c3(c9(c32), gen_c2:c3:c4:c510_34(x), c32) gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(0) <=> c32 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(+(x, 1)) <=> c21(c(c2, c32), gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(x)) gen_c9:c10:c11:c1212_34(0) <=> c9(c32) gen_c9:c10:c11:c1212_34(+(x, 1)) <=> c10(gen_c9:c10:c11:c1212_34(x), c32) gen_c6:c7:c813_34(0) <=> c6 gen_c6:c7:c813_34(+(x, 1)) <=> c7(gen_c6:c7:c813_34(x), c32) gen_c16:c17:c18:c19:c2014_34(0) <=> c16 gen_c16:c17:c18:c19:c2014_34(+(x, 1)) <=> c18(gen_c16:c17:c18:c19:c2014_34(x), c32) The following defined symbols remain to be analysed: MARK, A__TERMS, A__SQR, A__DBL, A__HALF They will be analysed ascendingly in the following order: A__TERMS = A__SQR A__TERMS = MARK A__TERMS = A__ADD A__TERMS = A__DBL A__TERMS = A__HALF A__SQR = MARK A__SQR = A__ADD A__SQR = A__DBL A__SQR = A__HALF MARK = A__ADD MARK = A__DBL MARK = A__HALF A__ADD = A__DBL A__ADD = A__HALF A__DBL = A__HALF ---------------------------------------- (35) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: MARK(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(1, n3698283_34))) -> *15_34, rt in Omega(n3698283_34) Induction Base: MARK(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(1, 0))) Induction Step: MARK(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(1, +(n3698283_34, 1)))) ->_R^Omega(1) c31(MARK(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(1, n3698283_34)))) ->_IH c31(*15_34) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (36) Obligation: Innermost TRS: Rules: A__TERMS(z0) -> c(A__SQR(mark(z0)), MARK(z0)) A__TERMS(z0) -> c1 A__SQR(0') -> c2 A__SQR(s(z0)) -> c3(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__SQR(mark(z0)), MARK(z0)) A__SQR(s(z0)) -> c4(A__ADD(a__sqr(mark(z0)), a__dbl(mark(z0))), A__DBL(mark(z0)), MARK(z0)) A__SQR(z0) -> c5 A__DBL(0') -> c6 A__DBL(s(z0)) -> c7(A__DBL(mark(z0)), MARK(z0)) A__DBL(z0) -> c8 A__ADD(0', z0) -> c9(MARK(z0)) A__ADD(s(z0), z1) -> c10(A__ADD(mark(z0), mark(z1)), MARK(z0)) A__ADD(s(z0), z1) -> c11(A__ADD(mark(z0), mark(z1)), MARK(z1)) A__ADD(z0, z1) -> c12 A__FIRST(0', z0) -> c13 A__FIRST(s(z0), cons(z1)) -> c14(MARK(z1)) A__FIRST(z0, z1) -> c15 A__HALF(0') -> c16 A__HALF(s(0')) -> c17 A__HALF(s(s(z0))) -> c18(A__HALF(mark(z0)), MARK(z0)) A__HALF(dbl(z0)) -> c19(MARK(z0)) A__HALF(z0) -> c20 MARK(terms(z0)) -> c21(A__TERMS(mark(z0)), MARK(z0)) MARK(sqr(z0)) -> c22(A__SQR(mark(z0)), MARK(z0)) MARK(add(z0, z1)) -> c23(A__ADD(mark(z0), mark(z1)), MARK(z0)) MARK(add(z0, z1)) -> c24(A__ADD(mark(z0), mark(z1)), MARK(z1)) MARK(dbl(z0)) -> c25(A__DBL(mark(z0)), MARK(z0)) MARK(first(z0, z1)) -> c26(A__FIRST(mark(z0), mark(z1)), MARK(z0)) MARK(first(z0, z1)) -> c27(A__FIRST(mark(z0), mark(z1)), MARK(z1)) MARK(half(z0)) -> c28(A__HALF(mark(z0)), MARK(z0)) MARK(cons(z0)) -> c29(MARK(z0)) MARK(recip(z0)) -> c30(MARK(z0)) MARK(s(z0)) -> c31(MARK(z0)) MARK(0') -> c32 MARK(nil) -> c33 a__terms(z0) -> cons(recip(a__sqr(mark(z0)))) a__terms(z0) -> terms(z0) a__sqr(0') -> 0' a__sqr(s(z0)) -> s(a__add(a__sqr(mark(z0)), a__dbl(mark(z0)))) a__sqr(z0) -> sqr(z0) a__dbl(0') -> 0' a__dbl(s(z0)) -> s(s(a__dbl(mark(z0)))) a__dbl(z0) -> dbl(z0) a__add(0', z0) -> mark(z0) a__add(s(z0), z1) -> s(a__add(mark(z0), mark(z1))) a__add(z0, z1) -> add(z0, z1) a__first(0', z0) -> nil a__first(s(z0), cons(z1)) -> cons(mark(z1)) a__first(z0, z1) -> first(z0, z1) a__half(0') -> 0' a__half(s(0')) -> 0' a__half(s(s(z0))) -> s(a__half(mark(z0))) a__half(dbl(z0)) -> mark(z0) a__half(z0) -> half(z0) mark(terms(z0)) -> a__terms(mark(z0)) mark(sqr(z0)) -> a__sqr(mark(z0)) mark(add(z0, z1)) -> a__add(mark(z0), mark(z1)) mark(dbl(z0)) -> a__dbl(mark(z0)) mark(first(z0, z1)) -> a__first(mark(z0), mark(z1)) mark(half(z0)) -> a__half(mark(z0)) mark(cons(z0)) -> cons(mark(z0)) mark(recip(z0)) -> recip(mark(z0)) mark(s(z0)) -> s(mark(z0)) mark(0') -> 0' mark(nil) -> nil Types: A__TERMS :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c:c1 c :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c:c1 A__SQR :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c2:c3:c4:c5 mark :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil MARK :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c1 :: c:c1 0' :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c2 :: c2:c3:c4:c5 s :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c3 :: c9:c10:c11:c12 -> c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__ADD :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c9:c10:c11:c12 a__sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c4 :: c9:c10:c11:c12 -> c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c2:c3:c4:c5 A__DBL :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c6:c7:c8 c5 :: c2:c3:c4:c5 c6 :: c6:c7:c8 c7 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c6:c7:c8 c8 :: c6:c7:c8 c9 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c10 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c11 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c9:c10:c11:c12 c12 :: c9:c10:c11:c12 A__FIRST :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c13:c14:c15 c13 :: c13:c14:c15 cons :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c14 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c13:c14:c15 c15 :: c13:c14:c15 A__HALF :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> c16:c17:c18:c19:c20 c16 :: c16:c17:c18:c19:c20 c17 :: c16:c17:c18:c19:c20 c18 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 dbl :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c19 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c16:c17:c18:c19:c20 c20 :: c16:c17:c18:c19:c20 terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c21 :: c:c1 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 sqr :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c22 :: c2:c3:c4:c5 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c23 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c24 :: c9:c10:c11:c12 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c25 :: c6:c7:c8 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c26 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c27 :: c13:c14:c15 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c28 :: c16:c17:c18:c19:c20 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c29 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 recip :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c30 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c31 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 c32 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 nil :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil c33 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 a__terms :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__add :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__first :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil a__half :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c:c11_34 :: c:c1 hole_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil2_34 :: 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil hole_c2:c3:c4:c53_34 :: c2:c3:c4:c5 hole_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c334_34 :: c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 hole_c9:c10:c11:c125_34 :: c9:c10:c11:c12 hole_c6:c7:c86_34 :: c6:c7:c8 hole_c13:c14:c157_34 :: c13:c14:c15 hole_c16:c17:c18:c19:c208_34 :: c16:c17:c18:c19:c20 gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34 :: Nat -> 0':s:cons:dbl:terms:sqr:add:first:half:recip:nil gen_c2:c3:c4:c510_34 :: Nat -> c2:c3:c4:c5 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34 :: Nat -> c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33 gen_c9:c10:c11:c1212_34 :: Nat -> c9:c10:c11:c12 gen_c6:c7:c813_34 :: Nat -> c6:c7:c8 gen_c16:c17:c18:c19:c2014_34 :: Nat -> c16:c17:c18:c19:c20 Lemmas: mark(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2739827_34), rt in Omega(0) a__dbl(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2757109_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2757109_34)), rt in Omega(0) a__half(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(2, n2768789_34))) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2768789_34), rt in Omega(0) a__sqr(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2769960_34)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(*(n2769960_34, n2769960_34)), rt in Omega(0) a__add(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2735539_34), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) -> gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(n2735539_34, b)), rt in Omega(0) A__ADD(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(n2812477_34), gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(b)) -> *15_34, rt in Omega(n2812477_34) MARK(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(1, n3698283_34))) -> *15_34, rt in Omega(n3698283_34) Generator Equations: gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(0) <=> 0' gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(+(x, 1)) <=> s(gen_0':s:cons:dbl:terms:sqr:add:first:half:recip:nil9_34(x)) gen_c2:c3:c4:c510_34(0) <=> c2 gen_c2:c3:c4:c510_34(+(x, 1)) <=> c3(c9(c32), gen_c2:c3:c4:c510_34(x), c32) gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(0) <=> c32 gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(+(x, 1)) <=> c21(c(c2, c32), gen_c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c3311_34(x)) gen_c9:c10:c11:c1212_34(0) <=> c9(c32) gen_c9:c10:c11:c1212_34(+(x, 1)) <=> c10(gen_c9:c10:c11:c1212_34(x), c32) gen_c6:c7:c813_34(0) <=> c6 gen_c6:c7:c813_34(+(x, 1)) <=> c7(gen_c6:c7:c813_34(x), c32) gen_c16:c17:c18:c19:c2014_34(0) <=> c16 gen_c16:c17:c18:c19:c2014_34(+(x, 1)) <=> c18(gen_c16:c17:c18:c19:c2014_34(x), c32) The following defined symbols remain to be analysed: A__TERMS, A__SQR, A__ADD, A__DBL, A__HALF They will be analysed ascendingly in the following order: A__TERMS = A__SQR A__TERMS = MARK A__TERMS = A__ADD A__TERMS = A__DBL A__TERMS = A__HALF A__SQR = MARK A__SQR = A__ADD A__SQR = A__DBL A__SQR = A__HALF MARK = A__ADD MARK = A__DBL MARK = A__HALF A__ADD = A__DBL A__ADD = A__HALF A__DBL = A__HALF