From 6476455a1cf7cd29d6a2a81c3b6f02fd3a3bbf57 Mon Sep 17 00:00:00 2001 From: CubeJerry <80299683+CubeJerry@users.noreply.github.com> Date: Tue, 10 Nov 2026 04:10:27 +0800 Subject: [PATCH] Literal total rounded scalar tables for the current SCALE source class --- .../ARITHMETIC.json | 11 + .../CONTROLS.json | 11 + .../DEPENDENCIES.json | 59 ++ .../ENVIRONMENT.json | 7 + .../HISTORY.json | 84 ++ .../PR-DESCRIPTION.md | 78 ++ .../current-rounded-scalar-tables/PROOF.md | 329 ++++++ .../current-rounded-scalar-tables/README.md | 103 ++ .../current-rounded-scalar-tables/RESULT.json | 985 ++++++++++++++++++ .../current-rounded-scalar-tables/REVIEW.md | 28 + .../current-rounded-scalar-tables/SOURCE.json | 855 +++++++++++++++ .../SOURCES.json | 18 + .../current-rounded-scalar-tables/TASK.json | 93 ++ .../current-rounded-scalar-tables/VERIFY.json | 116 +++ .../data/word.json.gz | Bin 0 -> 349022 bytes .../current-rounded-scalar-tables/physical.py | 147 +++ .../reference/PRECISION-PROOF.md | 514 +++++++++ .../reference/ROUNDED-DIVISION-6937.md | 396 +++++++ .../reference/check_6937.py | 67 ++ .../source_binding.py | 71 ++ .../current-rounded-scalar-tables/tables.py | 202 ++++ .../vendor/exact_scalar_tables.py | 295 ++++++ .../vendor/machine.py | 406 ++++++++ .../current-rounded-scalar-tables/verify.py | 161 +++ 24 files changed, 5036 insertions(+) create mode 100644 research/current-rounded-scalar-tables/ARITHMETIC.json create mode 100644 research/current-rounded-scalar-tables/CONTROLS.json create mode 100644 research/current-rounded-scalar-tables/DEPENDENCIES.json create mode 100644 research/current-rounded-scalar-tables/ENVIRONMENT.json create mode 100644 research/current-rounded-scalar-tables/HISTORY.json create mode 100644 research/current-rounded-scalar-tables/PR-DESCRIPTION.md create mode 100644 research/current-rounded-scalar-tables/PROOF.md create mode 100644 research/current-rounded-scalar-tables/README.md create mode 100644 research/current-rounded-scalar-tables/RESULT.json create mode 100644 research/current-rounded-scalar-tables/REVIEW.md create mode 100644 research/current-rounded-scalar-tables/SOURCE.json create mode 100644 research/current-rounded-scalar-tables/SOURCES.json create mode 100644 research/current-rounded-scalar-tables/TASK.json create mode 100644 research/current-rounded-scalar-tables/VERIFY.json create mode 100644 research/current-rounded-scalar-tables/data/word.json.gz create mode 100644 research/current-rounded-scalar-tables/physical.py create mode 100644 research/current-rounded-scalar-tables/reference/PRECISION-PROOF.md create mode 100644 research/current-rounded-scalar-tables/reference/ROUNDED-DIVISION-6937.md create mode 100644 research/current-rounded-scalar-tables/reference/check_6937.py create mode 100644 research/current-rounded-scalar-tables/source_binding.py create mode 100644 research/current-rounded-scalar-tables/tables.py create mode 100644 research/current-rounded-scalar-tables/vendor/exact_scalar_tables.py create mode 100644 research/current-rounded-scalar-tables/vendor/machine.py create mode 100644 research/current-rounded-scalar-tables/verify.py diff --git a/research/current-rounded-scalar-tables/ARITHMETIC.json b/research/current-rounded-scalar-tables/ARITHMETIC.json new file mode 100644 index 0000000000..c868bc9244 --- /dev/null +++ b/research/current-rounded-scalar-tables/ARITHMETIC.json @@ -0,0 +1,11 @@ +{ + "current_SCALE_accepts": 1998, + "current_SCALE_cases": 3224, + "current_SCALE_rejects": 1226, + "max_current_SCALE_actions": 2428, + "oracle": "direct mathematical floor and final signed range; no table transitions imported", + "seam_all_inputs_cases": 1020, + "small_ADD_accepts": 1706, + "small_ADD_cases": 2380, + "small_ADD_rejects": 674 +} diff --git a/research/current-rounded-scalar-tables/CONTROLS.json b/research/current-rounded-scalar-tables/CONTROLS.json new file mode 100644 index 0000000000..cb72ae2d75 --- /dev/null +++ b/research/current-rounded-scalar-tables/CONTROLS.json @@ -0,0 +1,11 @@ +{ + "additional_controls": [ + "even_positive_and_negative_ties", + "floor_not_truncation" + ], + "table_mutants_detected": [ + "missing_signed_residue_correction", + "missing_upward_rounding_offset", + "wrong_final_signed_guard" + ] +} diff --git a/research/current-rounded-scalar-tables/DEPENDENCIES.json b/research/current-rounded-scalar-tables/DEPENDENCIES.json new file mode 100644 index 0000000000..f9f579cf50 --- /dev/null +++ b/research/current-rounded-scalar-tables/DEPENDENCIES.json @@ -0,0 +1,59 @@ +{ + "schema_version": 1, + "files": [ + { + "local_path": "data/word.json.gz", + "repository": "DreamingOfClouds/integer-mult-bounds", + "commit": "03626137d0bd57f09b0bf9597376183ce6fa9683", + "original_path": "research/p104-main-wire-native/data/word.json.gz", + "bytes": 349022, + "git_blob": "d93e67ca7628bf5531ae6e369da4dd7b7907b88f", + "sha256": "273e81f176f001684b1fa3eb857992bf58b54748004fcfe806b83adb48d2cc00" + }, + { + "local_path": "reference/ROUNDED-DIVISION-6937.md", + "repository": "DreamingOfClouds/integer-mult-bounds", + "commit": "a98df73ddae1d1ea85a62b6bdf2714b28cb7b359", + "original_path": "research/p104-two-chain-findings/ROUNDED-DIVISION.md", + "bytes": 40736, + "git_blob": "ed609f6a0e26dd00d6c55f876b667e15051507ca", + "sha256": "9ecff5835fae5fcdbf416711a5ef0e69d51afb535c55570ab3e1fef6f920f146" + }, + { + "local_path": "vendor/exact_scalar_tables.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "13193a22b1070a74a8580c5d3ea27470443f815a", + "original_path": "research/current-scalar-flat-tables/tables.py", + "bytes": 12650, + "git_blob": "1cc22f75fbe53d48b84be42782e581c04820cd49", + "sha256": "654e9734ef80a9394807ca508543b1bc164afb5768d23d0e5a88c790d2f13bac" + }, + { + "local_path": "vendor/machine.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "ab239cb6ee884e7a900dd9101c34448077fad0b0", + "original_path": "research/compiled-owned-bank-lifecycle/machine.py", + "bytes": 14932, + "git_blob": "acf475e4fccaff2fb64bd5b0b3f3fc0d246dc592", + "sha256": "ec597bce13275003ff30e4be481c936401826c1d4af642b55eec0c410774d1df" + }, + { + "local_path": "reference/check_6937.py", + "repository": "DreamingOfClouds/integer-mult-bounds", + "commit": "a98df73ddae1d1ea85a62b6bdf2714b28cb7b359", + "original_path": "research/p104-two-chain-findings/check.py", + "bytes": 4796, + "git_blob": "cebc2062a3939e5b2e415fe5aa6d3d8ce1d6cdac", + "sha256": "f25a9960396561e166264f8b695a3012b2d062b46744e39d073d57ecbc43f163" + }, + { + "local_path": "reference/PRECISION-PROOF.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "56bc9383594a3efc303148e00bb746851abd1ed5", + "original_path": "research/query-only-precision-envelope/PROOF.md", + "bytes": 26757, + "git_blob": "465a5dddd83bdea5db09f1030f99dffe698fe600", + "sha256": "8ddafd9a4c5b51d4c0e3f9b4a9eba27712335a16de1868ba156557344af86e63" + } + ] +} diff --git a/research/current-rounded-scalar-tables/ENVIRONMENT.json b/research/current-rounded-scalar-tables/ENVIRONMENT.json new file mode 100644 index 0000000000..1f2d2c46c8 --- /dev/null +++ b/research/current-rounded-scalar-tables/ENVIRONMENT.json @@ -0,0 +1,7 @@ +{ + "python": "3.12.14 (main, Aug 25 2026, 14:00:49) [Clang 22.1.3 ]", + "implementation": "CPython", + "platform": "Linux-6.18.57-x86_64-with-glibc2.39", + "dependencies": "Standard library only; no Git, network, subprocess or solver in package replay", + "canonical_base": "7c49fe32c55de02c2c873655c804b16e4c3fef0a" +} diff --git a/research/current-rounded-scalar-tables/HISTORY.json b/research/current-rounded-scalar-tables/HISTORY.json new file mode 100644 index 0000000000..7bf9ef4a66 --- /dev/null +++ b/research/current-rounded-scalar-tables/HISTORY.json @@ -0,0 +1,84 @@ +{ + "borrowed_binary_contexts": 3, + "combined_cost_samples": [ + { + "coefficient": "-2/3", + "op": "SCALE", + "physical_actions": 1644, + "table_rows": 255, + "width": 3 + }, + { + "coefficient": "-5/48", + "op": "SCALE", + "physical_actions": 1252, + "table_rows": 199, + "width": 2 + }, + { + "coefficient": "-5/6", + "op": "ADD", + "physical_actions": 1920, + "table_rows": 285, + "width": 3 + } + ], + "dirty_failure_then_success": true, + "failure_scope": "public unchanged; failed heads and scratch may remain unrestored", + "history": [ + { + "actions": 75916, + "bound": 152792, + "components": 12, + "historical_backing": [ + 1800, + 2400 + ], + "old_backing": 4200, + "width": 19 + }, + { + "actions": 1202, + "bound": 3584, + "components": 2, + "historical_backing": [ + 1800, + 2400 + ], + "old_backing": 0, + "width": 2 + }, + { + "actions": 6228, + "bound": 16896, + "components": 4, + "historical_backing": [ + 1800, + 2400 + ], + "old_backing": 0, + "width": 7 + }, + { + "actions": 1594, + "bound": 4608, + "components": 2, + "historical_backing": [ + 1800, + 2400 + ], + "old_backing": 0, + "width": 3 + } + ], + "late_overflow_public_unchanged": true, + "malformed_rejected": [ + "empty", + "odd_component", + "empty_component", + "foreign_numeric_symbol", + "unterminated", + "ADD_component_shape" + ], + "residue_marker_failure_reused": true +} diff --git a/research/current-rounded-scalar-tables/PR-DESCRIPTION.md b/research/current-rounded-scalar-tables/PR-DESCRIPTION.md new file mode 100644 index 0000000000..ede79fde35 --- /dev/null +++ b/research/current-rounded-scalar-tables/PR-DESCRIPTION.md @@ -0,0 +1,78 @@ +## What changed and why + +The current odd word's exact scalar service rejects off-grid rational +results, including a permitted one-grid child defect immediately before +SCALE37480 by -2/3. A total rounded-child contract therefore requires a +different numerical service. + +This package builds literal fixed-rational nearest-up SCALE/ADD tables +through the unchanged lifecycle Controller.primitive/execute_table ABI. +An LSF signed-residue prepass is followed by an exact odd quotient and +low-bit discard. Runtime instructions are only branch, write, unit move, +goto, halt and reject; there are no numerical payload callbacks. + +All 52 current SCALE coefficients are instantiated and registered under +their 3,660 exact local source tokens. The actual -2/3 seam maps numerator1 +to -1 and, universally, accepts every signed input for W>=2. The theorem +handles negative floor, even-denominator upward ties, widths smaller than +the discarded-bit count, signed endpoints and complete-field staging. + +## Exact dependencies and novelty + +Canonical base: `7c49fe32c55de02c2c873655c804b16e4c3fef0a`. +Source: DreamingOfClouds' CrocSwap/integer-mult-bounds#6936 at +`03626137d0bd57f09b0bf9597376183ce6fa9683`. +Credit the total RDiv proposal and abstract division automaton in +CrocSwap/integer-mult-bounds#6937. That note explicitly leaves physical +recounting/services open; this package provides a literal two-bank join, +not a claim to have invented rounding. + +The fixed builder and exact arithmetic predecessor are published at +`13193a22b1070a74a8580c5d3ea27470443f815a`; the unchanged lifecycle at +`ab239cb6ee884e7a900dd9101c34448077fad0b0`. The source precision seam is +published in [the precision package at 56bc938](https://github.com/CubeJerry/integer-mult-bounds/tree/56bc9383594a3efc303148e00bb746851abd1ed5/research/query-only-precision-envelope). +Six unchanged dependencies have exact commit/path/blob/SHA-256 pins. + +## Proof, physical checks and reproduction + +```bash +python3 -I -B research/current-rounded-scalar-tables/verify.py --suite all +python3 -I -O -B research/current-rounded-scalar-tables/verify.py --suite all +``` + +The proof supplies signed residue correction, a bounded carry invariant, +final range iff, mathematical floor after low-bit discard, and whole-field +staging. Independent direct integer oracles cover 3,224 current SCALE +cases, 2,380 small ADD pairs and 1,020 exhaustive -2/3 inputs. Tests include +late rejection, dirty long-to-short reuse, failure-work retirement, context +preservation, detected malformed shapes and three compiled mutants. +Standard library only; no Git/network is required for package replay. + +The positive physical/control bound is +512(S+1)+64dR+7(A_0+A_1)+16Q_c, with S the complete numeric extent, +R the component count, d the denominator's two-adic exponent, A_i old dirty +scratch lengths and Q_c borrowed contexts. It includes entry/exit erasure, +all passes, copying and head return. No extra bank is introduced; historical +backing and positive fixed source/table setup remain in the ledger. + +## Scope, limits and kappa + +**No new kappa. No full caller admission or unconditional theorem.** +The 4,079 current odd ADD occurrences are uninstantiated; the generic ADD +theorem and small fixtures are not their complete catalogue. Full recursive +source/row binding, other native/Lambda/error/ownership contracts, a common +physical tariff and rounded outer recovery remain open. The numerical +semantics are explicitly RDiv mode, not an unannounced replacement of the +exact-child or selected rule. + +Input encoding, matching shape/grid, distinct tapes, origin public/context +heads and contiguous dirty work with blank historical tails are premises. +Detected failure leaves the public target unchanged but need not restore +heads/work. The source guard does not validate hidden dirt after a blank or +noncanonical encoded frontiers. The physical bound is not imported into +the old 10^9 tariff as an assumed exchange rate. + +Prepared for **@CubeJerry**, with substantial **OpenAI assistance** in +research, proof, code and verification. Separate AI reviews are identified +in REVIEW.md and do not imply independent human or proof-kernel review. +No selected certificate or unrelated source is modified. diff --git a/research/current-rounded-scalar-tables/PROOF.md b/research/current-rounded-scalar-tables/PROOF.md new file mode 100644 index 0000000000..498145c6ac --- /dev/null +++ b/research/current-rounded-scalar-tables/PROOF.md @@ -0,0 +1,329 @@ +# Literal total rounded scalars on the retained lifecycle ABI + +Prepared for **@CubeJerry**, with substantial OpenAI assistance. Canonical +base `7c49fe32c55de02c2c873655c804b16e4c3fef0a`. This is a physical scalar +service lemma and current finite-source binding. **No new kappa, no full +caller admission, and no unconditional multiplication theorem.** + +## 1. Exact scope and predecessor boundary + +The unchanged predecessor scalar compiler is published at +[`13193a22b1070a74a8580c5d3ea27470443f815a`](https://github.com/CubeJerry/integer-mult-bounds/tree/13193a22b1070a74a8580c5d3ea27470443f815a/research/current-scalar-flat-tables). +The unchanged lifecycle `Controller.primitive`, `execute_table`, CodedPort +and retirement code are published at +[`ab239cb6ee884e7a900dd9101c34448077fad0b0`](https://github.com/CubeJerry/integer-mult-bounds/tree/ab239cb6ee884e7a900dd9101c34448077fad0b0/research/compiled-owned-bank-lifecycle). +The old scalar divider is checked **exact** division. Its finite-state +builder is reused unmodified; its quotient transition is replaced, not +relabelled as rounding. + +The concrete word is DreamingOfClouds' +[CrocSwap/integer-mult-bounds#6936](https://github.com/CrocSwap/integer-mult-bounds/pull/6936), +head `03626137d0bd57f09b0bf9597376183ce6fa9683`, 71,144 events. +Its 3,660 SCALE occurrences use 52 fixed rational coefficients. All 52 +tables are constructed and registered under the exact local token +`(local, pc, original_event)`, retaining source position, coefficient, +register and frame. The caller must supply that instruction's ordered +numeric field and the premises below; an entire caller/recursive source +exporter is not installed here. + +DreamingOfClouds' `ROUNDED-DIVISION.md` in +[CrocSwap/integer-mult-bounds#6937](https://github.com/CrocSwap/integer-mult-bounds/pull/6937), +head `a98df73ddae1d1ea85a62b6bdf2714b28cb7b359`, defines nearest-up RDiv, +gives an abstract LSF multiply/MSF odd division construction, and reports +285,870 small automaton cases. It explicitly leaves tape-level recounting +and physical services open. Its sole shipped `check.py`, blob +`cebc2062a3939e5b2e415fe5aa6d3d8ce1d6cdac`, does not contain that +automaton or lifecycle join. Here a signed residue prepass is followed by +an LSF exact odd quotient and low-bit discard, using the existing two work +banks and no new reversal buffer. + +The preceding precision package at +[`56bc9383594a3efc303148e00bb746851abd1ed5`](https://github.com/CubeJerry/integer-mult-bounds/tree/56bc9383594a3efc303148e00bb746851abd1ed5/research/query-only-precision-envelope) +locates a permitted one-grid defect before SCALE37480 by -2/3 that the +exact service rejects. This package closes that arithmetic seam and +constructs the whole current SCALE class. The remaining 4,079 odd ADD +occurrences are not instantiated here. + +Six unchanged files have exact commit/path/blob/SHA-256 pins in +`DEPENDENCIES.json`. Runtime tables contain only branch, write, unit move, +goto, halt and reject. Python arithmetic occurs only in fixed table +construction; there is no runtime payload callback or host division. +These are the proposed RDiv numerical semantics, not the source's +exact-child mode or an unannounced change to the selected rule. + +## 2. All-size theorem and domain + +Fix `a/b` in lowest terms, a integer and b>0, before runtime sizes vary. +Write `b=2^d o`, o odd, and `c=floor(b/2)`. +Define `Round(m)=floor((a*m+c)/b)`. SCALE sends m to Round(m); ADD sends +target x and source y to `x+Round(y)` and preserves the source. ADD shares +the proof; only small ADD coefficients are physically instantiated here. + +The tape premises are: + +* A field has a finite, nonempty even number R of signed components, each + with positive width w_i, LSF two's-complement bits and delimiter2. The + current format specializes to common W. ADD has matching shapes and a + common grid on distinct tapes. Equal values are permitted; physical + target/source alias is outside this contract. +* Numeric symbols0,1,2 use canonical three-nonblank-bit physical codes, + followed by a **physical** BLANK frontier. Encoded virtual4 cannot + masquerade as a frontier. CodedPort identifies those two cases, so this + table is not a validator of arbitrary noncanonical encodings. +* Public and borrowed context heads start at their protected local origins. + Each work head is inside its old contiguous binary body or at its + frontier. All field/work tapes are distinct and mutation is sequential. +* Work may initially be dirty and longer than the new field. Historically + allocated cells beyond its contiguous body must already be blank. + Hidden dirt after a blank is outside the retirement invariant. Protected + parent/ancestor segments stay live and are not scratch. +* The unchanged lifecycle retires both work banks on entry, executes the + table, resets successful heads and retires both banks on success. + +**Theorem.** Every such input terminates and succeeds iff every rounded +output fits its original signed width. Success installs the exact rounded +result, preserves source/context data, restores all heads and blanks both +work bodies, including previously written tails. A detected pre-installation +grammar error or overflow leaves the entire public target unchanged, +including earlier staged components. On rejection, work and heads may be +dirty/unrestored; no automatic rollback or successful continuation is claimed. + +This is total rounding subject to representable output, not an assertion +that every coefficient/input pair fits a fixed output width. + +## 3. Signed residue prepass + +For a w-bit component with bits x_j and sign s, write +`U=sum x_j 2^j`, `m=U-s 2^w`. The prepass keeps finite states + + rho = c + a sum_(j=2 + +For q=-2/3, `Round(m)=floor((-2m+1)/3)`. Put A=2^(W-1). At input -A, +the largest output is `floor((2A+1)/3)`. If W>=2 then A>=2 and +`2A+1<3A`, so this is at most A-1. At the largest input A-1, the result is +`floor((-2A+3)/3)>=-A`. Monotonicity covers every intermediate input. +Thus the table succeeds on every signed W-bit input for every W>=2 and +every finite complete field in the theorem's domain. + +At source SCALE37480 on register697, numerator1 maps to -1, with residual +-1/3 quantum; the old exact table rejected it. W=1 is correctly exceptional: +input -1 would round to +1, outside [-1,0]. Grid precision does not change +this integer statement. + +## 6. Whole-field staging, preservation and history + +No public write occurs during residue measurement, quotient generation, +shape checking or per-component range checks. Candidate components go to +the output bank. A parity state requires a positive even component count +at the frontier; ADD checks input bits, delimiters and frontiers in lockstep. +Only after every component passes does the global unary guide rewind the +inputs and protected output. Installation then copies the validated whole +field to the target. + +Under the geometry premises this installation cannot encounter a new +arithmetic/shape failure: the work streams were generated by the table and +have the consumed target's length. The ADD source is never written. No +table row addresses extra borrowed contexts; the executor only resets their +already-origin heads. Every ancestor remains behind its protected marker. + +Fixtures execute the unchanged `Controller.primitive` method, supplying +the exact attributes it reads. They do not claim a full recursive +Controller constructor, row provider or stack execution. Tables are immutable +tuples, and integer oracles inspect outputs only outside runtime. +Three separate cost fixtures wrap only table lookup in a transparent +counter that returns the unchanged immutable row. It receives no tape or +numerical payload and cannot influence the instruction stream; it counts +control steps alongside the physical Tape observer. + +The executor resets success heads; unchanged retirement erases both +contiguous work bodies. Guide marker6 is encoded as three nonblank physical +bits and cannot hide a suffix from retirement. Older longer tails were +erased at entry and remain blank. Shorter reuse therefore preserves all +historical cells. A rejected run can leave contiguous dirt and an interior +head; a subsequent explicitly started primitive retires it. Rejected public +heads are not automatically restored. + +## 7. Complete positive primitive cost and storage + +Let R be the component count and `S=sum_i(w_i+1)` the numeric virtual +extent of a public field, delimiters included. Let A_0,A_1 be the old +contiguous physical work-body lengths, with heads inside those bodies or +at their frontiers. Let Q_c count untouched borrowed binary contexts at +their origins. Count each physical read, write, unit head move and each +executed flat-table row as one finite-control action. A conservative +complete successful primitive bound is + + 512(S+1) + 64 d R + 7(A_0+A_1) + 16 Q_c. (3) + +Detected pre-installation failures use only a prefix of these phases, for +their scanned extents. This is a bound in stated physical/finite-control +units, not a conversion into the supplier's raw tariff. + +A valid CodedPort nonblank read costs at most 10 physical actions, a write9 +and a unit move4. Every forward move is from a written/data symbol: the +table does not allocate an extra virtual word by moving from a blank +frontier. Including the control row, each instruction costs at most 11. + +| Table phase | Upper bound on executed rows | +|---|---:| +| Arithmetic and delimiter checks | 10 S + 3 d R | +| Odd residue scan and component rewind | 13 S | +| Global guide rewind | 7 S | +| Validated installation | 7 S | +| Fixed entry/frontier/marker branches | 32 | + +The residue phase is absent when o=1. The table therefore costs at most +`407S+33dR+352` including its physical actions. Executor head resets cost +at most `18S+18`. Entry retirement of work bank i costs +`5A_i+2h_i+7<=7A_i+7`, where h_i is its initial displacement. Final +retirement of physical lengths 3S and3(S+1) costs `30S+29`. Their sum is +at most `455S+33dR+413+7(A_0+A_1)`. The remaining allowance in (3) covers +the fixed two-bank/at-most-two-public-port wrapper bookkeeping (at most 64 +control steps under this convention) and context resets. The latter cost 3 +physical actions each plus linear bookkeeping; 16 Q_c is positive slack. +Since R>=2 and w_i>=1, S>=4, so this slack is sufficient. Every source +read, copy, rewind, head return and retirement remains in the bill. + +Runtime output uses at most3S physical cells and guide 3(S+1). No multiply +or reversal array is allocated. The carry is bounded by C and residue/power +by o; those are fixed finite controller states. The generic W+26 numerator +budget from the precision package is compatible but is not a hidden third +array here. If a coefficient or d is itself a runtime variable, this fixed +template theorem does not provide a uniform variable-divisor service. + +If prior backing capacities are H_0,H_1, resident private storage remains + + max(H_0,3S) + max(H_1,3(S+1)), + +in addition to public fields, all borrowed metadata, protected ancestors +and fixed controller storage. For repeated calls i, sum (3) with actual +S_i,R_i and initial dirty lengths A_(j,i). After success these dirty lengths +are zero on the next use; resident capacities still retain historical +maxima. This charges initial dirt/failure leftovers and does not pretend +that an erased longer tail ceases to occupy backing. + +**Construction.** There are at most 2C+1 carry values, finite residue/power +states and phase counters bounded by d. A coarse finite graph bound is a +fixed constant times `(d+1)^2(C+1)+(o+1)^2`, with positive coefficient-bit +arithmetic and label-resolution cost. Authentication, source reading, token +registration, graph construction and storage contribute C_setup independent +of runtime field sizes. They are not priced as zero. + +The instantiated 52-SCALE catalogue has 92,113 rows, at most 20,401 in one +table, with d<=8, o<=15 and C<=278. Only 64 occurrences per local word use +the residue prepass, hence 1,152 in an 18-call raw caller. `SOURCE.json` +records every coefficient and occurrence count. No additional bank is +introduced. + +The previous precision package's optimistic extra-scan margin is not an +admitted exchange rate between (3) and the inherited 10^9 raw tariff. +The complete current ADD class, source/row exporter, other providers, +recursive children, setup and normalization interfaces still need a common +physical invoice. This package makes no tariff-cap or kappa conclusion. + +## 8. Verification and remaining obligations + +The physical oracle computes mathematical integer floor and final signed +range directly, without replaying table transitions. Bounded coverage is: + +* all 52 current SCALE coefficients, all signed inputs at widths 1..5: + 3,224 cases, 1,998 accepts and1,226 correct overflow rejections; +* seven small ADD coefficients, all input pairs at widths 1..4: + 2,380 cases, 1,706 accepts and 674 correct overflow rejections; +* every -2/3 input at widths 2..9:1,020 successes; +* work initially dirty for 1,800 and 2,400 cells, arbitrary interior/frontier + heads, long-to-short reuse, late-component overflow, explicit retirement + after failure including a live residue marker6, three borrowed contexts, + detected malformed grammars and combined table/physical cost samples; +* separately compiled mutants omitting signed residue correction, omitting + the upward rounding offset, and changing the final signed guard. + +Physical attempts have a 120-second cap. The proof, rather than finite +width coverage, establishes universality. Tests do not monkey-patch the +executor/CodedPort or use numerical payload callbacks. The primitive +fixture is not a recursive tape computation or independent human review. + +Open next questions: construct and price uninstantiated current ADD +tables; bind recursive occurrence/row formats; establish the remaining +native/Lambda/error/ownership contracts; and assemble the full physical +tariff and rounded outer recovery. The source precision implication at +56bc938 remains conditional on those interfaces. No selected certificate +or predecessor source is changed here. diff --git a/research/current-rounded-scalar-tables/README.md b/research/current-rounded-scalar-tables/README.md new file mode 100644 index 0000000000..06f74137fa --- /dev/null +++ b/research/current-rounded-scalar-tables/README.md @@ -0,0 +1,103 @@ +# Literal total rounded scalar tables + +**Result:** fixed-rational SCALE and ADD tables implement +`floor((a*m+floor(b/2))/b)` through the unchanged lifecycle executor, +including negative inputs and even-denominator upward ties. All 52 current +SCALE coefficients are compiled and bound to their 3,660 exact local source +tokens. The actual SCALE37480 by -2/3 now accepts the one-grid state that +the checked exact service rejects; for this coefficient every signed input +fits whenever W>=2. **No new kappa or complete caller admission.** + +The source is DreamingOfClouds' +[CrocSwap/integer-mult-bounds#6936](https://github.com/CrocSwap/integer-mult-bounds/pull/6936), +head `03626137d0bd57f09b0bf9597376183ce6fa9683`. Canonical base is +`7c49fe32c55de02c2c873655c804b16e4c3fef0a`. Six unchanged dependencies are +pinned by commit, path, Git blob and SHA-256 in `DEPENDENCIES.json`. + +## What is new + +The exact scalar predecessor rejects nonintegral grid results. The rounded +proposal in [CrocSwap/integer-mult-bounds#6937](https://github.com/CrocSwap/integer-mult-bounds/pull/6937) +describes a multiply/MSF-division automaton and leaves a physical lifecycle +join and recount open. This package supplies a literal finite table, using +an LSF signed-residue prepass followed by an exact odd quotient and low-bit +discard. It does not relabel checked division or call host arithmetic on +runtime payloads. + +`compile_rounded(op, coefficient)` in `tables.py` returns an immutable +transition table and a finite construction receipt. SCALE ports are +`(target, output_work, guide_work)`; ADD adds a distinct read-only source +after target. Tables contain only branch/write/unit-move/goto/halt/reject. +The unchanged `Controller.primitive` performs entry retirement, table +execution, head restoration and successful exit retirement. + +All components are staged before the first public write. Valid fields +succeed exactly when the rounded outputs fit their original signed widths. +Detected failures leave the public target unchanged but may leave private +work and heads dirty/unrestored. Canonical numeric encoding, physical +frontiers, distinct tapes, initial public/context origins and contiguous +old scratch are explicit premises, not claimed malformed-input validators. + +## Positive cost and coverage + +Let R be the component count, `S=sum(w_i+1)`, `b=2^d o`, and A_0,A_1 the +old dirty physical work lengths. The proved primitive bound is + + 512(S+1) + 64 d R + 7(A_0+A_1) + 16 Q_c + +for physical tape actions plus flat-table control, including all head +movement, staging, copying and retirement; Q_c counts untouched borrowed +contexts. No additional work bank is needed. Resident backing retains +historical maxima, and positive finite source/table setup costs are +separate. This bound is not silently exchanged for the old supplier tariff. + +The current 52-SCALE catalogue has 92,113 rows, at most 20,401 in one table. +Only 64 local SCALE occurrences need the residue prepass. The generic +ADD theorem shares the same algebra, but the 4,079 current odd ADD +occurrences are **not** constructed or installed here. The full recursive +source exporter, native providers and physical invoice remain open. + +## Reproduction + +```bash +python3 -I -B research/current-rounded-scalar-tables/verify.py --suite all +python3 -I -O -B research/current-rounded-scalar-tables/verify.py --suite all +``` + +Expected: four `PASS_CURRENT_ROUNDED_SCALAR_*` lines for SOURCE, +ARITHMETIC, HISTORY and CONTROLS. Each physical attempt has a 120-second +cap. Standard library only; package replay needs no Git, network or solver. + +The independent integer floor/range oracle covers 3,224 current SCALE +cases, 2,380 small ADD pairs, and 1,020 exhaustive -2/3 inputs at widths +2..9. Additional tests cover dirty long-to-short reuse, late overflow, +retirement after failure including a live residue marker, borrowed contexts, +detected malformed shapes and three compiled arithmetic mutants. Separate +transparent observers check physical and finite-control cost. The proof, +rather than the finite width range, establishes all-size correctness. + +`PROOF.md` gives the residue/sign/carry and lifecycle arguments; +`SOURCE.json`, `ARITHMETIC.json`, `HISTORY.json`, and `CONTROLS.json` +record exact coverage. `PR-DESCRIPTION.md` is the complete proposed text. + +## Open next questions + +1. Construct and price the remaining current ADD coefficient class, or + replace the potentially large fixed carry graph with an equally literal + economical method. The generic existence theorem is not that inventory. +2. Install the complete caller/recursive occurrence and row/format binding. + This package registers exact local SCALE tokens only. +3. Bind the remaining native/Lambda/error/ownership contracts and assemble + a common physical tariff, including source/setup, children and old backing. +4. Complete the rounded outer recovery obligations before deriving a new + accepted multiplication bound. + +## Credit + +Prepared for **@CubeJerry**, with substantial **OpenAI assistance** in +proof, implementation and testing. Credit DreamingOfClouds' #6936 source +and #6937 total RDiv proposal, CubeJerry's exact scalar and lifecycle +predecessors, and the source precision package published at +[`56bc9383594a3efc303148e00bb746851abd1ed5`](https://github.com/CubeJerry/integer-mult-bounds/tree/56bc9383594a3efc303148e00bb746851abd1ed5/research/query-only-precision-envelope). +Separate AI review is recorded honestly in `REVIEW.md`; it is not human +or proof-kernel verification. No selected certificate is changed. diff --git a/research/current-rounded-scalar-tables/RESULT.json b/research/current-rounded-scalar-tables/RESULT.json new file mode 100644 index 0000000000..02357eb547 --- /dev/null +++ b/research/current-rounded-scalar-tables/RESULT.json @@ -0,0 +1,985 @@ +{ + "arithmetic": { + "current_SCALE_accepts": 1998, + "current_SCALE_cases": 3224, + "current_SCALE_rejects": 1226, + "max_current_SCALE_actions": 2428, + "oracle": "direct mathematical floor and final signed range; no table transitions imported", + "seam_all_inputs_cases": 1020, + "small_ADD_accepts": 1706, + "small_ADD_cases": 2380, + "small_ADD_rejects": 674 + }, + "base": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "controls": { + "additional_controls": [ + "even_positive_and_negative_ties", + "floor_not_truncation" + ], + "table_mutants_detected": [ + "missing_signed_residue_correction", + "missing_upward_rounding_offset", + "wrong_final_signed_guard" + ] + }, + "cost": { + "new_owned_banks": 0, + "setup": "positive finite source/graph construction cost, separate", + "table_rows_bound": "37*S+3*d*R+32", + "tariff_cap_claim": false, + "total_physical_and_table_control": "512*(S+1)+64*d*R+7*(A0+A1)+16*Qc", + "work_ports": 2 + }, + "full_caller_admission": false, + "history": { + "borrowed_binary_contexts": 3, + "combined_cost_samples": [ + { + "coefficient": "-2/3", + "op": "SCALE", + "physical_actions": 1644, + "table_rows": 255, + "width": 3 + }, + { + "coefficient": "-5/48", + "op": "SCALE", + "physical_actions": 1252, + "table_rows": 199, + "width": 2 + }, + { + "coefficient": "-5/6", + "op": "ADD", + "physical_actions": 1920, + "table_rows": 285, + "width": 3 + } + ], + "dirty_failure_then_success": true, + "failure_scope": "public unchanged; failed heads and scratch may remain unrestored", + "history": [ + { + "actions": 75916, + "bound": 152792, + "components": 12, + "historical_backing": [ + 1800, + 2400 + ], + "old_backing": 4200, + "width": 19 + }, + { + "actions": 1202, + "bound": 3584, + "components": 2, + "historical_backing": [ + 1800, + 2400 + ], + "old_backing": 0, + "width": 2 + }, + { + "actions": 6228, + "bound": 16896, + "components": 4, + "historical_backing": [ + 1800, + 2400 + ], + "old_backing": 0, + "width": 7 + }, + { + "actions": 1594, + "bound": 4608, + "components": 2, + "historical_backing": [ + 1800, + 2400 + ], + "old_backing": 0, + "width": 3 + } + ], + "late_overflow_public_unchanged": true, + "malformed_rejected": [ + "empty", + "odd_component", + "empty_component", + "foreign_numeric_symbol", + "unterminated", + "ADD_component_shape" + ], + "residue_marker_failure_reused": true + }, + "immutable_inputs": 6, + "limits": [ + "Canonical numeric encoding and physical frontier.", + "Distinct field/work tapes and origin public/context heads.", + "Contiguous dirty scratch, blank historical tail, protected ancestors.", + "Failed work/heads may remain dirty and repositioned.", + "Current odd ADD inventory and full recursive source binding remain.", + "Coefficient/denominator fixed before input-size variation." + ], + "no_new_kappa": true, + "source": { + "actual_source_seam": { + "actions": 2036, + "field": 697, + "input": [ + 1, + 0 + ], + "output": [ + -1, + 0 + ], + "pc": 37480 + }, + "binding_scope": "exact local tokens for current SCALE class only; complete caller/recursive exporter not installed", + "coefficients": 52, + "inventory": [ + { + "carry_bound": 199, + "carry_states": 199, + "coefficient": "-192/5", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 14219, + "states": 5969, + "work_ports": 2 + }, + { + "carry_bound": 25, + "carry_states": 25, + "coefficient": "-24", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 1784, + "states": 736, + "work_ports": 2 + }, + { + "carry_bound": 17, + "carry_states": 17, + "coefficient": "-16", + "denominator_twos": 0, + "occurrences": 8, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 1240, + "states": 512, + "work_ports": 2 + }, + { + "carry_bound": 55, + "carry_states": 55, + "coefficient": "-48/5", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 4427, + "states": 1937, + "work_ports": 2 + }, + { + "carry_bound": 9, + "carry_states": 9, + "coefficient": "-8", + "denominator_twos": 0, + "occurrences": 19, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 696, + "states": 288, + "work_ports": 2 + }, + { + "carry_bound": 7, + "carry_states": 7, + "coefficient": "-6", + "denominator_twos": 0, + "occurrences": 5, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 560, + "states": 232, + "work_ports": 2 + }, + { + "carry_bound": 5, + "carry_states": 5, + "coefficient": "-4", + "denominator_twos": 0, + "occurrences": 96, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 424, + "states": 176, + "work_ports": 2 + }, + { + "carry_bound": 4, + "carry_states": 4, + "coefficient": "-3", + "denominator_twos": 0, + "occurrences": 21, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 356, + "states": 148, + "work_ports": 2 + }, + { + "carry_bound": 7, + "carry_states": 7, + "coefficient": "-5/2", + "denominator_twos": 1, + "occurrences": 2, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 1, + "rows": 596, + "states": 240, + "work_ports": 2 + }, + { + "carry_bound": 3, + "carry_states": 3, + "coefficient": "-2", + "denominator_twos": 0, + "occurrences": 503, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 288, + "states": 120, + "work_ports": 2 + }, + { + "carry_bound": 5, + "carry_states": 5, + "coefficient": "-3/2", + "denominator_twos": 1, + "occurrences": 7, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 1, + "rows": 440, + "states": 180, + "work_ports": 2 + }, + { + "carry_bound": 2, + "carry_states": 2, + "coefficient": "-1", + "denominator_twos": 0, + "occurrences": 1062, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 220, + "states": 92, + "work_ports": 2 + }, + { + "carry_bound": 6, + "carry_states": 6, + "coefficient": "-2/3", + "denominator_twos": 0, + "occurrences": 7, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 1, + "rows": 699, + "states": 329, + "work_ports": 2 + }, + { + "carry_bound": 3, + "carry_states": 3, + "coefficient": "-1/2", + "denominator_twos": 1, + "occurrences": 491, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 1, + "rows": 284, + "states": 120, + "work_ports": 2 + }, + { + "carry_bound": 9, + "carry_states": 9, + "coefficient": "-2/5", + "denominator_twos": 0, + "occurrences": 2, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 1299, + "states": 649, + "work_ports": 2 + }, + { + "carry_bound": 5, + "carry_states": 5, + "coefficient": "-1/3", + "denominator_twos": 0, + "occurrences": 25, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 1, + "rows": 631, + "states": 301, + "work_ports": 2 + }, + { + "carry_bound": 4, + "carry_states": 4, + "coefficient": "-1/4", + "denominator_twos": 2, + "occurrences": 92, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 2, + "rows": 363, + "states": 155, + "work_ports": 2 + }, + { + "carry_bound": 7, + "carry_states": 7, + "coefficient": "-1/6", + "denominator_twos": 1, + "occurrences": 7, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 3, + "rows": 763, + "states": 361, + "work_ports": 2 + }, + { + "carry_bound": 6, + "carry_states": 5, + "coefficient": "-1/8", + "denominator_twos": 3, + "occurrences": 17, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 4, + "rows": 481, + "states": 217, + "work_ports": 2 + }, + { + "carry_bound": 32, + "carry_states": 23, + "coefficient": "-5/48", + "denominator_twos": 4, + "occurrences": 1, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 24, + "rows": 2149, + "states": 1027, + "work_ports": 2 + }, + { + "carry_bound": 10, + "carry_states": 7, + "coefficient": "-1/16", + "denominator_twos": 4, + "occurrences": 7, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 8, + "rows": 605, + "states": 285, + "work_ports": 2 + }, + { + "carry_bound": 16, + "carry_states": 13, + "coefficient": "-1/24", + "denominator_twos": 3, + "occurrences": 1, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 12, + "rows": 1193, + "states": 579, + "work_ports": 2 + }, + { + "carry_bound": 104, + "carry_states": 36, + "coefficient": "-5/192", + "denominator_twos": 6, + "occurrences": 1, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 96, + "rows": 3129, + "states": 1591, + "work_ports": 2 + }, + { + "carry_bound": 18, + "carry_states": 6, + "coefficient": "1/32", + "denominator_twos": 5, + "occurrences": 1, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 16, + "rows": 561, + "states": 265, + "work_ports": 2 + }, + { + "carry_bound": 144, + "carry_states": 34, + "coefficient": "15/256", + "denominator_twos": 8, + "occurrences": 1, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 128, + "rows": 4947, + "states": 2499, + "work_ports": 2 + }, + { + "carry_bound": 10, + "carry_states": 5, + "coefficient": "1/16", + "denominator_twos": 4, + "occurrences": 6, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 8, + "rows": 473, + "states": 217, + "work_ports": 2 + }, + { + "carry_bound": 11, + "carry_states": 10, + "coefficient": "1/10", + "denominator_twos": 1, + "occurrences": 1, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 5, + "rows": 1381, + "states": 691, + "work_ports": 2 + }, + { + "carry_bound": 32, + "carry_states": 20, + "coefficient": "5/48", + "denominator_twos": 4, + "occurrences": 1, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 24, + "rows": 2005, + "states": 955, + "work_ports": 2 + }, + { + "carry_bound": 6, + "carry_states": 4, + "coefficient": "1/8", + "denominator_twos": 3, + "occurrences": 20, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 4, + "rows": 389, + "states": 173, + "work_ports": 2 + }, + { + "carry_bound": 8, + "carry_states": 7, + "coefficient": "1/5", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 1191, + "states": 601, + "work_ports": 2 + }, + { + "carry_bound": 4, + "carry_states": 3, + "coefficient": "1/4", + "denominator_twos": 2, + "occurrences": 126, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 2, + "rows": 309, + "states": 133, + "work_ports": 2 + }, + { + "carry_bound": 14, + "carry_states": 8, + "coefficient": "5/16", + "denominator_twos": 4, + "occurrences": 1, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 8, + "rows": 1013, + "states": 453, + "work_ports": 2 + }, + { + "carry_bound": 9, + "carry_states": 7, + "coefficient": "2/5", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 1219, + "states": 609, + "work_ports": 2 + }, + { + "carry_bound": 3, + "carry_states": 2, + "coefficient": "1/2", + "denominator_twos": 1, + "occurrences": 482, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 1, + "rows": 233, + "states": 97, + "work_ports": 2 + }, + { + "carry_bound": 6, + "carry_states": 3, + "coefficient": "3/4", + "denominator_twos": 2, + "occurrences": 6, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 2, + "rows": 401, + "states": 167, + "work_ports": 2 + }, + { + "carry_bound": 11, + "carry_states": 8, + "coefficient": "4/5", + "denominator_twos": 0, + "occurrences": 5, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 1305, + "states": 645, + "work_ports": 2 + }, + { + "carry_bound": 8, + "carry_states": 5, + "coefficient": "5/4", + "denominator_twos": 2, + "occurrences": 5, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 2, + "rows": 570, + "states": 232, + "work_ports": 2 + }, + { + "carry_bound": 8, + "carry_states": 6, + "coefficient": "4/3", + "denominator_twos": 0, + "occurrences": 6, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 1, + "rows": 745, + "states": 345, + "work_ports": 2 + }, + { + "carry_bound": 3, + "carry_states": 2, + "coefficient": "2", + "denominator_twos": 0, + "occurrences": 488, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 238, + "states": 100, + "work_ports": 2 + }, + { + "carry_bound": 7, + "carry_states": 5, + "coefficient": "5/2", + "denominator_twos": 1, + "occurrences": 1, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 1, + "rows": 486, + "states": 196, + "work_ports": 2 + }, + { + "carry_bound": 4, + "carry_states": 3, + "coefficient": "3", + "denominator_twos": 0, + "occurrences": 4, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 306, + "states": 128, + "work_ports": 2 + }, + { + "carry_bound": 23, + "carry_states": 20, + "coefficient": "16/5", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 2121, + "states": 981, + "work_ports": 2 + }, + { + "carry_bound": 5, + "carry_states": 4, + "coefficient": "4", + "denominator_twos": 0, + "occurrences": 93, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 374, + "states": 156, + "work_ports": 2 + }, + { + "carry_bound": 6, + "carry_states": 5, + "coefficient": "5", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 442, + "states": 184, + "work_ports": 2 + }, + { + "carry_bound": 7, + "carry_states": 6, + "coefficient": "6", + "denominator_twos": 0, + "occurrences": 2, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 510, + "states": 212, + "work_ports": 2 + }, + { + "carry_bound": 9, + "carry_states": 8, + "coefficient": "8", + "denominator_twos": 0, + "occurrences": 18, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 646, + "states": 268, + "work_ports": 2 + }, + { + "carry_bound": 55, + "carry_states": 52, + "coefficient": "48/5", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 4297, + "states": 1877, + "work_ports": 2 + }, + { + "carry_bound": 11, + "carry_states": 10, + "coefficient": "10", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 782, + "states": 324, + "work_ports": 2 + }, + { + "carry_bound": 17, + "carry_states": 16, + "coefficient": "16", + "denominator_twos": 0, + "occurrences": 5, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 1190, + "states": 492, + "work_ports": 2 + }, + { + "carry_bound": 278, + "carry_states": 270, + "coefficient": "256/15", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 15, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 120, + "rounding_offset": 7, + "rows": 20401, + "states": 8721, + "work_ports": 2 + }, + { + "carry_bound": 33, + "carry_states": 32, + "coefficient": "32", + "denominator_twos": 0, + "occurrences": 2, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 2278, + "states": 940, + "work_ports": 2 + }, + { + "carry_bound": 65, + "carry_states": 64, + "coefficient": "64", + "denominator_twos": 0, + "occurrences": 2, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 4454, + "states": 1836, + "work_ports": 2 + } + ], + "max_table_rows": 20401, + "occurrences": 3660, + "remaining_odd_ADD_occurrences": 4079, + "total_table_rows": 92113 + }, + "status": "literal all-size fixed-rational service theorem and current local SCALE catalogue", + "unconditional_multiplication": false +} diff --git a/research/current-rounded-scalar-tables/REVIEW.md b/research/current-rounded-scalar-tables/REVIEW.md new file mode 100644 index 0000000000..915797c23d --- /dev/null +++ b/research/current-rounded-scalar-tables/REVIEW.md @@ -0,0 +1,28 @@ +# Review record + +Prepared for @CubeJerry with substantial OpenAI assistance. + +The author ran literal tables through the unchanged Controller.primitive +and execute_table body, with direct integer floor/range oracles. The source +catalogue, history and compiled-mutant suites passed. Transparent physical +tape and optional read-only table-lookup observers supply separate cost +counts; neither computes arithmetic from runtime payloads. + +The lead separately read tables.py and physical.py before package freeze. +It found the signed residue correction, ADD's b*target independence, +odd quotient recurrence, d sign-extension/discard schedule and guide6-to-1 +overwrite consistent. It required explicit origin/contiguous-frontier +premises and failure-history limitations, which the proof includes. Its +final written-proof and post-freeze code-assisted checks are not yet +claimed by this draft record. Those reviews will be recorded with their +actual scope when reported. + +These are AI-assisted reviews, not independent human review or proof-kernel +verification. Complete caller, native and tariff obligations remain explicit. + +Author-recorded freeze snapshot hashes: + +- `PROOF.md`: `ebf8634a004ef9371831171ae5ed1bcbe55e9c2931b56d8113556f27f8ded830` +- `tables.py`: `502e7a88ef704d79a09e62deef93a98db7626254d67133253baa7284baa47bca` +- `physical.py`: `b0eb6f2db2deff9104cdf786a8ae84b0d4864b09a1f9b99178cb08c1666d014e` +- `verify.py`: `32e0e8501bfc9d8e3b9d45ea2c6e430da6fff47b707ca7bb40bc1e0d520261c4` diff --git a/research/current-rounded-scalar-tables/SOURCE.json b/research/current-rounded-scalar-tables/SOURCE.json new file mode 100644 index 0000000000..42614db946 --- /dev/null +++ b/research/current-rounded-scalar-tables/SOURCE.json @@ -0,0 +1,855 @@ +{ + "actual_source_seam": { + "actions": 2036, + "field": 697, + "input": [ + 1, + 0 + ], + "output": [ + -1, + 0 + ], + "pc": 37480 + }, + "binding_scope": "exact local tokens for current SCALE class only; complete caller/recursive exporter not installed", + "coefficients": 52, + "inventory": [ + { + "carry_bound": 199, + "carry_states": 199, + "coefficient": "-192/5", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 14219, + "states": 5969, + "work_ports": 2 + }, + { + "carry_bound": 25, + "carry_states": 25, + "coefficient": "-24", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 1784, + "states": 736, + "work_ports": 2 + }, + { + "carry_bound": 17, + "carry_states": 17, + "coefficient": "-16", + "denominator_twos": 0, + "occurrences": 8, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 1240, + "states": 512, + "work_ports": 2 + }, + { + "carry_bound": 55, + "carry_states": 55, + "coefficient": "-48/5", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 4427, + "states": 1937, + "work_ports": 2 + }, + { + "carry_bound": 9, + "carry_states": 9, + "coefficient": "-8", + "denominator_twos": 0, + "occurrences": 19, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 696, + "states": 288, + "work_ports": 2 + }, + { + "carry_bound": 7, + "carry_states": 7, + "coefficient": "-6", + "denominator_twos": 0, + "occurrences": 5, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 560, + "states": 232, + "work_ports": 2 + }, + { + "carry_bound": 5, + "carry_states": 5, + "coefficient": "-4", + "denominator_twos": 0, + "occurrences": 96, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 424, + "states": 176, + "work_ports": 2 + }, + { + "carry_bound": 4, + "carry_states": 4, + "coefficient": "-3", + "denominator_twos": 0, + "occurrences": 21, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 356, + "states": 148, + "work_ports": 2 + }, + { + "carry_bound": 7, + "carry_states": 7, + "coefficient": "-5/2", + "denominator_twos": 1, + "occurrences": 2, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 1, + "rows": 596, + "states": 240, + "work_ports": 2 + }, + { + "carry_bound": 3, + "carry_states": 3, + "coefficient": "-2", + "denominator_twos": 0, + "occurrences": 503, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 288, + "states": 120, + "work_ports": 2 + }, + { + "carry_bound": 5, + "carry_states": 5, + "coefficient": "-3/2", + "denominator_twos": 1, + "occurrences": 7, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 1, + "rows": 440, + "states": 180, + "work_ports": 2 + }, + { + "carry_bound": 2, + "carry_states": 2, + "coefficient": "-1", + "denominator_twos": 0, + "occurrences": 1062, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 220, + "states": 92, + "work_ports": 2 + }, + { + "carry_bound": 6, + "carry_states": 6, + "coefficient": "-2/3", + "denominator_twos": 0, + "occurrences": 7, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 1, + "rows": 699, + "states": 329, + "work_ports": 2 + }, + { + "carry_bound": 3, + "carry_states": 3, + "coefficient": "-1/2", + "denominator_twos": 1, + "occurrences": 491, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 1, + "rows": 284, + "states": 120, + "work_ports": 2 + }, + { + "carry_bound": 9, + "carry_states": 9, + "coefficient": "-2/5", + "denominator_twos": 0, + "occurrences": 2, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 1299, + "states": 649, + "work_ports": 2 + }, + { + "carry_bound": 5, + "carry_states": 5, + "coefficient": "-1/3", + "denominator_twos": 0, + "occurrences": 25, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 1, + "rows": 631, + "states": 301, + "work_ports": 2 + }, + { + "carry_bound": 4, + "carry_states": 4, + "coefficient": "-1/4", + "denominator_twos": 2, + "occurrences": 92, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 2, + "rows": 363, + "states": 155, + "work_ports": 2 + }, + { + "carry_bound": 7, + "carry_states": 7, + "coefficient": "-1/6", + "denominator_twos": 1, + "occurrences": 7, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 3, + "rows": 763, + "states": 361, + "work_ports": 2 + }, + { + "carry_bound": 6, + "carry_states": 5, + "coefficient": "-1/8", + "denominator_twos": 3, + "occurrences": 17, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 4, + "rows": 481, + "states": 217, + "work_ports": 2 + }, + { + "carry_bound": 32, + "carry_states": 23, + "coefficient": "-5/48", + "denominator_twos": 4, + "occurrences": 1, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 24, + "rows": 2149, + "states": 1027, + "work_ports": 2 + }, + { + "carry_bound": 10, + "carry_states": 7, + "coefficient": "-1/16", + "denominator_twos": 4, + "occurrences": 7, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 8, + "rows": 605, + "states": 285, + "work_ports": 2 + }, + { + "carry_bound": 16, + "carry_states": 13, + "coefficient": "-1/24", + "denominator_twos": 3, + "occurrences": 1, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 12, + "rows": 1193, + "states": 579, + "work_ports": 2 + }, + { + "carry_bound": 104, + "carry_states": 36, + "coefficient": "-5/192", + "denominator_twos": 6, + "occurrences": 1, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 96, + "rows": 3129, + "states": 1591, + "work_ports": 2 + }, + { + "carry_bound": 18, + "carry_states": 6, + "coefficient": "1/32", + "denominator_twos": 5, + "occurrences": 1, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 16, + "rows": 561, + "states": 265, + "work_ports": 2 + }, + { + "carry_bound": 144, + "carry_states": 34, + "coefficient": "15/256", + "denominator_twos": 8, + "occurrences": 1, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 128, + "rows": 4947, + "states": 2499, + "work_ports": 2 + }, + { + "carry_bound": 10, + "carry_states": 5, + "coefficient": "1/16", + "denominator_twos": 4, + "occurrences": 6, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 8, + "rows": 473, + "states": 217, + "work_ports": 2 + }, + { + "carry_bound": 11, + "carry_states": 10, + "coefficient": "1/10", + "denominator_twos": 1, + "occurrences": 1, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 5, + "rows": 1381, + "states": 691, + "work_ports": 2 + }, + { + "carry_bound": 32, + "carry_states": 20, + "coefficient": "5/48", + "denominator_twos": 4, + "occurrences": 1, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 24, + "rows": 2005, + "states": 955, + "work_ports": 2 + }, + { + "carry_bound": 6, + "carry_states": 4, + "coefficient": "1/8", + "denominator_twos": 3, + "occurrences": 20, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 4, + "rows": 389, + "states": 173, + "work_ports": 2 + }, + { + "carry_bound": 8, + "carry_states": 7, + "coefficient": "1/5", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 1191, + "states": 601, + "work_ports": 2 + }, + { + "carry_bound": 4, + "carry_states": 3, + "coefficient": "1/4", + "denominator_twos": 2, + "occurrences": 126, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 2, + "rows": 309, + "states": 133, + "work_ports": 2 + }, + { + "carry_bound": 14, + "carry_states": 8, + "coefficient": "5/16", + "denominator_twos": 4, + "occurrences": 1, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 8, + "rows": 1013, + "states": 453, + "work_ports": 2 + }, + { + "carry_bound": 9, + "carry_states": 7, + "coefficient": "2/5", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 1219, + "states": 609, + "work_ports": 2 + }, + { + "carry_bound": 3, + "carry_states": 2, + "coefficient": "1/2", + "denominator_twos": 1, + "occurrences": 482, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 1, + "rows": 233, + "states": 97, + "work_ports": 2 + }, + { + "carry_bound": 6, + "carry_states": 3, + "coefficient": "3/4", + "denominator_twos": 2, + "occurrences": 6, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 2, + "rows": 401, + "states": 167, + "work_ports": 2 + }, + { + "carry_bound": 11, + "carry_states": 8, + "coefficient": "4/5", + "denominator_twos": 0, + "occurrences": 5, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 1305, + "states": 645, + "work_ports": 2 + }, + { + "carry_bound": 8, + "carry_states": 5, + "coefficient": "5/4", + "denominator_twos": 2, + "occurrences": 5, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 2, + "rows": 570, + "states": 232, + "work_ports": 2 + }, + { + "carry_bound": 8, + "carry_states": 6, + "coefficient": "4/3", + "denominator_twos": 0, + "occurrences": 6, + "odd_denominator": 3, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 12, + "rounding_offset": 1, + "rows": 745, + "states": 345, + "work_ports": 2 + }, + { + "carry_bound": 3, + "carry_states": 2, + "coefficient": "2", + "denominator_twos": 0, + "occurrences": 488, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 238, + "states": 100, + "work_ports": 2 + }, + { + "carry_bound": 7, + "carry_states": 5, + "coefficient": "5/2", + "denominator_twos": 1, + "occurrences": 1, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 1, + "rows": 486, + "states": 196, + "work_ports": 2 + }, + { + "carry_bound": 4, + "carry_states": 3, + "coefficient": "3", + "denominator_twos": 0, + "occurrences": 4, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 306, + "states": 128, + "work_ports": 2 + }, + { + "carry_bound": 23, + "carry_states": 20, + "coefficient": "16/5", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 2121, + "states": 981, + "work_ports": 2 + }, + { + "carry_bound": 5, + "carry_states": 4, + "coefficient": "4", + "denominator_twos": 0, + "occurrences": 93, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 374, + "states": 156, + "work_ports": 2 + }, + { + "carry_bound": 6, + "carry_states": 5, + "coefficient": "5", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 442, + "states": 184, + "work_ports": 2 + }, + { + "carry_bound": 7, + "carry_states": 6, + "coefficient": "6", + "denominator_twos": 0, + "occurrences": 2, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 510, + "states": 212, + "work_ports": 2 + }, + { + "carry_bound": 9, + "carry_states": 8, + "coefficient": "8", + "denominator_twos": 0, + "occurrences": 18, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 646, + "states": 268, + "work_ports": 2 + }, + { + "carry_bound": 55, + "carry_states": 52, + "coefficient": "48/5", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 5, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 40, + "rounding_offset": 2, + "rows": 4297, + "states": 1877, + "work_ports": 2 + }, + { + "carry_bound": 11, + "carry_states": 10, + "coefficient": "10", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 782, + "states": 324, + "work_ports": 2 + }, + { + "carry_bound": 17, + "carry_states": 16, + "coefficient": "16", + "denominator_twos": 0, + "occurrences": 5, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 1190, + "states": 492, + "work_ports": 2 + }, + { + "carry_bound": 278, + "carry_states": 270, + "coefficient": "256/15", + "denominator_twos": 0, + "occurrences": 1, + "odd_denominator": 15, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": true, + "residue_states": 120, + "rounding_offset": 7, + "rows": 20401, + "states": 8721, + "work_ports": 2 + }, + { + "carry_bound": 33, + "carry_states": 32, + "coefficient": "32", + "denominator_twos": 0, + "occurrences": 2, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 2278, + "states": 940, + "work_ports": 2 + }, + { + "carry_bound": 65, + "carry_states": 64, + "coefficient": "64", + "denominator_twos": 0, + "occurrences": 2, + "odd_denominator": 1, + "operation": "SCALE", + "public_ports": 1, + "residue_prepass": false, + "residue_states": 0, + "rounding_offset": 0, + "rows": 4454, + "states": 1836, + "work_ports": 2 + } + ], + "max_table_rows": 20401, + "occurrences": 3660, + "remaining_odd_ADD_occurrences": 4079, + "total_table_rows": 92113 +} diff --git a/research/current-rounded-scalar-tables/SOURCES.json b/research/current-rounded-scalar-tables/SOURCES.json new file mode 100644 index 0000000000..75ea7c3d55 --- /dev/null +++ b/research/current-rounded-scalar-tables/SOURCES.json @@ -0,0 +1,18 @@ +{ + "schema_version": 1, + "base_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "files": [ + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81" + }, + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "d59b5035e7b4cbaa9d688a1d32dd0d6eb79c466a", + "sha256": "9b8d0eea95b3bf0dfcb7938a732a6439b87a2685dec2a5ab9e525b3b34debbfa" + } + ] +} diff --git a/research/current-rounded-scalar-tables/TASK.json b/research/current-rounded-scalar-tables/TASK.json new file mode 100644 index 0000000000..42a56c0fbe --- /dev/null +++ b/research/current-rounded-scalar-tables/TASK.json @@ -0,0 +1,93 @@ +{ + "schema_version": 1, + "task_id": "uniform-transfer-audit", + "base_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_card": { + "id": "uniform-transfer-audit", + "question": "Can one of the selected record's five inherited assumptions be proved at its actual caller?", + "starting_points": [ + "docs/research/current-priorities.md", + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md" + ], + "methods": [ + "Construct and independently check one source-bound instance of the stated first experiment.", + "Seek an exact counterexample or target-specific complete-budget obstruction to that same proposed change." + ], + "acceptance_gate": "Identify the proposition and what would change downstream; do not equate a finite replay with a universal proof.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_selected_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read revision 8, the selected review and live exact-source handoffs. Then follow this card's bounded first_experiment.", + "scope": "Source-bound orientation only, not a supplier replay or theorem proof." + }, + "first_experiment": "Choose one assumption ID (native_all_columns, owned_erasure, compiler, precision_tape, analytic_recovery), one quantified implication and exact dependency closure. Check current handoffs, including #5625 row reentry and #5707 root-prefix lowering, without treating their partial scope as the whole theorem. Prove or falsify that implication with a caller-bound argument; stop at the chosen obligation. Finite tests or root digits do not discharge an all-size statement.", + "bottleneck_link": "Judge the actual current supplier contract and complete signed target/paid bill; frozen-profile ceilings require an applicability proof.", + "allowed_variations": [ + "One exact source head, helper/cut region or quantified proposition and changed hypothesis; check live handoffs first. Different seeds are not different scopes." + ], + "scope_change_triggers": [ + "Changing source head, helper/cut domain, operation alphabet or caller boundary without recording the new scope.", + "Treating an archived proposal or local numerical pass as complete supplier admission." + ], + "overlap_terms": [ + "native_all_columns", + "owned_erasure", + "compiler", + "precision_tape", + "analytic_recovery" + ], + "existing_checks": [ + { + "scope": "PR #4100: proposed unconditional construction and finite checks, without independent acceptance.", + "evidence": "research/unconditional-batched-crt/README.md", + "remaining": "Independent proof audit of one caller-bound all-size implication; all other premises remain explicit.", + "status": "author-checked", + "source_commit": "337d04939571a637aeab54a0f58f54fde811663a", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "Selected PR5599: complete helper-subspace construction and independent caller replay; five framework assumptions remain.", + "evidence": "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md", + "remaining": "The next experiment must identify uncovered source-specific work. Successor archive intake does not transfer this admission.", + "status": "reviewed", + "source_commit": "09dd0965711ca7eeb169057a420abab1c9052137", + "selected_record_sha256": "2a0220e866417774606e0f991e41b9c1d26b1f43b97857238cf478dbc7d330b5" + } + ] + }, + "scope_status": "refined", + "scope_change_reason": "Lead-assigned wave 7 follows the precise rounded/exact seam exposed by the published source precision package; target is a literal lifecycle-joined arithmetic service.", + "actual_scope": "Generic fixed-rational total nearest-up SCALE and ADD finite tables, all 52 current SCALE coefficient bindings, universal signed/range/staging/history proof, complete positive primitive cost, and bounded direct-oracle physical verification.", + "bottleneck_link": "Replaces the missing total scalar service at the actual -2/3 child-return seam without relabelling checked exact division or claiming the other current services installed.", + "stop_rule": "Stop at the fixed-rational service and current SCALE class; leave large current ADD inventory, dynamic divisors, full caller/compiler and new kappa outside scope.", + "evidence": "PROOF.md; SOURCE.json, ARITHMETIC.json, HISTORY.json, CONTROLS.json; unchanged Controller.primitive/execute_table, direct integer oracles and compiled mutation controls.", + "author": "@CubeJerry", + "ai_assistance": "Substantial OpenAI assistance in proof, implementation, source analysis and testing; separate AI review is not independent human or proof-kernel acceptance.", + "outcome": "completed", + "open_questions": [ + { + "question": "Construct and price the remaining current odd ADD tables.", + "why_it_matters": "A generic fixed-rational constructor and small ADD fixtures do not establish the current large-numerator catalogue or its complete cost.", + "first_step": "Measure the exact 4079 odd ADD occurrences and derive a construction budget or a more economical literal multiplier/divider.", + "blocked_by": "Uninstantiated source-specific ADD graphs and common physical invoice." + }, + { + "question": "Install complete recursive occurrence-token and row/format bindings.", + "why_it_matters": "This package binds unwrapped exact local SCALE tokens, not every caller or recursive remapping.", + "first_step": "Use the existing source exporter with full ordered field/shape/ownership bindings and protected context records.", + "blocked_by": "Full current compiler/native lifecycle integration." + }, + { + "question": "Close remaining native/error/ownership and rounded outer recovery interfaces.", + "why_it_matters": "A literal scalar primitive alone does not yield a complete rounded supplier or multiplication theorem.", + "first_step": "Compose the source precision package with actual all-column providers and a full positive physical tariff.", + "blocked_by": "native_all_columns, compiler, owned_erasure, precision_tape and analytic_recovery obligations." + } + ] +} diff --git a/research/current-rounded-scalar-tables/VERIFY.json b/research/current-rounded-scalar-tables/VERIFY.json new file mode 100644 index 0000000000..dfb53eeb43 --- /dev/null +++ b/research/current-rounded-scalar-tables/VERIFY.json @@ -0,0 +1,116 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/current-rounded-scalar-tables/data/word.json.gz", + "research/current-rounded-scalar-tables/reference/ROUNDED-DIVISION-6937.md", + "research/current-rounded-scalar-tables/vendor/exact_scalar_tables.py", + "research/current-rounded-scalar-tables/vendor/machine.py", + "research/current-rounded-scalar-tables/reference/check_6937.py", + "research/current-rounded-scalar-tables/reference/PRECISION-PROOF.md" + ], + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-B", + "research/current-rounded-scalar-tables/verify.py", + "--suite", + "source" + ], + "timeout_seconds": 120, + "checks": "Normal source literal rounded scalar service and adverse controls." + }, + { + "argv": [ + "{python}", + "-I", + "-B", + "research/current-rounded-scalar-tables/verify.py", + "--suite", + "arithmetic" + ], + "timeout_seconds": 120, + "checks": "Normal arithmetic literal rounded scalar service and adverse controls." + }, + { + "argv": [ + "{python}", + "-I", + "-B", + "research/current-rounded-scalar-tables/verify.py", + "--suite", + "history" + ], + "timeout_seconds": 120, + "checks": "Normal history literal rounded scalar service and adverse controls." + }, + { + "argv": [ + "{python}", + "-I", + "-B", + "research/current-rounded-scalar-tables/verify.py", + "--suite", + "controls" + ], + "timeout_seconds": 120, + "checks": "Normal controls literal rounded scalar service and adverse controls." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "research/current-rounded-scalar-tables/verify.py", + "--suite", + "source" + ], + "timeout_seconds": 120, + "checks": "Optimized source literal rounded scalar service and adverse controls." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "research/current-rounded-scalar-tables/verify.py", + "--suite", + "arithmetic" + ], + "timeout_seconds": 120, + "checks": "Optimized arithmetic literal rounded scalar service and adverse controls." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "research/current-rounded-scalar-tables/verify.py", + "--suite", + "history" + ], + "timeout_seconds": 120, + "checks": "Optimized history literal rounded scalar service and adverse controls." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "research/current-rounded-scalar-tables/verify.py", + "--suite", + "controls" + ], + "timeout_seconds": 120, + "checks": "Optimized controls literal rounded scalar service and adverse controls." + } + ] +} diff --git a/research/current-rounded-scalar-tables/data/word.json.gz b/research/current-rounded-scalar-tables/data/word.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..d93e67ca7628bf5531ae6e369da4dd7b7907b88f GIT binary patch literal 349022 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%0DTSJ{9)k`>#8eQCpQme)zs(Cb8)J zD?N?s#BB=fwQA-<%)8xjwYgmnuyi(meGkrH*KUdBZzp~0=9hq>SVKS3hdj# zJ1##P4kTeFPNUybxy{1xm)shrps|a3*VgaNC`FEC>FU+*f2blp*{K!#>YZuK!Acd&C}7v`~+R4etq#P6L=opLG{A1hCc zF799#57$|OMfacgv#(tFnGhI{hJ`@aHemWjGyiA)EUnJ*6W5C0>KSAQ5Fb~@qI~ekT z1tJ2>6z`yz@Jyom;;;XX3~^)c+fez&_Kh8(01i!V7RwWED2$3*-X0+(jtTHt_=MA) zZCTDgE%PMjvf5niGO3Bq%c@WUr6o{yu05wd|B#<1#)AyTAX8}dd4-ZUdLLi1l^@Pa zCTJ7B7VaC>_zNlh)t{xPH(F4{CR`(vx zu;p>-W)J+Z)_u-My~{XWy7*lNt!zIi9-d6s?$E%mCOt}Q1>An`&su40M@%HccRO6Q zCsLih4{{>hB8@mYURlXWOb)h&_Ov!eu#}pe43l^>i@Mi-kROKc+;g ztm%3~nQRtfl|i1@*l5dI6R$y?thI|H4ztFql-^{gePsuCv^YbgsLW!5WJno}1AdUd z{osTN-Tv|GR?IQ6W{QWt^!qTE45jgxQ-Tm-NTi5tlf~Lnu5qbgFUl4#0{*S3p(Gd~ z?zKV%(qYJ$_e-6uh~aaS>gKX4tAm_M7B^ctPs3bL;)k-6;hZjkEU-%T@22*U%9GQ zYhF5(q<*j)ywh5;WM3b{iqHWUwX*iqd^EGpr8WlqObwPOWBtl+9iw1TAyb!Zv>G$; zU}IGGtL91$R9@}wxNPw z3(P(-tg;GuQqM!U=Wehgi*NN3y31tC?$td{1pffX5mUtO%F}axnBnl)!roccZ|#nrW$w}=hh&H?Bm z=Eq&Qn3xNBLpnu7ltvL?D|Nn?v|+CgaG*-cRz1Pfi1lfrl~aK3igr zeu{`F$o}ma~w#2sb+gNIimxYnM;V`u2=qRqn-Iv<2%z6 zZvL8C9XAuJBhp-%pHbp9jVgkrmrD+uN~}C4f8w|^@7EK-k(V2J9<+1@(qN#87IS3| z#I^~~J|yT=|{`l4zau>xf_0mSI3NEgyaWZ?924-CvlOLI@{aFe$>lus8KI&N4MSxsV=)ijachE6pmp?i)Up{PVK!QqKC zj2OWJ)4XGt$15zo#{G;(C+q(F-T}+YA&prgt!gt6uT1) z7Op}rZ16a3LxZuk{>y3Wms900%OCn-v}ZMw6Wr2F$qjXjoAR8npWSi?$2wz8@kY;L z!iKQ9y951{-1bWcZJOe@xNIXL9L%_nzXwaEaAYGZPd%8eP@kciMU~@6vMnnYPYIvt zR5P+%0A1fw?^Q8RF)%OwB{p{BrQ5^Z{P~|((@(|q^hl&1A>SPE^2b(sW6DW_sze^3 zvO^G+7B7<5!Xe=SJ)CAaL9F_rWMZyYL*edR0K((P2bNd^qlVdt#FL|oLBJd7MS_IR zlM93b?v=r~xDr{(rD*%z!WPq<%2GyRVNXJ&wkPQ6W5x8-|3%aiq9WXM3do4noTZ?* zhLxt{CLvV2yu#VSME|dgfGhVOd*C=e`S@}^8ZBRJ@BBJk;p{KDDC^sav07z6Zat7tiNb?$auGvf3?y zdiM{Hs9zq3h7nk!$ z23K-y(nD6H2=pmMTp-k^16&I{Au=`-&HOSVRv!A@f&N}{QgTh-Cx%ATq91uI)qhX8 zaLBVA>TxugZT8D%JxRhoWrx0>%=Av< z+48$mr%fB)xEH`giZ6_f2{=vRL^cO{BsxGT9*=iF5z51)9f1X}Xkxe(Zjw}!yts)c ztuWA33tNt1z`k?}Y*mkoxET>w8D?ldw_*QCA^;l73*Ra!`vaFDhT+` zxCHMp(nu(_@7m>yHNGy<1)t*}Fz3=>r|X^0k3TMg02vYUPuA@nvUFD~vWl}^pP(%Ja4V|>bw69T-j zg)|(@qUORygSneg$|z@*vSJPgJ~1~2zt_Y4~iw@|(yk-g&hnY(P; zw1gzSE*W!#GMk;m5G=T)slULmQyT~?Cpnoh7tMJgh&6G=X@hea7YQb9d$wa0mLJ+0 zkdj5@er_1CgM|Rnx!8iY^o4m97qdeB(BUq8xDgaZkbXtJ?u@)@5=f|^$hiBv`<2M{u6}I(^Fl5AvU)zo{!VbiL|su7-;r92ho@#X|4~NJ0yi3LymLQy3j$_ z6IFx0^ z;i!ta)M-h3|L5Vif=(q%quy)#OU>OSLWDKR3c6^l^d)Gl;cGz%HIPt?d;~6599213 zjdn%aBMTl_KDjy*xtPua2W?%;hG2`ABBQ8RDs4#_GpBxKf%AtRks#ovQZnuG=Rf*m z2Qd&BHY+rQYG8#fz^(nV=6+ZxPB7}q2ILace?hlcdg&sV zwo{5Hdcya`=@Qo$+N7Ozz5|Q)Y|HB-Lm;Md8%%xo0M&-E$$H_NXGLW^z)n0Fl_Mfq zjAv`=Y<~29rZjlD(HAZWk_(@~=n{BX3V4RK6HnL6@Lg(UbWB=xM>k4JE)@q|-~s|0 z^+@M36YYi{f$49ybEvcTA6wW)>Zz-@Gc*(1?D@_Q(qAq(SP8)!Vz{&rHi=wp6p0I= zTk0NlctX$gGNo-_Ymj52Z}dkI`?boljXqMT*qo{#^DnGB=fVv&#{T7mi^?9Y^6_%X zgox+ERm^P}Ma&=9U?Qs^5(e9mLsilbLwc$XK~Ys5jHH|3hB^~f#k!95r=5B?*m2-R zRGi=TUoI9e0A4JZp-Cs6MXc(3a#+SVGU-$|-`sIV82yk-n%P9v@Zb+8763 zgz~pRxL4VQ&9A?59V=>WN5IW?kR;l0u6MgM5*pdY@#ct-Zsh|r8ztXM*yXj;2CKWw zE>u2rAPuILDnfp~gr-SxK#j+0lai;du%S8?B@ahk(U;4|8>`&^wr(zM7H$~#80 zS|6`D_4jCBq;2)CTENy~Ny8w2c0((F6wbiE9tTJN*!v*fR0_D^2PfHv4!P>UU@7*u zKto^BWE@p6sK->Bgwlj3Kv6mxZO4dU{?PXYk-K-fR}rx&@mNas$OrW(#p2Gszj`EO z^~_Qw{Vz%-d&kGY7JD>dZRwy4AaYzjo06Q$AAQ7)EcV_3Uf3vxW{9-$^q>I{6`Sm> z8*89nN|(_6%%w>F^>qA{IVvLJxhwS;--mw`FS622{7e6$po>>3?~Oe@CGCS`;)iWW zA2EKQ)(f3}S5*)ax5g_=^s-+LR_YgHrG&z~jnJc`AE*@?qXsgM@5)g3wJ>klsjwH) zHV1orwa5IcQeDq6%#Boq8zk#(7VH-ej=jG!qm5{MmY*eO;we~WJ~#>nw1>F(?*m!I zTyU0=A|p+4ZezYCA^0dKcJwo=TP>#2$(TOd*idx^d6tcKO(;xk>UTC8k$@so9*SCc zx)2V?RDE;d!loXPDy9@IPuQz$=Iqu5V1K{iX-ct?L|$9Xb+|i}`l4YNwAKIC&wDt~RmHn=*82uU7=edO?4O_V}Ish**-%3gHHGtFI2> zzZ`>+=l(KWcn#rhN;JtBbU38n0aDMiEt=`7;;ryokRHY7QFh=uDdB)*1jE(S$JaA3NRRjm0`P4CM?i2cITDFx1ZM46ZQfK>LtadB8HRq9T5XjWzPveUYEKIFE;MKUySgukeI1FGE_M`K=%~D z(bEdx4Mdx&G@P`M8b4~2FOP@#+cngsdO(J|9->jloSg@fpiBurIhQmb#*ZCW_Qrq7 zC;Ntcs!f9Uh|9%&u;X0GwMdux%Y_VLmKws!Q0KZMg`9c<)5Y&-z`Y7L66>PU*__BR z6=A@Ma0{_ED>~g}ddxh;-VwDjze9ap+UZ&dw>m{WY50^Hn(ml-9$DR|dy|=Dfn#Nn zhULJ0P%ZN<#0s|gFABEWtS%DLU9}P$Q^z3+A5x3q3NKG3(ruw}@voX{S(s<6$$lWf z)4rRGAe%Kp;s#Zn%r}t=9@H!!oi9%K{$;{Ua#Bn(!QmP&MV?QfwvyhcnVW-9>r46> zn*0rm23n|)cvjdVRMGV+_g&@^p?aaQPHC6(F~Xy4x>ryjdp<84%9$s-w^vGTUTh@y zN-a~9+~n!R1GF{a)mc>_sov=c{#c-41 zxxK87{dnWJ={ZH^7)N4w?2=2BjaS0k)l$Z9L#3Nq#V;yO z-NqiM%FFb;?4?9fT?gunRI@kba@D=CuQ+yk1T@{^INvy1)Z)Np#KS5;K&d_KJd8kg z#vln^l}50_)~TV8NUMjw=!EN3)q#7pi2muJ4^8fz5$Q1JSdx^$UL!^rxV%+~@s?SH z)R%`R)ZrJJ_c^DD$NlM+b*3PPGkt4Dg^r75rd_HOADHu6`B55d4PYI^%k(5dIPxWJ zDD$N%0H%JIQ$ps=eRPn3f*tITuCU+P*~iR6>=R^U+Roa>9zv-}Q$!mX?zGi%`2#T8 z>`dspZoB(lfzw^$_<=O`6eO$C_Wju4Mh}K5#1kNtf`MFmZ7QXU)Xo&gX-Ojje5PI{ zcH(|B3uHyz^SlFRwig~>Oy#tJym>GDwc2k>um&(;Uk~I{zjyB+zAupQ7xa?2qj`!^ zEh2O(+r@!5b~L!?OauKw`aS+42eYRwrA*oGo))f>>9`%^F1a!?JfFwu^#{?0Vry+7 zK3jRT8AvTFwAD~Y3o9h;QZT0G(%!6NH3*38iYTH2>LkCB6mU{lqFIr;5lq+)vNLp> z;^_pKj9sNHCc034mdLE75P@=n;C2hb{iE+`NPs2Kv30K^jCj>C0VyG*-*FdWGN}dF zwy&%z3XnAfNw2*YAjP8kEE7(p4h*=hDPfvzg-YtJUNI+KRo9toP&slmW&^`zmtvuS ziLkcH?7#cow@Q@Ve7TS+tE-ZFK@&(86Ex5Kw&qu;l?1<9VaIe+E+^er`}+nJrML{B z?X72Qm+nuCzyIa|_$^Ze>Ibb=i;ZNp(vVOiaHxq`J%%)H>W4(G?QiM$EgA=Y#qWsATvkKdxxx|8@U4ctWIA5e zCEjf7`DzF0?OYK}reQe&iX*TrLMHRrJWiU@-Jl4D*-zO3v#`{5(kVp~j8Onq>o@b+S)xN}c| zWf&j#75=l`B4#6GXljTqp6hk{`$qCW_V>9EMyT!d(0PmNM(uq6@_R;#eIrR0j3u-T z#;UwzzsGr4?b#Y4lOo=HfG3A(jsm2_xpZs{%#OJL5SB}Pt38D%IR;u0fh11VUDJ!M zUd5RlAvw_*WG)pdF6cj%pGbtxND+})+0HiG5c$+yz8-+-;6eV!C|e?YytRMiHjTD;2`m^%Q^W=9HG&!H4)3++p4k-0^^inzKPvQvkhT2Iu(U0&M1YlpJ(+(PQFyX~G|rd9mNg}`i5q2gs?+D>pdx*X;!nfYDjNd=a%H# zt@H<`Rc_ad%pLDEAtmo~t%zjGpEJ!NhTV#vTzX1NnFe=QL2sja2=L+k29RvITUrPJ zn~#RO{CT_{Sw%_-$iO-6L?Gv)rr2D>Lh}9{n{fn@E^kiS@HNuF-oxd$B8AT*q#l1C?3}8TlGk>0 zCw&P@IhWGlQWooVO|fwZzY-4ZEkaZK0KR#tr!bb!q^87kMyxpaN^SDgy(75Yk9(UZ z-}TmpdK?!8s#;dKV!zYqIdv^;28a6cEHnrk8E$m+gQNqlFCz2gR2E14XscO7a7;*9 z|InO;4S?IIqXWT^5vQMF#AygZYy3fZHmE#4S@(ta+MZ7(os4wIWVi;49bbSzwd0`m zx7Rccq>$?3rJ`%^U?Ro$Fl$}Ayy|UYm!2e zEx<5f#BDlm2L+nkmY6CqhQg(?WJew!M2n7<`New1L_&&dT1`+j`r$1OkrNi@^L2*tUr*lWntyf&1VE0J_#_#4vjE zP2QUJkEM8?Lz1wuR*FAw-99dQg5xz7I^9VtA_ouG<75z$Rpc!9UE8zo*FnLrcHF)!N0$c z(dySkb$N2I84d#_eaH{PEh=bK4DbLQFKS|XE^$_mu21W#szg9#yRYD@ZO8CLsfu^r z$&%EcvjlOXx;BPy%m+iF0uUsQWN>+|tbBl8tXGaZDiid3V5Q^s zo`OM(`BTGTleZ;g=;EA*ac2q5X{L#B7O*&PGMW{SM5iCuhslP<#H3QF9i%F4zsG$lgxaxwAz6q{;|nl4UKX9kMzYSg zng0AfggQ{Jp@vI@51XgodoN!>W)K}mFh$2dcf0}?=hCOM%DkwmT>XRPo<`^Kv}Iv8 zkV!_friBH^?N}F;7xLFBl@8Yn@0n*LVF!ShGz(ZnGSW)KP&^mCH1^TvL|*LA&KWVX z3DL8bMj`ZmfQx8-Y4-uEuJ@V^w!#|;mQ>Xj1J7!Xpoo)df402ka$)1%rn*Z((tQ04 zG-V^66lCTy+|XE}P?iC{9~CsH#9N@&#+IYG0f1r~yezh!C!C?{beAd|IuU;z5%7%+ zaBS(K37d*mMEAU9BUa!N0{i>}O#^)}1p(1E7MYz}P$j~TH$ieBzf@aB7ZkG`OFUO! zdH0GVW}GXFG8%DVO1p#^B46AT?LZTL^hby64DizqDSufjUWp^*CG9rKb8>@Lk-9S< z*WojO5BxrE(Ft(8{@u0s0*GPFqRv@Iw;#3pZ6fJaz3_WnFCZc=(v zo?|$?x}qy<-DdFux6CiFyG)?}a`;b7WxR$1M7_iyWPBKWCF*>{SwKe>-I7B{HK_=W zbc0`E+g}m3*aD(gO?aJIq+pfh+TFz!ah;61_6Zk`m(G_c0Pu8kUA|LgY=Jcj@Ml%J z82b&4$gb<1UpcQw@o}6)N>k&BM<`opk(K#eBhlMls(2Mj7B5xF`-ZUHJm17D#wLSW z5(O#(G)reW0NxS)DbGAfErS09fj+yiEXScSyv!>%xsbG(#oX#Dp#}Y6`1d9CsfBK5 zxuJDo%yLcB8j#Uc76F z;|Y&ffDVULC10UGwnh-aVS0MWeTYDRFK;~Vg-B&l=L)wah|m*sQOnL3FRk#2 zN~ODAcn7)FF_AK!#kx8WYJB4p4zG5cw#n{I)F}xgmMfvkw;<)0w;)s|Sv*2LErBAB z0Ff>WG8y_T{4Mp#84KIA;^6t4<_DMx@&tNT*UsWcq{-Q!Gz9_A)Iu7YKu-L5p6yHx z&=Mo`X*d}qLcvZ0VDq?|fKQLBu$GdUWQF4x$Sk19(u!&{QoK!Q2r^jP(~XdSiL|7FhH<-$OFm5)Qv;=CojfP!ULB@!CTA>Ww3wQ_3 zhUEikgR!9kJ?Fl+6&))c-^t_l+DA^e-Hm5~hStT{WBfGyGOeC{!NhFvA3Sa^+nl&g zVv9YehWP7NiMNLdujaOVKr<9$@2u zey9{!n^-$np%|Zbi15!lL>lR$jqf{EY!=y#*<>?cMo1(T#KP{?!b(=vr=NV#A}7>fGq|WP~7Z`$(7cECcE%gHLiT>H0KIRci{$4N_P$^rY6CD!8Q)k z!iblCD&nbMR3oG@2kDcVnF}2^>>?a*_UGlCvTgPqLgsWJMcVFFVcFQu0%g`8Zemy9 z$aJ|eIGH)5i<8~AaDcRbkHf&j8k6O;`S?B!Y{!TIX2<5JxFz3C4Cfseo=tv>I0T?#n1kpiZxi~(m6 zPMi<6-jRg)odZLDlzU*ijmmI~3C;naycFW{657bvAYp_0WGk>oi=jlMfYZjsk~ytz zC7CLDt7CbTM;0bxZ|*Yd2%%8o=P;h z-x^42gnAFo)}aDL&my>07Z*qpr8V*pstQX%WcZNX@@Sz(+FS{O~J+*0tIkg z+7kbWzSMp4_pB?`4ZgKb<5VVe4dw8}@5|TXfMW)mATx8f+*qx#+FU0g>nrXF2^98* z8(jVkbMfCd{Cg`7PQ<{LY(Qj?z#K8`-+>Q4@sR`xvn9&^Iq6Bk^ZOSm+9=&BBI9ebHm*ziFWzn zQ$cpbpP#?>-q9hg)ABYVVJuqQ8|jV>=7;Tl4X=u(>FraSbgF1VdZ~XZ61;~z*@r#0 zY`uf~c=rTi<)>s@Y1ovv4-578>x0%`UaLlK{rVK7#$L85JSRsZYXNbwt`8d*xXSHh z0npOKV=ZFDH^E$WXVD(Tn-uYsMBv`QBkR~eJ&6q%K3T~OWcG8qS1?FV@@)k!K>4`i znyDc6TK>SgoA(+;5ZswgXKx2mhtQ(O=%5~e-Q}7W*PBRxe%3htg9RK~_&s$t@XaWTjdXzBTj+QvEb>T?4pu67Kq~*N;nEH-@ z#fmQ#8Lopv+E`Ob65Ed%AfWE0YFavY-MMGzZ^o2@FHR|7iy1m@#|H3^T-2EEx?iAU zfqrrzP6cC$p%XHxwtMOz!^X{tsMw?}1}52ig@7e1JLD$VJULf|ILkZW9w&5mCcDrJ^9)T)3!dIp=XPE#th0!#i^`3otaMZiC7|k6Q5oK|nIAi^Gx$ksa(riL=TN4Hiah5q?{k z0I>oVRp1k{Q)lo*5i`S!Tbnj1Gj7HUbi5}?0t~&I3%3=iJ+U98n`5hZF+n3CIPF(v z$*$00_}8XKTyTd~bX(0SI=J-%? zVRkxfB|2g%x(Ez9=~;3Pizl;ShR5n_kPx!s7XEp~1e|Ls(P2J$>HOD?4tM_RIXN5W zOx?y$s&Vxcf9M*VpxYTPsB_`zRhH4pvVG`?$V*Y4#!ON(-g}nI?XiF+O{4n3WlrBh z;YtCeGIgFzD?B@nj(Wu&EM!Owv^(f&WCiEu6yprWY7Fe)X%?{te_qH!8QEjGyh#v_+X~Y z%tA3C@nHofK5T23Ou&f`>O@UEy!kdTnMR zmSqDV-5WSsavI1I#nanvL6|ATOc>$K<-Z|SG|;Wuz$ke9zT;u6`@M9v%3|B{MD55_ z62#Mp_!~(5-NHUG5ppp}4jEj$G5>K5mNb~e__dL!HT>M18?IvIX$LBs{b@&#L2eY7 zXAA|MUv=YBEJmk{zJnI-qSiiqRt@MQJkK$Sgqu2y4vbpM?VeMS6ax?R<= zwsb5cFhskm`ts}9E0CnzYzs4R$bL9fP|Q%~4zRSGTP{T68{JV_NVg=~NJp&xOBK%@ z{2nKoH$z9KE+XNFoVcL40}Z}{x;3I3Jm(q;i48R5ITJ|9)`0#qa&m_G@Cx7Op! z+Yn3@@)}9Reg?d_6{XJ%W>?t@(kmr=Egug>Xr{k~7Ro5tS6nCFK8K@j z37bLhtKXHG_*Hdi6X_KFO4O4@Z~Ljd%e8aUCNcUBhqM;^bjd{*K!Fi zMaTxA><&`;ZCPBoc5S<66|<~PD2fG)1ZTuFNBF7pG#el+RbXffx zJYJ9NE|mX(pvv7Q^P9bPObq4REIt-)mj2SruZDGZSI1x_cVDRpVd)qaY`rL zaLD-?%9YcHH#C*8clBaF4qJuESdy_=@Tqq8(V%l;h(U13B^fwWWhmB{i@mLU4O5nI zzjQls)Cq3$iJWDm_k6H>dQP_vhwDpSDtozd#~L}YiFWQ4#j)L$CQFU?iGeSl#$(kE zC?{d#{usPh^6GgU-hULnK?o(gAvem#`e&~~MV@lKXQcgLe%-Y3yO*)29enrtl=Ck! z9}7jy?G8ds|C#3`?J^v1IJt2A2SmC)r9FP&SKW4lnH-m!zf za_Munmeo1qwG85ijrh^|CxKuoc2hr~j? zp@=sXxLJh$$Ze4{KjZ*PG$WiD22KtPh76w;RS;%xXikHueby ziwqP%RtDOh;y&EYW4XGX(15ALL+e}8S<#t3q)T?sj46`7_Xg(p?wqxfu!xWi#dkm5 zW80Hce$-)4c;5$vfP`Og&`HR%8EZ-(l4aaL_cII4;PDpV@pEsL5cR$8k;NWpJ>QJ} zY4kb?`(d*pqe7e+o)k3fU|d0|^!G0PAP~`(8^Cj=!U40?s4V>cAqH_}L}B_63pxa} zE2h|tR!a{)eL%^~l8^vG_zb3ywagTu7N3Aju%nb8w@{~g(q1(7FF>Znc8%n;eE$!D z4aDp;ib?gXuaVmJCubMKYmz@CXl+ua|*3C9OZ(bfxu%5&1?;uUM{JhD9=m&O9 z#io0}WB|_}Pw<#xebsa!;y&|Mt~D7T^^vDZNoiQk3#KHjM8&_7c1_Y^=%L*^1i%u@pqQA`>F9-VIhpaDqPB6Ih<*g2ByA zse8t}r7_Jq{wAZIaO77C48;S4J^EYHI8s>kz2&E^V{_i3py}1B2mTTIw zep8soiB|Pd_M=>dp)wHc>}q!GJDF{wd1B}Ee>uwh>+a52sBp4Ln3v9O3$FQJlTjga8sSc5F`K5Gbjg(&}1-L<8`)*K?@`f+qJQ(jv| ze9RtE0FJ~8Z);_t#5Lrs6gE}}-UtOkz|0NTZ#cjI`)s|i>!!%jV(X-{sV?+w_4}B%v z7aNjdB`O`?yCuu-g6NGOy!$}LQ@QL2c!3QSvZEP=;l_}a-1bDyB=`_#b1y42d>yVT zzF-b9YV=dEJcTlz>f+HT%TT$vSZQ-YA>Kza7SWWITMxnVe~5@B+T(O&Og*f7cNQuc=NK)^jT@J(oW9?jq5$D{l5lspb>nFN5=1n7~K9s~Iru+Hi9VvLeq$>Vn=a2xxG?igQ{RKz;Sk=~w2 zIqj(ilfuH(2~St$g^Ua#B27l}+l6*km&FZo{=MjUdb_tsHGmOqSC>!l3H@LuQnfOA zE#C9`*Cv%V(y5Dpv5x9lZm~Zeu%h?m4mF4$$$=^YnXes#7Vk9TLqSm}AJ2gJ26&kBm~g`ax;-qxo$UdZ|SLd5d5NqJCIExQr& zAr~!dj2n9uf!k_t?7(!S6)_k-R=_qHX(x1s+Zbtwu}1g4l26t~<|gjcfe}lm zMqnNKe%QeEm$1Y4dKlBkb@}mglk?#Xn@=cFl06d@O5Nk7^r0hfVy(^lr&orpc8;v} z;c~0Xkw9Y2l(DnGnslJ*^;v*GV_sn86k9vkNOwz!f_xzAtT{!a;S(f`#hP ze!QHO_+G^e9@+=(1X^???aVm-Jt5f))`=SA{tlg}K?awkYdAK!qnDCxb3FpgNmE?L z4m1~jpcLckuC;*6q7K;B>QX0IAsr&roM#6FOj9*M+L2WgI8q#Uz#7V*jtxF)-=DY3 z`)Tu5M8r7<=nNmp84krbnHGurwpd5Nh}5H6Nt4U<;8ae9=@QFvgr@pW#tK;&L8{W( z`Fq9#G&({(NBnH$D)Kb=-4h==*tkJ>zJx<}OVYa=(|6_}MIuFEU`=^FE2(1@u4U1} z5#f0CfQAUa?}pCS20rE=S(`lBt|}eJvwHaDQiaQF!}W+n+z3rs9)s6RJD-MD%HrBx z-1*XZ4{gU83u7+M7h_0?>>l(We1xTmeY#6GBr;^a4(tlX_woKK9P_=S?+nm$;b3~}jXYIAS7+Qa)djPTi}ArH>LmtJ z5;Oo*K&!t2*G;zp-wvRI_cy^p#>oV_=_aL$(yIpB%IV& z-Sz-<+;)qVd~RMu1&D42ls`{`SoaInQ}e?C`3|Iw_{t})z72A8x?FG)X#v->Y(5$l z{@83=NH3PlIg;RRa~vj!TMfk98LYK7aXcxo9UV_A7R$$m_a1dSe3nM&^n?THA7Q4e zIs%qH%bI_I{h%j~;E@0=&`&I3)P#OWjdw7X1tS1N2&-O|d{~!IkTiyFp{j&)=@X)| zKJ-qTr6|l?`2&k91KSQ7AwQ6fya!r<&-8=}kn@rI`Q9k9y0+0t>DJdUX*rZZ!}RR9 zhisCzK4gh&LUG7iqp6|txLrQD?_SsT8LX7kcb)&Ajs-{0p#Af6L5jXazM^9>Al|7{ zh-T){s5v5zhPR>TIG+poVr28Xlhc?Qu_dZI=XA(kl!s0QeY8!?7QOi zm;AE6`+>A@RZa}mF%@#`VFoq;N*5sx`iC$^J24tcQgqHo0tH3sl0diJu{ox|KdIi2 zseA8ofU^nQ)Z>SJ#`M)%j~|VZSKI}R-o+0q`u=)Rb_gZ0p_}!;=+E`PoU%n9g*2gR zW(hSFbLpCkmA@W!qaRcS8%ux%r@WfOOs3RvnWEB$cwd!UIVkzLhqm5?o&O#&Nzw5o9uJb~+^Y!e_8}OjFgAFbEBKcd- zfEegYoxUMxpvx20(Ts{cEPZG>vLX0aCWsjc@PY~|0|JpOYlJ>FPG`faV5oE<5z|7A z1yQOqF*AT}eEyt+;d&LE&Vw7q{dV1-igFHKNE1RI7Mwx~FMGai7OmzaiRoV1Bnqxi z@eIxgSL%2L3*Z9^+Oc{SGm+Wox}Nm{fjv~HJ*saMX-U*yeKj$Kp`uBqG@-3$WXMFQ zY*$xGP-!-DM`b}cXXuxd*lE&VLj~t_?5NUo7B7#-66>jZ`hjtFmcX7vh|h^T>|52L zB)~;vEb)|m@u7Z{<4C6>n+ib<2M(W&kod)2iVsGp6cG|HlOq}X-oXz+T<;CT^tgGsY&Y=VHu!Q9*5@sk6h)D_R#dX$@I^JL7GHgplfoRe3leE=axU63oJ+;VB|{w_l1rJ3(XzMa#XGA2Es-Z?+4-(Z?@0O!2lLLRPdZF34_ zfuMgR4Ish~&N0E{%XBaJ-Hn$J(N=$J1r_AR^I9Ey0bxPst7*o(WE&Y9z?B_fx<847 z5IfyPPB3NB700NetOenFgxHJ_(Ws&+u8~qP-RM{c5Bv}d3ERXs2cLrYn}L{Le#wvwWAXtS||qNS3t%4gpw zzKXFzUo7y^5;@q~Sc!Ieo^K%tfC-1r%z`A7>^tvuC~Fj&4kF$Z$0q_?yoTio;4}>W z4f{TuE92)82QF9gM|VrkhH74Z{YM?_c>R2Lm#QLBKA{El{O$d+PTWRB7Ub82myBBs zNB8GZ8+@*G2&=kVLn9-Hs3avIBgJO6g0N6=<#6Gk;j1B$Nwuw$ih0^cXJCbj_DyTmi=S6kUO?9+c5>D*<$(=qmk3}>hL)FPF@ zUX`5U-RvWSM2wd~4E}P|y2`=l?zBBSQDwIldpSlWsaIn zMuNTO6h*P2y=Q>_TRkbTSwNLrUyv*5zu@Owz_h8aSrJtmUWFlYwi%7e4VHI><+TaO zphR0v_ok?4A>P(Gv))YI4--_nd@}5G=zT|RRi|YpuoO4$ zbtbbt)ZmZrswk<*M>Ftki980u@| zM6yk(suNmvY|(R#La|UlYEm#XYc0_vL%vVGF4RV>4!*^As7(?_HHB6P*bi-Nv}4+% zgBgZqc#GMU`ervE-8Lddq?5e;VDVCHkz!7ntxP3<-wMi5E)^-lkaO!`(k`;E$Ey>x zMf(ncx>@8)$diLhRiUWY5JMY$7Bt;=3KkI^&+xVMa&>` zqMl<{7pI%*LhBy8)*M__Sjbn%^+jhKqs*m3HvQX-bG{;u9i2(lj4F$_hwmN7jD4m~ zd52b4GMA#bQSV1i&h@U0iS>bd>``SVFXObTY$Pz^c_@syY9>X(*J^uBo{RiB0V-Vw z9=BV~$1m6Cpv+NWC)j(@vv~ZUDiWxO3eavB`&&Hc-)lo;Gx|+Q!hp+FCodMx&RePy z-X~s=+2iDh?P6GpG2qaP={OZ>NDecZLueP9ASK6~)`apF_ERAzS9-zYRYN0O+oX_C z$#l`jrsnO;w`XU?M`doQYUF-w>nu)~pGzGo0V_~pM`m=0m3EVh z<0mhRiz||W3N#=_qSjm3@TF0%x?4)RkdIz2Z1~`c;2@S?oHkxBCa1S5ehKA~ZC}@D z!!Y$~#<|eMtM)`J1S|u(isFSrCCgKvtqf*pW0O|Xvnu*t6EzO>_H3)q^*OFn-t_(P z%B6>baxfb6JJo*Q-r}MNCogD=UklVK^O3s}{F!2o3wvIi7qe;;PD(sux)ZRk0RVNn zK!Lj5d+r4)@6!aDF7iB^vkN9aPFMK>1ZMPs6;wJrm*s^9F_vt84O(?MnXJJofs6;~ z<@)+um@@i`x&T|u)vMVzGW2S>?q7a6*Q6OHnzboO5>ubg3&q?Gub3!6(a^CWyJ+ZM znku}wT2Rsa`Yl4BVS0mad)3e(nZB0%E10A?SP?ke3 zDJw!&?as*3_45t#L};O+eV~1YJ6wSM(278Yy7*vO#QPQuQcm(5w5PogLCOBPHUKCb zx|bDmRTgMtB%yCLXseXG-$^V6GyI}ZrWxq9Qy(4dBUxvJ4ni-CZcPZwTBM$}pA3Af zyBC)U0uox*dfGve+Yo(exag(hevvA*1F4Bau?A^AnM8S2DYZc=aSrxi99AH!hx*bY z_Cp{{LI*hrQviMDQ&|5&SRg@OdzHe!CYw5n#HeP>)|&av$n@A+NCLwI<>IAerJGS( zW21pdre~m)z<6bI8+bb+0mMq_O$d9D;#dv&-5)|A4X(A=l0R6yxJIH#I7X1$iRoJq z{LI#}9569LK(aZ|2^$QdT4LVcEE()NjD(hpCL|nUwP!MEu(aVCD3Fj*J|hd=Ag{_Z zFw{(%33ld07V51h$1t+>LzdJ!gfeTZ0(R{L@s)~FzS|4}v;CO17rxR|wib7&aYcNfyixYgu3r>Lteew6t#kULgF=e? z*`Q`kQ(`v0Oiz%wbg(a||AkB|26AGhU7NuiN6$cjMxIv=&cb9(2>R0X9|2qBY@iZT zR*`UsWl?2Y84i?!>X1A%q&rK_`sfVBPS^CM%BhLG_ac(&EJYh21Yw=qUxpPXQdFqw zGx}J_&1Tl2zw|N5KKfi-c#82HICJ+wTI+9f|gOK6D)(o~AULdt5(Vuj!t`-J#GT3(rz zBOG!~>3I)CZEXVbXu#^#j(O_r7<7&Mm(*|^vSU=e9i)p~Q>-T7cGe{i9HS#+2EO zjQ|WG=$2zntzwRL#TpGRWs8?i36<_RKcuKm_PexPyZ5aT8zK+k#JO2Q1)%n8z5w%e zh8l8`+nTRaC9qu^BGybvG;&)9o-YZEtFK@ygO`o`FbYE1-Mx6SvYplPJa)F4Pr;7T zUdT{4eGCV9;|gt}SYOnqIK}8OOugCIJceS)daV-@Q$cL$cq4ooqQ_ApHAuVhqNRgo>0e8Ua!AJ~^EEOUw ze3E6g?$8X46Ox=LbLpd1=DT+vrPA}gzZtQn1FAq)H$2T>Sq~!C#+qk=p*B0(_b3IB z)BS}cnJYlsnQEhp+;N+d8nG!0)jHZz$;x|%LqX2)*8psYtq`%lRp4+VP{cL@f1xAk zFO~ke7Vaa~;Qd8IPP?r>>1SBs8^ycFrCxAbD-M>Uw>2SbRs48EW%)6&>Xo@5Xa@(; z$c=d2s8%)PCv5ueRHL!uv{BlGA{rBIh8>BBAHw&oo0Sw~rH#K&>KMjC?nocESI4(j zKSW$kWPY<(RB(B(#y5iWTHdxMC1y@FjMfBD(zB_P*g7nq-yGL|p}d5rlLr#pW55JH z*^J%eIpbA)>^^(rm{@~q16gj@3ZotBe2J^ydGWGO^>vMVbOq?$-5Zdg@M=qfO2-H4 z)MoGpM_qM?RuGS7@;Rm19;IfMUyUrFAmh&Ti!T60Xu%D2!Yg`N-(#FIgzYAq=ewJH z253LhjW&l=&iLX6C`sm5uizwmJAwz7?akIQm1(-oQz{vaSiMljEcW@Z(GP)4TNwit zyoA3k5PR>l6kL;3FTzH*2gTysKUX=@sW#S}k(7m+nE2VbQCoFnP8 zlCB#}T=o)9NDTd3NXUnNl52&5_)DJ;lNADn3Bp}c*Ic0?mw6x52H8{*!^P^@^PN(frvE*ZO`8kYiL6J*1 zXcj8q++X3`yZnNYEOIcBn8l6!o~($HkSZ&Lbw!~nc`IIY2uvFL?rFKiTYo-OzYR>< zbNhgVsuFhiS+0@gvKJ_RDvB9*;V|EHEM2PR5qNbhuml{EV4q{K=gS6AA|AD^r-ni6 zcgzWG*deW;BDqLwCC?+FVUEw*S#dkGWSeR0+kWZxLk5IIX{l+y-96o+GX9LMr13FO<9dP;PJ7`z`PJgb}u`w{WczZV__y3Xgzwls%N$-?~yYHeB`9# zy?>Am>JZfPeq>SHx7$Y}n9o3BOs%cy>(c%gNFDxSN5$Iv+(4mv=6Go9Ih{&CJ$M16EwmoXvU6L!UXP4|$oVlO z+ioCoyYC1wco^2;6$qM-tPK~!gAW9k3Ap)SMWpg93eNlB%N@ZIa3U(-_3Syqh45>4 zzR2uU;2UG%VK4~xkjhYq2=^h{X$1^ksJ-xjW$9L#j-97p*gT*mf%98YbQCrKyB5g~ z0heG?ipa>i8zcQa#xhD?2U5*?W8R6A=Tsxx{|S?Trj;dv?T#umZbv@lVp!a&5EA7s znmhKCD`*+2D&#B>(dzzWClb9w9<@rAA%o?8x6arlW6p3V%#^M*N-dc-n}2%;er7uC zhE8@5B@DU=N56*5qKCirgISgVBZi}AcyQ|J5*g1HhT4#nYjujgxjAhG%82RI@4e+Z zo4AVo$$3hF-9f=3k+vxciE2pC*H-Vi*)E5J3^V(wl`w`zGOro2^4E?m()uRAqHk-T zio#LANY4aI6ICa>MW3iDQyCq6G7%oJyc1c}JhJMc>n(8}!cBiNl|AiXYlv#FkvU}n zne{dUcFF=3^%w}@ZL*lSgV~D|PliC2sak zcHyh?cWN9X+!k9Fl?;jv*>*W7f1Mbxy?cXks?sc1@;=p>2fT#!XL}9ENDl=ZfYjY`0)ROAk=^dr1M0V1H&yA&+r~=$$*OMHlO$sev?rC8>BcYJi zVn-?`b~duBOa6`(+@RWMh{cd?gRt=KU-<Ed?tA8HJ&_E@^2hWK=-Tm$-w>m?hOx3o1Lb5(kzs?9`MCAR z1E9=V)IP+g7E%Ih9|DpX53C5YpG(YAp%IIywVp#_g0?5NcVcE;xT!>X@z@a-p7@4u zLkf=i4k>qh@H)Mpy^dd{C&tgWU&b$EWqz-z`cB@!c7Nd_ySiE!=UR$yg~ZwLHLoF$ z3KP7qdMdysOU+@%B!qlit_;*n7LnL$?YuoQ-Ebbch67?27D0_nTo_limvJD0@k?9+ z*==VB(U;EjV0&YNfbzW{?J-#pU~UMp%3l%yB~+heCVmLEr8@Bqd4rwKL3#*`<=>kC zw&KN8{f7-qP>poy?ARh?`rjK6hI$L%{rsm5s;Q(7c!a}au+QNJ0YD)(yd8A-#m|4- zq{c`=(svHC7+rxxsga8jG+j{~M82>}J){v_oWA5Pici!e`1N&AzQjJ^hNa}cHzFBB z|LVNO&wtv)_@gs1>9CVZGc@>r|NDRa-~Y2moc}r!?MQrUr(LZ6BUrc=q?lR_@|T{F{y!^Sx~TFJts`*uNLJZvR@t z{@$BLy-$r!UcazI&&l!V{4Qhd*gHi|sqEjZfn_V+FNU>U@7+fYavkQa8_3eB|Ts43G%+mh=x>`Mp!$ZijV> z-q&$Xjemf!Wgo|qLHi!@sm!IHO4Zk@ULQtQsDpCa6r#GF8SzhsBg1tl;QLz;5eO~r zg_3`MdqCl{wr9l#DA)0><`C;$QI5p%I~OBULe?yab?AMq4B6^<`=sBkhfX2>BqHw0 zg~qMfld*XF9zqHD5jvB@BLyI^aXLPkt)K=_+#*s48q1;G1q!)*L#9H`?q0*}($k2L zWp58FIG()?k4SqK+l?UTguV`mY7aHqT61J(6&X)Nye##s<~oA|+wAxCY_n$@=)j&h z&Xet-ywbb>L{9(X)kG+C9q@;?Dem=LDiVM}I^FA}a!y;OurbJoI^3q+-EQ)@>cN84 zZ>p+i*RAn--7$a-2g%?@HI=eM_3ZoG3YkUwg!Gel>_|J#XT#jcI~RLcUB@UVgmXN7 zM;Ga*e+AOz+>2a?`o(^GcQ;Po%BR_)&ofTgzzuKTB}kYR-F;ty;yL~CN9d^3EcF67 zU0OWlEPvM+`g~3OTqNZ z{!}kAamdLu{CWJo=_tQM52?sLl;3x+5q64SyfKTo(2`$`7tQbuGTk@4t0k+x)hq|G zR@74+m;6D!h%VGi-tDemhV_nM6_*3t_1vrYy}nZ2HJZPWaETLx+|A|%4}vF^*lHAM z>cXMeUKKV`sZ>dGQ9q1K-xgBF+V40Lg#X~QgQ@bh!L@*dTq@*bZ7W)lP!p=g3i;L~4$@g2_)wCokqK;S-y2F~62t%nw&oW7YOSB^GF~(}RPv#A7P8cC`om zb#DEu;cGsHQHc<4lAmN)4vpWI^coaLA8$QR>pImciwqa<}>?D&;C!xoot zjmbJxO(r+7CDd}1%|Q+_pauT=D|2lw(CbwjJ|WO2%$A5}Jl&Igkygz;Tom#7ZApjI zFQxe)izu!V{I`0j-`TuThC+-D;bZ9+D@Q@@9q5s4x9$&j&MNFj(aJ4xU|#>9ws*^t zCDoZQ=dzzqtmF;R3Txy{zs zZOQQ;$_y}1UmBwB*OO(cI&rAt1FMHyBnJmEf`R$qESlf@Q38~VrRA`Yxma1ddb$)C zcp2Wi2$AQ_?~J5+=3XsnuR#&6J8y?4d1uRkoJRA*7UWyTlDUE;O*a*+KUm_`7@R8c zIu4QKxU7{W48T4ot7j@KjnoDHX-F_naZM?vB^+9cDs7o63}~TLtg#?OiGwP)G0``U zG;#c9)+hs=LFZ;p77RRdRS9LyFlMXFHB*#j@-PaRv%gUzA`6dEH)iCyBsh95A8hmtM-%_ zBjQBsrU}PKjHIWP<+Kr9MuLk){2Ej+GK!RZXlgWF1OXZz3 z2XvTl)ErPiStSMvK--acFcWMMCX3Ecq`AN9r`l}^GPRufB8C-3!^wRG|IFP1p7Q3*l&r*?*UsdmX zrM@t1tw7{j{);c#hHPfCf#PAYrSMg3;e3QS=hqg?)@jN@)$6Yl!N7mChC#lHZ z0Q{>RxW*+)YO>`w=c-Cs>~MkS)pT>~Bn1RKR%qknLDqz+#FPdnA$)Y6xVEV^Rk&Ks zzJNRY$Kk8^;S3e_k{t&G6@DB^YSNjDe(XB-bO|dLkjr(xX(rUf!(esdn(AF^M(LJN zSfnHS9>ZQsM0X}}#fJjCTWGB^n>ey|mx~Fqr(-cgSSax`NQ7jDda(}7B@C%ctiYAx z3-{B$q5^y}ZGFs4YvaYb1po!zBf%gonQUR?^Fy{p1EZ~e9|_>45Gm=fZM4%74oE)y zpl_7LLxk$!7i> zqcL%|HM5uaLl-oGpG=0q5uu%KgSgKI0#Hmy<>1#6?dkNuHVz~%V-d#rWsDx}CyAmo zApedXKyGGegBsLckO_Vl(49+YxochWDUy_L+d(AWZ&QYnJas**=CoZl0r}o8xhar{ zy^ZlFGyHi3AQFB5yi3e}^YWxBU#?v8VOqT34;*cy_X?c`oQ+h36RZGqrE#C1IO$+x zFnui|WU$!mpQ6@6nwRrnPw=kvKaevtgrQY_bT;JsI=uoBDP0G4^Z&;mcZ(TU@oYp?hHLuB+kz>IZ3U+pYwPJi`jUyem;w1aYVnxpLM^jaae~H+pkxLaHPegNWCP`h-io7r zS+KnvK^euHTSlxBCO0q3B>?3XolD#-+Dd``SuFU)%Q`p>yjO0@n{xDelILWZ26Vwf z^um^nPj?o_tD;Y)u~7|JOsW9z+6+7VoSv%Ses){H=d^4^7TfpL)%a5;YZbL~YEd-y z7OWf@eFCd0&#?Dy`^)nRswfQ-9MxHbJ2^=!wB5Oyr`*Pi zLamVBxSz11i(xO$U0jxQ87|9a;W4n{%Q$}nP(I%mTym|2FB;@vb=xJrjE&?#HEMy- z?S40TRx)~}jLS*6B@%zrOb=tjJxdURK}8RKv|zL|e*mWkpD8nZZ{9P}s@MH@`T`?} zz+n7ek5QT0;KF6I3Bl_bcd#%6%X1qlFY;`LP7%c=>ZoLtOJkC&h5C?ihh?4hTe!X z>Ik#opts7s+_ClR%9h=|h>Pm2}Zu$pR#%2XaLyF}%c=5*21 zmj(KUO=Gfkb%D!yuNV&f=5xHdq82># zU8$)1)zDr7#3@*!Q&6Kx~v z1Ve551*-Zy(H9zFD%upfGTHV-hBU-GKMGRnJjh=y2(mV}#4Id!4q*$Chu-87npr|I zzD!$cVllDEAF9h3@?jnEvGUT-_z8H-#mBUgzs%Z@)3#h8tUu1EM7c@Gcrqmf3hY1_ zG2nLRO_cPwBD{7PPLDgwB|Ak}ZsBXAkoelc9;|B4QZchGHW7rE)U1FfC3BO6@-9X( zlM+9JJ56f+FG^=_{(7HsQOJ$lmu{YHsc!D=n5zIWW~~_|}w^lBW2M zrc23;#_v8FSxJngRAdoVh+?R{=Xys`(M^Dt6!!5z4|O7WTQT@%unWCWRZ5i1Un`Zm z&L0KOmF+21&Naz^DuABnZ%C$P+(#)zHCijFs(Gm`t|Y~gwxSq0R~NKRryMyt&ZXVi zi3D=w_8pFFVUi!n$h=C7s=7vu@N9^^%-F9cS2!c75>hY&a*{AcB`};Z_Ku`JcysEBX>^}stR|BiNc7*T2v$R z?%2YNUFN~78wFHRou=!$gayf2JyO=#V1x0+mLx6WE;Xx1F0qOV=gtHvVJpuZJ6iuA z3aZS(8zKQd*CrFsJ>NM+!68J0d*k?7T!F20sLY6(8dI@NSlfG)N|LKyFpc2^0j|C$VCavoWe*mDa$TgCSkNI@*%-UZDLV@jW3o~NQ*lw zJ`JO)TEps;1GuCug?rG^ljqQ7i5fd=c@30whSS&JLM1cC!H>|S&0;ibQ2r2xIa4Wp zHXH>9^&Ccm5-|_Tj2Hn+r^1i0^8K&)mrV?n=keDFQWFl^d;P~oSf%Pv6RffQmqtjX z=yZfES@yjVX-=n`2X zzInwRixhPu9|Gt~S2xq;M5FK95SBpbCUb?A6hQ3Q72|;+kwBLML^&_rDD*o#csf17 z%~YK(8zpw3+=szuQ%&loQHYQ!sx+i@6GPPNxL(Rtu#|A4{}*Zv^T&~cC_F3|mJD%| zYJyM|%I2z$g=D1e3Ezb?h;cszAulkPyZ`s(-wo!xYand!%m2KK0|HX|w||ya8Qtl^{X>rwG|@@H;6VeJ#sGWay%b#F`KP z;kUYn0#%HjdoPUFzOWjl-32s+A!KD*>dDMQ2(``R^GXO#?}k|V zjWVs}ww=m%4l(Zz_a<(qyJfu2N`%ywc>n}GIpcmu98ZXM)51j1-GG7_DLw9YDO3S} zHy!8axjU%-yuTqt+TEU@5^`!&$2YF?9 zi-qmCw*4p7h6sMYbWRB2?^JZMO6KsHO1mE^BYgjDXy@R`dw3i}XF>aMG%x)Aw6$}% zmS>J2fIZZYsgOk~u`50S9L(_<%)o5$*anw9bS#QUdtA-WIPlE8-lA~T$h>FkFhHL9 zPO~6~XLz0cw`ySegw>zr5j|{U#ufa2Td?kD4qS7frplG}ko|32)P)F?y-N~0AzN2P z0>9gXOO%7a+J2lz(@hUA$Z(o2AX$!*Ei!H)hs5s zrXhx5M6-TrTe>(M>CsSutuTHS1%t4(zijvnAP5AKqOKFJtL}P`G@?ujL!7DaOw!8`{Y^AY0n(;p-xPzmWD3@`sEHIcgz? z6%QU1EaS22V$wn%)~Fwir|Zl@B&DA`fAzYjL{M6`e9S^JDa__aoCR$)Twg{i==H8E zqNOxBbLX*hK{*AtkisAC;11bBmXqyDV%E&VYekZyM|AQu8Qb!Zbo-uM!xTtqUlg9S zEug@%WhY9xgeVgZo(Ezg#IOQiZ^B=4mzKs<{q=v1$5f4Sc+_xdQ!_NafTj@L{JhX) z8Dh9JXiev$htY&rD_gqiSDRyZKu%e_>mus!D)n?-lx{I1qe9errawZwIg>T!i&85A z*R+JId*g8^Bxhml?GsRDe}T%T^UMY+=qxLF*5q3&?zaXQYH_p(4Olb zmXO{O;(&bNH&QnW6GJJ|bpxdi%N(f*+vH^de%oYZtKbdTfso?o=2(c0Dw$J4xx6&- zje_Sp#0A2@k`(N3nKO*Dc!b7PG)kO;O>QdR*g7YQK6b ztiSQH3|X0@naP+3OL-dgKCO_7BwOr+!|I5WB8zgdbLJuQj|tcW#MeA=4FZ=CbJ+<0 z8}wWw1rxUbGPTRdPyYb>TEBqPd1`wjgX+{lfJJP)$Lv6gt2SBvK{caQzR-m5LJDbe z*bWka7_;7z41Hub#FIU1l=$Bi*7@CPX9)G=$)B`ye}E2uu*SmR2D7lUB1k)PgZFQ} z<4e5zn8rihnGSS&^LHAU%jHRY*n zpP8yn4V9w?Lz`Uz1xC^+UXM+`hb%Y}VGK`iR}^V<9^5|m;8ExA4X;#LZEVVOkW`H` z=D?=y;%%^JFFXff7D{uGl2dCc`a$S~lO$7VJN48W^J$v2BS9)XI7`m|JgH_{b?1*u zHH%1I=?(Kf=SMt&ff_}t0`Zz!Jxzyl(6mW2j zP3ymOt`A6o+`8HRkQ`+a)wy<@Pk6{R;o*p9bAv>q$;NYPmmoEc+^6!zaQ`U7z=VDN3cl9B@AlAkoyB6 z7_ypziaKMcLrOM%={u1&N>@?U0@*v3OD8;+I&_kUuj%S2vSA&v;mX@t!%KwI2WkTa zdCgL^B)P$MN-9$7Cqp>FYg;8gmztz{*QryPdZOw--NaTb4js1kmAVHTS?Mp;aXA`8 zrxm!-|5+8mzd%r}(+H_q0s?4{7x`D1vOmyyrM2urgL7&=FVO{j7u>Qh$jAj|;iUHt zpl3m6+nKw$Zj{dn@(JyMVgevcKWTlk$NdM(s~pyte_COH2jSCF{D2Z3praf$R%3xb zkZ5p`$TGUKrhiF;dzYWR6S78yKFL$09ed^-%AgnIkNH5i{1gW72=dInX43%hi(8~%#9O&_lbzuj zHj0^O0hG!q@W3KkPtu+bvGe2V&^corrob$j8Dnf#q&4Kz%w^a+#^JjDV{(mlF z{P3u>L-qO(jkeqL(j6pRl>g>%C@;v~^6&i<^#0~DcqP;sHk6hmgKL{PBMa*!m?PFx zwTkLJe*WjWUp1S{GkBvlf-{pM0F&=qD8bpISH_@E;I zv4?aI@L3n}^Pbj&AX~P0KuL`UQKxmvI;2566G4_X)sHypr%SFbjW`$6&|w}M zGTr_G1ls$ST!7-AG9(t;(mjjQAPuN;%bO;lb}W$du4?(GMwFNJ8rQG^V09B4pcN8k5b7OnAg}S~Eo` z?kqLuuU%O)XFXSka=bmjpjgd{?%bNFs%H20#geS|g`vNC*u&s$ZiS-Jer+Mly1FA) zuFqSYeO}sX`_@wj+8WcIu9c_U9!KX&V5hLv*^~p`J=TDdKJE`y-rwRVtMss_zZc9& z#~|2aUuR^ee$1Nl$}WaFI?<+w{YLK>KPPN?CTuK&`YZ1>ELXO-ZKuWazJ3KKX}@z3 z9@P34IYXUl+TB?q-8nsPma-^C^qU7-5G(=0>_=XyxYnWqonqmwb?*xY;T~ug%pP<8 z?&k31Ej=sYz{HXdL%MW++MWxBl}fJBayB-M&b@6k)M)blBI_Q95ge9r?{ru|{;bRw zd}pheyzhGohlTq~y#45=r6PnkG0`lb!_zj*rkq@sf^dD+#m?hazhF485{_XqFhVixp-zZglM@zFYb9 zdiOLmP0z?UNEx2nW+Z7@Sj@Gc96gdBfCV1)7Ej6AosN@rsB-o0;bVzBUn<@$FTqG+ zLP;eOtH^Uxe&!JM4%eOm0#T{mSFJN0gAKf{O1g2MZhNJ9wG7&#`=0MTluqOAe&CYe z1FzEFIS(&|r=8E7$s4?$jf#Cm@2GQ7wr6XGY*c!-d*U@I9|PlziafjebhFOZd!4jH znuuQb%0l5_t7#UiW!#HW>Kp>_?;t_|YfJ*`Q{7V-26TN!038}@yFMHSEV*CSr!G7ksA!jYa(H{KkQkP@X!;4bSd&IPrf_ zEMCjXM;FiOUV_WZtUy<_iYUc>4UX%^bBOr~W*W~8t!x%y+ONu!N+pld4>7B+(EfBr z?Sd@J^H}fxIOD;7V(~QAxK!9{{R2iv{nTQqu2v)e$K3%X(RSh|7rR2IaQ8KK|3S#3 zZHi_Lhd66wq*sqSM@QBtzgOw37RK{kDz?8z#M>c&ZVhF>6d)`7_~XxZ`pCOON^I2Q zi+Q(j9LOXDb%(b4%z^XPW9LQljGRHReB9$Dkq_Q?uV#w+`2ox9V;@286cLa}+zhEx5#1ZhfRPyXL`99cG7M>G456miZU%Op_irG4GZ+G6)2 z2q&F%e}zhY6!)3|A&i9<@_7*dKUg+1^2m{O;c_uh6=7@Wr0 z`$noTW7D2;;I^c_O1}~=CVt4XZ`r}#_o$u0Y-*mLagS%nJ*(2y;o<9^@tL2mKSQD` zmQPzMInSA%#VjMtd?6uPp~Ike+{{G1msKv!^LMAN%lito)0^e`ZLs%ep>2^CYCrbb znCzUcS~oB3&7{51zk2WdAA1Xp@NwICkR(BNr4ti@7YWVDa z)bp#?%>U7z{yXPoY|rOY=RLIt`+3i-13qobA6qo1tDli`sbu)=9nrHt&QYX|G(PL> z80h*ukC4LTwmkl$g{K1!(~t|P9~pUDiO)LM1?Jrs5=vt}>rfUaN;8%m>3!>7C+K_C zXSm@^4j;oY3();?9Zsl5c~mMnog;QUn*lrkKD1m^MjKRC=rTN zCY+7ju_2;2<3+nN5xvc&GbBOT7P0ozfgs@=e&4fDnp!wv3hu*q7Y@hRq8ALpxm3bXRwtwN9D4Z|(yqtNt)W2+m~WmbS;jy(L;$0C{KLA7hZb+~kWy zRzTyOBRQ~ns9PO#!b{6X!lGbWo=^402hW7OIWi-t9aGri$ja227nMAxS^O%tdGqPM z?(<%@t_-g~$2Ip^;M8s8tr=*&sOSRzZSG7|mcKZ6u29NJSt4tNjpzWK^>o=|0 z?~1ZoQ1djm8nMViI@yz4dH567ld0I z|8dbczN9{P4yL0j%EF`^yTO&^!-O%u*qZE`C%_L}jv;>u_{RP>J`ofu)Gz*0eDadW z&@aA3yEk*d+qI|@D<2t%9}yqLh=xTPW+e8)An2;FE&m~~^7wXGm^&rS&r*|z+vIrf zX6&6<9&89Bqx>q8XW*!zcyu`n@eH8F;=!W!-vUXEV*5{+K7$*cU_W+mb#0ea4qBFV z7K;Lc$pT3^+n3fYtEh+p)6aPmHa;yYwu zF7u64L$@rvq)(VUlqC@yVR`9-areIOt5p6xX`m{HCodDi_i}woHwfJ^p(%uvelL_J z%%My8E0af=4Se)nq@P8eXXdGfWaoHM65O`eNFN~)gO#C0&{BPr84LvL(i1Wx_4|S? zi=uLF=fl&(2oY;C#(vU4`)MMo({<=5oI;Gp95-U*qwA#gdVjE3B_(XXequ z{n*HYQ~qiN1=Sl+Pjx{o{cQ(< z&HVWY*4^%IA|#+s&}NV&tiww}7;_H~s)gHQ8R{nTJ$c|IEq7sklP*zaZEtcy2a*u? zya!exP>+w|A1vHh(+%Rb<%Llk|r za`G2A&@<2y!^0O`Q|e?Bed>lH~J zc(coq(eX~0KArvV+&~l@OhoZq?ujpjRl5*pyoP)Z%>)1F1EM8kn7}XBq)=-@!g-G~ z3c*z)MqtJ-XR5D+AgI?pKF%z3=0?sf#%-$Uc1Fr}-`-b*vaz(o5a+W1ML@d0KmOn` z$)ffY9d?EK1qR4v_`&6XVEA6)l4Ht|nwnomM5e749N>nb@pR^ol%Uk5gSbW{m8X~=`VxeN_|_wW;KKGBsnp0hZFzJs->so9 zc_@CR>J7Up5s3$JQ?ld`?_|N45XE>i_zHX%PdfA=wTGQW7uo*}C_{o;EF*k-n2|_# zY2daI{+A8-AQg$v=W2Rcb3x)jcdDCSQi>QuTHBG-%$xk=-F^rHO&@ow4u4TO;M_V6 z2)CdPbZJ8_p0l2*faHYLF!DmZkH-nBt#G0lNG;MTJVmlyFC|f2?V>k*6n$R8))X=l ziGv>kq2CXup1@AV1$5-RED{&kCl>fhn2L{aaM%;U1*UDEFHE{!O=cE*;q2@JcekWi zBLkv97AjegB%7v7qyslLNx7)!Hp%*gn!}FmO@mT@k<+E|4vIxOYL|c+_bi%h1_KRg ziIk1vT{z#T*T{!nwDi5EODfRF4hcP6lIJQjh1f)+h}_aCC=~T`aC$MGi?P=u>?NPh zTiCD9NsJ(%1tpIcXaf~c!ac)|g!}b&Mbnp49V$}ds%<9xuB*W9B8!5pw$4z1)_Ic5 zofQEPH(-L06a_LjtxWtDh)L$lRj)K#``@BICa^2f`t+!AMJ(^X{vJqB=H?dQlN+qQ zv4Bpx2vS#A4Svh&ogz6&P4IoJINC%pLhf4cCbHK3hLbnQL*C&Ls2f^9>PnApy;gxp z>`t8lU$oa}3-@*r2yh&J(?u&L<}h$h`|$!9ocn$appmeufu%=u1YhO?Oo`JiZ~#Hk z^lXDrR%Cf;<;=A&fxz4@!G}F9tzzbDA;3_$;sYJV*t`2HAfxx4Gu4G4>5K5w4<6c) z*WP+8AimA}i#D|Rqba;3$)Eqivj{o*rOB}9Q@PmS{UUDmALkd*p^$t7Sw; z#Eg#@1uD>@jf)9oeGx8UR>nB~1(BFB=V+#ihf8%UC!!h1U|+(=kYdh}0a^9Dca0+# z?1T&AiYXNx(B7+@Q2vDnS=19koOmk?aQV5wi#+NB$T*10@bq!k=w{_#ZnXhItaG4N zXUpxYY=RTPj4w)6xUT1qLBbRmluvN>3$=-~#Laf-=f!n->M@!On=N`8@C+Bd30a=n zx0fz{`%>Z-|GHdl?@EzaU8uz)3QbygQpalJab%Tu5}0`rTV8T3_<@a~M`@`=OHn3x zwWS{8pC5%I*k|@+n3%NjV|gz~>!1c{2+~+T5Nm~q{HCcP7Xvq{Sqw#2Diu#r+uLv@f zaPq*fHx9!cCjMXQ45-8 z6o^^@)u03$uc$~5!W9JyIea^Pf2o7Ptk+Fth1?Y5+Bo2JGA7Tjf~Q@s*j$`j7;b%U zVOAa$WxPZSC!STN-A3o(acnt5s!J78ds~Gseu-7RPEOirk3sc|H-SJrS263ibEkXX z!Y>w;7%1mOkj-L?uW~^qeT69rQAyE0%~)*4!aZNSl$&0b7eq9K9vMx7`pZ{l76Dx= zaKa*+em_v=odt*Ty^Gb%Pgz|i0+@;}wVy8LH;mS;os31?)~i=yUSCx-RXEc^uW;=n z6^VOp)RU}Qk;b%)DUv51Zp753L>3TFW$>XvipL8r?bX65^DP(lKZ<*rnJYfb9|tWq zA8Qw$zE@$^C8TPvk8m6_A5v0&(GXuE-qPjcEDmD3CUCRff%?v%ck!S%I_P4QeUuFs z0z~yq-?#iyUE;$>2xW91dQmPdm#J0(8K_TMe%-ZsiSHfs7hPP-0Qak(_e&H^6d!xl z?p%o0Uf4*+D~4;^3MTt55f*CSjFD4W>#!@n^x|*6SZb?0GjA|Ar1(r@-?NK+k9v(Q z)%2QVtS4vobrWcTMvK4dG6HY&)=h#4<)c3W4?G^(1E9cuv`H>O$t)i!fAE0?;#A%u zAt>hXDDA|KGwo5^Xq7c@c7naPPCT9;vNvt?81Y}WvP+*U|49>@AJKtE>&ZjLPZbuA zmJRtLkCx3j4IeF=NjQD>PyAFz0`qu;34lzwOLc)q%_bFkAPaiqiREsz12w~?6Z6D z!AFW)Vh;6XJiKr}RV!NfCUe=;UhP_u(l>$;crQYeUY_jVKULh?a!qZA-k2{Qzr0wz zz70U9q46&5-;{M;i3E9cWy3{h9Inze+lU+7_o zeZePkSIcoqnbA6KP3&Mz+mzfH=v!S5(`w8v;&)BR4m)jw4mB6bzmMA#RW9C*nDMsu1>9r>&ZBsM zojNXDrHV<-9%Q@Ls=np|m&mZLYPj$}5qGo|8^Vm?io|@u<#olle#2m@RNCR{?+0?J zqF4e`+P|blhQ`pWm?JPKt%##BC=KeHu!}#>UDE;yW-V}HHv?p!oh%{{pUw^0Ig^WC zDh-W3Ac+L*i#I3{aVXv{^LpX!Xbrzx5`4iD9}&9IGfCIE9naYyTBW;HJtby$E9A>E zQ-@*TZ9sf?a)V~fSNC-}8da63n`Ymdq2gv`CR2NZZgQk34B_`n`OWHu#E)*I*K$kl zIGy}qh{s^u4ROUVTfRh9e1uGdPl|^5#Eo%#6{c$mME$f`M_-%@FjK_`%#}Zzoo3ko zGNvxKHd=flC(0dVJ#8&>FE=V6-xL!h%sj`!w2^xCs>wnhYNgvq(YHzNt@*pzY8FYp zn{$Z+@ovS`+PG^caT~ZF2vy|17}r%ZCmsBbB;wodg4+^BM#9X~%Ve~?H}3eA-Fgai z8=A^&SY2V3${V4#8pM$`c1z5j`jhr5*7j-5IE+n}B~?LVmkY7F4P`Oc+pdU|CrOm{ z8z)c_b1g1gQ^mdUht~?hXW+hiD#TPXhs2B-PEELrah|gdv-9^c+e@AE;t-BZxoh>a zc#&zmuwSMHgZIwi2Wwus`Gi5p**>fp@dW7C6q^o{6nnq8iK|tdU}ju6!_0UJ>)a|K zuM0uO9aH;r9{BZW8MOkJmsnqJIWp@EO^9oc=#^gl8`eBKXJq$4vB%vdRA? zLAWC}u(ZYndvz5&HA;s6xbQyJtmjz#+N4&fRjqNgc>T8~G<)WcwMHtHRZX0uF=wi> z&(fopjq+u?13@;8=;cDPfv=5d0WtoRg0&CdniOCYn7^fp)wJBeL&Q#>L?@kTro!^C zjdEy05((=Q{-sfcFYVFmfHOceS;b+*&G4{J{&f>m4jxE+pWRF&Lp0hv{eN3^{;h%H z@0UUV$lver+t7K#U5C=YZ{+&sgO-v}-Aw(Z8hv1&4@=tc*#FoFStcgLCT0xx%0}61 zv}j2i!Oi5xeQQ+UJ|*5QUVq)hOXJ9gdH-mHIIq8GvI*`l!TB^_6WyCHb8T8u#c?oZ zoj?-AE{S;jtO-uf*@9>1Ja7a5!gP@ej*aQ|#ljFyGvGUxtMj!gEYDj5kDj&#VAg2e zyh~<4XoT*!(+YKbolnK8=_|zqqyALgiHrU+9e<2 zCNRSoM4=_E-yEqCBOYk6I0+Ubc>EjZ|BNC;bkrXPB}@j%y@SN4w&)f14%J^~FWcm| zjN-5wy$n>`g*_@)n?&DD>71;E2HlN^OGgtfMUK3XAeZ?yIjeEyjS%|&q+O!D{ zCVZH*CQ&^xS?0xR8KTyISTu%XG_@DvjxI~J7uM1Ce$md8w~mt$W{z2FfRUTaeGvL+ z=4nt5^wzl~JTY1K^g{Y23b^kaE-M}?;lN#9$Pp(qvD$b*l{;e_2*{u9a>#;qbW?a@ z*c>g!pAcd|Hr1dvsJJ{SMB4_}h8MQ;J3h3QIK#YzG$N{}U>)XNWqX`SDy}0=ZQH{a zmMB#m=#JT!%E2IbFdmNd7l(}fjF>=wf&-W_DrxKGJ<-&j&f8)lM740MJ|_2+GL> zE9j~_xRjP{#s%Qvey7dVsx)A+ah>x1oy7ed*=75b+)qgByr5P?a^=|8AZT=uK7BFf zo%w@ej@4kykU_46t@LFRBJqme&7i{ry$+|Cs$64pm$Jr4h$U+G_Lq`$kVFTSu~A|G5#de7OhnC1xH) z37cauHA2E3T6uQ3@1p({ z>e4V*BYp!z1wcT^gE&--l$Y(~=j|(21WdZC5!MpD&!Kn7=y#P#jN3Hens+=ASWVJO z&i#&|Sg0{GO8Cx>9>_OOsjleIz~t@4Sl*9hY&oCg&iMi$E_=t2=w?{~+ZVwyqa(OZ zszGmOSk)6@Xn;mSxH=jvlmBLM=z0Fmc(wSAvfFD9IgCL#c@LN<#xrwtJIV89O?K@? zClOWKu4Q5rG+Jh|wBaD$saMVi1`v*0I6%#v7EYnf2Rle9FAHtb>rk@T-o~Qn%x`2S z#*mMd$41Po2j(M!iP!B4W*ROb482bs7ci38(a!9pW#%{a*6)=R>dlRB+C3Ji4Rf~c z-~P-;VAX8n{pdd_6k@7ePmZO?;eNA71t{JU3LW=R5xV{w~Z&z0_Q?*&oI&{;nc%Eqxs@SZp z!Lr@%3zvLS4c?a>XZ7?vP?{ClXnjx+i?H`B?PPIxz}t%=-ktIszFV&qzFjS%cb(nZ zEc4>O=Sb@Jlf6(L-G^vt&~nd?&;>=sdgR=oq}j-heKgjBqS}4q^Qo-ce4~t+&gp06 zD&i}ia3wYLbT?JS0Ld!@xop$UZlVI)4}+=#+pOp{nSMo5eDQT<4!PvRY+cmZo3RpK zProyjP{>$wV-mr|J*j9U=|t-}x^xn0Qe4W&uUB9ecHa9;c!Uz;UxbK}dM)gRzsc1+ zI3?N{;GS<7T9I+*8ZT-43|QBb2|qmz2gdM)F&nwqJbX79U=nPvcrN$|axv+US0`fx zOyy&|rV{fwUY$&-c84dMMUWZ0&WxPOWgI(>pp z=;|(@*!cnGe&%^fUPmUI+#jk0GQ+EOs^GNbA-S6fIC8c-8wBKP8T0*MLfmjCQO-qs z$ygLBpmiyk!t@pKzF$1IrloyU+#fkPXk5>ti1X!j8?TeRe7|HyDjzqUUfq*Lidhlo zt>+n#8(!BHKHGiQv(VJY!2G(zs+F^T0 zS0U!HbbnB(_=KIicBL6xA;!J^n&2I!P``|!G{iVr2}o7PUG_XVy{)vzY=qufIytmDI%}vJb>-fY4TZDxSsdCaxjh!4jLu~FO;eNR$T-HhqBda)oS8TopnnI)P#sID& zu#lXJ@x3Jm=01tvNQ^9}+LeQyC6&ThRx&#NqLz$NI z^T&MxI~yFn!IvR!N5lZ3+akka%vMogNHr^W4k*c&8|1rP(lYKVR(|V&%md@T zRlK-akj(j(%E*Gj0Ykb=_#$e|l4qYWlpRHs_`YPpM7JdpFz9@#{x!>s>5*o5bYQ{D zB}g*HE$AT*JHgk?OISNs>RSX{*z9p!h5#;lH$2bH@s#k8wSaz^6*QL zhg`Cwb4OELrgHW;Nor-FiIbGZ@*0S=;TfjUkrkTLBld}svAt9+$FlNRotDZ^ z!^?YrSRt4>W`raioF1E$Qcyf0<9~^CvgVIHMioWsp(sCf30f!S_;jn97A79W?>$w^ z|6rVVX8oAp%uJCSX0s@N*@!#}7OGIZ&|=MX(F;-Xp(fn&W+uKw#RF=jDiE%kKHx3Z zLmB~7Z3y?|T!Zi{g~e)|lJE+qI5_QBQvtn7+M{%_A3e*TM-e_{YDE&BrIr<+?6m~q zhb$obQYIUreCpnaPc&)j8qZroxa-xJ=A}ec7o|-7c>$5*!P~VG)Qh`Z#!zoC_JRDw z!`#_36l@RmLJ&<=jmGVPtGbJrm96!t>oxqN@(0MFE1S=2RRNIYhfAYt3bS5RvzX)+ zL+)G>bp_R?Q*DziW4$Ru6$UPLxR%c@EKyaoOm&+-OrccOfLEi!IrKWy2)j$jt!%+b zl#g-GS!aK!QB_q?Z(AuSb=HK=<1#hHG}Z373p)>jmtq<#CRG;eZj^MCiyi z!Q6kT>S{IXhp2hTW@*S~CGwoT<9|sq8i+c@#ABmfUk3N25?0h~Z(HYqKP#;H>8Dpz zhI+(w>H3w#`C&K7W@6zpJW{AqS&Y{(+e)ye-8DdhC|wR+I{_aF3s7wDVn0uLS2~@h zBJ4}XaB*QmYqIV`xdV7cR&S1XK#S zZv-gTo3ne>^D>EmTM{bkjpY;`0Z0;B5G9>(8uRJy;eirjJUnTKSL z=7@a+VOz$v3RP@h8AC(ZLF5DEV9n@5T_1^mG(j15--zU-)W1*0*C{k|wrF{grXFQl zZ4HHA|3Aq+ptyeip7{&3hez`;#Y>It%_0K&q2fk$4z>ooU=#c0dBEQ-s#@9R`}4P~ z8#Mg_t=g#?{fB<9)S!!#yRmZ=;v6VOybp)R^8P4=gCjExfb>84y79VTsJI#A4c9ps zAcou|EF=cLP*$5}wul{WnR#zUzYWvzD2RhIlci~(V!h&cPDA-q#^A?Qv2huGh-cW* z+9wKS67<)TtR@)(A2-7EfejN%KM6qf$_E*fMi59&-oF(pd!0X)gcMwFU!GX(=8vVo zIy-+XKyEjGdwV3bGS6S@!0=!a#o@_j6NeOo>-|wVZsWOODg>G>SMm6HRIO_|K}Gte z*ec^bA5+|^3i7m$)KC`NPi)9dGJKXI*g`YoY_B^ROr{}N$aaoaT=n;y9->L> zI!JUWd~g}!333mLnsG!{bnjR@Wk`C(Ubi^VI7TAaIp1DtR+bVKqvs_kxVoxstAb~- zc)*e^S-fb?>OHG0t}DnoXqM151*EDpR5YCLi4dEhwG%{&GawR^U}94j6A$gNi%XgO zoDxy!8DI6I^ngMTA=35Idqg24dQ4Rl78-;Xr4v$DbRMofi*S8Ah6ft;#)o2l9$5;X zd+U8TjC5|d2ylc$d%94#V0zOD?~}XWCs~l8EE%J@gK|^j&JM$TLCs~+T{cp(T!_!K zSth`g#MqlJ^d7LZY&?8Ekxq-$v(>ns`$fbZmso`jj7nMzOAYlxhSR*Wk7%OJaHhOO z*I8wZFh!%Htt8e^);SW+z%%ZK!W|*r;TEXmrBBoz2!Y^zCmwh7mReo}?|3Oe6(18_ zsYLb>j8K@U!>6Gj1+imIE1Y_x=Lq7-!m^(M?Y#AxlNML`FJt=G|Ou5v;69lUvp<5>7T{3L^k)(w5B3eB(GUICGwY5{Q?~;tJ7P2o8@3TCe4L%85370(6 z4@Hz~^B^*#O65anE{evzRdobw*MCuCi9?X9J2@&U7p!s)(p8yN+#T88iV!t=K=3al zrC;BH(issB^~QaS(Vgi@luTs6L*!G+vp@+|4UPpFc`1YU+@0a-%P8;x7W*rdEC~4_ zyE?+j)fvfQ$!d$N{FSi44=ZoOW)+5HY$)WU?R?L%@#p)|1T8bNKeHmrDoYOkff3M; zN*Mdv8alMib{O%Sk^V(G&=wV<8Y~B~1xW{dC5c?W0e;TK=gK>6H8*-YX?>k?edgR$n^F$pHkm`pZQ#LglH?iL4%_jrpOL$=LYe z>7km?a6d1wpE$VFX;ZKeb?1LGHr_ljR8;#=^^EtRpsoz}i!~Z(*K_tS#0rzQRe&I=!h=t%5e8sZdCU15EiBD0%EPSA7A6)72&m==^0sx z(q0S(A;K2<6~$H8XRHIshW0bP9fS*dB#rxH*K5$HN@IV_3^nV^5+Y5hw5R$}-u(1r zKBq)#ce|QstxkI~r&3@AvhDO<>`BizJ+nCh^+bB6^F^xbPp7?R0oB>QmuHZku)2Nm z3N#$)S>Jw$z~lZ_w8^Em6WJH@`QNMhZ}i8L=*)@6k$LORR@UC@3EVnAUDgsl+@87D zTomXZ_U!%jbbGaU72>#94<0YtP10_h+Iu@X#zOz($~(Vg+#@NJ+G!~5G#{WV{GJa$IGjztzYGPQo7IIUH>K+$eOdnRwjNf7tSlINSl z?H}~e^d#U4{c+CbCC+ae_W~oLg!k*w(iMCBSP96xb6Qm&Z{h9#!2@gt!dIgY)E)HUD8TeS2G-K2+M9d`-0c#Ps-jbWn+# zjPccA@r)@blE=80QbHliDhA15dr!QpxElNfBT0kP8* z4bS2_3Vyr#xEN_Vs>ch|XBmj&TqWzC;)9fs){DdH8v4g}j0<4+;Lki_rZsQyqo zSlP?hJo&&K_Oqo-w7uoy!<~ts2OxQ#eZ$9b@o-t|bI?Sh;*>X8>e)1^LHGg7JD)Z0 z$GOgvMSWaJ3aW&?qP@LI^yZvAb_R0?bVa&z1@Y`CXKnT{aPEQ+*s1g*S(q){p-w8N9&4k?%W<&^g9oVE1GEl1>L@H zA}qBJParLb`&9~Q9r-7%7-$Smtbj%2tKAQW89DJ>p3xPFd-%GqTZ!cL8O}c#9`sK# znwF+5jkpc>zy`LJvHKj_-CyhdC#pyZmbynSYQSr-@Y9l|Qfg6OwX7Oxna1cFudN286CNf#0#`r7Zta;}lN;Bli2 z&|`VRx>(2=ot+OQ9(N}F#Y!Zub$fP3i7uaeq8&oJsdazQTVnvZIZDffZjQm$n8lw` zs!kLy5bjk=$6fn^iDK%uvQjwR?$r9}n&-XRA4_N1iT+94juG>Kb^UvX=oBjV&5mLX z&mBjDohd&aK@J!O_s1DrUTmvTKVu9Y1NYSvxVYkYp7~g?(%#x%xlr`myN?3V@m^X7 z6|&%_l=sf__UbV7?YC>Ne|$VmJ6ti3-`a%-9M3$k?T-ZX!YiyDh@$PIgCa4mnhDYx z=|eRAuzEP#1{g++pPi}ya46f~rHcCR<*OYIgR79(CQN6B^k9%W2f5v8zyLSRX&1~O zOW#kDMunhUdZ0_cNy$949gIwhquT3hb-HeT+%Omkc|*$4^+}|N=iyo@*N2V%k0c!* z`7M<9%3bMrRi#WvGC$6~O-jFuE8QsR&J$>Cig@>Nh9bERU|3Y=8Fj60GILVP@|f0o z#v@Z(f^4@~#WN9qE=qB-^-v_;a0*>tGTgTVzUW%z{cghSOnl-NrVzH9MnV}s7?qD~ z-iZ2RECTENOD*vuQf$VGYocBn04MIFrak^ z(d-YA*Mj48T8=f}C*VbXV$agFMyYy6W16Q!hlMif5uHX}$OV`1+>1%%r!k+rhT<`1 z?Toyj`84?O<~OTmu@Bi}$- zrI_)tC@VUK77J~fl<>ZSIIPX;cBQ`DZuvVrF9?%+Sc->5bEZ5|jQl0okPGL#SFqvS z@X|i^K+D^)IzeMApY2}PxkdHo1Qy5}jQ34b?Ib7>w{I5SBMa8f_#Bc3rn2p^+c=%6 z_Td_rDz-FlZfQSGRj>9aoRw%2g!n{VDM{_!jQMFlL?+Bm<54y~&+-2Ihcnau>3%pd zZQ~(R(-F7-gx+W9zo%ucgy2XY zQ=!9BJ;)b)w6nS|lG}pQ!ry?q1Vd~${|xTPa@l6mMoLR7U<{&z^$Gl zUh@LHzS49CaZd``n>^!6QQz=P)t>Mq0#vrK_hmWiT!rCFw8aDTR^ONf6y2=(lpyR+ zVWbk?!l?R^-D1I?5}vCfwnEinCO={KFTsG0XXqu+=shrK=&ueKsJkUPAnxvoN?D5{ zT+xr-qFK@px}>u@f>&KTtMjp{ed+KNRG%(RD(vnRBA}Nj9zkhef&f#S@>NdJ`eixc zkk!tUxAFHdb>*x|d4TApL)A-W4w>MP?v}?2Y#xQsMoUe~c&*8%1pQ(uQgiMuL?-F5 zN6rsr3uBZbXCKmfWUF5!*TQ%t$$ocT4@KY7j##%Q-{1=F;#iq;OU<%rm7(VJXg;bC zqR={QS59H#GN7FmL91;M()b%)(@e{V+Sw#U0VM-xW<=v zSqoOd`m7HQ#wg>ZZUr#b^)X8L$hAKBpiSQU_q=fWq6YA=WVM9JZ5C4rlps!rgNi?nVXtTEzS-SOB zy95EUk%b*a!{r!37@ zZloxgZbEc1^EadjQw?l7EYIio{#8w+e`#dMrgNliC+a^oVw8;eWEV2OeQy+q4DC6X zz5ZjPNNku!f6iQXUmE3hlb8@1F=n~8>P8cE2;DHg%HVuyM5X$!?-K_0-PcCACoIqd zLi7Hu5#_Cdq-y(@MowEzR0<_D#aXHw1!M=SV>4R+ZKDYTQl!zyr>z=z9y1aBo>f3P z@b2#$*!CFjE$`1a-h=lfy1$d*3;mH#@k^-?|$-J-A#WVWQ?ZBeLX_52Zy&NsF)~wV>zIN!E@j<&fCaGpO$(- zoc_8uxEED*EF^G%`U^KzPCFYivlBolmHiICacX7ja{Pu4ZOM)!YU$}}l*hf2(D`_O z*m0Xq0m88#qZEPk_Gb*g1Dp3n`|kk$ZuGm}qhx+BSEr{JUf(N%IOl>v#Dn{!#J*n_ z$l-4j9MZ<_-Kag#H|N%M-d4 zHfiJ$a`d1F+OnexihQ}b(>5Gou6h!; z$3d>N5x)Q53>scVAz_`!LOFROU8>UP7(C$n3 z4|S1|j-3p@ zfOqmRapsNHN>lKD{^Hh*cHF+NiR0gG#i&3iR8P0GNc?JuJ(dd)Vfoz(Z;rdpO>L`Q z1lJ^4BZIHQP)oR35`OT-?iy&jbzA1O#Et3dI1grK?cHG=zq=d3_WrnT10w3NE=qff z8FJ@6U_A;HtOXJ(H;9s1@N>JK^q@S7n+g>F-Ll<<=9L+7bzRLs1S;%gNI_V!mBD0D z!r)mJ?0ubL8GTHGoSS$*)cDk z&w?i0eauT_cTh>dvJ`BYS3-;9rBNbg)$UW7Zn7Fvtl*u$)|L?)a@Xhr^Y&Or2}CyK z*fm{B(3wBvxL@_Qsfp~}N<#4!B_Z&27d!Jcg*dvW7`rru@MUla4f?kB2(nDXw|F%V zC1c`s)+i|9`lQI>-N!2`2U)t(4sF|oWt&p@9ee*nlO65JQbT8h5UtN%eEbJ3=^Cn0 zVnyc15lB?x9EGs8;T*8K-h=!k^J7&4iR5Ee1?`YU|tN*6%(bI~=?>SokQcDba=$LTu|AO9vvVOkBk zyD=j8Irr2fEuL(_Rkt~z2!d=K1wRxFfB^?K_D#<=5=4BR=h%HI%B0-aCIvX%l!WQJ zDg)FyVdBl-K>^O`?F?zaOG#jmpNvHJ*f}IiQ%*|M)b+>l8!_N(^zALOBi8wP1m1Em zVB)lH(;45U2Uj-rWzt2wZa;u@ff)EUf3+Q(RS`)lW0h78vP^Fyl0M7ZVJrxH@Kjb; z5{r?h(ey#^p&b{9W6MrONHO6=uAyft_$cB=CfZ&vA*AR&5Q+!deO_4i9!nOwf((-y z7eAc&0H`lEE#hL2G<+m&YKhEY7?OdGQ)kherSbumd-{vgpDbkxX*52t84xfW;v0p~ zgqrOmZK#zEUm6R=a+V}M^#0L89Px~B;4?2mAEB8^BV)`+b$Sb3^A~* zVl$;CqLtf9j0c#t{;!f!;d?``0Gx9G1PKDZ9WfM~dL#r-0r+_j(hxMgAUHx~Tj>gL zN~Bw+4+R7h$OsLd4sIX}@yvi3@s3J;2!-{z-;}FMat+t46)^uR2`)QJ^M4U>JB8EU z>w2ZLOL1x*a{H!BRn==5W}qbH&j?4SHWp%%5OFKw&jq&~6B)w`ZpGNY7s0i4wUXZX zJW$XJS(g&?qrs9$i`ccnX*`;uBFfh`(qnBT@oeKw^#J)s6J_`3184ZO@f}T;7FLBf~+#N;!W+1vA+oTRxBk-RF;Hrmy;~ zkwWi(DFpZm_*Z!U*IzcU;x0Q-k(6|!aVwk56X}G*9edaNw`n`)m}u~SU4b#R-ZB8R zvkP=!YC|+xa%EIx@ct21cE2=n8Ygw8{*s)~jbe%-0%&bs|E&=@TJtv*gZ$Pc;kl~> z_RhXEu{?I8Ba}W4=|;Y1P~hMLzWeu$O!Tl-5Ui}?F0%xe_qBHLm-R%wXQu6pZPH}I+SgB!-*(`?|6UVr(#&7e z`+2KKk)up@DE=7yOo;cse2R%NADaE!W_L!R^c+p4@wSUKeC*XCULc zAje=l4gph3|Ke)+p*x-2*%T6-Cl-~^USuFyrG=MHRf0W0Nqk%e8ijS+@ke-ga8M8i zs!9_UqxllSt#pscP6DY2-{WLK0dXknvwy9X4l=7g=&0oN9#nvo4H<+N zTda9>)hm6xq|yr!L+5FlSa@a_f^)F8#~_yK>r1DOD7(hEI3{N~U>hdhkWNLXvD`L;rW%1>6HpA9O7LNbueyIgz7!BAUO-Ru>sGpH(MyFTEvEm8E~Le z3~b?appESc5l;Y~e?uTyxkH{XNM_hup+l5y=9rqmbl8WFK3^ZpFIs}s+Tzbr%{9@$UE6) zcz065xDoeJUr|`nqp1xYp!pQuD06^+MW_K87gq%R0RK#sc%mr&%yLxji?p$#Qz-D@ zda?~9L3z>Ik{styGWj{vmJY5ai`ggQ$aX=pgq3XW|M=ZbflgOPOHC=(Bq~I(9HHNC z&~7y?8KE}Q(tyUSKj=Ml!OV7D{756;JgS|nsK`oE7p4iaFBP%1yKfvahk3v58 zE~H=aZ}eM*ql?LGX)ynAc$%~x=@^T)8`Vp|=S-ThnUKm?8_7kPl3-DI^aoql+MRJW->i|MI`I-8;A^^~ODIRytdxQ^E)kpaC9?x8zBj~JKja{wA>0@;LkaUyC+r~>Kg7aQ-rrbHwn@!^d z^woL4$cSeo#SgFA`fQCqDE{SN`XY&hyC(Bvn0I!8z1StjZ0#5WCC2QAzqhhfF7+&B z=w7Qs4b;A$^Hpo6QPK8`v_N^Lb3B~>mTv1!Q+=Id@#!{~7K+Fo-hdRxA{g|OlMDnBfv z;@doojmIrbS*WadTS#C$+s;+tP1CdRg$@t4w}>es1qv)tdW3PW^(i1@#`0Y|Dy&$$ z4qSClRH*u1Uwu47rR8{y#$$05X&Rn#OV<+hc>XqB;qhR@y8waAL4b+g*;{&BAo}~I@ zSov*T!sEjf;6!-AUna4B_;Bf!p~{WYMRK_1!45#EAU{KMpguTbS^8s)sMsAo9{B8j zKNDlgV%}hnM8J%tyUAn@4~B-qBC$T>UTI?v!P}emkhqled;kex$3^jLw=&%)p~Y|Dh?s9w6A$7#l<1@(A9&c`eo&a4@izg zZemPwn#R5MW~r4pgofI+7iJ-7I7s)q?g360*=>Il0?;^yUWk?c&!r5wJ~Xz zRPkH${L+2#;38i}4yKzvORSVgzT!#^YzjBNnbCh(YV3oI zpix;r#B;r)Gm^a1C0@72M}$MlD#96Zs~sN;|CdHN$b0n<`Q)=AQ>s(AoY{2=G?80i z2AdR|8IQHGIz{;f?3_+vU?y;c)5kRrZ(}<17ksl>+3ObKcA6zM^ZlKEVY0lMr4h zZdQv3F_im;q;mOO72abnGb3{lY zGxD)N#_OW+1&%mRNxNwP=E1Vk_v2(NM!U(mNwnr31Q}&wSIdqe5Zo{=1j2NE9s==8 zc1{=bcUoMSZo`D|eNpra*D7`qhGkhrUUW_L0;f{TZt{q;gVyTQLLm!Lu(zLPbPhc5 z(23jcf!pnQ5wD*lD+EzT`r21TjcK2z6pYyOd%*GOzTe^Iwk&*=`m8ryh`qbDfoyZV z)KyFU+U{AWIt43yH_EI=tcLhgc$qP6wjLCM7`RAT&P=U{;bW^Mkuw~+mMAYmTjlYWx(w-@W@`rxGn%TMakHktP_WVHC zbq})B3B7J(Wn~w8l;6+qq=o*JSOJIqnD*yPqeISbjiC;1@;#Xw`N``+eu%(8%~`J_ z^r4rrD9}2rQKs)+cE~?owzD&zncm2GUegQfAnkicD&q7PFXWG|2g#vOMWHuDzjAd7 zxs_|aftSTb9Opv?9aMk2LLTVq6LLUTPc{IstucfsHC!6JPS{6R zrP^Kp+T@wugBkp}b-|vn$c-U2G7(FL7pg8@;S3%lkhYX-}Yg0G; z?%L0@R3SQpb;Wb%EFzXRGe(k#GAqUy75BGww-TqBt*s3R+-C<4q9K0&?{trdeOstB zR8<8(p9l@^f2B%w^I6c>yS@=})NjRW&CbRaAeywz!6-LgSjmu(2+*pwknQfteMXt# zQCy@!UT$b1`-tGJ+{rY(R^ww8N)R*SbuwvmSUO zqH-wdZX{BdHt?v5+NF3%XQOTJn2Lhgs|nBf3lYqbnOIz{vT#UGUD1{<8_q~5}dM#|Mk2 ziP6$fq~AU~B|y0Eo!F0@l~~#Ng7{y-Am>oQ09e}vcM1&73%BtCVugEY=Txc#@B_xe z7bcUh8#i|0M9V(71{gD2n4v2GxQ%?JPaeE}oD2A@gKDO1$yQ<-Obx~^m9sPWEDa3b zXb9e1{nIEqzhohr23#-kNiGSQ&?^DL%txTMZf(a@7+#o3nl{~+`~B7n?3^v7o%s7r z<9Q1HkjW76%6vGd3)fEq(q*IMUIUr@ppju}{7CRqG;)Ig5ZS`#e=wwuv|5Wfajq+a z3WL&CR_KZyF)he=V}8U$nEVhQ(A@8aWve*=civJ1L2c@#tCbuSkQ1^hCNI9o%&V9T z!*V=PyDwZpZg%k}CYTDVI>ny00qFk2FUVwlT3_|VEZ^*e31{e9Qmyrb!`4VLx&93h zy%P7Qr_}9Qj}i+YFJDMJS!myk_h(84X&xWgWIHjw_ez+I%LO#s?}twB#TjZ$uCd>l zkub~H+I4p5T~lQLk7e`6<^w9@TM&GK0@~=Qs z=Xt9aQbIga13b7Ze-44hwNweBXRDHGKDA<1v2WC=%<8!*;CXg;ocJ(<(1gZSPg0BAzSNr?Y6ej@zM(k=pMixe^}iS>3Rt@A(!N?Z0uaaPPyd z!0$nfCknXt-Elc=y;rKj`T zUQ|Uoz8rR9uiw1e*uS}Qao?Eceb}cgLt&@EC49DQWVE-(ea*-yu^i*GqjyEw>jDs5 z(GFez zRzBpc$kP2)`^WKq5dDR}4{SU<}(uAUOp)tvA5Mj`25P zLmE@1iOrxsTN51J70(&XsFszAavRKwg;b(6pF>&@?7+|`8zj3dMXq0OhX_^soXmmltuCO} z?Q$~hYr+w8cL_i|eSw=sCdpd2yAZEPAK+86;^aE0yRT1>_r7BPVVE}#%B>0kNfJ|U zpS9gt3dW*nrCDH#CKGAy#Oi1n60$d>vel472 zt5p^i!e-9LQ^qVWnjh22PHJfqeueb($$*o?wQm_kWrRO!qWQFjRsbxNk5v@Q^j1f~ z%kvJelT6t%J!U)$M#6qWu-#wj0^(dt@~jC*_0juTFU)qkEyF^3-47c>C%44Av?ro< zyY@4cPUiFs1BR1!iuk+#au4N9^c8E4o{rDmg_VgTe7cQ5xu(1aLj57_fO}v z?3wA>gYBrEN_*PG-(IfeeOAW=O8fXzcFOsz@e54fLu@y8Xj-F<&Md3P&LC-f+R@SE z?rA_D-EZClom<4By4ZTWS2|_Ho@sF*|NPy!Py~E^Lget{&HZL8>WITJKYy(liYI=V zkEd8y03 zWv{eb9%qVJ)&1sjV-^5G#kl*VkvG1+8~Nh?=Hza#M?9i?@_KoHvloJ)R;vbwDaY6Q z8z4+-ebgvCY4Jege%9Ph>8f_WBSChbL3Sc!M-zk0J!v!5npm9-S_7{vCQN#IQ{;pr}M4X2`=;5>!_vg=0ZFhHB0dIFt6=ZStH3_1EyXh%R zv^$zyR{ugjq&anu!Rur#3ePt<)S=XzNKH+#w8!R=xiD{4Tu!`}d$D3IjZbex(4hQy z@6$KxYW;JU)GrEn_`F{s1%OMX{aGuyjz0X*b6lUGa%g$I#zn5mG=Oy$oJRGP#;vLvaLltpn% z#WEfLsK4XpO}us8E649m%ahK$uzBWUPaLe=;GNLYsBY?{NPT}e2pg3A_ySx*xMmi? z5!ZHri2Azeh_|)^mswE($4+*55fZRMhn;{$_tBXwfAsjknLZLAA2f_ zg^M=}Pke$Pq<+eg;8K`p+hf3!s(8YM8H&;-+a>jkO+NiDbtOeCIR;`)(zM~PR7RJ+ zJbwIQ`|?4f{-6&e_)BqZVkTbH>5lw4uSD)uX!;6 zjiI@fmUm`cA4*+Q-*ZUM9=Sg(xUe9_EQiI|JS*Hu>DK7S$*> zX}PO9BH{13%`P7~D)*~u6Fy=^7>^r8nl4mM2t{5nBt;R~ljw-2TIOIuQG=^i^-6|Y zW{Vu(t1R^V5T%Q0RCXlkcM*>o2f2t*m80mEG{gs8<*yBbc$>B94E$xbSbr^sjw0DR zUSB9sUf)-J{cU=Q2KU`TPh@?>2sJugMm^U_Q?Q8BkjMLHH4^aBror#wJZ zPT(jyz(KnGVaEbrNUzH0RwGx%b8Fb=Yvfj4CqEJ+6nENwTLPUz-ahNIaUkQ(I=KeI z!mdCB!m!ub^t|Sm(}gX9RITSjGL8V@RD)hts;!$DgqZnOv!?>@=0@jbZV-~|SFwdm z%2l}9`*o(Y3~bBS|Jn#Ft@55_CDJf|H<(H(e~3yx6HnAU^CUV;JX90kSddZG`JPPWK`dbXaPaA}l`_D`fte#(DbsBUBa@@luLk zc!)j-CutmZD{15tX_bVNK8rF9`nU!?eT1#gL>blqbbXI3&$&8m7K?OdQ|z72J!j@w zW*XxQlNSh-7F+W$T6HsQyc%T)S2-&Yv~0FWW=d!xXXir)S(K3Bsq7Q`5r}sskAlwp zR!KS+LgP1&EJc;JtP#eDN)+n$xYt{Z9a+sDc2!B^7fIiIO#+JL@XK2KnQ!Dh4omUO z?DOdJq`%iOb2ODM7xn~D6o41ZI&iD>h|J8VlS;WmlQpmdah(5ho z_`a%{+CB}tx@5vN7h!@L%wtLl;Wd)RsDVKl5^K{W0YD-p9K*S(QRmB55WJC$OtNwFoG@31H~ zex&Lks6M{O<2)#X+mnUM@i@k(dR>tkDy|$s1JW%GE~0K_h7<$ET>LFx>qj9WpDW_QkLOnC7OTEQ)RtB?yE2*_=2lVqm^a z(eWsMSO}B{;Cqd_C<;EIN#z=Xbfwtnq-beUt4dg-FM_7%oYv=%cy~dg?bu3(dwg0_*CBR0* zd0>%m5)$GtQrUuNFA!k(ZnR*8<8QOjBIwb8zqdcUZ0pau!FNA$jz0VWixU2X%05`g ze@<@y+y|qhA%;Rnva(QlS{==qC0nGG!`lqm+ASg^O=;#>GpeLF^OG~f%b4MNJj6$mv&zorN%R)J zbjL|f%W=hO-U?t;2|Reh>QyuFt{PyV>Ljj46?Pqof%T2DLs=iIXp~l3_Z(WKX!Y`hkR+NL4c&D2Cy@npLg_Lw5 z5DtlMPVlZN>azKXbuU@EOW*H&`qwlI%z*YX`>4v7dD>ugLq{lT17S!u(Egn zwi1j&oS{@%MZKgn2BCO}I1&PlP5a`~j>D>a+c1L~q_J6zT+k!bx&_l5CFw^LWU*6|JnbYE z@s-mzVjO@HCj|rBu#H>+ZDWki8@gWWUx*_7R*y?qH|Zy^LDgFxkRj*7Md_2mlD3d| zZq%JX3uUa7K*MG^IBVTXpp_M3>L#vz-}Zddd>jaHTYM-x9P8pV!kHcY!xiW|(E8r~{I zlqU?5SQ-nw3kup(V13n*iAE8z^Z-Tuv(!YfU^2@kUEK{7i?yth|2+^v(_IZCuktna z&L~3+Eo=M-DDY(h5xn2#%CX_&1HS^jqYuD;9Y2q6SL<%oqyj+X+p&0GiC2AS` zNII*PM3skQ>-7aeq|D=N?Dw=yEdk30WBNTTSO>6)=s;2`-;|B0;0?}OwcM4A>9lgd;WKZC^cNn zZUnk#{pJn7FLN7|N;bR7-x?>VVnV9yKsM}6V~9c{!NaTl?PffFx(_cW-Sc)>l!7kM z&*6P=%$zb)c?=2<@KJVZG|^aQU*FnSUbg-#8XV;1DV{ zYQ{c+<)&{|$W2Uvjh@~>{6Na=&r_MSp=-v9B`|l&*+m)+5|=)CUc{BAMo_&^Z zKedvFB(N8(F`lBy6*du1$iRvCC$X5I7N3lotN^%CU3tmrrcE2kPybM0lMwD|go7mM z%pb0CAB9PxfEzJtZAdth5^F4l+JGWsKTDc)MhBW&f#{3~1+OfoB&&s>B}Ba5wZQ?) zH?GXUAL>%AN;v15F|bNW1o%8hKg?_$8S|hNv=9x-wSbDYo*Y6wdySZ5%SWB58R*pv zi^xk135kjt9?a8G)oBOSyOlyfA#LU1BD0qyS?1c6F1jF@1WvTn1X}N?ywqxSR{;@l zG!Gjleggdzh-HpjDUdxU=quEKCu{GNi?NWv^spHTEp)=Xd7oo>=jH@xD~6R z*ciGIzUkT_vRk^DeqS%}3=CJV_OpVMsLm=*nHwC}leo)Bw_smZFB`*>FN(!VbO4`W9}qR7~@d;m5}1C zZf1g$AIfV+IRCzEJc(WLB62sj$W&uaYBO@b-(mr-XAq@nyW(p&jZ}PL1c`Q;qKr9Y zipl6{TdA-xgwQ%49-*a*;^81=M#Lec!`0znt$}OIWyMISz$~H?5hEx~5UlvaaS_?# zKw+b2WljJTDwXLF1ge~kq9N^PpTZ!MYyBzkPpfnE?9{0B*aLABJWQ@YWiJ&tv2 z*js50BwMFnT#^V%G(C3~-iHRim2X7P-?OfbdIP)Z&X^VzR+p?(uBHw=T44%|M43+? z_BTSDIRHiFR;0* zB9`i4N=8Pk?K0p6PHy#P1qcKTm71-h*HaQEg5xMIOvL*)5St3)p@^oJnCT1ARXYG_ zBwHFgtxV2D3S#CQyqP5R9YclkSiAAI1bdx^7c5r`_Mmi3lh?dFBZDnBlZ1|LjLv-Wb_h)VwA1H*CwA_@X(z=Xa5>e6wcBwnN?i=+=XWdvocYBExc zxPFSu)=RH}w&p@KBPQTzR30;5tgmf2zz@}Ob_D$*X!8y+j>TC#C1)tJ;4F;Tv;}TY z@X{i|TQ4PMW~w4V7|4p<74PkukeJ3xGt)e&08=gmgi;VI>Y!CooaIPhf{z3qu#_I5 zzQ+4&u=K%OGQEEJZTun;NP%+ivbTs2mYpsAD?muf%tr^9mI<)s4Xib)Y+?x6T56O5 z$YNhU(aTdL4olzgR%#{3mW-gaNI~dvj3(h}-r)yi~YOgzm4bQXzWBvrqPMg(_fh`DAU z6iT>BvM3t$;z>6lEbtR1=uMj~6dr1tQVpoS!MG7x%>fUVU?L?LwsLk%deTU>NSI}6 zoM;y8xGxA58MZeOQpZP%s*M23sS=4Wv96X|x za4A69PJ0?-+;TRRn-zmlC=ig3O#eEOZqot0&fgKi?jSw;*HoOYKl-H7)~?I2d&@X zYuVLBEfCx$(ey$d^@bZ|1WszdV`h8Z)ElxvllJNA_tj~t_e{H%+>ng0)PWp!x9J(v zZrBj<$BO`Je15ddd9u9@xWke;PwOI)!}k4{OPVaSlcY&l1-A^Xg!eU$hD< z=i5G?k;wb_Vr@+!McOdG&rui$0Tyl_ZZwn5CG8mo<=WmbijCe!@R58%z87sq-x@pO z_KgfFk~ zKjZE&@WZ7D4s+k1Po}Wcu&=JWLj%NmxUSE$oAU1_cN`=ChFcUwYfhe!q zYYQ~wavs_C40)jSFi`F|M9D)BxtSx|S3bl}`|!HewA^v+Me-gv$}9q)`!U%6z25uw zJ$$(P3Wv$%mk5#=>er}=vH3y)bY1tg17cGbzTIL<+4r7O zn2rSG?w-rOTOk8ja|)df zo<*^gvk2q2oEt0foDr+F9yNFye6FuE)&PNYJshRdlBE5nmOjLko1;zO&=H|u;QIM3 zPY2(L?5)>BjE8H#J5bwsQenH}>qU)(@VIAAa*PzqR(6@mEjyn~PhSpsvoeS0Y%7Qn zKw1~-`5?E7o3hma$^r;mh5;b&z27C%VL8IWBkj<#IcGBByzf`8w+`8l-1rdg^>#;! zc%I06()qBgg2LTGavcYa&V$>R+k;C}SIiZ9AKbpXpLON-fbnfCX^NgjA*tmfqzln0&NUfVnA#am%6!6@KxYP>PK6Gu8U_- zKU67tX&%=H^UL^w#*w31qb%vRZ1QlqNUE<`iX{jpV|eu{=*(f#LZlbd`$^=WAP$@r zpNG&QN3shIj)las2Lok73@aV%rVIG{obWG@)Duq)$>r$-=7C? z5F#`P|EA0U)5GW9xbSr%FUsIP8Np+oS0*=hQ3k`wG%+!%<&dSkhb$2~&0D}B1Ya>T zeH?~Rn11nM;g~DZ0DFt_jFM(wdW@z|(eQ+NizKHz0yJEdav+8SyiGTN?SzAc2vUTQ zgM>qgW{9&z8?QkqcL>VZS~;g|vQE{mogS-EA+kCmOrTBU>E<$!BV@2-3h^2PD>-xc zEH_dAMYiHo(>&rFf!4f<6^O0W(~T6rF4Ko$r+l$f5)7IIY*WQfWpue4wn;5m%MeFM z`dX0h`LngWC;Ts%v9lkHX^s|x!0?-t2u{3cT%FNEiq2t-actEt3g#NZG)kS|fZ>iU z8k|fEek1#{8x7VHA*|#p-{B^9t!??E5s_mz8Z4gUsbqP4<1&#(BMqY~o*&vTk#~PK z*>&qYR~`60$x~tPm%(BZ@}EKG`{%_Q75w@i+5hv;(fF#YE0@I-bi!m|BxWOH#bbin ztIP`!PqmiFWq+)OzMrQVGUgOMFj3hm0n*786UtBVNQ|Em?!@pQ&m(9-STqBLKqw#1 zA*4n#DWO>zl-Q=N!QIO+N~2Z->{vMJT`r*RSB`S|lnsZ9&hs2$5To32MyPHrN)`lT z0yG;piPzR=2|Es4n#-*|L2vbLfA4k%x6N?@KYxGmj%Mwv(@(#&2npSpqiIwMUMJCS zV%S7Lf-23Lqd1q9bo&RyvpjosR1;pO51Fe&>sG39g@stiD3oG)O$B|&LM02ef&}C8 z>GhxeRu784IFVatF;h?eiCW#fka8PZNq;Yj76;(B52F51-FUa}h2jmKqJO zudWx^sx%~32HbH%Zmnp)1|~jTT0 za4GID4%6%HUiQUYe#yGf<+(ZIKID)vz7O%I8>RGwu`~#s&~kdZ>;+x7tM5ww?$;@_ zir~rB1M9~=3*bmsyg#`bB^s{P`Pp!v(onvPD(tfawH#aeLfZ=kfdT%E_~PHIJqH~&r}k5=W4bkf-@JC%)PnlS`KpxC~*Az zVIB8e@);3%8V$zbkKp6skZ7SzJ)0DKP|PR6Z`KjfFPideU+z^(=_Npb6R?|;jjso{ zk$Z5(qWV2g2IbyasW^o*nR*iX{u9ci>em(4QQUL(JaIOIuo5QMCx00+jeh84kiv|%L; zPv8u0yuQ8$8rpq$Rf`j9x)o00SUOSVMdjCl5YMxgDecf^>kuZPGwn5;#M^wqe?l`Hq+ig^_HJTO?&35Mm!X=Q-cryjdbbC3PIUq}v~#S(wVz>g98alY zLP?zhkk7G=nWAvl;leOnJzU<<6NQb{n=`1IIH)ayKG!XVJN3ZHS6LAp#KKCTo=MUH zbu&9@fVwiQ0V=KCoKaOkS-6NHv4 zIb!``rBFwk;j{blU9zgGcKTVm)Zz8)V)Uvp8@FZ?JAnNslQS)4vT+pukP1iNSWqKS zDRc=_G$^HuNs0aXl+ZOql=1lA00_=&uCo8HSQFz;V=~}KpezYoh@*eZ>K}gjLiHKz zBg9NxWN5-kisH!ABYF^bN-gI5a<*;Q68?V<6;YgDid7kZ

    }j|8taaEMcCZ z8+A-D@l+2lHj+3n%B9zEY0k1QTuG(qdivN0co4ObFaU!IKgfFzu>~!fJ+9pwAP+DAi^VX;|Th zI1$YN@Df{sBPZcE*e?klb%<{v$?tf61=@NRxBbC@Z|@CMBkxub38UVUEU}Gh2H%qi z?a-~zv&7Ma3?hR#>D?3NB!qUho#tX8lV5( zXgt@2kS>y0r_^e4LWIl+q0fJ9BK$T0e(@WQ>OVHg!+HWBU*m6?&^*irVp$Ka{7(=p zrz|>)J>h?Aw1rX=?c?(wnw$VFBM{4otg-^JlF?11pX(+;=fP9wt>Ldr!e7gMdig}w z-@|X*)=ltNI`WDatA7-inSY)2ipV;hGF84%pzFrvm{r}jfWU@!@DG=UVA576Je2Gh zsEq$0RHKNo1~@dqUx-P}cm(bD@zfMC%2Kbb2xf(lfI&A56LxBce9-5Q?Das9CJSGP zB~&3rs}MQ1Z{CY!?i{k_ux!{?x*uRuYK^uJ{>j z)uwCfif2f5bzdPAtM0ZA`ko1vBH;R`QY23zfRFbpD{{Ji^;guI7Vp%u8z&SZg1Pm z`YE11zjyChV;cNvKaTOewlnxg?%)6bNZn@+SsFj-Bi!NYLmBnlfL=Hp7~ejf!@f(ikLz@&=W+lWm|;V0 z!fn7Y2-V%b5LQLF263>MKAjhc%rs`I5~j`)p)*rQ)i6M z;1ACUxNpIX(~%=U^c9e^9ywUP8Cf%aQDFirx@MjN*do6ls~9nr|79G%xa^FSkvmW- zC)BS~mQ4@ucTUHv0N!LQZ5!O>6ujUO!w36%m~y-_|Zt`Qh4gGq<{9woIhrmT{xG{-rvg5t}pygO#0xLP5_G z`7?;oGi_J~Ibz>uD)_0n!bB0%Fi?bDsd67Z2lfdya}bfXydw>ig9#OI*CeWMc8hAF z&?xw>pMnk;(>IC847JlnoKTwuN1t5thz?+3!m_J(hfkb2lcebBmRd;TkQaW zP~Chw7nq9MGcA?#M`v4_jN7{%JTcq3@)7dP;#pwA^w5Jq<}qD^J8VQG6eW^Fe2?Zj zT_U{9v6OqHWwngG8h}glsxTJFT7!G_+B$!gL6vkejUbm!zp&vgoDIheP`pSvtxsM| zDerrG#|)I?MT+3z@KAs@?8!mp_x74uqrmF5*a6G28av_lSg0(vyr@ELh$55f9#q9> z+C85U4^GeV+{zm;MG0ur*Q0@jbc8~Y(WURrxOsCj_CtkF?KBZWP$||x)1Cvx3ZBQ{ z4#p8^7weRkz#~-*Y2yH-&9t%L<-X(@?{QvxobKcA&uh@pPrr{WA<*c>iFQq?Nd9dh z6-qBq@j;8&WbjxYs<9(6m}O0c7L6Lg(rM&!xx?okSpYpaAY}HY|Es$ZiX z1rvut@{^Pm0(VoDVog|hq5hjJbfTc7&y_Hc6vgKTk&io|iK~lFWRN?Hxm$Q5Z6S@^ zM!2@VcE#b3;I)URcdLlH;rS8Fe#$*KC1kl$ajcXpFSV{H&~_9GQqs+RTbraCbB+NRw%M;<*MccdT%q z4p&8@>bS79khnCbl-A)T86>XYEsZLUUn`_H28@t`?0n@NM;?!M1D^>Fi@o!FpJf#KwcF$Xf+QQT1_zd=H^;^>HC3nyygzJKiwC6s7U3>W;A{YH5vgwWS7z zMhnnpmI1#Nv2cb~9V);LCddcYTbC+bnK3@3*aaS(EHS-Ik^quId@g5R$r17=G+xP^ z%q*Im991??O1MpGqvj-1#xe;72cV%k1xX|AkQ+(mULd7A8k~HL@l#E*O$y!q(1d7L$u(=541tBDo`a)zec??_F zDd9*yG*?-%5VLWy%*Mv8i2p{xscL`)C=?2tk?g9JL8Rr$>0w~Nk-mj(6Bnf zk_?%UF-O(MSrX_%pJ`u0T@*8s!%Td#BT%XpPx2hEWK>Z9Rsc7}lVolv*qtHyv}`S6 zC+>>2!7Tk~e63^r_n=@MTp<`W!B2dt0fMSR-c6eC98ki)xkVbqbG>~wn#6=5^;)F) z+u^9yYUgV*+gbIUCCn@bUJb8cRrs}GCgcvCc4*N&m2P?n89@jKB~&8@dI$4+1{X56 z@*x=qYUC{#7>^Wd{1E>sDR1ZT&H5 zo;b%t$+?+5TD5=UGHrQ75AD??HXlq{^~I#+5G=4)d4^Ht6{oI&=PEaeDabk$ThK0x zXHP7s{$!QYYt9;DVpjD~Lbp2%$-0_eKW5OR9g*BNouZ-~JHzv;s!5coX)=m!HE_y9 zMCio2%#a9R-X*1oAv9t%b4CK^jHo3%C!?9fN`JVSa1SD6Dlw>pY!FJf2#r~n=PJwN zuS?;(%=$epg^v=bEK*2jkD~+ zfh-%_*7lV&h{$M^;z?E&>rbiH#|ooI4|UxYt5NEi$BN<4 zNgf4?*fpLQE$J3uRYy(fgrdvH>oX`NSTNaPqeI=4VC#P&Jc_g-;!Aj{rB$AcMy44P zaCUy`PG=4jk6}$fJRe48XqIiZv?Xt$ZL9EQl#%xa$*ht5#x^(7J3VGr3L`Sxof29< zRHI6kA2W^(l=YpAY;f3OykTW|X97SmFHk&oXd7wDsxJj@7nTTqg(g+|th!#l5Od~a z>fCIeu7?NnP{WB0q2dgfZMo511Nka3Zc5sSS_#R^U+&Av&N8-zGRwSa?imyjmOgeq z@wd!t#D^99h%bqhj5?u(OD^ECor3QXhz~D{dI&33<*4-wFWL!sUozsU-GY(;kcpLJ ze^a7)yn!{0jn>n^H4zHiqwU3pP9(B1rv5_LbYDl8Mla6`OU0ib1gkP|QX}L#v1& zK`2Cs#TnMpN1#pACQnZ!#f+fftTJ`%ENydVZTa0jMravLB7zJJN?=NuDw8*HIPNx5 zUye@A!)%PzwD1}qp*R{3#eu`}CNj(2XydfsH6@SGYyyBGY1-2+OIxzOQ zigHE57cfO{jNo7n}= z9~q07N`i^;orQyHLZ^BQXAh9gqWPH(s>vjW&)CS4#FtNVBnghxiv!7hg&h5YZVDu4 z;KVvPR*0AO9159pOWVQp;ie;56K_Tw!mYZU6 z38CN`4{J$s0cy{8tFP>MR}OI0ZTK))(TJGMP$7D7Cxoxv2+9`fu?2d3Ss_NcAYGT8 zRP>?J47i3;7(7DdXUSLurESAKe@uYln_{fG?;kP}^OT1LhQl!hTg{<^R&AW!nZe%$ z-FL$%m%3&6@+{td#|SnoKHZAb(#X$Tztj{ktU=snjoX_Ln!I-s(jTM5ERG0mSDYSsX;-;URBXfL4K9=K}+Z`m~ zjWlcb!b-q8(Ns}j=oJ>IxxkW`so;|Dix*o~IIoJO zH+4p2Q6HYd+~9T$28-H{#yQ}TegvKz5Ux8NG}#1Yq36&pz>eoQ%-pMnX&lDu|8$uO z=VQ2e(2XnuK6}Gfp|IB1Q5hlH=7X}HQFLR74}q=0$Vt?6rUQgBI%RW(hzSK4!gXSS zAn3z$VGFYoh?Z1DYesI&PX%;H@~VC(A?l75XyoCy|Eq-OyLJ{3f;#1y-VTd zjf3fLJlYxcVZc6TU*2%Op%I|ZgeoSSQ@0VHpSOqLA64(l09Y_u38AM*{B@8rW{jz8 zlrfK{+cdLoI6D4^zBVgRRn8f!88hG||7*|?!9XGv#PvMejWAr$zFsj8nvIQCjBIQa|(5 zgIVgwY8byYw1^r|&@SsuRu!ok$W>*E7zt}$AtkJ8Slw~vX||AV-1I0CZHgbCkP2pE z3U;SaxMu|6B+Q&O^6KSu4PG7t7MBg4XYRN{mdN_*5+xA0RevXeW6hvRdAE=lO&~cV zd~`?@Lb*YXgXOY~d4Gt^J2E6f`3UbW$mq3$ruq}wS!-6#V;XbBX^eMg>G;Tr4Ib!fZJl?R~ZrQ}ovCoWhn zMv^=_vQUj;yC+gDyf)>pir0p=yg|Zh@&=_Wn;9`(L3)BmNM_{xKWk0BM2IPnk$s?kyXCxe#4+rsf14t`DX!v;9r?~Jt8nA0X-Ur!3 zie|c0GVsJiM&)drzB~LOT)u_e7yvQRqzz}EN!vh?)T|NUkwl#^td*uG26Nv{fU1XA zHP5Ibk0x+cw0-sHY}o&aQ$qF*188`Vg5^$qcI~R?`#J~FRTJy2_Aj{ZUuL)JQgaNP z(QxF_hmuX$yoRyXZF)fHj2ncsd?xTvR0`M_ONaz9xQHhru+WwaRH=ZjPRX??crc_i zNx-mw2}?B~TT&2Dp^?!&@u%?+nl#CxH=L(3l4Qq;)liH$F)IveXAOKjnovDuop@(v z4dyNUP%M@~(pJ&P?VM2EX3{k-gtxLj4M6T4w`XE@+BA=eDPz@V+#YHb6T}<6Xi7_b zzYT!zF*zn3JReBAZx&`xIOX2Z`G%23ZNm5^k5#7{ZvW1n0aB1m2$aMy3P_mDq(BtJ z%CLe+6+!W!^s9-L)Cf>n%0vhWd}k7ODnyK#)gA*Bi4Y3ch!9e|NrlHAck0*;cCv@y zsX)Xe)w^8T>hZR?C%a3j#$+MnT0kZS1(0_ zzbb|CjyO|kCoy@5-7Xd=^|)bDn#sUS6CbtVy^coWfky>RN>L+Hl9op^v&J=mH`CLg zB#$-*ZWXNjh8Z{70dQWYE8ua_fS{6gTsts$3tpU&5p-V8bZjbK9^~dQMWvKUVsn&$ z{CqeQgC9h{szHI&E1xsaZMC4JXJf8R95rj1wooDu617)9DQGTolNbt*-@bi9YREg( z{B8j|3$?IMx7hH_{+mv3618Rc)-rryo(y_WzTq8b86XPK%sNo7};Ox*TaG>!Kw*01%{AQZw%ex9dBNRdl{ zRhE-9LdEmY10a7j&Z^O*5*)il6G6l=nB%sga(@;gzIYzIrw!Nv0S&K%w`6igDBGzZ zkk_riDOaLhEfQOK4{fA~J7X2H^Bnn=xESW}cq%EOXQ5gqMw3)`+?4TR4WcjXDnMaT zJ@L&nLko>gU}_Cj#-_%5TEEopea&uSgQ3)xtSTMDL~lS`rCJPzl-NvJCcHQ-4HHI- z(%F-wi7XztfKV<(!y@WD7-Ux76CgFDj5jWgI8g@vsuL!imW%T_M<_$$P=;a^eelid zZ7dAtBlRJMamji99H#W`B{LSB3)lm?C(UuyUmGa8CJ0n`wg5a0nl~Rq9 zC!kgh!%vD)TPT?%6C_J~Tg9>YQW5kZKqecQbBX~4S&t*bRs+uwsW&D&W1hp+2Rbol zVULO!+(;9X@!ATsGBwiL7BKMYz13ONk~Z*w29qMVjotQX3XPADSz~5^UINhGh8Z># z=tWC#z8IcZ%Q$rdZoSViqC_BuIO3h*oT0d{=)qX{Wu;8su|Fjn4#8ZK31cV0Klrfc z5;gmgAYK;9*hMX@{9E`93-H2%)(998UpeB=8F=4W5DWsB7?<==GMHw8%MaeRq{nPj z)f38ZnIKxAPtTQVn!9g^3t4?ZApw53#LC@BCvD}S-VRu|b5!wDj>BcUlCDHq%|VUu zr6k^gW|ws<*>XfMWh^;S)K*)IRY(H?7KU4eDH2ca(fjXSY3B%l;<+Bes9T(~wY`eZ zf-*yyiTxD5tTc$P9P2b_5yL|Y;{gnrin08%qWpmu>XZjDN{@PoDhN^zAy)(7v%sS* zF^4`uG@ZC05?w>dUhoisC+KA86H*GJh*}ic2xlSNObT-kgQf*i>}rU)cSA>9rK~Ar zJ$ED8`XSLXpPSc;JcdQy+l6)PB8q(y*(%gMnjgD?jyBTBjF?w7?y+DmJg#tJnzYJh zt4ytiQ4paFc6k&WoPlcICgmQSWCo!*J*cUg00>9DxME=*NfB=2!4Xoy40L+*Hag)A zThc7dBbVJG1<<}S0;o$Coiy>0E{+gMMl#Sl1-udACI!PVRW2%$g0*`>Nx!`p+Q^7D z5rXmLnr+0gZe#^^t4+Zi4k;(YsHYnGY>t7)J<>ZvGtxV?zPoYiLb3BB!@Wns*8(zt zRXyRhx0b4utK>sud>t8>7QjmlLH8mv$;=tVbsCnbW>&`AFzm`mk@6|Dt5;n3@9i9$<{Z~oOLXN%G;snfQ>h5z07p2g zaf0!49eby9Y7^@1DoawktTj}rDSA8ZnN$V=-QZ{5gb!mZrU}SvgE5hU z$UQi(u%g%RyP}F-f1jYD*L|IsqTU2A`A|ZD#w~_ck!vWvJ!Yn93@T={&D!SNOg5XF zsSr>ct{CD?DMT*r^wbmaJvb{18CUICy4O zr^-}vHmKu8=q)j^noBdYjVxMVSeQ0FjMgO8h7n?CYEVC_(N=QB4WgZRDW3Nld398i zGbTBt9cz-~6vxsT{YHh%){Lgj9BQ*?A=rY(@fdQy(QF*>=k@0as&|r)xC9d!M{Y(w zajyz>!Nbu&@~3MidKOD3b!=nL{7v;j_rMHp#>!a(4$dC1go zl%%fMc|29^M~-u8?FU4I{*AGUJ@WYh(tI|DDiB6ip9&&Xx`B)|bW47i1Zv4zR`IfA zY&Yu67~Dk?unm$3Z?BR3|Nqbb`TzdkS*z?Jw4ZzlmP(3#%;G18S`aRxD{#yWHK%bU zLT)7!)LdO3dFI>m&&Z@{gfXwEBzY~P|Etvg$yx_A(VTfWlc1u@ciP@q<)L`>m&K+ znn2xKm3rgWef{DQY;cvD+rPL{>$PT)PQkTYo;k!G!|&Lbksr3k=mXR`&@Om>t?ss| zVF87QmgFQ}i`Rqw-Tr0W`rero0^EVn%WiyaYhO!RTB&j_$|Z$Iw-zp!J{BJC$SAfu zx86MmICY;1xpbcKmh(?}UM5Hd)tS^1>5#{;Z{qU?-G?~FO-~U|h}6lPJJ@@qO^hj+ zn>g!l4w{_NdxZNYdt;J0*}dm;yi(6&uXFu9y4=nYzdKmlIl|U{g1dfD4y*E=_o>u3 zqxgMdVtrk)YxXr9cH2Ch^0;sL^Jw7))%E%E$mfBF_+kXtU5T3q__2b&g@V`*pY-Ft zz!seg^Bm>t#fiOrBdd!>=)_1RV0n%GxA>5J{`%6Sb3;<0{Z&KQJl=_a(O%1QL2S*K z%1OS)x1ZDCJRN^cZ`Uha`3HabeE&+0{yRB++xlUI`7*cIzEaPTYl+xKO8#5>bZ!Qc zx})wpfWZ zq|Ll;&L`!R=J?8^rQgqB+I+1HmIC)aZSm#vNK+Yyu({tO1$A1dBjHs1Mm>-5^?aq; z%x6Aro_9}PP0U{pK+LZn;QAlY2AI~CYew>cLqR;XW{Mf9pW`)x8EIwwxxJ5YMR3*< z&juB>84mm=>SE&)~F3E?UFiMhk&_5MD} zG%7Lqr6c?10#E2XRKEG4&$s(jo|h^FZ!An%SGh)qx=KExcC3*(T0PeTF3%CiEq=1C zA5|2)Tc^)8y}oeIw0@JC@*lGJjpzE($j57XU)~n}_JjC`Liqa&#n~^aW)mpu5T%uL z-*O(#67iap_+rV$!!;>K=X~z{I99zym#7e@-hs;RV>%zI_>+>eeUD1XUpRc(2PwEf z46eLXyXQK54LxZOkXN1sU< z$6D7;)FIHp56)i35~9ZmwJi??@5ZTm&hYP!+E%DPj|zw8(SA%+6}PN!3FcGd_zsMv zA5p=0X?lP0qu|(F-1iZEI*D{o`!+BiL(vf29KcIrjDFKG!}F}l)gWcMX^TXBu`xL7demy`;|sK3cF3VHpkd74>>h3lps^xfGtTKL!XN3VqFQUt)PKiNUqKdpSx*KX6gJdpXNGuAV>KwxQy_YD;vDqZlv5 zt?Ou}**Y%#p%+8F?Dea@#W+i`diHv(8X0mJh5~+zj;qLqI6tbZJl62?u*hR}-)ets z*giJ4Rr%1~o*Lfl(7!QVzYPMpHD3K~4UoqfuA$$2-FA>mw#Hl+kBr%G4Q4P)=wLq& zqRT=DDSWxd{)nupMxMv9MyT!YW6*4G{_FxaxWR%_L%3=7_+JqYZYX=e4C z-;-xYLS{_$OJZggD~iU3Z$pN8A&dX!CwS;b>SGJGRyN(%IPufd;obK1XmXfsz<3l! zV;?CFAENPl7##1Te3 zZ@+D!MB^9Rq?o&_#^Ria1{VDMdA_2-=C=`LWceGjK6Vs+DCv^6bB}#BezN^kBg(KD z+qAt2pI)rneqwIMl#EfoG|be-+;9nd{L`aM@3-&yt4`p1d%f>;ufloT_4&cy9P2{i za}&1SmOQ$b!%@g|W#HbOh@|H`)%Z^NX4li2*KbJ?UemC3I>R=mMNgMM+7Ee#_Awl{ zck99PsR{mNjt(IhU2S2)7CXby^W(#paHrDNr+gMs4UI9|TrTuES%s%88zL*`m(Q}<@Nc$9aZK} zRNKRRJCEWp_Z*|QZpC5moge)0GT@542ZZO)<1bq`9{2wClEaMqpH_EbrTukdfMG}X zB@|FWNxpH}c-Z4GOW=WvFBTcdIVoYXi;FzZ2Ciz{-cgao?mmusRU^L{aT~P4^Vk~_ z-HDy6Baoagd}5)s0n>tT3~&riEEdW5IVjv+w7`m>-tRFKf1v z`<2Y58h>akvZR06#OG=?lUTkjh9+?brX@Ar8cj7Ji<>H#hC%B#P2S!RjW3Rrt7k;GuO&i^{r2yE8_Wz_a@*dW{chz`nfa}^P=b}HVydy=tNb}P{S7dDp2Gl7wx%0L6qz-H zc+f5>UGrk45Xf(mW+qL6D^pen_LwCO3VSSdj}g=bFun%^PkQ{gC@?uK?D6OMspVG43n_{F=qRNDVZOP z-)1j9K`x{EP(ra@nKq@b+ea~o$*Sl&XhtOr@&6GJtG1e)ya6qnlM^wDx-*a= zl{7%FfT@Iq(}~Rr7T9SC~*zH5PU%ea1G< z2OCK>oBKHR!EAKej2dP_v`}W1Xb*?A#bA~YR+2YQ@YEK&MJ=L;;q0dwt{P2E?K~I& z#*0+Ud0=HtMR5*hBdq%-EXE#$KGnvO#a|-Fd5a@de$!`158rQMkO*oaUc6PYYOIEm zWMmTC8qC$HggGhcY9=0TtIytTVvNE1VAPidXE2Z8e6La3HD7X`6`zcb(* z{z)wECaVn>MT=3m61Nd_Y9>^w3pXeUD|idVo0Pz-BZ4D-KU1|uA;=j(Qt8G5h|q|H zW(dh~JLQoUit!~iZ4pH*QM3jN8JbDOSkft<20SDphDL)FjI*%B(15gzHI0>&d2wf@ z)X22yurP?#{95zI0x$W~pjG2SO#w78&GRW-@@HdOVJ}CVwksY7mbaXwZY{_3Z!oFY z6D#H^7zqG;PSs{rk>rhgJf+pls}T${`l_vDkVMMGA;v#}v5$zG(55sgJ@!&Zl%E6e zNR6|4-ul2Ivf!tN9!FlKBk)Kyy}8;S9o`XiqPVM3#{mECv$6CJ@u&dwitNGzp~ z&V7p!Fdg$U1%y_chY2XGq%K~1)G0@xl5_Z(03|Kj>Ndpo<1;D=Nit^%39;;n>%u=1 za|9NtQzt0NwJk?$?2$fN1(Myi^;hPp!H4Mu-hTj{kpp3fz`Ps*G|6tED46McELQ>x~VNyy7}>S3F4)4 zC`zJye4PI4?Dg`sar;75j6;JZrhVMToQorLLs_m=iTwWV)pdAJI1{j;5=+1Mpu!ri zF&Ba~v_IRwQKSD#P2UzW)-Mx^?HjT0hppe&W;!{Hw#j}H((As#cvJZ{*HrCe;ZM(x z1n^S`yilI;=b5}t#lFTc;Cz2f1H~Z}as{?N5d+QTj`{VxURaB5k35%WVaheOE%ktLZNH1p9nSS0 znxg#8W8&d-Ztg-8Q;0w5{<6=#9?aq@003^DSKy^nY`?W8cjGnc=S*SiZZ1jQOmFPu zH6#D!V&pBs-iKSE@ub^yix`TFr!rDS;Wi(h7#>lAu=mb6s3mle)AE})#-AIUZznoj zqd%Mxg}D6UjlDer8+|>#I8O0^JQ&Z~B0af3IsgQ`eNhsL0D1Gg(r=EKQ~Un;?Em(R zD>|Nj0M1TMe+XFj_{&R5HIBj70iKf$QfA(Iz$1}%+=k64eJLLJMLvSkGt1}tP#^ms z$uOXg^Un6?WLBEW=9$l7jJE)hx5y`T-}rW&Z>WxwwHR;43n*Nl8d zk?-_)+yNcu7Ck!p)pT!qY8hmJvXx0b{|alT&wT6DLEk*O;OcEv@VSDQ_)_+BXed$j zyi4f{4^}uk*%^a@)R*LIeBc#Oa3|E&W3#TLsV{%hIbZkw*ZkHL$&OODpjOFH^O9H} z;iTT&LBZ;_e1Bo~oh@oPz#b_~oqoWz3Yo9d{q^lJoNh3=r`1(Z$NLdcDlr&Eu@eU5 zD}AExSDl`NzO}kM$k!_OeG)&<(BL`i{YZ_?^#MTQ2)1r=xs0fFx<(xoj|p0*+uR}@ z*NIqX%LNm#PVaLdlbqXo`8-{haca37#jcYpnqDSOos5%wmhoj)=+OA+1@XS{6P}J` zx`|CEv#UMPYdeAIrqD9B5rz=b>%s+3ka3$YJi6C&WuTKkbk}>oQU6 zWFf$V`@Zq;^>j?1WVf1dbuvGXM{%>QkM)D|uvWM$6RJ*2Gll0c7Z^i-*{6a-6SLde z?ZbNLxSXf2jrRqn`qFYyik%>J^E?1XgL_%JA}+=;6bl1|TX%#&SDw`XAiOOFHp{av zkH{k-;%V8!U2>I%SlJZuhpv`P&dbQR*z? z$popB_35RPj5QJJ*VV>(tn2q-;_9pXZ_)}4n0;Skhr^8J*_5;`&Mrn82wliwP2 zZ(th~H=lKU{N~p=0y5V&f87iQ^ZJsVS{OZNs zcI0C-4m)Y36=KD{94V_}4{Mp^L4jo`$1)TEUBw?=JU*%|-I!y&e5T_($ifpBZtZ67 zbT7B=_Pk5kk(A<(A@mU_a;1xPl!H7F1CTu(hhstRb385~c>KY6VsmzpnP58_!VggW z+gc6Z*mign2)rWf zr|n_C-t$kk02XTOw53~PF%MPPYD-9R&*3}!t!!3wq&CkH!Mcu5n>YQXmkfK<%>_cr zf2vk+E{<#4GTKhawb!!4*6yduGTTnLHQgBF!8}1G;zf6evbGg|XnzFz*fXB;{RZUW z*>MP=rre|eTMV0RhUXB0-DF~?O~y(CI5xs@YHs@GXKEq^mZy+uOMSU_w7)I1aJGB1 zxnVr4Y6N*)oyRSkSKm-okDC<%(nxeK)BL0J!U9GA#g{!H(5CFn&HL;1&7|C%K$TG% zl-D>O7UA)z#Ulrgg@PX(hmpxc;*nA_@}WVKaN|G(D~~^EramRMByoastm{K7&ZOnQ zspM(Gh+&(A30!Fch#@6MtFxSV9fq&P8nvA`pTwTdgQ(tKBZ>Ou4i!#|I-EJ?Nb%N$ zHMEy0Bia_L=1FKNen>((nc^*Eg#2voo!FoC?c#XOtH}(^%)fqr;x#h`jmAZJ-q~SB zd89Cm*c?B3o})*53K?TIv(|y^<59Z$m{FTq>TwUZZ04v<=_JK+e`ShhS;VH6;0I~- z@EqVq^uDLs^1!!q7`mCIib-%CrZHnT^AJ~t44XN4Q@>FI45Gxp{UGfhJZFsNS@xkw zt=-PG8Ok}9I`<(WWXF-5@{Jo;YesU;A<{ys#+1ccKT`f2XOHP#KF@+5fjo|5IVE5{ z<4W}Xnb2?{`d*08Yr$XasXR+j#FgearZbCXKAaPQljQR-g5{w;-Cg*#>m`dFG-E)g z2GX|-hkL%1S;1F<9>X6??yn)l`2BFtuufU-fh%`^BDwv8XO#GhxCc?w&qY4hXT0jr zKCfknGKZVKcI)|<+V6uOa;>-#8s8=RT@xIL8Q?j7(4TA3=ofpCrQCC@>jS=qVN`@M z?A!4OZqR?`kKcpUtooo%8ogu@=_UZ?$B zq#^oWJah(rDr4wBH~DX$@89Xs|An5uE^w^hXSeT}Mc*vxVHR*ir(fOfApPZuN&A}e z1XB4v|5U%9Ab&paFsn!RxO&K&lMKr$4KbI$%ptEqh#T*|Wiv{2ALIKJz24FKNOACu za&E#ygn4Xkl6vz%-a~lSjCQiRJ&ETTq#vv?`d(?FWBJQvZu>C$!A$N|*iu!Av;_N! zeGcPDihy5ih8J-J{poaCFYhe=-bY|SBzO2t#BLO>au9}Aea28}p7F)EXel>eO*MMgVFWL2=Z5Ia`!b}U4==`*%5~%)Yyn5;;im7S zczrv)UR4q_^Jc0KF9@W4w-VjZ)i z;0&e)Do{QePJNUp+ULWXhuf+~`pH`G;pfiyi}qr!be_waXnr~vhTnTKn?Zki$GdyP z#b?{`2WPT9;eu^>@?P$`MFmd^ZQhckzaOW3bgWi0v6UA7_JjBr&eh6a4%3WdReAg2 zuo3jDa&C3-1)hj~@UKc7a0awyEkgyvsGC7J z)Go?7F7bKr;XN)#w>GZN3~iNdd(>Czqwk&1h4iR$^kN?!ovhO9pF4YTqk7)el+&&3 z%^=sTm4TRD)%_${AK6-Mbs&4xt<#Pjy|!ybxxP-{eJtu$N>eSg6m?6QpGp#dKl1pq zry1DUjC0LWCkIyQY}a$TNdTCEu350}gV;(i&h^XVJ;Pk5I6Ptp@9pSY)RGHw)BTY{ zGJd7MhGtufP32a>5U$GSRt=N=uI@p74jQhf5%#}+nY#v`yfi|3gf)?(bK6$z`% z9M>xyLqhche-U1GP{%)sN5UxlnRLu0{DWgibp=;rtMsAQK&;g5$1yz`NI?s}+iHF5 z4F|H{&s1FGU(~N6_zH^6QgZf=hupGjHbzkXu;AmZJ;G;ASt4>A2gRz|nDO|Om$}ya zNGp0|%SZCSPPXhAJ5HviKQxB>64ax5c0L+g!t~wciofW8vG%wlh4##huzk0vtw>qr zalw=LwnAmq6fqJl;L`7>fi=(-FKhq6A8SO2Xqj4Zv(iTy5sz>a{9)_i(Th8FbHq63 zBmLqqe&dw+!}epm1&b9!tNLy7%arD20z%0_Bnmebpx@(Z*#-b9m*X(AN!-{6+J$k z&O(JR$M1xEa0b_krZ4G7*$A#xkAXxPXAZB`i|@caw&H6=sH_0Ayr$6$AK%UH$CUX2 z^;>^@6!MHWZ7Yx?c*x;g_p9*ek3G_5JNig?G?K_eDKD`D8OMHH%FwLn2m6@U<|;GF z=H9LxShnWhc7FKEwqi7aqsbgzD_>|mBhzo^#ealL{KZyOa~i2Mudi>K2NF3(n_%<%pHp};j5gX?rjLud5iGL|39e=U*ruW2Mq(4@K zevyy0Bk(WkpQ6^i@L|8CY+zaux2jRN4E6iM%WWFQl0hG@C(L=;-Vpp-y1mEwHsjZh zD|XEEY8izS62i;%m3^%IqvK{A73b+&G5j*&z)=e)uHdaGyn#6OHQRFxwJK<4(@H6dw5(XF)Ebd{oEaiox2|Ujf>MWthU&dZK zaeaGEGfMie*q~$#rMJH@(YX2BK!i;Ai=zlUozMdoUp~l)F4h&RJ9gLyPv<)N??DGE zT36PUC7`&iJC6(%>HRt}NRK9vc-`a63-|~+wDNH?gIo%ZbzgLw?ZguVQIL5JT8Lb% zD}Sl|kQHqh16A|CF*Tc3B^D9V)I{S*1g%TXKT{k{FvYiC#IMi zW>v<@U(ki~Do$%G$S|Mq^3TFpOk(KaJfVlVk!ETzsaUI#lGU971)OKOSc{YiyE)sn zxAHEc#iVAOYr!Kn7JU}ofbA;(N{_$3H6>=g|5uY4FE4+^F#0l>+y!j9ztA5!u2R6W z-#>9E2dI%u@ukBMJd+hhUq(DvMp?Y=sU~kn(U0>I$fWaHDsG<^T@vE&0C;sI2$K6F zBSr`gSC6cGp$s^cWJTGJg3;uXos#unvE@cVKD|df{$2p!qaA)P?a_HSqwl50DM13v z==&mRXT4%RMco^nsu6u(RKlVaZfo|sz|Dxh*B)A~QL^WZ@OxPZidmo0_flOx*}?Zx zL3U(;Te0`L&qzJiemC~Pxk{e!3?$6E9LA+dwcwO-zhR3 z%`p3-b_I%|Pp{XCGU8^Gy)dRIf%+I^Kg92nAS^cR_w;E`=HD4*UnC{Z4ze!-Qvlg4 zZGZof4Jtg>shtkaD08yy4^-}y)Him!Md~k!H%w%$u$VTo8k4^ ze}k8ChSv+jyfY1Fe7y|bb!>j5K@5FA3^69!-0Z(!kbHz{Jl-?5UOrGLHfDy_t5hBv z3f(y@w%&|#x8r_C2k(B~T=mh9Lm^vN-mJAaGwfbgFxyf0LsTYVF>lryYjTMqFJ{!e zUf~NQH}3baHGfM!dGqFv^@C=f{d`z6MBJ~F{YW@PEa2k{3IUnw`V*9hmH3zQika#`w~2A z8~%OL$S>l6E*KD2UJpF4=uwt~%XUEi z+1g|Tlx3x^H-l-3rK8nZQwO%M8eug$hN@Cm50c?OmTC`J(Lg&}c*Yv3_J??lU4^ zIYvNFSwHd%zcT%$@{U9(3jE)vGmoMwci8_{ia$k?3!4>^U$ll0gmkY#ko{H2w`rCd zEhDV7cw2}6u+AomTi1`Y_Q=E(t~)rV{v^hLQLg@sw6cp_!tm!$Mnn{a;rsOq%m~(W zfH{tq(A=e21@kwB-QSX%pg##lh@j**$WH>|L1>o5oK5zg9m0}pAwNnSef8SlM-~k1 z5MF(RN{QO)G1e_t-bNndxMrLlj(9zcIkUBfP1J!jG7V1*{E-5c?=6q>L$xLZLK?Jt)?tibCRh5K0hGWb8BhMipG(jJhD@? z;(6u~;*XSb?_$IVV)1~?vmA59q#=n>noLh5b|cbBmnmHBv3?q{BN3!gJ9BrwSnE%Ds1n?d1}bt`q5DR0qb`_q8669ETIB=jn``nN!#H_GSd&`u$Wq8yhRe z>4(iZQ%@LDUe|h*9y!0Ky3N8{kI?>pxkir~7E zQlPNI7Kg_h^26yvDnPi#NlN-e>L#jG+dfQyCW@X6f{dvSwGs$kr+MMgRZ%CKA(bR`O zdIPb>qZk^}jdw>T2@MnVUOGWlU}sE!oQLn>O3Xmd`}jN@oMqeh33HtG-pk*9us@Pr zVrBX$1xew>K|eh*y^%fLj@)AC!S(1K#ZI%GibGBje^Fm2q*&R$bAM5cb6c@s2I=ZK zAlXQLZhuN(nNy#?o-%iygIrsWm_L0a=x2Ey=JIZK{z#-aovoWZ63!1Mk{_9u63O#c zvTNZFto6#y$ll*-xVPR`$*f-w8>Wg#cK+UZZzcH8jg2NozcS~ZOV$7t@x3z5+~^_w zSnC^tP4Xsb98}K><()k-*E#v5sK~)a{~<*f6O+JyzA(*OK7`uLYpY2M9chvWQJ6Gx zm<%SNNc;wEuySSum9q@Wzey176H=s+=P{1V6*{9?mfE#INXBExrVv?OmR5Ve{NF->9m&3?dDl^9ko0KmJ3)xuq;Rwa= zSb1+nT(mqiUo3*>uMfAkaaKzW+}Uu*WBykWSH5+bgpC>ORE;nOZ!r^d%FO5)@IFk8 zk|01A$I4+VGgZl8f|B9H?IdN63E5iX5h}xNN;BRbH{Vp8@~rkjIekSF0g>-Z@}Nh8 zBv~8lBp>tK&N%H>(qqv)Nt{!(Ua|~HK$Bq2Cs_NZ4+o5+QA(Fp$t4vDpb@ute_mJSLv^x&NCW8!>5!ET6@z z$s9l;A+c&WV#krmswaGDH7AS;5os=%(MkdiEn1tjYap5)l}H-U#3=4jkM*Pl%KyQy zY32`2O%FDIOk>V*jQPEefr5!~92!f?U(0*3h}O-KG!b3`a&Qv^EJv z3|mZU$y&ZCvN8=(287Zqib$j&_>B7(ulJ@c<{5tCZ&I;H&z0S;GZE7_V*b*r{Y8yU zPGTaD%taClc1o-^QTYtUybdFbe{|0bm;_>=NqK-1rG}6M@{5teT@jE#$WbbGgv59R z<0qpwXJ9k}=^@-cP1P|5wa0LMU6BaPwrNrGh_YiC0-c#w*+LWowO*x^Bg{=v2*lKz zAbvxU2J{nmz?9+)*woear#qN>$(t;-ZBhD-!(mh<^_~$1bawvtK~#i+xv;c$DnXB> z9ZPprew|{pj4qWl%y!alx=C!l*cT>T6u zFpqaD*Agq5z@Up?lduGoaij>7&uj9%;<{D(mUWXy$Ka=D&OL1}vfhM4nzqPtvzF8kR}}>EyZ642 zU%WSDGk_0`Oq2PA+FNdLyDv~~McE0p5f>tm)U)L38 z_u^u3Me^ojt#%0;y|I+5hDo*7W(Qe89Qd!uf}#RLz~&#WxPe5#WPQR1omU@cwy1afc2cEF(ZaaoW6` zpHT=KyV$Sf7)9cwdAa$`4|ywb&irAQoHGC7#h5WKUoiS#BZNX=dCN<8Hhp{D?pq7c zeE2Wq_>FTM4TJZ8nyB^e#1ZUzYYFAtuN;9Rmm?CCav$qxi(@S`Fh;bmpJ)to<vEEp{k9~IA!t|&yLha4 z$e9>c49`lK0a?^*MCf5f2uK*8_^pYfaJKPBHF5t>O=Qad_%G}59~%8(1H8QxIuUX( z|3Zb{iS_PJ1N!-WGE?*i>0t!%r$D%^+if2`fu7J=cTS@%A@fix*9p0mn}f{ScWTp4 zI0oesGKTbH6yQ^`Z-J~yua$ooWu`$Wo01;{y5_T-;P?d!gR>@~^bq5y4FbkiEo>-# zv|B?}42D6yXE~jkqxaIh!om;;gdDCy0-xeY=nQKEsH=%pr{AcTsH{L0bAGox*I&Ch zO4Qxwr0>ZmlIEsISH3>L>zjcoFC92AnN3{!LD$D5H3k{bpM+cCp6K{`l1n6dTWcH# zz$I*P+?Qd5Ez@yUsDJ&)a|$AZmq-sSig6Z;35*}mb<<)5gW6Ms?q@**`F{0~rxMRy zi7C@gPLF*O>oeVQqby?Gz0+DfLgv`0_k9#qtb=XRIu`ngdY|U` zyd=$Mhm)d(GUgCr0kqi0WJ(dQ+cd+=S%g|>TJuA{kZ6%=+{dKR9%$W>#jq-(6ij|l z;txXP#^in64IOPc_S4exi$jD0{e>qG%2}LdKQgdd z@$C2`Z1?esV3iy_SF|DVY`N=%?lmj+Xb%>P3NIeSd@h7@d!9Q^-wE}-=#4=M=5iE* z90-2j-*}r{W-+Dtm?Tfz>dze>*-Bi}X`UTX@3AP9aJh)b`>?T*!0hQ%xcwwP94Eq~ zIV)VvO>=lK4l8pBu95S9?ZBOf)061nH#@9M&fmDD-|WsjQ~ogQ0XIW7f?56SOa$(s z)=-rpHO|`_p1A4B9 zfv_>`fPRAywpLu!iQLg-CA}Cfm~Lm$M?DE(Y+n&rme}vl`;Nl^1!-YvHSW)>mUBS7~kwxbRZdFvWR zXvwUlDtsk(>fwmexc=v@3s~lr6`d8oDD9eu8@}JRQBTmURXfiO!d-;@EaZXr4A(1! zm-I%H+wbGU6B`OX{)qV~BDtKQr!iRRcYRA#j z2G+gpA1h0s+tL0+nrlTD#2+cV=0;c${uti^$y>+xhJ~)TG2)XlVkjMBLmE~ocm=l* zA9^S(k{tsrq#`K^}8~7wl(vFWnYB1ASx*o+ThS$a*be@%UV9 zvGWti2)c#JM7SjLy+mEkZ9@XeQLer$z#vJ?6o#XRk%jmOgV~LkvfwyNVw;o*5M;|c zxxz5Eo#76cRJ4(;&R(uY1sl;NNN8}H2_8cn>{5I)F_OqUV-8VO(y@aFI_Yi;guc@Z z(-BHy_BhIIQHr2Cxp>q!qQ*arEVPYrOFbY~xg&RlRw@K#D!hj(B_%*qfj<$&W)6|% z^3n9!c<0B8KW3%YHuB#pwHi$|9TF0e<)e}FGNoJ18;r#KE9S9Ek3JeMxzwwXuN4=_ zK!RrI+4?VDGIYj?AB4xJ$s5sFC`sq$0eWw`{-hY>l`kuPW03`^QGoP~F|83%0LqBI zjw9drP6*T24QW$@YBZ~9J8hI@Hsczo&*|jhF4aDXwD~$AxI$L;k3(4=6aJtpW~Vdy zn%d3aZeGr^#&R8!=8Dy9+R1ewSFX%VU}%!n6tB%K_U4YG619jXWoxBPM7A)zIM!tp zfQgTB5i|uHuYRaT@?=*X4y3`{KyDv@R0e~68N4UW9HEf!b=2WSOmD8^ay{rq<_)?B54I zXt=vlpQuz2aKr3M!%4fJmh<=pd%v}ug0HviG-F4LqTMzc$qYV~x)4M5$ae(knzUw9 zFdx)4DJ_o2{h7AI@K~u+qX6B7qidyP$p0Ts`iq{)rsj_Uma6=E@v9~$UE$=upQ~ly-!jSi@RTm zO|_k;2$lAC*ePH$r-%7_wekdk-kUM!?pv=sM_?zVk~IHEAY5bjJ!ybjA&j9xBGq~dfB)L6IK|VOv@W#`5{7R%bzSv_9=LxRk zX|dI2eD%6Sk{2_y7vuT)5mI;#f~YUX<;D0T4z45@4;glcel6=P9NfaD^Ag3G+A=rYqY?4)uZh*%#$GU5=!oap21CvMwPRj~2q$_jD>x zk)O1_7+?H;!y=UVO-8;mwyQiCPs{vO+N6Nqi?Py&Z=-LKv@6n5eWWqrPw#eZAr&gL z#_PR9_+8JLCO?YMy{J|)9uO|Yh0HQJO39++uz51IRIJNWa-Kl;hFG;f?hyWpa+d@f z{UWY861fFO&RB2Gm;#$(V|mgQck|LH$hj#)f_rrnqf5J!1vK?%TmwHtW?% zRKz1a&a@?s7QZ75Fol!GBuZIn)O8bVt;_jkYLd~SL57b~_y^X$F7dp$m2BsiX! z?>DbGJBklPdWB7^52npU13S_HeXS#$&|IXKaK3J2Bm*9N`+8YMKHx54L{p(e9;ey~ zu2>n%JCX(mVOp-ubvtpf=$LcSeJxr&VDFK+5tD8dAMgP)lJ}lLPV(vcJI6`Ova~b? zrtXJDRymloxX^ekOK8yo44r6mV*%X?BK6i&EGHr|>xXTiEk#|-ZXpBTuvT7D5WvN6$aiTd+)_%)L#y-)}V8%Xsx; zE2&cU6!S@}2dW6Qsj#<5jl09?+SyO(Pp}LRJT0_K$Lmw*BQ12a_>Pv5!W4|SBzlWn z9U8%r-Yzu;cIOv{vW8r|mD(dg@Q>!D)6ny52#8}inGidkc%JAmZ8t8s+Vbh(j!{9e z?2KsY$HiS6r&e_@d#7cx8F@*+)6KOD8%7aJR+lYUj^UNW>q$4U#uvefav7T_nnn4Q zTu`y*LY#x2WUy?+pr}jM1MTMeqq8i9ASZfN>XLj7mLu2O;&dVcOU=^G2+;&Rxl|aH zhn7yvFH@Nmw7d|1VI5pxj%P~cb!j<+7qPWO9`V4C6{Z)@x?V?WR2|8&CSsCUwO9Vp zvY3UqV#7&jZ>dt%-`ot9CS;i(h*y6GS02@$GyP5Qq6woF01NDmP5^<&CHGbUi8}s! zwdq774Lt*gXC3k9c(_8(dhreRG^WA}WbQTp`SwR$H*ZY5SA#u>%W_wG4xJMc zAJzNm3HF3Net?1@~|W0qZWy?8*5T=eN1rnh~2WMqV4Hktajx%R2?a%81< zcZ@|d*jmdT+Z~kjn}e|mj5BS{TKOb(DpQ1y1a+He1HCwlP2Wrl-CM#q>k1cSX_2cm zBUOEm2joB{SXm-tGmk1yW;bMQC9ptTI0X#Ayf><2gp+okd5ml1wRfiii+>!M?K6&c zC5oDthonLcs~o=5KCmDn7q(#_QB8mG7qIf(R@t-sMB$GuL^)+E6gSh@f2QHrkI`F zl8t(fj|~4koGIKDbE23iPL%LS^zQ}}P+cgankfS?Vt5qr$o4nNtEoA5b_nwFrYtK( zG`E(ViKgmm9mxoMrkO$w&ag5ZQtFy7*~yBt!|)7&!+4r0F`KX2kvu1@-`ri7+yhC^ z&8{NLc8kz@9`=p@2czZD$B#_d%VgL=DvNnwMS=FbP8GRKF(@A z<=Hjb79Kz{Ocrb_FJibJ*p^Fr6>vS$@OG5r_JJ`Hx7M}}4@n13%}+mdjACMv?0Th8 z^lAdvt2@Pd$2noqTWJq|CcAaCnAtA&E$QUSWb(-;Q)8wKZ<{*eq2LkV%@BT0sY-UR zITJQ&QOf4a@=rR4Iugdm)zrfGJT;YQ;ic-7k@LY@rt)xizbFrZoQp&%Q@yazdgK{% z%URgk7MPZ@tt6BTflU+HW|D`S*)_E?^E79ofS0Hz@tJu=!IKZ0A#Zt(Qyi?0C)DVYPS4bDt>(+O(Zbwq8B^FQxfG_eQ;e+3>x8 zE9(R_JGeSftvNX`_Wgke*30?;~t=~mjkPP&Q+6MoRE0lU>u2)oC^31F`I7Ixb_`{ayciDb7o7jJ3_NGHk5=l^*5+ zOeyLIh`F9p_UahgH*y}!Qrxlrcl%&0b{SLM&SU?&y?y`Vm#<$wy?wwiK>Xv=Z=b(? zeEabB9prug`03Lh-~Rae@#p7X@4tL~|Mc(sr}uB)-+z4h`Q`mTHpkm{j3_ThhT zAHRP8&3 z^d>jE05_9LCVjBun+b6UWSA|RIig|&kH*e#u|Vd6Vs6po%?;8B)P_6Id)(ikIdSN?2R}si8h_rIUZ4sPGZqTIwcW@stE?h8$)Gtt9 zZ@3+bL))qC4qKnXe$RoHzefP5*;=-kt=8AVVzwHVYgn&g!G;wZmTXwFVbLbGA=?qg zv0lS!4a+sG*Gw#_joEgwUo0t`iC7cC*zkt!LbI36gf;#S3`oG=fd+vxBEW?J83Jrb zw8P@GK!^Y%0+a}FA`#yKF#^m;GH75N)}thh13d!#2oNN|kN`yj97)D^ChAQU0ICEU zxd2&WN(0a(z?T4F0*py9*y0=DO@KH7<^-q{;7))%0rmvAlWGXSH$a~Ne*y#wFepHw z0ImYK3g9Y0qcp=5z5{H)6X!>XaxklL||Pk~nfm<5;>fLefC0k{R= z7JypRP;a;g@_|_es1=}AfLb?G;(&jETLEqjMj)UNkiG^}3-JxWt^m0L3Xp5Eam)d5E5NM)x0-%w>Lpc!eS^6GZUreT;H-eN0?rCjR=`>X>~d!=@yuQ9Kik`%fBqkRHj?yQOB?{G Cwmpvk literal 0 HcmV?d00001 diff --git a/research/current-rounded-scalar-tables/physical.py b/research/current-rounded-scalar-tables/physical.py new file mode 100644 index 0000000000..027b563887 --- /dev/null +++ b/research/current-rounded-scalar-tables/physical.py @@ -0,0 +1,147 @@ +"""Metered fixtures execute unchanged Controller.primitive and execute_table. + +Only fixture construction and post-run oracles inspect integer values/storage. +Prepared for @CubeJerry with substantial OpenAI assistance. Apache-2.0. +""" +from types import SimpleNamespace +from fractions import Fraction +from source_binding import need, vendor + +M = vendor("rounded_retained_lifecycle", "vendor/machine.py") + + +class RowCounter: + """Observer-only table lookup counter; returns the unchanged immutable row. + + It never receives a tape, input value or coefficient, and never changes + the instruction stream. Ordinary fixtures use the tuple directly. + """ + def __init__(self, rows): + self.rows, self.steps = rows, 0 + + def __getitem__(self, pc): + self.steps += 1 + return self.rows[pc] + + +class Tape: + def __init__(self, bits=(), origin=17, readonly=False): + self.origin = self.pos = origin + self.cells = {origin-1:M.LEFT, origin-2:91} + self.cells.update({origin+i:s for i,s in enumerate(bits)}) + self.readonly = readonly + self.actions = self.reads = self.writes = self.moves = 0 + self.highwater = origin+len(bits) + + def tick(self): + need(self.pos >= self.origin-1, "no ancestor access") + self.actions += 1; self.highwater = max(self.highwater,self.pos) + + def read(self): + self.tick(); self.reads += 1 + return self.cells.get(self.pos,M.BLANK) + + def write(self,s): + self.tick(); self.writes += 1 + need(not self.readonly and self.pos >= self.origin, "protected source/marker") + need(s in range(7), "physical alphabet") + self.cells[self.pos]=s + + def move(self,step): + self.tick(); self.moves += 1 + need(step in (-1,1), "unit physical movement") + self.pos += step + need(self.pos >= self.origin-1, "no ancestor crossing") + self.highwater=max(self.highwater,self.pos) + + def body(self): + end=self.origin + while self.cells.get(end,M.BLANK)!=M.BLANK: + end+=1 + return tuple(self.cells.get(k,M.BLANK) for k in range(self.origin,end)) + + def blank(self): + return all(v==M.BLANK for k,v in self.cells.items() if k>=self.origin) + + def protected(self): + return self.cells[self.origin-1]==M.LEFT and self.cells[self.origin-2]==91 + + +def encode_symbols(symbols): + return tuple((s>>k)&1 for s in symbols for k in (2,1,0)) + + +def symbols(values,width): + need(width>=1,"positive signed width") + out=[] + for n in values: + need(-(1<<(width-1))<=n<(1<<(width-1)),"signed fixture input") + out.extend((n>>k)&1 for k in range(width));out.append(2) + return tuple(out) + + +def decode(bits,width): + need(len(bits)%3==0,"whole physical codes") + syms=[4*bits[i]+2*bits[i+1]+bits[i+2] for i in range(0,len(bits),3)] + need(len(syms)%(width+1)==0,"whole components") + out=[] + for i in range(0,len(syms),width+1): + b=syms[i:i+width] + need(all(z in (0,1) for z in b) and syms[i+width]==2,"numeric result grammar") + out.append(sum(z<=1`, `p,h>=0` be integers, with one common component grid +`Delta=2^-F`. Every real and imaginary component of every arbitrary public +input is on this grid and has absolute value less than `2^h` at the stated +raw/root boundary. Owned INIT produces exact zero. Public inputs include +every helper, independently; no correlation or cancellation is assumed. +For the outer-wrapper extension below, D is the total selected factor +`D=q+R`: the q preprocessed coordinates and the remaining reference factor +R. Establishing the input p,h domain at the chosen external boundary is +separately paid. The q kernels must precede the later R-fibre computation, +as stipulated by the retained wrapper contract; the proof converts once +from the D-fibre norm to the R-fibre norm in the safe direction. + +For a selected set of `X` binary coordinates use the supremum, over complete +`X`-fibres, of the Euclidean norm on that fibre's `2^X` complex entries. +Write this as `||z||_X`. For complete nested factors, `||z||_R<=||z||_D` when +`R` is contained in `D`. If every component has error at most `Delta/2`, +then the error in this norm is at most + + eta_X = 2^((X-1)/2) Delta. + +An input with the component bound above has fibre norm less than + + B_root = 2^(h+(D+1)/2). + +The norm contracts are explicit: + +* Each completed native frame change, Q query and D-mask job is the intended + complete-fibre unitary, with the absolute phases and column multiplicities + required by the inherited source. This is a semantic premise, not a + consequence of the finite frame-span check. +* Q and the D_j commute where the frozen exact endpoint uses that identity, + and `Q^4=I`. Therefore + + Lambda_s = ((1+s i) I + (1-s i) Q^2)/2, s in {-1,+1}, + + is unitary: the unitary involution Q^2 has eigenvalues ±1, and Lambda_s + has eigenvalues 1 and s i. In particular it is not `(I+Q^2)/2`. +* A completed primitive with ideal map T has a **total** contract on every + input in its declared grid/radius domain: it returns a grid value differing + from T of that actual input by at most its declared epsilon. The contract + may be nonlinear and its residual may depend adversarially on the input. + It must cover actual inputs to each recursive child, not just ideal ones. +* Scalar rounding, when invoked, is the total function + + RDiv_(a/b)(m) = floor((a m + floor(b/2))/b), gcd(a,b)=1, b>0. + + Its scalar residual has absolute value at most 1/2. Integer coefficients + are exact. For ADD, round the product and then add the old target exactly; + equivalently add the integer `b*old_target` inside the numerator. Negative + values use mathematical floor. Upward ties mean RDiv is not an odd map. +* Lambda needs its own completed primitive with residual at most eta_X, + for example exact formation of its common denominator-two numerator + followed by one rounding per component, with an exact Q^2 monomial + service. This is an explicit contract; no such physical table is installed + here. An implementation which rounds twice must supply the resulting + larger residual instead. + +For the local estimates take `epsilon>=eta_X`, and bound each completed +child, QUERY, IDLE and Lambda residual by epsilon. Arithmetic and native +operations must run to their completed source cut before another field +reads them. No assertion that partially constructed Clifford outputs are +Clifford vectors is used. Scalar numerator temporaries are handled separately +in section 6; arbitrary internals of a native provider are inherited +obligations, not unnamed source cuts certified by this package. + +**Why this is uniform in column multiplicity.** Tensor products of unitary +complete-fibre maps have norm one. Rational scalar coefficients are applied +once and are not raised to a tensor power. The only dimension factor is the +single conversion `eta_X` at a componentwise rounding site. These facts hold +for every positive column multiplicity under the complete-fibre premise. +Coordinate supremum norms do not have this property: the exact Gaussian row +`((1+i)/2,(1-i)/2)` sends `(1,i)` to `1+i`, of modulus sqrt(2). A phase error +may preserve norm one, so a norm certificate cannot certify native phase +correctness. + +## 3. Native prefix and suffix certificate + +For each live native register r carry two nonnegative rational numbers +`m_r,e_r`. Initially m=1 on every public input and m=0 on owned labels; +e=0 everywhere. At each source event use: + +| Source event | Mass update | Defect update | +|---|---|---| +| MOVE r | m_r unchanged | e_r <- e_r+1 | +| ADD/COPY r,s,q | m_r <- m_r+abs(q)m_s | e_r <- e_r+abs(q)e_s+1_(q noninteger) | +| SCALE r,q | m_r <- abs(q)m_r | e_r <- abs(q)e_r+1_(q noninteger) | +| INIT/CLEAR r | m_r <- 0 | e_r <- 0 | + +COPY in this source is additive COPY into freshly initialized zero. The +checker proves that source precondition. It does not erase an arbitrary +target's earlier residual by fiat. Register frames agree at scalar contacts; +each MOVE starts at its declared current frame and uses the declared public +or owned direction. A separate exact span/lifetime scan checks all of these +syntactic premises and the final public frame list. + +By chronological induction, at every source cut the exact ideal value has +norm at most `m_r B`, and the realized-minus-ideal value has norm at most +`e_r epsilon`, for input norms at most B. MOVE preserves norms by the stated +unitary contract. ADD and SCALE use the triangle inequality. INIT/CLEAR kill +all earlier error channels. Also track the product `abs(q)m_s` and its defect +bound before every ADD/COPY; rounded product residuals are bounded by the +corresponding final target bound, whose other summands are nonnegative. + +This positive propagation deliberately forgets all cancellations. It is a +valid, loose bound rather than a claim that these extrema are attained by a +choice of actual unitary inputs. In particular the large constants below do +not contradict the smaller cancellation-aware exact-grid row estimates. + +The exact rational scan of all 71,144 events gives: + +| Bound | Meaning | Strict bound | +|---|---|---:| +| M_W | all stored fields and pre-ADD products | 2^237 | +| Sigma_W | all-cut propagated unit residual mass | 2^235 | +| Gamma_W | returned public residual mass | 2^235 | + +The maximum prefix is register 1443 after event 71119; the returned defect +maximum is the same register after the whole word. `ENVELOPES.json` records +the exact rational values and witnesses, not floating logarithms. There are +6,323 MOVE sites and 25,923 noninteger scalar sites, including 4,143 odd +scalar divisions. There is no multiplication by the number of public fields +because the contract takes a maximum over fields. + +**Separate critical check.** `native_adjoint` starts a covector at each +reported maximum and runs the transpose recurrence backwards. Reverse ADD +adds `abs(q)*lambda_target` to the source covector; reverse SCALE multiplies +its covector; reverse INIT/CLEAR zeros it. A residual site contributes the +current target covector. The sum on initial public inputs reproduces M_W, +and the sum on residual sites reproduces Sigma_W/Gamma_W. There are 24,507 +nonzero residual-site contributions at the worst witness. This is a +separately coded reverse calculation, not an independent physical execution +or formal proof-kernel check. The forward induction is the mathematical +reason a finite exact source scan proves a statement about all inputs. + +## 4. Full caller and every expanded native cut + +Caller scalar operations use the same positive recurrence. SWAP permutes the +two pairs of bounds. LAMBDA and IDLE leave mass unchanged and add one unit +of residual. QUERY adds the source mass/error to the target and adds one +residual. This uses the complete query contract, including restoration; +it does not treat the query copy/erase lifecycle as free. + +For a J contact, the frozen exact local endpoint on the six symbolic main +roles is, with unitary factors suppressed in the positive bound, + + A: (u,v,x,y) -> (u, v+Q^-1 u, x-Q y, y), then D_j; + B: (s,t) -> (s-Q t, (Q^-1 s+t)/2), then D_j. + +Use the positive endpoint matrix + + (u,v,x,y,s,t) -> (u, v+u, x+y, y, s+t, (s+t)/2) + +on old mass/error values simultaneously, then add Gamma_W to each returned +main's defect coefficient. Helpers return their own unitary-transformed +input plus at most Gamma_W epsilon. Each helper family belongs to exactly +one joint stage, so it starts with mass bound 1 and no prior raw-caller +defect. This does not identify distinct helpers or suppose they vanish. + +At that J entrance let `m_in=max(1, the six main mass bounds)` and +`e_in=max(the six main defect bounds)`. Every internal native cut obeys + + ideal norm <= M_W m_in B; + defect norm <= (M_W e_in + Sigma_W) epsilon. + +These inequalities include prior caller errors arriving at a native call; +restarting the native word with zero error on its mains would be invalid. +They also include all fresh arbitrary helper inputs. The source scan checks +J stages 1 through 18 in order, type-local six-role bindings and 400 actual +main fields/1,061 helper fields at each contact. + +For the actual 3,095-event caller, the results are: + +| Bound | Strict bound | +|---|---:| +| Caller-only mass | 2^121 | +| Caller-only all-cut defect coefficient | 2^342 | +| Largest J entrance mass | 2^119 | +| Largest J entrance defect coefficient | 2^340 | +| **M_ctx**, including native interior products | **2^355** | +| **Sigma_ctx**, including native interior products | **2^576** | +| **Gamma_ctx**, all returned public fields | **2^337** | + +The worst J entrance is stage 18, caller event 2958. The caller-only peak is +role 38 at event 3049; the final defect maximum is role 75. Full exact +fractions, cuts and separate caller-adjoint identities are in the receipt. +The reverse J rule adds `sum(lambda_r)*Gamma_W` and transposes the six-role +positive endpoint matrix. It independently reproduces the caller peak, +entrance and final coefficients, separating J residuals from primitive +residuals. No old 67,079-event or previous-caller constant is reused. + +Thus this concrete expanded raw context has the all-input contract + + output defect <= Gamma_ctx epsilon; + every certified source cut <= M_ctx B + Sigma_ctx epsilon. + +The statement is uniform for all positive columns under section 2's operator +and completion premises. It is not a physical tape execution of the caller. + +## 5. Retained recursive precision guard, explicitly conditional + +This section proves a replacement-constant implication for the structural +organization S1--S5 of the pinned rounded note. It does **not** independently +establish those compiler, whole-job, ownership or normalization premises. +In particular retain the following: at most K_star unfinished raw contexts +per ordinary level; at most ell ordinary levels; at most K_star/v flow +classes; at most m(H+1) two-job frames; complete sequential splitting and +completion on disjoint axes with norm-one suffixes; a rank-e sequential base +with e=1, using `ell<=D/N`. + +The inherited split/completion sizes have `R<=153^v`, `J=11^v`, `L=12^v`. +Exactly, + + (R/J+1)(L/J+2) < 2^(6v). + +For example `(153/11)^v+1<2*16^v` and +`(12/11)^v+2<3*2^v`, and `6*32^v<64^v` for v>=3. The verifier also checks +the integer inequality without logarithms. Since Gamma_ctx<2^337, the +per-context equivalent gain after this charge has logarithm less than 343. +The positive noncontext overhead + + m(H+1)+H+log2(m) <= K_star + +follows from the checked stronger bound with `log2(m)<8v`. Since +`log2(M_ctx+1)<356`, the retained path accounting yields + + X(D) = 2 log2(D+3) + 344 t, + L(D) = 1 + 357 t, + E_root <= 2^((D-1)/2 - F + X(D)), + admitted input radius <= B_root * 2^L(D). + +These are convenient strict upper envelopes, not optimal constants. + +**Admission is not circular.** Keep raw contexts as individual nodes in +the defect tree; do not collapse their all-cut coefficients into a silently +larger unreported Sigma. A split/completion node has unitary prefixes and +at most `m+2` sequential child residuals. A frame has two; a base has fewer +than m; a remainder fewer than N. The wrapper, if grouped, has at most D+3. +Therefore for D>=N a valid coarse bound is + + max Sigma_node <= N (D+3). + +This deliberately retains the wrapper's D dependence. A wrapper cannot in +general be bounded by N merely because the local remainder is below N. +For every node the chronological argument is: if earlier child contracts +held, its local error term is at most `Sigma_node E_root`; if this is at +most 1<=B_root, the next child lies in the advertised enlarged radius. +Its total contract applies, allowing the induction to continue. + +Take g=0 for D>=19 and g=5 for 1<=D<19, and set + + F=p+D+g, J=h+D+2, W=F+J+1=p+h+2D+3+g. + +For D>=N, `344t=16, its left side is less +than `4k+7<=2^(k-3)<=D/8`; the elementary integer induction is recorded. +Hence + + X(D)+H+log2(D+3) < D/4 <= (D-1)/2. + +It follows that `E_root*N*(D+3)<=2^(-p-1)<=1`, closing the admission guard, +and in particular `E_root<=2^(-p-1)`. The radius exponent satisfies + + h+(D+1)/2+L(D) < h+D+2 = J, + +so every certified signed component lies strictly inside the W-bit range +on grid 2^-F. + +If ell=0, the retained structure has no raw contexts or upper ordinary +frames; only the sequential base/wrapper estimate remains. The guard is +equivalent to + + (D+3)^4 <= 2^(D+2g-1). + +The verifier checks D=1,...,19 exactly. It continues for D>=19 because +`((D+4)/(D+3))^4<2` there and decreases. The control g=4 at D=3 fails. +Moreover `(D+3)/2<=2^((D+1)/2)`, so the direct sequential stored bound is +at most `2 B_root`, again strictly inside 2^J. This concludes the conditional +common-grid, error and signed-admission implication for all D>=1. + +The output error is a complex-modulus bound because the fibre norm bounds +each coordinate modulus. It does not preserve a strict unit-disk boundary: +the outer shrink/quantizer and analytic recovery changes discussed in the +rounded note still need their own full source and cost admission. + +## 6. Integer temporaries and complete cost boundary + +The actual native source has maximum numerator 14,729,531, at event 252, +and maximum denominator 393,216, at event 2798. It has 864 coefficients +whose numerators exceed 40,864. Thus the old rounded note's 16-bit numerator +premise is false for this source. The new safe bound is + + abs(a)<2^24, b<2^19, temporary signed width W+26. + +Indeed a signed W-bit input has absolute value at most 2^(W-1), so +`abs(a*m)<2^(W+23)`. The rounding offset is below 2^18. Even forming an +ADD numerator `b*target+a*source+floor(b/2)` has absolute value below +`2^(W+25)`, the signed magnitude limit of W+26 bits, with room for sign +extension/carry. Lambda's denominator-two numerator uses fewer such bits. +An output width check is justified by section 5's source-cut bound, not by +merely enlarging its temporary. Variable power-of-two normalization divisors +can be implemented by a bit drop and carry, but their actual service and +schedule remain inherited contracts. + +This width calculation is not a construction of total RDiv on the retained +machine. The existing exact table has different rejection semantics. +The rounded note outlines multiply/offset, a most-significant-first signed +division pass and possible reversals; a literal table must still account +for all those passes, head resets, full source and target access, staging, +restoration, owned allocation/return and erasure of initially dirty and +historically longer backing. Old parked ancestors and simultaneous children +remain live. None of them is removed by a source norm proof. + +An optimistic positive tariff screen is nevertheless useful. Starting from +the published QUERY-only conditional total 826,265,904, keep its 2,734,992 +exact 1125-conversion charge conservatively even though the unscaled rounded +mode does not use it. Declare the additional arithmetic model + + per noninteger a/b: + 4 (bit_length(b)+1) [1 + 3*1_(oddpart(b)>1)]. + +This prices one offset scan at every noninteger scalar and three extra +scans at an odd divisor, in the prior raw tariff's scan unit. It is a +declared model, not a measured physical guarantee. Use it also for outer +caller scalars and once for each denominator-two Lambda offset. The exact +current census is: + +| Positive item | Charge in this declared model | +|---|---:| +| Native surcharge per call | 941,128 | +| All 18 native calls | 16,940,304 | +| Outer scalar offsets at all actual ports | 51,520 | +| Outer Lambda offsets at all actual ports | 173,760 | +| Total extra | 17,165,584 | +| Baseline plus extra | 843,431,488 | +| Remaining below inherited 10^9 cap | 156,568,512 | + +There is no omitted field-replication factor in this **model census**. QUERY +and IDLE completed-child charges are already in the baseline, and the +18 native words, 416 outer QUERY lifetimes, 54 local owned lifetimes per +call and peak 43 local owned banks remain. Their complete positive costs +must remain in an actual implementation invoice. A finite table/code +construction, authenticated source decoding and any denominator setup are +additional fixed-template work, with positive finite constants; they are +not charged as zero by this package. The complete physical runtime has the +form of those fixed setup costs plus the actual full scans and historical +backing terms, each on width W+26. We do not have their certified coefficient +and therefore do **not** infer the cap, recurrence or a new kappa for the +rounded implementation from this optimistic table. + +## 7. An actual source cut where the exact service cannot implement the contract + +The five consecutive zero-based native events are authenticated literally: + + 37476 MOVE 697 1042 -> 591 public + 37477 MOVE 1334 1042 -> 1046 public + 37478 MOVE 901 565 -> 591 public + 37479 SCALE 1334 1/2 frame1046 + 37480 SCALE 697 -2/3 frame591 + +Start all arbitrary public inputs at zero and every earlier primitive +residual at zero. The ideal execution is zero. At the completed MOVE37476, +allow the child to return one quantum Delta in one real component of field +697; all other components and all subsequent child residuals are zero. +This is an allowed format output under a total child contract with +epsilon>=Delta and adequate radius. Such a contract is allowed by the +eta_X model for X>=1. The three intervening events do not access field697. + +At SCALE37480 its numerator is 1. The exact result would have numerator +`-2/3`, which is not an integer. Therefore **for every common grid precision +F**, the retained checked exact SCALE rejects this permitted input. Making +Delta smaller reduces the absolute defect but never removes the +divisibility obstruction. This is a countermodel to an implication from +the abstract rounded-child contract to exact-service admission. It is +**not evidence that a retained MOVE implementation actually produces this +one-quantum defect**. + +The total RDiv alternative returns numerator -1, whose residual is -1/3 +quantum; that is within its half-quantum contract. An exact child, by +contrast, returns zero here and the checked exact scalar succeeds. Thus +the countermodel does not refute the ideal exact-grid theorem or the +S=1125 prefix proof; it locates the extra interface premise needed to move +between exact and rounded modes. + +`boundary.py` compiles the frozen generic `SCALE(-2/3)` finite table and +executes it through the unchanged lifecycle `execute_table`. On widths +3 through 9 it checks zero, ±3, 1, and a late-component `(3,1)` failure: +35 cases, 21 accepts and 14 rejects, with a separate integer +divisibility/range oracle. Rejections leave every public component +unchanged; success restores all heads and erases initially dirty private +work. Rejected work/head positions may be dirty/unrestored: no rollback or +successful caller continuation is claimed. This bounded physical check +tests the existing generic kernel's semantics, not all current native +MOVEs or an installed #6936 occurrence-token binder. + +## 8. Verification, limits and next obligations + +Run `python3 -I -B research/query-only-precision-envelope/verify.py --suite all`. +Expected output is four `PASS_QUERY_ONLY_PRECISION_*` lines followed by +`AUTHENTICATED_SOURCE_FILES 11`. Registered normal and `-O` suites compare +all deterministic receipts. Source guards reject wrong MOVE source/owner, +a dependent frame basis, a public CLEAR, a changed J order and QSELF +reintroduction. Exact norm controls reject coordinate-sup contraction, +the false projector Lambda and omission of the Q^4 premise. A unitary Q +of `(3+4i)/5` gives Lambda squared norm 49/25, so unitarity of Q alone +does not justify the Lambda step. RDiv tie and residual-erasure controls +test other critical distinctions. + +The independent methods here are induction plus exact positive source +propagation, reverse covector checks, exact integer guard inequalities and +a direct integer oracle against an unchanged physical scalar executor. +All were prepared with AI assistance. They are not independent human review +or kernel-checked proofs. A separately supplied lead review, when present, +is recorded with its actual scope and file hashes in `REVIEW.md`. + +Open next questions: + +* Construct and install a total signed RDiv service with the actual source + token/header binding, W+26 temporaries, full lifecycle and historical + backing costs. Checked exact division is not that service. +* Bind all complete-fibre norm/error contracts, including Lambda's chosen + one-rounding semantics and native absolute phases, to literal all-column + providers. A phase error can escape every norm check here. +* Independently discharge the retained compiler S1--S5 and ownership + interfaces, or replace them with verified source-to-physical composition. +* Complete the actual physical tariff and outer shrink/analytic recovery + changes before using a rounded implementation in a complete bound. + +This package closes a source-specific numerical-envelope calculation and +reduces the precision seam to explicit total-service and inherited compiler +premises. It does not claim those premises are established. diff --git a/research/current-rounded-scalar-tables/reference/ROUNDED-DIVISION-6937.md b/research/current-rounded-scalar-tables/reference/ROUNDED-DIVISION-6937.md new file mode 100644 index 0000000000..ed609f6a0e --- /dev/null +++ b/research/current-rounded-scalar-tables/reference/ROUNDED-DIVISION-6937.md @@ -0,0 +1,396 @@ +# Rounded division for a native word: a defect theorem (second version) + +Tags. **[P]** proved or computed here. **[Q]** read in the named source. **[judgement]** judgement. Sections 1 to 7 are written to go into a package note as they stand. Readers so far: the author, one second reading, one numerical run. All are AI sessions of ours. No maintainer has seen this. + +**Result.** Rounded division fits. With no checks and no odd root scale, the word's output differs from its exact action by at most an explicit defect, on any child that meets a norm contract, including nonlinear children. Through the whole recursion the defect stays inside the guard budget of #6901: `F = p+D`, `W = p+h+2D+3` for `D >= 19`, 5 more bits below that. Temporaries are `W+18`. Exactness becomes approximation, so the outer Proposition needs one extra scan and new constants (section 6). Everything from the Lemma of `06-transforms.tex` onward then fits with no change to `p` or any parameter. `kappa`, `T`, `P`, `S` do not move. Rounded mode does need the caller rewrite of #6912 if the conservative raw reading is kept (section 7). + +**Conditional on:** the compiler structure statements S1 to S5, quoted from #6901, FINITE-PRECOMPILATION and p7-TENSOR and not re-derived; the all-`f` native equalities on the per-port word, as for the exact theorem. + +## 1. Definitions + +**Format.** `u = 2^-F`. A stored component is `u` times a signed integer. Format `(F,J)` means every stored component has absolute value below `2^J`. + +**Rounded division.** For an integer numerator `m` and a scalar `a/b` in lowest terms with `b > 0`, + + RDiv_{a/b}(m) = floor( (a*m + floor(b/2)) / b ), + +applied separately to real and imaginary components. For a C pair it is applied to the complete four-term numerators, never to separate summands. Integer `q` needs no division and stays exact. + +**Two fibre norms.** Let `D = q + R` be the selected axes of #6901: `q` individually preprocessed, `R` kept as the one reference factor of all later pieces. For a field `y`, an `X`-fibre (`X` = `D` or `R`) is the set of `2^X` coordinates with every label other than those `X` selected bits fixed (external row, spectators, polynomial index). Then + + ||y||_X = max over X-fibres of ( sum over the fibre of |y_i|^2 )^(1/2). + +An `R`-fibre lies inside a `D`-fibre, so `||y||_R <= ||y||_D`. The site unit is `eta_X = 2^((X-1)/2) * u`, and `eta_R <= eta_D`. When `q = 0` the two coincide. Unmarked `||.||` below means `||.||_R`, the recursion's norm. + +**Word.** Registers carry a field and a chart. Events are: +- MOVE `a -> b` on register `s`: exact operator `D_b D_a^-1`, realized by a child; +- ADD or COPY `t += q s`, with `s` and `t` in a common chart (COPY is an ADD into an owned zero); +- SCALE `t *= q`; +- INIT and CLEAR, which set an owned register to exact zero. + +`R_{r,k}` is the exact row matrix: the ideal output of public row `r` is `T_r x = sum_k R_{r,k} D_{final(r)} D_{init(k)}^-1 x_k`. + +**Suffix coefficients.** `rho^(j)_{r,s}` is the coefficient of register `s`, taken just after event `j`, in final public row `r`, computed by running the scalar word backward from the identity on public rows and zero on owned rows. A CLEAR or INIT zeroes that register's column. + +**Sites.** A site is a MOVE, or an ADD, COPY or SCALE with non-integer `q`. Its register `s_j` is the one it changes. Gains: + + Gamma_W = max_r sum_{sites j} |rho^(j)_{r,s_j}| + M_W = largest l1 mass of a stored row or pre-ADD product, over all prefixes + Sigma_W = largest, over all cuts c and registers x, of sum_{sites j<=c} |segment coefficient of site j in x at c| + +**Child contract `C(eps,B)`.** For every input in format with `||x|| <= B`, the child returns `y` in format with `||y - T x|| <= eps`. No linearity is assumed. Inputs need not be reachable or lie on any coarser grid. + +## 2. Statements + +**Lemma 1 (RDiv) [P].** +- (a) `RDiv` is total: it has no check and no reject. +- (b) `|RDiv_{a/b}(m) - a*m/b| <= 1/2`, and ties go up. So it is the host rule `Q_F(q x)` with upward ties of #6900 and #6891. It is not odd: `RDiv(-m) != -RDiv(m)` at a tie. +- (c) If `b` divides `a*m`, it is the exact quotient. +- (d) Write `b = 2^x * o`, `o` odd. Then `RDiv` is: a least-significant-first pass for `n = a*m + floor(b/2)`; if `o > 1`, one most-significant-first two's-complement long division by `o`, remainder in `[0,o)`, starting at `o-1` for a negative value and `0` otherwise; then `x` low bits dropped. If `o = 1` it is one least-significant-first pass with a carry, and needs no second pass. This holds also for non-constant `b = 2^k`, with the offset placed by a work-tape copy. +- (e) It uses no random bits. +- (f) Its complex residual on one fibre has norm at most `eta_X` for that fibre size. + +**Theorem A (one word) [P].** Suppose every frame is unitary on every `R`-fibre and every ADD has a common chart. Run the word on any input, with any realized site residuals `n_j` (a child's residual against the exact operator applied to its actual input, or a division's rounding residual). Then for every public row `r`, + + ||yhat_r - T_r x|| <= sum_{sites j} |rho^(j)_{r,s_j}| * ||n_j|| <= Gamma_W * max_j ||n_j||. + +Also, at every cut and register `c`, the stored field satisfies `||z_c|| <= M_W * max_k||x_k|| + Sigma_W * max_j||n_j||`. + +**Theorem B (defect tree) [P].** Let a computation be a finite tree whose nodes carry a gain `Gamma_v >= 1` and a mass bound `M_v >= 1` with these two properties. The node's output defect is at most `Gamma_v * max(child defects, eta)`. Every stored field is at most `M_v * B + Sigma_v * E` on input norm `B`. Put `E = eta * max_path prod Gamma_v` and suppose `E * max_v Sigma_v <= 1 <= B_root`. Then, with no circularity: +- every child input has norm at most `B_root * prod_{path}(M_v+1)`; +- the root defect is at most `E`. + +**Theorem C (recursion) [P, given S1 to S5].** Under the structure statements below, let `t = K_star * ell`, `ell = floor(log_N D)`, `N = 2^H`, and + + X(D) = 2*log2(D+3) + ell * K_star * (log2 G + 1), G = the per-context gain of section 5, + L(D) = 1 + ell * K_star * (log2 (M_ctx+1) + 1). + +Replace every division by `RDiv`. Then the root output has `||out - T x||_R <= 2^(X(D) + (D-1)/2 - F)`, and no component exceeds `2^(h + (D+1)/2 + L(D))`. + +**Corollary (the #6901 budget) [P, given S1 to S5 and the constants of section 5].** If `c * K_star < 2^H` with `c = 1100`, then for all `D >= 1` and `p, h >= 0`: + + F = p + D + g, J = h + D + 2, W = F + J + 1 = p + h + 2D + 3 + g, temporaries W + 18, + +with `g = 0` for `D >= 19` and `g = 5` below, suffices: execution never overflows, never rejects, and every output coefficient has complex modulus error at most `2^(-p-1)`. + +**Proposition (relation to the exact theorem) [P].** If children are exact, the word carries the odd root scale with a valid certificate, and the grid is fine enough, every `n_j = 0` by Lemma 1(c). Theorem A then reads as equality. So one circuit serves both modes only with the root-scale step added and that finer grid. Without them the rounded circuit is a different execution and no longer detects a truncated child. + +Structure statements, all **[Q]**, none re-derived here: +- **S1.** A path has at most `K_star = v*m*(H+1)^2` unfinished raw contexts per ordinary node and at most `ell` unfinished ordinary nodes (#6901 eq (4a), and its lines 191-193). Those contexts sit in at most `m*(H+1)^2` flow classes, each with at most `v` contexts. +- **S2.** A path has at most `m*(H+1)` nonbase compiler frames per ordinary node (#6901 lines 176-178). A frame is a complement followed by a flow on the same array (FINITE-PRECOMPILATION sec 4), so it has 2 sequential jobs. +- **S3.** A product runs each paid position of U as a complete run of V on the owners (p7-TENSOR sec 1). After the product, each role of rank `K < L = b^v` receives a completion on `L-K` disjoint axes (sec 2). Then every paid rank `R > J = c^v`, and every completion likewise, is replaced by consecutive jobs on disjoint axes of ranks `J,...,J,r`, kept inside the original whole-job normalizers (sec 3). Route adapters are monomial maps with unit quadratic phases and role permutations (FINITE-PRECOMPILATION sec 1 item 3), so they are exact on the grid and norm-preserving. Normalizers are a separate binding (FINITE sec 7; #6901 line 62, "monomial/positive-job"): see the weaker reading in section 9. +- **S3a.** Below the compiler's base range a rank `e` uses the ordinary sequential program, `P_e = e` (FINITE sec 4). It has no raw context (#6901 line 151), but it is `e` sequential leaves. +- **S4.** Every operator composes to a Gaussian-dyadic Clifford on the same root factor, per external row, with origins moving only among complete fibres (#6901 sec 4, eq (5)). +- **S5.** An ordinary node `e = N f + r` is a rank-`N` program at column `f` plus `r < N` direct stages. The root wrapper adds at most `D+3` sequential kernels, pieces and normalization steps, all of gain at most 1 (#6901 lines 330-378). The `q` kernels run first and their selected bits are disjoint from all later ones (`05-layers.tex` lines 620-627). The base is at most `f` direct C stages. CLEAR and INIT give exact zero, the inherited premise. + +## 3. Proofs + +**Lemma 1.** Write `a m = b Q + rho'` with `0 <= rho' < b`. Then `floor((a m + floor(b/2))/b) = Q + [rho' + floor(b/2) >= b]`. For odd `b` this rounds up exactly when `rho' > b/2`, and no tie exists. For even `b` it rounds up exactly when `rho' >= b/2`. That gives (b) and (c). For (d), multiplication by a constant plus a constant is a carry automaton. Nested floors give `floor(n/b) = floor(floor(n/o)/2^x)`, long division by `o` needs only the remainder as state, and a two's-complement prefix of all ones is the value `-1`, whose floor quotient is `-1` with remainder `o-1`. For (f), each component errs by at most `u/2`, so a complex coordinate errs by at most `u/sqrt2`, and a fibre has `2^X` coordinates: `2^(X/2) * u/sqrt2 = eta_X`. (e) is plain. An exhaustive small-width run of the automaton agrees (section 8). + +**Theorem A.** Let `A_j` be the exact linear map of event `j` on the whole register state, and let `z_j` be the actual state. By definition of the residual, + + z_j = A_j z_(j-1) + n_j, so z_M = A_M...A_1 z_0 + sum_j A_M...A_(j+1) n_j. (1) + +This is an identity about realized values. It holds for nonlinear children and rounders, because each residual is measured on the actual input of its site. No two rounded trajectories are compared, so no Lipschitz claim is used. This is the recurrence of #6891 PROOF sec 3. + +By the common-frame identity of `03-motifs.tex` (lines 168-177), the suffix `A_M...A_(j+1)` started from an arbitrary state in the charts at cut `j` equals `D_out * S_suffix * D_cut^-1`, where `S_suffix` is the scalar suffix and acts pointwise. Its `(r,s)` block is therefore + + rho^(j)_{r,s} * D_final(r) * D_{v_j(s)}^-1. + +Both frames are unitary on root fibres (S4), and the operator preserves the fibre decomposition. So the operator norm of that block in the fibre norm is exactly `|rho^(j)_{r,s}|`. Rounding residuals live in stored coordinates, and the transport is a unitary between stored coordinates, so no other basis enters. Taking norms in (1), with `n_j` supported on `s_j`, gives the first display. The same identity between two cuts, with the scalar segment in place of the suffix, gives the stored bound. INIT and CLEAR write exact zero, so a residual dies there, and that matches the zero column. COPY keeps the target's column, so an inherited residual in the target is not erased. Here that column is zero only because the INIT before it wrote exact zero. + +The theorem needs the `R`-fibre: a `D`-fibre spans several role fields after the split `u = bg + w`, and the register-wise suffix does not apply to it. + +**Theorem B.** Induct along execution order, not along the tree. Suppose every child called so far met its contract. Then every stored field so far obeys the mass bound with defect term at most `Sigma_v * E <= 1 <= B`, so it is at most `(M_v+1) B`. The next child's input is therefore admitted at `(M_v+1) B`, and its contract can be used. The defect bound follows by bottom-up induction: `eps_v <= Gamma_v max(eps_c, eta)`, and a leaf has `eps = eta`, since a rounding site is `eta` by Lemma 1(f). This is the admission argument of #6891 eq (5). + +**Theorem C.** Exact debt resets at a completed job. Defects do not. So sequential multiplicity must be counted as gain, separately from nesting. Assign nodes along a path as follows. +1. *Raw context.* One raw unit is a caller node over a word node. By Theorem A applied to each, with the `J` sites of the caller fed by the word, its gain is at most `g_J * Gamma_W + g_S + g_I` (section 5). +2. *Flow class.* A `v`-fold product has `v` contexts, and by S3 its paid position is the run of the next factor, so gains multiply factor by factor. A path through the class also passes one split paid position, at most `R/J + 1` consecutive disjoint-axis jobs, each followed by a unitary suffix. The completion runs after the entire product, at most `L/J + 1` pieces with gain 1 each. So the class gain is at most `(g_ctx)^v (R/J+1) + (L/J+1)`. The split charge belongs to the class, not the context. Stored fields inside a split are unitary images plus accumulated defect, so `M` does not grow, and `Sigma` of this node is at most `R/J + 1` plus the context value. +3. *Compiler frame.* An array receives a complement job, then a source slot. By S3 the adapters contribute no residual. The suffix after each is a unitary job on that array, so `eps_frame <= eps_complement + eps_flow`, gain 2, `M+1 = 2`. +4. *Class unit.* A unit's paid round is the matching target output of the child class, or a completed exit batch. In both cases the contract applies to the field's actual value. Disjoint simultaneous copies add nothing, since the norm is a supremum over fields, and replication factors do not enter. A correlated owned center is one field with an actual value, and the contract covers it. +5. *Small-rank base.* By S3a, gain `e` and `Sigma <= e`, one per ordinary node on a path. With `e < m` this is `log2 m` bits. If the base range reached any rank below `N` it would be at most `H` bits, and the count below still holds. +6. *Ordinary node.* The remainder is at most `r < N` sequential sites of gain 1, so `H` bits, and `Sigma <= N`. +7. *Wrapper.* First the `q` preprocessed kernels, in `||.||_D` with unit `eta_D`: each is unitary on `D`-fibres, on the unsplit field. Then convert once by `||.||_R <= ||.||_D`. The order matters and is the safe direction, because the kernels come first (S5). All later pieces use Theorem A and B in `||.||_R`, with `eta_R <= eta_D`. Normalization shifts and phases contract. Padded rows end within `E` of zero and are then deleted, and nothing reads them after that. So the `F`, `J` and `E` budgets hold with `d = D`. + +By S1, S2 and items 2, 5, 6, the bits on one path per ordinary node are at most + + K_star * log2 g_ctx + (K_star/v) * log2((R/J+1)(L/J+2)) + m(H+1) + H + log2 m. + +Define `log2 G` as `log2 g_ctx + log2((R/J+1)(L/J+2))/v`. The last three terms are at most `K_star`. This gives `K_star (log2 G + 1)` per node. The base contributes at most `log2 D` and the wrapper at most `log2(D+3)`, which gives `X(D)`. Mass is the same count with `M_v`: frames, base, split and remainder nodes have `M+1 = 2`, one bit each, and the total is inside `L(D)`. Apply Theorem B. The hypothesis `E * Sigma <= 1` is checked in the corollary. + +**Corollary.** Take `log2 G <= 129`, `log2(M_ctx+1) <= 151` and `log2 max_v Sigma_v <= H` (section 5). + +*Case `ell >= 1`, so `D >= N`.* Since `k <= 2^(k-1) <= N^(k-1)`, `ell <= D/N` (#6901 lines 302-304). With `c = 1100`: +- `ell * K_star * 130 <= 130 D/1100 < D/8`, so `X(D) + H <= (D-1)/2`, since `2 log2(D+3) + H` is negligible at `D >= N = 2^H`. This gives `E <= 2^(-p-1-H)`, so `E * Sigma <= 1`. +- `ell * K_star * 152 + 1 <= 152 D/1100 + 1 <= floor(D/2)`, so `h + (D+1)/2 + L(D) < h + D + 2 = J`. + +*Case `ell = 0`.* There are no contexts, no splits and no ordinary node above the base. `X(D) = 2 log2(D+3)`, and `X(D) <= (D-1)/2 + g` with the stated `g`: the largest deficit is 4.17 bits at `D = 3`, and `g = 0` works from `D = 19` on. The stored field is at most `B + (D+3) E <= 2B`, because `(D+3)/2 <= 2^((D+1)/2) <= B_root`. + +In both cases `E <= 2^((D-1)/2 + X(D) - p - D - g) <= 2^(-p-1)`. Coordinate modulus is at most fibre norm, so the error bound holds as a complex modulus, not only per component. + +*Temporaries.* `|a| <= 40,864 < 2^16` on the word and at most 256 in the caller, with a carry and a sign. The offset `floor(b/2)` is at most 20,480 for `b <= 40,960`, which is below `2^(W+15)`, since `W >= 5`. So `W+18` suffices. The wrapper's normalization shift and the outer shrink of section 6 have non-constant `b = 2^k`, and they are bit drops with a carry and need no multiplier width. ∎ + +## 4. Why the fibre norm, not coordinate sup norms [P] + +The selected review (`pr6030-audit/PROOF-REVIEW.md:151-161`) uses sup-norm majorants. A rank-`r` Gaussian has row-norm bound at most `2^(rf)`, and every prefix, suffix and subinterval is controlled. The envelope is `2^(10^9 + 240152 f)`. That is a valid finite-precision proof, and it carries over with the alphabet line changed. But it charges paid rank mass `f` times: `240152 f` is about `1656 d` at `d = 145 f`. It cannot fit `F = p + d`. + +In the fibre norm, frames have norm exactly 1, so `f` leaves the gain entirely. The only `d` term is the one conversion from a component to a fibre, `eta`, paid once at the site. That is what lets the budget survive. Only the triangle inequality and unitarity are used: no independence or correlation assumption, and residuals may be adversarial. + +Clause map to that review text: + +| review line | here | +|---|---| +| dyadic coefficients and SCALE units | alphabet `A = Z[1/2,1/3,1/5]`, `\|q\|+1 < 2^16` kept | +| elementary majorants at least one | suffix coefficients from the word; sup majorants remain a valid weaker fallback | +| monomial routes norm one | unchanged | +| rank-`r` Gaussian row norm | replaced by fibre norm 1 | +| COPY propagates residual as ADD | unchanged, in Theorem A | +| INIT/CLEAR inherited premise | unchanged | +| summing defect propagation | Theorem A, with `Gamma_W` from the word | + +## 5. Constants on the actual word [P] + +Word: 67,079 events. Computed from the word and caller as data. Floats for all rows, with the worst row of each word rechecked in exact fractions. `Gamma_W` was recomputed by a second reader's own loop and a third run's own backward pass: `2^22.685`, worst row 1436 in all three. + +| quantity | word (#6932) | earlier stage word | dyadic parent | +|---|---|---|---| +| MOVE sites | 6,335 | 6,355 | 6,374 | +| non-integer sites | 22,730 | 22,723 | 19,007 | +| of which odd | 3,001 | 2,941 | 0 | +| `log2 Gamma_M` (MOVE sites) | 18.665 | 18.659 | 20.146 | +| `log2 Gamma_R` (rounding sites) | 22.678 | 22.705 | 22.498 | +| `log2 Gamma_odd` (odd sites only) | 16.785 | 16.721 | none | +| `log2 Gamma_W` (all sites) | **22.685** | 22.711 | 22.756 | +| `log2` root-sum-square, MOVE sites | 13.670 | 13.665 | 15.242 | +| `log2` root-sum-square, rounding sites | 20.612 | 20.613 | 18.415 | +| `log2` largest suffix row mass | 21.709 | 21.709 | 20.296 | + +Row 1436 is a helper. Mains reach only `2^12.95`, so `g_J Gamma_W` overstates the mains by about 10 bits. That is not an error, and it is not used. + +Other word constants: `log2 Sigma_W = 34.16`. `log2` of stored prefix mass is 29.172. Including pre-ADD products, `log2 M_W = 29.67` (**[Q]** package: 37.48 minus `log2 225 = 7.81`). + +The clause does not worsen this: the word's all-site gain is below the dyadic parent's. The odd sites alone are 1.7% of the worst gain, about 0.02 bits. + +Caller. No-cancellation majorants, rigorous by submultiplicativity with operator norm 1 for each `LAMBDA`, `IDLE_ONE`, `QUERY` phase and `D`, and real numbers likely well below these [judgement]. Only logarithms enter. Caller helpers are not among the 6 roles in `g_J`. They do not mix with mains, so their defect is at most `18 Gamma_W eps`, far below `G eps`. + +| quantity | log2 | +|---|---| +| prefix mass, including the SWAP transient | 120.341 | +| `g_J`, gain at the 18 contacts | 101.927 | +| `g_S`, rounding at non-integer caller scalars | 110.908 | +| `g_I`, `LAMBDA`, idle and query sites | 109.934 | +| `Sigma_C` | 116.337 | + +Per class and per context. `J = c^v = 11^1920`, `L = b^v = 12^1920`, `R <= 153^1920` (majorant by the carrier). + +| quantity | bits | +|---|---| +| `log2 g_ctx = log2(g_J Gamma_W + g_S + g_I)` | at most 124.62 per context | +| split `log2(R/J + 1)` | at most 7,293 per class | +| completion `log2(L/J + 2)` | at most 242 per class | +| per class, `v = 1920` | at most 246,805 | +| per context equivalent | 128.55, so **`log2 G <= 129`** | +| `(log2 G + 1)/c` at `c = 1100` | 0.1182, below 1/8, so **`c = 1100` stands** | +| `log2 (M_C+1)(M_W+1)` | at most 151; unchanged, since jobs inside a split are unitary | + +`Sigma` by node type: + +| node | `log2 Sigma` | +|---|---| +| word, caller | 34.16, 116.34 | +| split class | about 7,300 | +| small-rank sequential base | at most 13,935 | +| ordinary node remainder, `r < N` | at most `H` | + +So `log2 max_v Sigma_v <= H`. All are harmless at `D >= N`, the only place they occur. + +Against the exact mode, the rounded mode drops the root scale `S^K`, its root conversion, the `7.8 t` width, and the dependence on a dyadic endpoint. + +## 6. The outer layer in rounded mode [P] + +Theorem C gives `y` with `|y - Hz| <= E <= 2^(-p-1)` per coordinate. That breaks the outer Proposition as written (`05-layers.tex` from line 827; disk line 875 onward). Counterexample shape: `Hz = (a-t, b-t)` in the disk, `(a,b)` on the `p`-grid just outside, positive residual above `t`. `Q_p` then returns `(a,b)`, outside the disk, and the error `< sqrt2 2^-p` also fails. The recursive child has no disk contract, so only this outer call is affected (`05-layers.tex` lines 488-494, 690-692, 909-910). + +**Proposition R.** Under the hypotheses of that Proposition, including its bands, with `p >= 3` and `F = p + D + g` as in the corollary, let `y` be the rounded layer output on the `F`-grid and return + + y' = y - RDiv_{2^p}(y), then Q_p(y'). + +Then every returned coefficient lies in the complex unit disk, and + + || Q_p(y') - H z ||_inf < 3 * 2^-p. + +The time bound `O(V d^{lambda'})` and the widths are unchanged: one extra `O(V)` scan and no format change. + +*Proof.* Every row of `H` has absolute row sum one, so `|Hz| <= 1` and `|y| <= 1 + 2^(-p-1)`. By Lemma 1(f), `y' = (1 - 2^-p) y + e` with `|e| <= u/sqrt2`. So + + |y'| <= (1 - 2^-p)(1 + 2^(-p-1)) + u/sqrt2 = 1 - 2^(-p-1) - 2^(-2p-1) + u/sqrt2 < 1, + +since `u/sqrt2 < 2^(-p-1)` for `D + g >= 1`. `Q_p` truncates toward zero, so it does not increase modulus, and the disk holds exactly. For the error, in moduli, + + |Q_p(y') - y'| < sqrt2 * 2^-p + |y' - y| <= 2^-p (1 + 2^(-p-1)) + u/sqrt2 + |y - Hz| <= 2^(-p-1) + +and the sum is `2^-p (sqrt2 + 3/2 + 2^(-p-1) + 2^(-D-g)/sqrt2)`. The constant is 2.9142 in the limit, at most 2.988 at `p = 3`, `D + g = 6`, the worst allowed case, and above 3 at `p = 2`. The `p`-band is `p` large, so `p >= 3` costs nothing. ∎ + +**Lemma (`06-transforms.tex` line 222).** Error `sqrt2 l 2^-p` becomes **`3 l 2^-p`**. The disk output, the cost (eq `synthetic-transform-cost`) and the layout are unchanged. + +*Proof text (lines 405-420).* The identity `J_E Q_p = Q_p J_E` still holds, but "truncating once after the exact contraction round" no longer does, and `RDiv` is not odd, so `J_E` does not commute through `y'` at ties. Use instead the per-round recursion. A round maps `z_i` to `J_E Q_p(y'(z_i))`, and the exact round is a contraction, so `err_(i+1) <= err_i + 3 * 2^-p`. Prefix-slot rounds (lines 356-371) are direct, stay exact before `Q_p`, and add less than `sqrt2 2^-p`, so they are inside the same recursion. The opposite direction has the same form. + +**Convolution (`06-transforms.tex` lines 636-715).** With `delta = 3 l 2^-p` and `eta = sqrt2 2^-p` unchanged (the ring product is direct), the bound `sqrt2 M(3l+1) 2^-p` becomes **`M(9l + sqrt2) 2^-p`**. The proof is otherwise word for word: `2 delta + eta`, then `3 delta + eta`, then the factor `M`. The disk clause reads eq `synthetic-convolution-error`, so it adapts by itself. + +**Later margins: read, and no change to `p` [P on `08-assembly.tex`].** The layer Proposition is cited only in sections 05, 06, 08. The Lemma and the convolution are cited only in 06 and 08. Section 08 line 564 reads: `sqrt2 l 2^-p < L 2^-p`, `L = log2 T`, for all sufficiently large `n`. Every later figure uses only the right side: + +| figure (08-assembly) | depends on | +|---|---| +| transform errors and product truncation below `3L + 2` | `< L` per transform | +| `E_ring = M(3L+2) < 5TL` | above | +| `\|\|h'\|\| < .701`, `6TL`, `8TL` | above | +| `E_s = 9 * 2^gamma * TL`, `.51`, `.501` | above | +| cutoff `b >= 2^24` with all of these below `10^-3` | above | + +The replacement is `3 l 2^-p < L 2^-p`. Here `r = 2^ceil(L/d)` and `l = log2 r` (lines 71-72), so `L > d(l-1)`. For `d >= 6`, `l >= 3` this gives `3l <= d(l-1) < L`, and the bands make `d`, `l` tend to infinity (lines 83-91). So the same "sufficiently large `n`" covers it, and **`E_ring` and every later constant stand unchanged.** No extra bit of `p` is spent. Had the constants been carried through instead, the cost would be about 1.09 bits, so the point is minor either way. `kappa` reads none of it. + +**Lines to reword** (they say "exact"; none changes a bound beyond those above): `05-layers.tex` 42, 176-178, 492, 513, 627 ("padded zero row is again zero" becomes "within `E`, then deleted"), 690, 809, 909, 982; the Proposition's statement "returns `Q_p(Hz)`"; `06-transforms.tex` 222, 405-420, 639, 686, 715; `08-assembly.tex` 7-8, 11-12, 564. + +**In exact mode nothing here changes.** With the root scale and exact children, #6932's outer Proposition holds as written. + +## 7. The new clause and its cost + +**Replaces item 4 of #6932 sec 1, and the execution sentence of its sec 2.** + +> **Clause R (rounded scalars).** A native word may use ADD and COPY coefficients `q = a/b` in `A = Z[1/2,1/3,1/5]` with `|q| + 1 < 2^16`, and SCALE by units of `A`, with frames as before. Conditions (i) and (ii) of the odd clause and the declared `S` are not required. Its exact endpoint remains required over `Q`, with every public output row in `Z[1/2]`. Execution: `t += q s` writes `t + RDiv_{a/b}(s)`, and `t *= q` writes `RDiv_{a/b}(t)`, on the stored numerators, by Lemma 1(d), with no check and no reject state. A C pair is rounded on its complete numerators. Integer `q` is exact. Children meet the contract `C(eps,B)`. Output is the word's exact action within the defect of Theorem C, not equal to it. The outer layer returns `Q_p(y - RDiv_{2^p}(y))`. The clause covers complex native words only. A BIT ring has no rounding. + +`division_pass.py` and #6932's item 4 are least-significant-first with a check, so they are a different operation. `02-streams.tex` lines 198-208 license power-of-two division and charge reversals as linear passes. They do not name fixed odd division, so the clause must: one most-significant-first finite-state pass, charged linear [P as an automaton, Lemma 1(d)]. #6068 does not bind it: it concerns stochastic unbiased rounding, and this is deterministic. + +**Scans per call on the word.** + +| site | count | passes | +|---|---|---| +| dyadic non-integer | 19,729 | 1 least-significant-first, with the offset carried in it | +| odd denominator | 3,001 | 1 least-significant-first, 1 reversal, 1 most-significant-first, 1 reversal, about 4 against about 3 in #6932 | + +All 22,730 sites round if the grid is shared. An earlier sketch said "each of 3,001 divisions becomes one more rounding site", which undercounts: rounding sites are 22.68 bits of gain against 16.79 for the odd ones. + +**Raw, recounted on the word.** Baseline reproduces #6932's figures exactly. The charge unit for the new passes is a model, `4(bits+1)` per scan after #6932's formula [judgement]. Old caller first, then with the #6912 block rewrite (`-159,498,240` in every reading). + +| charge | upper | second LAMBDA count | margin there | with #6912 | margin | +|---|---|---|---|---|---| +| baseline, #6932 as shipped | 985,187,200 | 997,747,200 | +2,252,800 | 838,248,960 | +161.8M | +| offset at each rounding site | 988,702,024 | 1,001,262,024 | **-1,262,024** | 841,763,784 | +158.2M | +| and MSB scan at odd sites | 989,552,416 | 1,002,112,416 | **-2,112,416** | 842,614,176 | +157.4M | +| and MSB scan at every site | 995,789,344 | 1,008,349,344 | **-8,349,344** | 848,851,104 | +151.1M | +| worst: and 2 scans at odd sites | 996,639,736 | 1,009,199,736 | **-9,199,736** | 849,701,496 | +150.3M | + +So: +- "The raw count's bit-length term should cover it" holds for the upper reading and fails for the conservative recharge on the old caller, even for the offset alone. +- Dropping the root scale does not rescue it. The 997,747,200 line carries no per-call scale, so there is nothing to free. The 2,089,440 belongs only to the every-call scale line. +- With #6912's rewrite the margin is at least 150M in every reading tried. **Rounded mode should be declared on the rewritten caller.** + +**Owed, not done:** a charge model taken from text rather than assumed, including where reversals land; a tape-level recount of the most-significant-first pass; reruns for any later word. T, P, S and `kappa` are untouched. + +## 8. Measurement [P for the bound, S for the model] + +One root fibre, 512 coordinates, `d = 9`, generic commuting unitary frames `WH diag WH / 512`, exact integers, no checks. MOVE is the frame numerator rounded, then a child that truncates `g` low bits. Every non-integer site is `RDiv`. Exact reference: the endpoint action on the same input. + +**No measurement exceeded its bound.** 15 natural runs on the #6932 word (21,765 row samples) and 14 on the dyadic word (20,174): 0 rows above either bound, with `g` in {0, 20, 44, 70}, `F` in {16, 24, 40, 80}, floor and toward-zero children, all input kinds. + +| check, #6932 word | prediction | measured | +|---|---|---| +| `S = 225`, `g = 0`, grid input | error exactly 0 (the Proposition) | exactly 0 on all 1,451 rows | +| `S = 1`, `g = 0`, grid input | at most `2^26.7`; model `2^20.8` | `2^23.95`: bound holds, model 3 bits low | +| fibre-norm gain at `g = 20, 44, 70` | at most `2^23.66` | `2^18.2`, slack 5.5 bits | +| coordinate-max gain, same inputs | not bounded by this theorem directly | `2^15.0` | +| worst err over row bound, `g = 0` | at most 1 | 0.601 | +| worst err over row bound, `g >= 20` | at most 1 | 0.983 (floor child), 0.89 (toward zero) | + +**Correction of the earlier section on this.** "Measured `2^14.65` against bound `2^23.66`, slack 9 bits" compared a coordinate maximum with a fibre-norm bound. On those same inputs (`F = 60, g = 44`) the fibre-norm gain is `2^18.18` and the coordinate gain `2^14.98`. The honest slack on the worst row is 5.5 bits, and on some rows a natural truncating child comes within 2% of the row bound. + +**The bound is attained.** An adversarial child inside the contract, adding every MOVE residual in phase at a target row, reaches err over bound 0.99989 (row 1436), 0.9999955 (row 517), never above 1. Dyadic word: 0.9999976, 0.9999960. + +**Controls, all fail as they must.** Planted MOVE bias at 2x contract: ratio 2.000. Planted rounding bias: 7.96 at amplitude 4, 2.00 at amplitude 1. Unaligned +1 bias: 2.25. Constant `2^5` replaced by `2^4`: 1.9996. Rounding constant `2^4` halved: natural `g = 0` runs fail at 1.20. Theorem A with realized residuals held in every control, as an identity-level bound should. A non-unitary frame and a dropped ADD, also planned as controls, are not reported. + +**Nesting.** MOVE slots executed by full rounded runs of the same word, to depth 3 (15 nested calls): top error 0.594 of the composed bound at `g = 0`, 0.885 at `g = 20`, 0 violations. With a +1 rounding bias: 2.243, 68 rows over. + +**Rejection.** The truncating child's rejection at event 26,563 in #6932's run is cured by Lemma 1(a): no run rejected anywhere. That event is not special. + +**Model [judgement].** Median err over root-sum-square: 1.09 at `g = 0`, 0.91 at `g >= 20`, maximum 4.0. + +**Not run:** the caller, so the per-context `2^124.62` is untested; true Clifford gates of `physical.py`; width 2. Nested inner runs are single-input and one row only. The measured level-to-level ratio of about 130 understates a generic gain for that reason. + +## 9. Recheck of K_star, caller mass and #6901's hypotheses [P, Q] + +**An error in the earlier derivation.** It used `v = 2223`, `m = 153^2223` and `H > 17,784`. `2223` is the *logarithm* power (`LP`). The chronological power is `power = 1920` (`check.py:473`). For #6030 the two values coincide at 1024 (`PROOF-REVIEW.md:113,126`), which is how the confusion arises. #6901's `v` is the chronological power: "cutoff `16^v`, productive floor `17^v`, ambient `145^v`" (PROOF lines 19-20). The check is `step*hi_ > 8*power` (`check.py:497`), that is, `H > 15,360`. + +| | earlier | corrected | +|---|---|---| +| `v` | 2223 | **1920** | +| `m` | `153^2223` (16,133 bits) | **`153^1920`** (13,934.2 bits) | +| `H` check | `> 17,784` | **`> 15,360`** | +| actual `H` | not used | **`1,338,590,000,000,000,000`** (`step = 10^13`, `j = 133,859`; minimal, `j-1` fails) | +| `K_star` bits | about 16,173 at `H = 17,784` | **14,065.5** at the written `H`; 13,973 at `H = 15,361` | +| margin | about 1,600 bits | **about `1.34 * 10^18` bits at the written `H`**; 1,377 bits for `1100*K_star` at the smallest `H` the check admits | +| caller mass | "`M <= 2^4000`", no derivation | **`M_C <= 2^120.35`** (majorant, computed) | + +Using carrier 153 over the true `maxT` only enlarges `K_star`, and `s > n/m` survives a larger `m`. The margin absorbs any per-node polynomial miss in `H`, `m`, `v`. + +**The width line in #6932 sec 4 needs its constants replaced.** `82 t < d` used the #6030 caller mass 10 as a placeholder. On this word, per context: height at most `15 + 157 = 172` bits (157 is a path-maximum majorant over all caller prefixes, not an actual height), magnitude at most `37.48 + 120.35 = 157.83` bits. So **`344 t < d`** is the sufficient form for the exact mode. It follows from `345 * K_star < 2^H`, as in #6901 lines 299-304. + +**Hypotheses of #6901 against the per-port root:** + +| hypothesis | verdict | +|---|---| +| `r_max < k_min`, `k_min >= 2`: `11^1920 < 12^1920` after the pass | holds; `check.py:478` tail ratios | +| `m` = max productive rank: carrier 153 = `max(maxT, ambient)` | holds; `check.py:481` | +| sources `s > n/m`; `e/n <= (r_max/m)(r_max/k_min)^G <= rho` | holds; general, `r_max <= m-1` | +| at most `v` contexts per class; one raw unit | holds; A and B are one joint stream with 18 joint contacts, so one raw caller | +| `153 < 2^8`, `H > 8v` | holds | +| complete swaps, not interrupted | holds on reading: SWAP is atomic in the caller and the transient is in the majorant | +| owned center as a paid field | holds; FINITE-PRECOMPILATION sec 6 covers it | +| **Literal constants** `1/16`, 8500, `4t`, `14t`, `W+6`, numerators at most 16 | **fail, and are replaced.** Denominator `2^15 * 225`, word mass `2^29.67`, `\|a\|` up to 40,864. Declared by #6932; the replacements are computed here | +| **Integral local endpoint and integral controller prefixes** (#6900 secs 2 and "endpoint-composition"; used by #6901's relative-prefix input) | **fails literally.** The hosted endpoint has `beta = 1/2`, `1+t = 1/2`, and caller scalars include `1/128`. Debt does not reset at a contact, only at the caller's end. Harmless: it is the 157 above, and the same triangle-inequality argument (#6901 lines 226-230) carries it | +| Credited native equalities at every `f` with spectators; full occurrence maps (#6878) | **Not shown, not failed.** 3,230 chart maps, 7,488 contacts and 18 injective field maps at one column. A faithful width-2 run of the recipes passes on 3,438 maps (1,731,297 executions, phase `i^(pf)`), sampled at high rank; an analog of #6878's full ambient maps is missing | + +So no hypothesis of `(4a)` fails. Two literal inputs fail with computed replacements. Item 1 of #6901's nonprecision interfaces remains unshown on this word. + +## 10. Proved, computed, assumed + +- **Proved [P]:** Lemma 1; Theorems A and B; Theorem C and the corollary given S1 to S5 and section 5; Proposition R and its downstream constants. +- **Computed [P]:** section 5, the bit counts of section 9, the raw table. Float gains over all rows, with exact recheck of the worst row by word. Exhaustive `RDiv` automaton, 285,870 cases. +- **Quoted, not re-derived [Q]:** S1 to S5. Frames unitary on fibres: read from the gate alphabet (`physical.py` lines 32-42 raises on any gate but P, X, D, phase, C, and each is unitary), then tensor power at width `f`. The 1,095 frames were not re-verified one by one. +- **Argued, weaker [judgement]:** adapters and normalizers are monomial. If a normalizer contains C stages with direct rounding, add `log2 D` bits per context. The inequality still holds: `K_star (log2 D)^2 / H <= D/8` for all `D >= N`, because it holds at `D = N` and the left side grows more slowly. Lowering of free adapters (`lower_child`) was not checked. The use of a product's factor gains is a reading of p7-TENSOR, with one second reader. +- **Not shown:** a real recursive run of word plus caller; tape cost of the most-significant-first pass as a recount; the actual `P_r`; physical CLEAR. No new `kappa`. No claim that maintainers would accept this. + +## 11. What the theorem does not give [P/S] + +- **Not equality.** Downstream statements that use exactness now read "within `E`". This includes "the quantizer at any cut is the identity" (#6900 item 4). +- **Detection is lost.** A checked word notices a truncated child, and this one does not. +- **Complex side only.** +- **Word-specific.** Section 5's constants are #6932's word. A later word needs its own `Gamma_W`, `M_W`, `Sigma_W` and raw line. The margin makes the theorem's conclusion likely to survive. A word with a larger `S`, such as `S = 1125`, loses nothing here, since no `S` is used. + +--- + +## Sources and changes (not for a package) + +**the numerical run:** Results of the numerical run are folded in at sections 5, 7, 8. It says "theorem survives" and names the two corrections used above. + +**Source reads.** `pkg-lift` at origin/main 7c49fe32c, read with `git show`, checkout unchanged: `upstream/build/sections/{02-streams,05-layers,06-transforms,08-assembly}.tex`, `research/higher-moment-strictification/vendor/{FINITE-PRECOMPILATION,p7-TENSOR}.md`; branch `fork/research/p104-odd-scalar-native` for `check.py`, `native.py`. ` earlier reading/src/p6901.md`, `p6932.md`, `6932_README.md`. + +**Scripts.** `const.py` (`const.out`) here: every constant in sections 5, 6, 9 that is new. ` numerical run/rawrecount.py`, run read-only by me on ` same table as its RESULT, baseline matches. Earlier: ` earlier reading/{gains,caller_gains,caller2,rdiv}.py`. + +**Changes against ` earlier reading/ROUNDED.md`.** + +| # | change | source | +|---|---|---| +| 1 | Paid-job splitting charged per class, 7,293 + 242 bits; `log2 G <= 129`; `c = 1100` stands | READ change 1; rechecked on p7-TENSOR sec 3 | +| 2 | Small-rank base charged, 13,934 bits per node | READ change 2; FINITE sec 4 | +| 3 | `D`-fibre and `R`-fibre norms, order stated | READ change 3; #6901 lines 330-348 | +| 4 | Outer Proposition repaired; Lemma `3l`, convolution `M(9l + sqrt2)` | READ change 4; recomputed | +| 5 | Clause R and recount | READ change 5 | +| 6 | `b = 2^k` shift, offset bound | READ minor | +| 7 | "One circuit" qualified | READ minor | +| 8 | **New here.** READ's `Sigma` about `2^7300` is the split-class value only. The largest are the small-rank base (`2^13,935`) and the ordinary remainder (`2^H`). Still harmless | this note, sec 3 and 5 | +| 9 | **New here.** READ expected about 1.1 more bits of `p`. Reading 08-assembly: none needed, `3l < L` absorbs it at line 564 | this note, sec 6 | +| 10 | **New here.** Proposition R's constant holds for all `D >= 1` with the stated `g`, not only `D >= 19` | `const.py` | +| 11 | **Reversed.** An earlier reading said removing the root scale frees 2,089,440, so raw "should fit". On the recharge line it frees nothing. It fails by 1.26M to 9.20M on the old caller, and fits with #6912's rewrite | this note sec 7; the numerical run | +| 12 | Slack 9 bits corrected to 5.5; model 3 bits low | the numerical run | +| 13 | S3 split into S3, S3a; the factor 2 per context removed, since the completion is now charged explicitly | READ change 1 | diff --git a/research/current-rounded-scalar-tables/reference/check_6937.py b/research/current-rounded-scalar-tables/reference/check_6937.py new file mode 100644 index 0000000000..cebc2062a3 --- /dev/null +++ b/research/current-rounded-scalar-tables/reference/check_6937.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 +"""Recomputes the JSON facts of README.md (standard library, exact, well under 300 s, writes nothing). +Run: python3.12 -I -B research/p104-two-chain-findings/check.py Each check has a failing control.""" +import os, sys, json, hashlib +from fractions import Fraction as Q +from decimal import Decimal as D, getcontext +getcontext().prec = 40 +H = os.path.dirname(os.path.abspath(__file__)); DT = os.path.join(H, 'data') +fails = [] +def req(name, ok, info=''): + print(('PASS ' if ok else 'FAIL ') + name + (' | ' + str(info) if info else ''), flush=True) + if not ok: fails.append(name) +def load(f): return json.load(open(os.path.join(DT, f))) +# 1. data hashes (control: a wrong digest is rejected) +SHA = {'sr0.json.gz': '60a47635302473d7b6aa660445042a2e06bc62a2d041fb072d5882e9ee9cc54a', + 'rbf.json.gz': '0b45822b170c4425810da72a8b53d4c78994178d8b70c0e900487e93ad70bb75', + 'root_A_efree.json': '64486cd1c5a879ffc0312195a39ce4a2ef288f81afb47232c244b9b6f46683d0', + 'root_L3_tHHtHt.json': 'eb79a0d89c1c09138a3e8a260f04b6a0c88d51d1314650364cb88441333b8f28', + 'wh.json.gz': '25326dac562fa07edd28a6daf302de0c27f5f2e82f610eaf3671d39575f8dbea', + 'ft.json.gz': '67d65735f9baa4361cb6214758535b226969a3349ae12a61d529f06e75cc90db', + 'root_L3_tHtHHt.json': '60bf936299c3a553398e943ba6d67b05ee4d29007cd1af9da6227685aa226309'} +for f, h in SHA.items(): + req('sha256 ' + f, hashlib.sha256(open(os.path.join(DT, f), 'rb').read()).hexdigest() == h) +req('control: wrong digest rejected', hashlib.sha256(b'x').hexdigest() != SHA['sr0.json.gz']) +# 2. kappa from invoices: root of sum (T_r - P_r) r^(-k+1)... defined as in the invoice law: sum (T-P) r^(1-k) = 0 +def kappa(T, P): + rs = sorted(set(T) | set(P)); ln = {r: D(int(r)).ln() for r in rs} + e = lambda k: sum((D(T.get(r, 0)) - D(P.get(r, 0))) * (ln[r] * (1 - k)).exp() for r in rs) + lo, hi = D('1e-6'), D('0.05') + for _ in range(200): + m = (lo + hi) / 2 + if e(m) > 0: lo = m + else: hi = m + return lo +for f, want in (('sr0.invoice.json', '.00360666479'), ('rbf.invoice.json', '.00362232643')): + d = load(f); k = kappa(d['T'], d['P']) + req('kappa %s = %s' % (f, want), str(k)[1:len(want) + 1] == want, str(k)[:14]) + d2 = json.loads(json.dumps(d)); d2['T']['1'] += 5000 + req('control: kappa changes when the invoice is edited (%s)' % f, str(kappa(d2['T'], d2['P']))[:10] != str(k)[:10]) +# 3. E-free root: product of (I - 2 x y^T) over the 40 units in order is -I at S=-1; isotropy fails only at t1 (units 18, 19) +R = load('root_A_efree.json'); n, N = R['n'], R['N'] +X = [[Q(v) for v in r] for r in R['X']]; Y = [[Q(v) for v in r] for r in R['Y']] +dot = lambda a, b: sum(u * v for u, v in zip(a, b) if u and v) +def prod(X, Y, S=-1, order=None): + M = [[Q(int(i == j)) for j in range(n)] for i in range(n)] + for k in (order if order is not None else range(N)): + d = [sum(Y[k][i] * M[i][j] for i in range(n) if Y[k][i]) for j in range(n)] + M = [[M[i][j] + (S - 1) * X[k][i] * d[j] for j in range(n)] if X[k][i] else M[i] for i in range(n)] + return M +neg_I = lambda M: all(M[i][j] == (-1 if i == j else 0) for i in range(n) for j in range(n)) +ok = neg_I(prod(X, Y)); req('E-free root: unit product is -I at S=-1', ok) +req('E-free root: product is I at S=+1', all(prod(X, Y, 1)[i][j] == int(i == j) for i in range(n) for j in range(n))) +iso = [u for u in range(N) if dot(Y[u], X[u]) != 0] +req('E-free root: isotropy fails exactly at units 18 and 19 (t1 of each chain)', iso == [18, 19], iso) +X2 = [r[:] for r in X]; j = next(i for i, v in enumerate(X2[18]) if v); X2[18][j] += 1 +req('control: edited t1 breaks the -I product', not neg_I(prod(X2, Y))) +req('control: swapped unit order breaks the -I product', not neg_I(prod(X, Y, order=[20 if i == 18 else 18 if i == 20 else i for i in range(N)]))) +cl = load('caller_efree.json'); req('caller file parses (QSELF caller, 76 x 76 per README)', isinstance(cl, (dict, list)) and len(json.dumps(cl)) > 10000) +# 4. L=3 rho=1 roots: header Gram is the t=-1 path, units square-zero (b_i.a_i = 0), nine rows of length 8 +for f in ('root_L3_tHHtHt.json', 'root_L3_tHtHHt.json'): + d = load(f); a = [[Q(x) for x in r] for r in d['a']]; b = [[Q(x) for x in r] for r in d['b']]; M = len(a) + gram = lambda a, b: all(dot(b[i], a[j]) == (1 if j == i + 1 else -1 if j == i - 1 else 0) for i in range(M) for j in range(M)) + req('%s: M=%d n=%d, header Gram is the exact path t=-1, square-zero units' % (d['types'], M, len(a[0])), M == 9 and len(a[0]) == 8 and gram(a, b)) + b2 = [r[:] for r in b]; b2[0][0] += 1 + req('control: perturbed header rejected (%s)' % d['types'], not gram(a, b2)) +print('PASS_P104_TWO_CHAIN_FINDINGS' if not fails else 'FAILED: %s' % fails) +sys.exit(1 if fails else 0) diff --git a/research/current-rounded-scalar-tables/source_binding.py b/research/current-rounded-scalar-tables/source_binding.py new file mode 100644 index 0000000000..34968a492e --- /dev/null +++ b/research/current-rounded-scalar-tables/source_binding.py @@ -0,0 +1,71 @@ +"""Authenticated immutable source and exact current local SCALE registration. + +Prepared for @CubeJerry with substantial OpenAI assistance. Apache-2.0. +""" +import gzip +import hashlib +import json +from pathlib import Path +import sys +import types +from fractions import Fraction + +ROOT = Path(__file__).resolve().parent + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def authenticate(): + rows = json.loads((ROOT / "DEPENDENCIES.json").read_bytes())["files"] + need(len(rows) == 6, "six frozen dependencies") + for row in rows: + p = ROOT / row["local_path"] + need(p.resolve().is_relative_to(ROOT), "local dependency") + data = p.read_bytes() + need(len(data) == row["bytes"], "source length") + need(hashlib.sha256(data).hexdigest() == row["sha256"], "source SHA-256") + need(hashlib.sha1(b"blob " + str(len(data)).encode() + b"\0" + data).hexdigest() + == row["git_blob"], "source Git blob") + return len(rows) + + +def vendor(name, path): + authenticate() + p = ROOT / path + mod = types.ModuleType(name); mod.__file__ = str(p); sys.modules[name] = mod + exec(compile(p.read_bytes(), str(p), "exec"), mod.__dict__) + return mod + + +def word(): + authenticate() + w = json.loads(gzip.decompress((ROOT / "data/word.json.gz").read_bytes())) + need(w["public"] == 1461 and len(w["program"]) == 71144, "exact source word") + return w + + +def current_scales(): + w = word() + return [(i, tuple(e), Fraction(e[2])) for i, e in enumerate(w["program"]) if e[0] == "SCALE"] + + +def bind_scales(): + """Actual unchanged local SERVICE token grammar, no invented opcode. + + This returns a finite token/table registry for the current local SCALE + class. It does not install an entire current caller/recursive exporter. + """ + from tables import compile_rounded + cache, registry, rows = {}, {}, [] + for pc, raw, q in current_scales(): + if q not in cache: + cache[q] = compile_rounded("SCALE", q) + token = ("local", pc, raw) + registry[token] = cache[q][0] + rows.append(dict(pc=pc, raw=list(raw), coefficient=str(q), field=raw[1])) + need(len(rows) == 3660 and len(cache) == 52, "current SCALE occurrence/coefficient census") + need(("local",37480,("SCALE",697,"-2/3",591)) in registry, "actual exposed arithmetic seam") + return registry, cache, rows diff --git a/research/current-rounded-scalar-tables/tables.py b/research/current-rounded-scalar-tables/tables.py new file mode 100644 index 0000000000..0978b84271 --- /dev/null +++ b/research/current-rounded-scalar-tables/tables.py @@ -0,0 +1,202 @@ +"""Literal finite-table total rounded scalars on the unchanged lifecycle ABI. + +Only construction computes residues/quotients in Python. Runtime tables +contain branch/write/unit-move/goto/halt/reject, with no payload callbacks. +Prepared for @CubeJerry with substantial OpenAI assistance. Apache-2.0. +""" +from fractions import Fraction +from source_binding import need, vendor + +_old = vendor("rounded_frozen_scalar_builder", "vendor/exact_scalar_tables.py") +Builder = _old.Builder + + +def compile_rounded(op, coefficient): + """Fixed a/b; all finite nonempty fields of signed complete components. + + SCALE ports: target, output-work, guide-work. + ADD ports: target, source, output-work, guide-work; distinct public tapes. + Same grid/shape is a premise. Every component is staged before public + installation. Correctly shaped inputs reject only on signed output overflow. + """ + need(op in ("SCALE", "ADD"), "rounded scalar operation") + q = Fraction(coefficient) + a, denominator = q.numerator, q.denominator + d, odd = 0, denominator + while odd % 2 == 0: + odd //= 2; d += 1 + offset = denominator // 2 + p, r = (denominator, a) if op == "ADD" else (a, 0) + count = 2 if op == "ADD" else 1 + output, guide = count, count + 1 + bound = abs(p) + abs(r) + odd + offset + b = Builder(); b.request(("entry",)) + carry_states, residue_states = set(), set() + + def advance_inputs(step=1): + for port in range(count): + b.emit("move", port, step) + + def guide_one(): + b.emit("write", guide, 1); b.emit("move", guide, 1) + + def digit(k, carry, x, y): + need(0 <= k <= d and abs(carry) <= bound, "finite carry invariant") + carry_states.add(carry) + value = p * x + r * y + carry + bit = value & 1 + following = (value - odd * bit) // 2 + need(abs(following) <= bound, "closed signed carry interval") + if k < d: + return k + 1, following, bit + b.emit("write", output, bit); b.emit("move", output, 1) + return d, following, bit + + while b.pending: + key = b.pending.popleft(); b.mark(key); tag = key[0] + if tag == "entry": + b.branch(output, {4:("guide-entry",)}, ("reject", "nonblank output work")) + elif tag == "guide-entry": + b.branch(guide, {4:("begin",)}, ("reject", "nonblank guide work")) + elif tag == "begin": + b.emit("write", guide, 5); b.emit("move", guide, 1) + b.goto(("start", 0, False)) + elif tag == "start": + _, parity, seen = key + ending = ("finish-source",) if parity == 0 and seen else ("reject", "complete nonempty complex field") + b.branch(0, {0:("first", parity, 0), 1:("first", parity, 1), 4:ending}, + ("reject", "positive component width")) + elif tag == "first": + _, parity, x = key + if odd == 1: + b.goto(("read-source", 0, offset, 2, parity, x)) + elif count == 1: + b.goto(("pre-digit", offset % odd, 1, parity, x, 0, True)) + else: + b.branch(1, {y:("pre-digit", offset % odd, 1, parity, x, y, True) for y in (0,1)}, + ("reject", "same complete component shape")) + elif tag == "pre-digit": + _, rho, power, parity, x, y, first = key + z = y if count == 2 else x + rho1, power1 = (rho + a * z * power) % odd, (2 * power) % odd + residue_states.add((rho1, power1, z)) + b.emit("write", guide, 6 if first else 1); b.emit("move", guide, 1) + advance_inputs() + b.goto(("pre-scan", rho1, power1, z, parity)) + elif tag == "pre-scan": + _, rho, power, sign, parity = key + b.branch(0, {0:("pre-source",rho,power,parity,0), + 1:("pre-source",rho,power,parity,1), + 2:("pre-end",rho,power,sign,parity)}, + ("reject", "unterminated residue component")) + elif tag == "pre-source": + _, rho, power, parity, x = key + if count == 1: + b.goto(("pre-digit",rho,power,parity,x,0,False)) + else: + b.branch(1, {y:("pre-digit",rho,power,parity,x,y,False) for y in (0,1)}, + ("reject", "same complete component shape")) + elif tag == "pre-end": + _, rho, power, sign, parity = key + residue = (rho - a * sign * power) % odd + initial = offset - residue + need(abs(initial) <= bound, "signed corrected initial carry") + following = ("pre-rewind-step", initial, parity) + if count == 2: + b.branch(1, {2:following}, ("reject", "same complete component shape")) + else: + b.goto(following) + elif tag == "pre-rewind-step": + _, initial, parity = key + b.emit("move", guide, -1) + b.goto(("pre-rewind-read", initial, parity)) + elif tag == "pre-rewind-read": + _, initial, parity = key + b.branch(guide, {1:("pre-back",initial,parity,False), + 6:("pre-back",initial,parity,True)}, + ("reject", "complete residue rewind guide")) + elif tag == "pre-back": + _, initial, parity, first = key + advance_inputs(-1) + b.goto(("arith-first",initial,parity) if first else ("pre-rewind-step",initial,parity)) + elif tag == "arith-first": + _, initial, parity = key + b.branch(0, {x:("read-source",0,initial,2,parity,x) for x in (0,1)}, + ("reject", "unchanged residue input")) + elif tag == "scan": + _, k, carry, sx, sy, sq, parity = key + b.branch(0, {0:("read-source",k,carry,sq,parity,0), + 1:("read-source",k,carry,sq,parity,1), + 2:("component-end",k,carry,sx,sy,sq,parity)}, + ("reject", "unterminated signed component")) + elif tag == "read-source": + _, k, carry, sq, parity, x = key + if count == 2: + b.branch(1, {y:("digit",k,carry,sq,parity,x,y) for y in (0,1)}, + ("reject", "same complete component shape")) + else: + b.goto(("digit",k,carry,sq,parity,x,0)) + elif tag == "digit": + _, k, carry, sq, parity, x, y = key + k1, c1, q1 = digit(k,carry,x,y) + guide_one(); advance_inputs() + b.goto(("scan",k1,c1,x,y,q1,parity)) + elif tag == "component-end": + _, k, carry, sx, sy, sq, parity = key + following = ("extend",d,k,carry,sx,sy,sq,parity) + if count == 2: + b.branch(1, {2:following}, ("reject", "same complete component shape")) + else: + b.goto(following) + elif tag == "extend": + _, remaining, k, carry, sx, sy, sq, parity = key + if remaining: + k1, c1, q1 = digit(k,carry,sx,sy) + b.goto(("extend",remaining-1,k1,c1,sx,sy,q1,parity)) + elif sq not in (0,1) or carry != p*sx+r*sy-odd*sq: + b.goto(("reject", "rounded signed output overflow")) + else: + b.emit("write",output,2); b.emit("move",output,1) + guide_one(); advance_inputs() + b.goto(("start",parity^1,True)) + elif tag == "finish-source": + if count == 2: + b.branch(1,{4:("finish-output",)},("reject","same complete field frontier")) + else: + b.goto(("finish-output",)) + elif tag == "finish-output": + b.branch(output,{4:("rewind-step",)},("reject","exact staged output frontier")) + elif tag == "rewind-step": + b.emit("move",guide,-1); b.goto(("rewind-read",)) + elif tag == "rewind-read": + b.branch(guide,{1:("rewind-inputs",),5:("install-start",)},("reject","complete unary rewind guide")) + elif tag == "rewind-inputs": + for port in tuple(range(count))+(output,): + b.emit("move",port,-1) + b.goto(("rewind-step",)) + elif tag == "install-start": + b.emit("move",guide,1); b.goto(("install-guide",)) + elif tag == "install-guide": + b.branch(guide,{1:("install-read",),4:("installed-target-end",)},("reject","install guide format")) + elif tag == "install-read": + b.branch(output,{s:("install-symbol",s) for s in (0,1,2)},("reject","complete protected rounded output")) + elif tag == "install-symbol": + b.emit("write",0,key[1]) + for port in (0,output,guide): + b.emit("move",port,1) + b.goto(("install-guide",)) + elif tag == "installed-target-end": + b.branch(0,{4:("installed-output-end",)},("reject","exact installed target frontier")) + elif tag == "installed-output-end": + b.branch(output,{4:("halt",)},("reject","exact protected output consumption")) + elif tag == "halt": + b.emit("halt") + elif tag == "reject": + b.emit("reject",key[1]) + else: + raise ValueError("unknown rounded compiler state") + return b.finish(), dict(operation=op, coefficient=str(q), denominator_twos=d, + odd_denominator=odd, rounding_offset=offset, + carry_bound=bound, carry_states=len(carry_states), + residue_states=len(residue_states), rows=len(b.rows), states=len(b.labels), + public_ports=count, work_ports=2, residue_prepass=odd>1) diff --git a/research/current-rounded-scalar-tables/vendor/exact_scalar_tables.py b/research/current-rounded-scalar-tables/vendor/exact_scalar_tables.py new file mode 100644 index 0000000000..1cc22f75fb --- /dev/null +++ b/research/current-rounded-scalar-tables/vendor/exact_scalar_tables.py @@ -0,0 +1,295 @@ +"""Fixed scalar services compiled to the unchanged lifecycle table ABI. + +All arithmetic here belongs to finite-template construction. The returned +runtime uses only branch/write/unit-move/goto/halt/reject instructions. +Prepared for @CubeJerry with substantial OpenAI assistance. Apache-2.0. +""" +from collections import deque +from fractions import Fraction + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +class Builder: + def __init__(self): + self.rows, self.labels = [], {} + self.pending, self.claimed = deque(), set() + + def request(self, key): + if key not in self.claimed: + self.claimed.add(key) + self.pending.append(key) + return key + + def mark(self, key): + need(key not in self.labels, "unique compiled state") + self.labels[key] = len(self.rows) + + def emit(self, *row): + self.rows.append(row) + + def goto(self, key): + self.emit("goto", self.request(key)) + + def branch(self, port, cases, default): + self.emit("branch", port, + tuple((s, self.request(k)) for s,k in sorted(cases.items())), + self.request(default)) + + def finish(self): + need(not self.pending, "complete finite graph") + out = [] + for row in self.rows: + if row[0] == "goto": + out.append(("goto", self.labels[row[1]])) + elif row[0] == "branch": + out.append(("branch", row[1], tuple((s,self.labels[k]) for s,k in row[2]), + self.labels[row[3]])) + else: + out.append(row) + return tuple(out) + + +def compile_scalar(op, coefficient): + """Build a table for all complete complex records on one common grid. + + SCALE ports: target, output-work, guide-work. + ADD ports: target, source, output-work, guide-work. + Additional supplied work/context ports are untouched. Work is physically + retired by the unchanged Controller.primitive success wrapper. + """ + need(op in ("ADD", "SCALE"), "scalar operation") + q = Fraction(coefficient) + need(q != 0, "nonzero selected scalar") + a, denominator = q.numerator, q.denominator + d, odd = 0, denominator + while odd % 2 == 0: + d += 1 + odd //= 2 + p, r = (denominator,a) if op == "ADD" else (a,0) + count = 2 if op == "ADD" else 1 + output, guide = count, count+1 + bound = abs(p)+abs(r)+odd + b, carry_states = Builder(), set() + b.request(("entry",)) + + def advance_inputs(): + for port in range(count): + b.emit("move", port, 1) + + def guide_one(): + b.emit("write", guide, 1) + b.emit("move", guide, 1) + + def digit(k, carry, last_q, x, y): + need(0 <= k <= d and abs(carry) <= bound, "finite carry invariant") + carry_states.add(carry) + value = p*x+r*y+carry + if k < d: + if value % 2: + return None + return k+1, value//2, last_q + bit = value & 1 + following = (value-odd*bit)//2 + need(abs(following) <= bound, "closed finite carry interval") + b.emit("write", output, bit) + b.emit("move", output, 1) + return d, following, bit + + while b.pending: + key = b.pending.popleft() + b.mark(key) + tag = key[0] + if tag == "entry": + b.branch(output, {4:("guide-entry",)}, ("reject","nonblank output work")) + elif tag == "guide-entry": + b.branch(guide, {4:("begin",)}, ("reject","nonblank guide work")) + elif tag == "begin": + b.emit("write", guide, 5) + b.emit("move", guide, 1) + b.goto(("start",0,False)) + elif tag == "start": + _, parity, seen = key + ending = ("finish-source",) if parity == 0 and seen else ("reject","complete nonempty complex field") + b.branch(0, {0:("read-source",0,0,2,parity,0), + 1:("read-source",0,0,2,parity,1), 4:ending}, + ("reject","positive component width")) + elif tag == "scan": + _, k, carry, sx, sy, sq, parity = key + b.branch(0, {0:("read-source",k,carry,sq,parity,0), + 1:("read-source",k,carry,sq,parity,1), + 2:("component-end",k,carry,sx,sy,sq,parity)}, + ("reject","unterminated signed component")) + elif tag == "read-source": + _, k, carry, sq, parity, x = key + if count == 2: + b.branch(1, {y:("digit",k,carry,sq,parity,x,y) for y in (0,1)}, + ("reject","same complete component shape")) + else: + b.goto(("digit",k,carry,sq,parity,x,0)) + elif tag == "digit": + _, k, carry, sq, parity, x, y = key + following = digit(k,carry,sq,x,y) + if following is None: + b.goto(("reject","inexact low numerator bits")) + else: + k1,c1,q1 = following + guide_one() + advance_inputs() + b.goto(("scan",k1,c1,x,y,q1,parity)) + elif tag == "component-end": + _, k, carry, sx, sy, sq, parity = key + following = ("extend",d,k,carry,sx,sy,sq,parity) + if count == 2: + b.branch(1, {2:following}, ("reject","same complete component shape")) + else: + b.goto(following) + elif tag == "extend": + _, remaining, k, carry, sx, sy, sq, parity = key + if remaining: + following = digit(k,carry,sq,sx,sy) + if following is None: + b.goto(("reject","inexact sign-extension numerator bits")) + else: + k1,c1,q1 = following + b.goto(("extend",remaining-1,k1,c1,sx,sy,q1,parity)) + elif sq not in (0,1) or carry != p*sx+r*sy-odd*sq: + b.goto(("reject","inexact quotient or signed output overflow")) + else: + b.emit("write", output, 2) + b.emit("move", output, 1) + guide_one() + advance_inputs() + b.goto(("start",parity^1,True)) + elif tag == "finish-source": + if count == 2: + b.branch(1, {4:("finish-output",)}, ("reject","same complete field frontier")) + else: + b.goto(("finish-output",)) + elif tag == "finish-output": + b.branch(output, {4:("rewind-step",)}, ("reject","exact staged output frontier")) + elif tag == "rewind-step": + b.emit("move", guide, -1) + b.goto(("rewind-read",)) + elif tag == "rewind-read": + b.branch(guide, {1:("rewind-inputs",),5:("install-start",)}, + ("reject","complete unary rewind guide")) + elif tag == "rewind-inputs": + for port in tuple(range(count))+(output,): + b.emit("move", port, -1) + b.goto(("rewind-step",)) + elif tag == "install-start": + b.emit("move", guide, 1) + b.goto(("install-guide",)) + elif tag == "install-guide": + b.branch(guide, {1:("install-read",),4:("installed-target-end",)}, + ("reject","install guide format")) + elif tag == "install-read": + b.branch(output, {s:("install-symbol",s) for s in (0,1,2)}, + ("reject","complete protected numeric output")) + elif tag == "install-symbol": + b.emit("write", 0, key[1]) + for port in (0,output,guide): + b.emit("move", port, 1) + b.goto(("install-guide",)) + elif tag == "installed-target-end": + b.branch(0, {4:("installed-output-end",)}, ("reject","exact installed target frontier")) + elif tag == "installed-output-end": + b.branch(output, {4:("halt",)}, ("reject","exact consumed protected output")) + elif tag == "halt": + b.emit("halt") + elif tag == "reject": + b.emit("reject", key[1]) + else: + raise ValueError("unknown compiler state") + return b.finish(), dict(operation=op,coefficient=str(q),denominator_twos=d, + odd_denominator=odd,numerator_target=p,numerator_source=r, + carry_bound=bound,carry_states=len(carry_states), + rows=len(b.rows),states=len(b.labels),public_ports=count,work_ports=2) + + +def source_literal(event, word, caller=None): + """Authenticate a source scalar retained by source_ir's nested remappings. + + Fields stay the source lowerer's actual ordered binding. Whole-job native + normalizers and two-output SWAP/SIGNED_SWAP services remain outside scope. + """ + need(event.op == "SERVICE", "only original scalar SERVICE") + token = event.token + wrappers = {'caller-local':4, 'product-left':4, + 'product-right':5, 'unit-fragment':6} + while isinstance(token,(tuple,list)) and token: + if len(token) == 1 and isinstance(token[0],(tuple,list)): + token = token[0] # The source remap API's empty context. + continue + if isinstance(token[0],str) and token[0] in wrappers: + need(len(token)==wrappers[token[0]],'source remap wrapper grammar') + # product-right also retains an issuing PAID token as provenance. + # Only the last member is the instruction currently being remapped. + token = token[-1] + continue + break + need(isinstance(token,(tuple,list)) and token and isinstance(token[0],str) + and token[0] in ('local','boundary-right','boundary-left','outer','query-add'), + 'source scalar origin grammar') + tag = token[0] + if tag == 'local': + need(len(token)==3,'local scalar token grammar') + _,pc,raw = token + need(type(pc) is int and 0 <= pc < len(word['program']), "actual current source event") + need(tuple(raw) == tuple(word['program'][pc]), "exact current scalar source bytes") + q, origin = Fraction(raw[-2]), ('local',pc) + else: + need(caller is not None,'outer scalar requires exact caller source') + if tag in ('boundary-right','boundary-left'): + need(len(token)==3,'boundary scalar token grammar') + _,column,raw = token + rows = caller['boundaries'][tag.split('-')[1]+'_program'] + need(tuple(raw) in tuple(tuple(x) for x in rows),'actual boundary scalar instruction') + origin = (tag,column) + elif tag == 'outer': + need(len(token)==4,'outer scalar token grammar') + _,site,column,raw = token + need(type(site) is int and 0 <= site < len(caller['physical_events']), + 'actual outer source site') + need(tuple(raw)==tuple(caller['physical_events'][site]),'exact outer scalar instruction') + origin = (tag,site,column) + else: + need(len(token)==5 and token[1]=='query','query scalar token grammar') + _,_,site,stage,column = token + need(type(site) is int and 0 <= site < len(caller['physical_events']), + 'actual query source site') + original = caller['physical_events'][site] + need(original[0]=='QUERY_SHEAR' and original[1]==stage and original[3] is False, + 'actual forward source query') + raw = ('ADD',None,None,1) + origin = (tag,site,column) + need(type(column) is int and 0 <= column < 104,'actual source scalar column') + need(raw[0] in ('ADD','SCALE'),'original source arithmetic scalar') + q = Fraction(raw[-1]) + op = raw[0] + need(op in ("ADD","SCALE"), "original scalar kind") + arity = 2 if op == "ADD" else 1 + need(len(event.fields) == arity and len(set(event.fields)) == arity, + "distinct actual scalar field ports") + need(q != 0, "nonzero source coefficient") + return op,q,origin + + +def bind_services(events, word, caller=None): + """Bind precisely the supplied source scalar events to finite tables.""" + cache, services, receipt = {}, {}, [] + for event in events: + op,q,origin = source_literal(event,word,caller) + key = (op,q) + if key not in cache: + cache[key] = compile_scalar(op,q) + table,_ = cache[key] + token = event.token + need(token not in services or services[token] == table, "unambiguous scalar service token") + services[token] = table + receipt.append((origin,op,str(q),tuple(event.fields))) + return services, tuple(cache[key][1] for key in sorted(cache)), tuple(receipt) diff --git a/research/current-rounded-scalar-tables/vendor/machine.py b/research/current-rounded-scalar-tables/vendor/machine.py new file mode 100644 index 0000000000..acf475e4fc --- /dev/null +++ b/research/current-rounded-scalar-tables/vendor/machine.py @@ -0,0 +1,406 @@ +"""Literal lifecycle control on fixed sequential tapes. + +Prepared for @CubeJerry with substantial OpenAI assistance. Apache-2.0. +Stack is the authenticated #5356 implementation supplied by the loader. +Algorithms never read tape addresses, extents, hardware arrays or a host stack. +Instruction and primitive tables are fixed before runtime inputs vary. +""" +from dataclasses import dataclass + +ZERO, ONE, LEFT, SEP, END, BASE, BLANK = range(7) +COMPONENT = 2 + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def emit(tape, symbol): + tape.write(symbol) + tape.move(1) + + +def origin(tape, marker=LEFT): + tape.move(-1) + while tape.read() != marker: + tape.move(-1) + tape.move(1) + + +def retire(tape, marker=LEFT): + """Erase all coded bytes, including encoded logical blanks.""" + origin(tape, marker) + while (symbol := tape.read()) != BLANK: + need(symbol in (ZERO, ONE), "contiguous binary body") + emit(tape, BLANK) + origin(tape, marker) + + +def transfer(source, target, source_marker=LEFT, target_marker=LEFT): + """Administrative actual-byte copy; never an arithmetic COPY.""" + origin(source, source_marker) + origin(target, target_marker) + need(target.read() == BLANK, "administrative transfer needs empty target") + while (symbol := source.read()) != BLANK: + need(symbol in (ZERO, ONE), "binary transfer") + emit(target, symbol) + source.move(1) + origin(source, source_marker) + origin(target, target_marker) + + +class CodedPort: + """Seven virtual symbols encoded as three nonblank physical bits. + + The physical LEFT before the current body is never exposed as data. + A left step at its local origin rejects. Two-sided routines first use + the standard translation to two one-sided ports. + """ + __slots__ = ("tape",) + + def __init__(self, tape): + self.tape = tape + + def read(self): + t = self.tape + if t.read() == BLANK: + return 4 + value = 0 + for _ in range(3): + bit = t.read() + need(bit in (ZERO, ONE), "whole virtual codeword") + value = 2 * value + bit + t.move(1) + for _ in range(3): + t.move(-1) + need(value < 7, "unused virtual codeword") + return value + + def write(self, value): + need(type(value) is int and 0 <= value < 7, "virtual alphabet") + for shift in (2, 1, 0): + emit(self.tape, (value >> shift) & 1) + for _ in range(3): + self.tape.move(-1) + + def move(self, direction): + need(direction in (-1, 1), "virtual unit move") + t = self.tape + if direction == 1: + if t.read() == BLANK: + self.write(4) + for _ in range(3): + t.move(1) + else: + t.move(-1) + if t.read() == LEFT: + t.move(1) + raise ValueError("native routine crossed its local origin") + t.move(-1) + t.move(-1) + + +class BinaryContextPort: + """Read-only raw binary descriptor, with its own physical alphabet. + + Unlike CodedPort, read returns physical BLANK=6 at the frontier. A table + may inspect that frontier but cannot pass it or the current LEFT marker. + This supplies runtime e/f/K/rho data through counted local operations. + """ + __slots__ = ("tape",) + + def __init__(self, tape): + self.tape = tape + + def read(self): + symbol = self.tape.read() + need(symbol in (ZERO, ONE, BLANK), "binary context alphabet") + return symbol + + def write(self, value): + raise ValueError("native context is read-only") + + def move(self, direction): + need(direction in (-1, 1), "binary context unit move") + t = self.tape + if direction == 1: + need(t.read() in (ZERO, ONE), "context frontier cannot be crossed") + t.move(1) + else: + t.move(-1) + if t.read() == LEFT: + t.move(1) + raise ValueError("native context crossed its local origin") + + +def read_code(tape): + """Consume a numeric-format code; physical frontier returns None.""" + if tape.read() == BLANK: + return None + value = 0 + for _ in range(3): + bit = tape.read() + need(bit in (ZERO, ONE), "numeric codeword") + value = 2 * value + bit + tape.move(1) + need(value < 7, "unused numeric codeword") + return value + + +def write_code(tape, value): + for shift in (2, 1, 0): + emit(tape, (value >> shift) & 1) + + +def initialize(target, shape): + """Dispose of arbitrary old bytes, then zero the complete common format.""" + need(target is not shape, "private initialization cannot destroy its guide") + retire(target) + origin(shape) + in_component = False + while (symbol := read_code(shape)) is not None: + need(symbol in (ZERO, ONE, COMPONENT), "canonical signed components") + if symbol == COMPONENT: + need(in_component, "positive component width") + write_code(target, COMPONENT) + in_component = False + else: + write_code(target, ZERO) + in_component = True + need(not in_component, "component terminator") + origin(shape) + origin(target) + + +def copy_as_add(target, source): + """Signed addition into the actual destination, including any residue. + + Components are little-endian two's complement followed by COMPONENT. + Carries reset at delimiters; equal-sign signed overflow rejects. + No ideal-zero test or exact-value overwrite substitutes for addition. + """ + need(target is not source, "distinct COPY/ADD ports") + origin(source) + origin(target) + carry = 0 + last_a = last_b = last_out = 0 + in_component = False + while True: + a = read_code(source) + b = read_code(target) + need((a is None) == (b is None), "same complete numerical extent") + if a is None: + need(not in_component, "complete signed component") + break + need(a in (ZERO, ONE, COMPONENT) and b in (ZERO, ONE, COMPONENT), + "canonical signed addition operands") + need((a == COMPONENT) == (b == COMPONENT), "same component boundaries") + if a == COMPONENT: + need(in_component, "positive signed component width") + need(last_a != last_b or last_out == last_a, "signed addition overflow") + carry = 0 + in_component = False + continue + value = a + b + carry + last_a, last_b, last_out = a, b, value & 1 + carry = value >> 1 + for _ in range(3): + target.move(-1) + write_code(target, last_out) + in_component = True + origin(source) + origin(target) + + +def execute_table(table, ports, readonly_context=()): + """Run a supplied finite native table with every port confined. + + These tables retain explicit semantics/time/space premises. Fixture + tables are not advertised as Gaussian implementations. + """ + views = (tuple(CodedPort(t) for t in ports) + + tuple(BinaryContextPort(t) for t in readonly_context)) + pc = 0 + while True: + row = table[pc] + op = row[0] + if op == "halt": + break + if op == "reject": + raise ValueError(row[1]) + if op == "goto": + pc = row[1] + continue + view = views[row[1]] + if op == "branch": + pc = dict(row[2]).get(view.read(), row[3]) + continue + if op == "write": + view.write(row[2]) + elif op == "move": + view.move(row[2]) + else: + raise ValueError("native table opcode") + pc += 1 + for tape in tuple(ports)+tuple(readonly_context): + origin(tape) + + +@dataclass(frozen=True) +class Instruction: + op: str + ports: tuple = () + token: tuple = () + + +class Controller: + """Fixed finite controller of a fixed flat compiled template. + + rows implements the separately priced row/shape interface; all its + dynamic state belongs on the supplied tapes. services contains fixed + finite transition tables. Payload ports include metadata and all scratch. + The only runtime continuation is the physical Stack. + """ + def __init__(self, program, public_count, payloads, control, descriptor, + bridge, child_header, rows, services, stack_class, protected_ports=(), + primitive_work=(), primitive_context=()): + self.program = tuple(program) + self.public_count = public_count + self.payloads = tuple(payloads) + self.control = control + self.descriptor = descriptor + self.bridge = bridge + self.child_header = child_header + self.rows = rows + self.services = services + need(len({id(t) for t in self.payloads+(control,descriptor,bridge,child_header)}) + == len(self.payloads)+4, "all physical ports distinct") + self.stack = stack_class(self.payloads, control, descriptor) + self.protected_ports = tuple(protected_ports) + owned = {e.ports[0] for e in self.program if e.op == "INIT"} + need(all(public_count <= i < len(self.payloads) for i in owned), "INIT only private physical slots") + need(owned.isdisjoint(self.protected_ports), "owned fields cannot be borrowed descriptors") + self.root_cleanup = tuple(i for i in range(public_count,len(self.payloads)) + if i not in self.protected_ports) + self.primitive_work = tuple(primitive_work) + self.primitive_context = tuple(primitive_context) + data_ports = {i for e in self.program for i in e.ports} + need(all(0 <= i < len(self.payloads) for i in data_ports), "compiled port range") + need(all(i >= public_count and i < len(self.payloads) and i not in data_ports + and i not in self.protected_ports for i in self.primitive_work), "separate primitive scratch") + need(len(set(self.primitive_work)) == len(self.primitive_work), "distinct primitive work ports") + need(len(set(self.primitive_context)) == len(self.primitive_context) + and all(i in self.protected_ports and 0 <= i < len(self.payloads) + and i not in data_ports for i in self.primitive_context), "borrowed binary context ports") + self.pc_bits = max(1, (len(self.program) - 1).bit_length()) + self.pc_words = tuple(tuple((pc >> j) & 1 for j in range(self.pc_bits)) + for pc in range(len(self.program))) + need(self.program and self.program[-1].op == "RET", "finite completed program") + + def save_pc(self, pc): + need(self.descriptor.read() == BLANK, "empty active PC descriptor") + for bit in self.pc_words[pc]: + emit(self.descriptor, bit) + origin(self.descriptor, BASE) + + def consume_pc(self): + pc = 0 + for shift in range(self.pc_bits): + bit = self.descriptor.read() + need(bit in (ZERO, ONE), "binary return PC") + pc |= bit << shift + emit(self.descriptor, BLANK) + need(self.descriptor.read() == BLANK, "exact fixed return PC width") + origin(self.descriptor, BASE) + need(pc < len(self.program) and pc > 0 and self.program[pc-1].op == "PAID", + "return PC designates a paid continuation") + return pc + + def has_parent(self): + self.control.move(-1) + symbol = self.control.read() + self.control.move(1) + need(symbol in (BASE, END), "complete continuation top") + return symbol == END + + def descend(self, pc): + event = self.program[pc] + source = self.payloads[event.ports[0]] + transfer(source, self.bridge, target_marker=BASE) + self.rows.prepare(event.token, self.child_header) + self.save_pc(pc + 1) + self.stack.push((True,) * len(self.payloads)) + self.rows.install(self.bridge, self.child_header, + self.payloads[:self.public_count]) + retire(self.bridge, BASE) + retire(self.child_header, BASE) + + def primitive(self, token, fields): + for i in self.primitive_work: + retire(self.payloads[i]) + execute_table(self.services[token], + tuple(self.payloads[i] for i in fields+self.primitive_work), + tuple(self.payloads[i] for i in self.primitive_context)) + for i in self.primitive_work: + retire(self.payloads[i]) + + def ascend(self): + self.rows.collect(self.payloads[:self.public_count], self.bridge) + for tape in self.payloads: + retire(tape) + self.stack.pop() # ignore observer sizes and heads + pc = self.consume_pc() + target = self.payloads[self.program[pc-1].ports[0]] + retire(target) + transfer(self.bridge, target, source_marker=BASE) + retire(self.bridge, BASE) + return pc + + def run(self, observe=None): + pc = 0 + while True: + event = self.program[pc] + if observe is not None: + observe("before", pc, event) # checker only; ignores return value + if event.op == "INIT": + initialize(self.payloads[event.ports[0]], self.payloads[0]) + pc += 1 + elif event.op == "CLEAR": + retire(self.payloads[event.ports[0]]) + pc += 1 + elif event.op == "COPY": + copy_as_add(self.payloads[event.ports[0]], self.payloads[event.ports[1]]) + pc += 1 + elif event.op == "SERVICE": + self.primitive(event.token,event.ports) + pc += 1 + elif event.op == "PAID": + if self.rows.is_leaf(event.token): + self.primitive(("leaf",)+event.token,event.ports) + pc += 1 + else: + self.descend(pc) + pc = 0 + elif event.op == "RET": + if not self.has_parent(): + for i in self.root_cleanup: + retire(self.payloads[i]) + break + pc = self.ascend() + else: + raise ValueError("compiled opcode") + if observe is not None: + observe("after", pc, event) + + +def boundary_actions(q, b, parent_total, child_total, input_length, + output_length, staged_header_length): + """Exact descend+ascend actions, excluding the three row-service calls. + + Also excludes caller leaf/top tests. All heads are at local origins. + Includes PC, all retirement, occupied-target replacement and both relays. + """ + return (4 * parent_total + 5 * child_total + 18 * input_length + + 13 * output_length + 5 * staged_header_length + + 38 * q + 27 * b + 103) diff --git a/research/current-rounded-scalar-tables/verify.py b/research/current-rounded-scalar-tables/verify.py new file mode 100644 index 0000000000..08abcbbee1 --- /dev/null +++ b/research/current-rounded-scalar-tables/verify.py @@ -0,0 +1,161 @@ +#!/usr/bin/env python3 +"""Bounded literal rounded scalar verification; standard library only. + +Prepared for @CubeJerry with substantial OpenAI assistance. Apache-2.0. +""" +import argparse +from fractions import Fraction as F +import hashlib +import json +from pathlib import Path +import sys +import types + +ROOT=Path(__file__).resolve().parent +sys.path.insert(0,str(ROOT)) +from source_binding import authenticate,bind_scales,need,current_scales,word +from tables import compile_rounded +from physical import check_case,execute,Tape,encode_symbols,symbols,rounded + + +def source_suite(): + registry,cache,rows=bind_scales() + for table,receipt in cache.values(): + need(all(r[0] in ('branch','write','move','goto','halt','reject') for r in table),"literal finite instruction alphabet") + need(all(r[2] in (-1,1) for r in table if r[0]=='move'),"only unit table movements") + need(all(r[1]<3 for r in table if r[0] in ('branch','write','move')),"three SCALE ports only") + inventory=[dict(receipt,occurrences=sum(z['coefficient']==str(q) for z in rows)) + for q,(table,receipt) in sorted(cache.items())] + w=word();odd_adds=sum(e[0] in ('ADD','COPY') and F(e[3]).denominator & (F(e[3]).denominator-1)!=0 + for e in w['program']) + need(odd_adds==4079,"odd ADD class remains uninstantiated") + # Literal current site and exact old ABI token; no new op is introduced. + token=('local',37480,('SCALE',697,'-2/3',591)) + table=registry[token];receipt=cache[F(-2,3)][1] + admitted,out,bound=check_case(table,receipt,'SCALE',F(-2,3),(1,0),(),4) + need(admitted and out['output']==(-1,0),"current source seam rounded successfully") + need(('local',37480,('SCALE',697,'-1/3',591)) not in registry,"wrong current source coefficient rejected") + return dict(occurrences=len(rows),coefficients=len(cache),inventory=inventory, + total_table_rows=sum(len(t) for t,r in cache.values()), + max_table_rows=max(len(t) for t,r in cache.values()), + actual_source_seam=dict(pc=37480,field=697,input=[1,0],output=list(out['output']),actions=out['actions']), + remaining_odd_ADD_occurrences=odd_adds, + binding_scope='exact local tokens for current SCALE class only; complete caller/recursive exporter not installed') + + +def arithmetic_suite(): + qs=sorted(set(q for _,_,q in current_scales())) + cases=accepts=0;max_actions=0 + for q in qs: + table,receipt=compile_rounded('SCALE',q) + for width in range(1,6): + for x in range(-(1<<(width-1)),1<<(width-1)): + admitted,out,bound=check_case(table,receipt,'SCALE',q,(x,0),(),width) + cases+=1;accepts+=admitted;max_actions=max(max_actions,out['actions']) + extras=[F(-2,3),F(1,2),F(-5,6),F(3,5),F(0),F(3),F(-3)] + add_cases=add_accepts=0 + for q in extras: + table,receipt=compile_rounded('ADD',q) + for width in range(1,5): + domain=range(-(1<<(width-1)),1<<(width-1)) + for x in domain: + for y in domain: + admitted,out,bound=check_case(table,receipt,'ADD',q,(x,0),(y,0),width) + add_cases+=1;add_accepts+=admitted + table,receipt=compile_rounded('SCALE',F(-2,3)) + seam_cases=0 + for width in range(2,10): + for x in range(-(1<<(width-1)),1<<(width-1)): + admitted,_,_=check_case(table,receipt,'SCALE',F(-2,3),(x,0),(),width) + need(admitted,"all -2/3 inputs admitted for W>=2");seam_cases+=1 + return dict(current_SCALE_cases=cases,current_SCALE_accepts=accepts,current_SCALE_rejects=cases-accepts, + small_ADD_cases=add_cases,small_ADD_accepts=add_accepts,small_ADD_rejects=add_cases-add_accepts, + seam_all_inputs_cases=seam_cases,max_current_SCALE_actions=max_actions, + oracle='direct mathematical floor and final signed range; no table transitions imported') + + +def history_suite(): + table,receipt=compile_rounded('SCALE',F(-2,3)) + work=[Tape(tuple(i%2 for i in range(1800)),101),Tape(tuple((i+1)%2 for i in range(2400)),209)] + work[0].pos+=1700;work[1].pos+=2400 + history=[] + for width,components in [(19,12),(2,2),(7,4),(3,2)]: + values=tuple((1 if i%2 else -1)*min(i+1,(1<<(width-1))-1) for i in range(components)) + ok,out,bound=check_case(table,receipt,'SCALE',F(-2,3),values,(),width,work) + need(ok,"history values in range") + history.append(dict(width=width,components=components,actions=out['actions'],bound=bound, + old_backing=out['old_backing'],historical_backing=[t.highwater-t.origin for t in work])) + # A late overflow leaves the whole target unchanged, despite earlier staged output. + t,r=compile_rounded('SCALE',F(2)) + late=execute(t,'SCALE',(0,3),(),3,work) + need(late['error']=='rounded signed output overflow',"late-component overflow guard") + # A rejected dirty bank can be retired and reused; the new public input is + # freshly at its origin. No automatic restoration after failure is claimed. + ok,reused,bound=check_case(table,receipt,'SCALE',F(-2,3),(1,0),(),3,work) + need(ok and reused['output']==(-1,0),"dirty failed work retired before reuse") + residue_failure=execute(table,'SCALE',(0,0),(),3,work,target_symbols=(0,1,0)) + need(residue_failure['error'] is not None,"residue prepass fails with marker6 live") + ok,_,_=check_case(table,receipt,'SCALE',F(-2,3),(1,0),(),3,work) + need(ok,"encoded marker6 does not hide dirty tail from retirement") + bad=[] + for label,syms in [('empty',()),('odd_component',symbols((1,),3)), + ('empty_component',(2,)),('foreign_numeric_symbol',(3,2,0,0,0,2)), + ('unterminated',(0,1,0))]: + out=execute(table,'SCALE',(0,0),(),3,target_symbols=syms) + need(out['error'] is not None,"numeric grammar rejection "+label);bad.append(label) + ta,ra=compile_rounded('ADD',F(-2,3)) + mismatch=execute(ta,'ADD',(1,0),(1,0),3,source_symbols=symbols((1,0),4)) + need(mismatch['error'] is not None,"different input component shapes rejected") + contexts=[Tape((1,0,1),301,True),Tape((0,1)*7,401,True),Tape((),501,True)] + ctx=execute(table,'SCALE',(1,0),(),4,contexts=contexts) + need(ctx['output']==(-1,0),"preserved extra borrowed contexts") + metered=[] + for op,q,x,y,width in [('SCALE',F(-2,3),(-2,1),(),3), + ('SCALE',F(-5,48),(-2,1),(),2), + ('ADD',F(-5,6),(-1,0),(1,-1),3)]: + tt,rr=compile_rounded(op,q) + out=execute(tt,op,x,y,width,count_rows=True) + need(out['error'] is None,"metered representable fixture") + S=len(x)*(width+1);R=len(x);d=rr['denominator_twos'] + need(out['table_rows']<=37*S+3*d*R+32,"finite-control row count") + need(out['actions']+out['table_rows']<=512*(S+1)+64*d*R+7*out['old_backing'], + "combined physical and finite-control count") + metered.append(dict(op=op,coefficient=str(q),width=width,physical_actions=out['actions'],table_rows=out['table_rows'])) + return dict(history=history,late_overflow_public_unchanged=True,dirty_failure_then_success=True, + malformed_rejected=bad+['ADD_component_shape'], + borrowed_binary_contexts=3, + residue_marker_failure_reused=True,combined_cost_samples=metered, + failure_scope='public unchanged; failed heads and scratch may remain unrestored') + + +def controls_suite(): + source=(ROOT/'tables.py').read_text();caught=[] + mutations=[('missing_signed_residue_correction','residue = (rho - a * sign * power) % odd','residue = rho % odd','SCALE',F(-2,3),(-2,0),(),2), + ('missing_upward_rounding_offset','offset = denominator // 2','offset = 0','SCALE',F(1,2),(1,0),(),2), + ('wrong_final_signed_guard','carry != p*sx+r*sy-odd*sq','carry != p*sx+r*sy+odd*sq','SCALE',F(1,2),(-2,0),(),2)] + for label,old,new,op,q,x,y,w in mutations: + need(source.count(old)==1,"unique mutation site") + ns={'__name__':'rounded_mutant_'+label} + exec(compile(source.replace(old,new),'','exec'),ns) + table,receipt=ns['compile_rounded'](op,q) + try:check_case(table,receipt,op,q,x,y,w) + except ValueError:caught.append(label) + else:raise ValueError('mutant escaped '+label) + # Floor, truncation and symmetry are distinct on these actual signed cases. + need(rounded(F(1,2),1)==1 and rounded(F(1,2),-1)==0,"even ties upward") + need(rounded(F(-2,3),1)==-1 and int(F(-2,3))==0,"floor differs from truncation") + return dict(table_mutants_detected=caught,additional_controls=['even_positive_and_negative_ties','floor_not_truncation']) + + +def main(): + parser=argparse.ArgumentParser();parser.add_argument('--suite',choices=('source','arithmetic','history','controls','all'),default='all');parser.add_argument('--write',action='store_true');args=parser.parse_args() + authenticate() + for name,fn in [('source',source_suite),('arithmetic',arithmetic_suite),('history',history_suite),('controls',controls_suite)]: + if args.suite not in (name,'all'):continue + result=fn();path=ROOT/(name.upper()+'.json') + if args.write:path.write_text(json.dumps(result,indent=2,sort_keys=True)+'\n') + else:need(result==json.loads(path.read_bytes()),'frozen '+name+' receipt') + print('PASS_CURRENT_ROUNDED_SCALAR_'+name.upper(),flush=True) + + +if __name__=='__main__':main()