From 3348fccea855082786d5f0fc5558b73d4974e745 Mon Sep 17 00:00:00 2001 From: Dillon Amburgey Date: Fri, 23 Oct 2026 18:30:39 -0400 Subject: [PATCH] Retain all native inputs in an eight-mode coupled helper provider --- .../ATTRIBUTION.md | 50 + .../native-rank8-helper-provider/PROOF.md | 236 + .../PROVIDER.json | 13105 ++++++++++++++++ .../native-rank8-helper-provider/README.md | 83 + .../native-rank8-helper-provider/SOURCES.json | 54 + .../native-rank8-helper-provider/TASK.json | 88 + .../native-rank8-helper-provider/VERIFY.json | 39 + .../native-rank8-helper-provider/WITNESS.json | 434 + .../native-rank8-helper-provider/WORD.json.gz | Bin 0 -> 94039 bytes .../native-rank8-helper-provider/verify.py | 602 + 10 files changed, 14691 insertions(+) create mode 100644 research/native-rank8-helper-provider/ATTRIBUTION.md create mode 100644 research/native-rank8-helper-provider/PROOF.md create mode 100644 research/native-rank8-helper-provider/PROVIDER.json create mode 100644 research/native-rank8-helper-provider/README.md create mode 100644 research/native-rank8-helper-provider/SOURCES.json create mode 100644 research/native-rank8-helper-provider/TASK.json create mode 100644 research/native-rank8-helper-provider/VERIFY.json create mode 100644 research/native-rank8-helper-provider/WITNESS.json create mode 100644 research/native-rank8-helper-provider/WORD.json.gz create mode 100644 research/native-rank8-helper-provider/verify.py diff --git a/research/native-rank8-helper-provider/ATTRIBUTION.md b/research/native-rank8-helper-provider/ATTRIBUTION.md new file mode 100644 index 0000000000..efe3acb566 --- /dev/null +++ b/research/native-rank8-helper-provider/ATTRIBUTION.md @@ -0,0 +1,50 @@ +# Predecessors and exact scope + +Ali Romman's [PR5383](https://github.com/CrocSwap/integer-mult-bounds/pull/5383), +head `4bd6efa51a495a7c7b7754915cf0244e7e60969e`, supplies the exact eight +cached-center candidate rows and sites. Its WITNESS is retained verbatim as +package-local candidate data. The byte hash is checked, and all used +relations, chronology and zero-call claims are independently recomputed from +the pinned main native source. The PR head is provenance, not a required Git +object or an assumed accepted theorem. We do not claim priority for the +cached-center relation or for center deletion. + +Cao Yifan / intqwq supplies `kappa-round3-warp-20261022`'s canonical native +helper/map/contact source and the PR4610 lineage. Its exact payload is +retained by main's `native-center-free-code/SOURCE-WORD.json.gz`. +Dugongue / mdumitrean supplies [PR4929](https://github.com/CrocSwap/integer-mult-bounds/pull/4929)'s +center-free code, eight-mode factorization, source construction and analytic +interpretation. Cinna Davis / 1337isnot1337 supplies the +[PR4694](https://github.com/CrocSwap/integer-mult-bounds/pull/4694) retained-center +interface, [PR4698](https://github.com/CrocSwap/integer-mult-bounds/pull/4698) +common-chart helper basis and conditional consumer, and +[PR4470](https://github.com/CrocSwap/integer-mult-bounds/pull/4470) controller. +A retained cache or eight-dimensional defect is not newly discovered here. + +The pinned `coded-native-caller` supplies the physical main normalizers, +corrected conjugated backward convention, compiled wrapper recipes, contact +matrix M, and exact Clifford evaluator. Its Clifford source traces through +`t74-native-fast/vendor/native/new/code/borrow/vendor/clifford`; retain zxv's +native/productive/compiler work and the original license. Retain Jacob Alan +Sussman's mixed-target recursion, Ryanson Jonathan's controller checks, +Dugongue's transported-frame lemma and the cumulative helper/native lineage +identified by the predecessor packages. The exact shared bytes are pinned in +SOURCES.json rather than duplicated under new authorship. + +Within this continuation, coordinated OpenAI Codex agents constructed the +unrestricted retained-cache source, independently replayed all 641 columns, +derived the dual retraction and physical rank-eight normalization, and +reviewed the basis costs. This package combines that work into one fresh +registered replay with an explicit all-owner boundary recipe, verbatim +candidate provenance, local bill and every-positive-width proof. New work is +the fully owned **coupled** provider with all 632 originals preserved and all +nine owned outputs cleared. It is not a caller, an autonomous H8 donor, an +exponent improvement, a formal-kernel proof or independent human review. + +The broader investigation and priority/overlap checkpoints remain in the +campaign's [Discussion4930](https://github.com/CrocSwap/integer-mult-bounds/discussions/4930) +and TASK.json. This package preserves the same frozen native payload while +binding its publication task metadata to main at +`1ec1119972c9aefe42525172d07b332fcff81cb4`. It does not claim an exhaustive +novelty search or alter the selected result. Prepared for Dillon with +substantial OpenAI Codex assistance. Apache-2.0. diff --git a/research/native-rank8-helper-provider/PROOF.md b/research/native-rank8-helper-provider/PROOF.md new file mode 100644 index 0000000000..5cbfc4fd02 --- /dev/null +++ b/research/native-rank8-helper-provider/PROOF.md @@ -0,0 +1,236 @@ +# A source-bound backward provider with eight coupled rank-eight outputs + +The construction has 632 arbitrary original inputs and nine arbitrary owned +inputs. Its paid native profile is +`{1:2193,2:412,3:510,4:127,5:40}`. It returns 400 unchanged native helper jobs +and a coupled block on the 224 main and eight remaining helper owners: + +\[ + X=Dx-Ry+RW h,\qquad Y=Dy,\qquad H=D(h-Zy). \tag{1} +\] + +Here `R=DQ` is the full native rank-nine Gaussian, `D` acts on the eight +noncentral axes, and `Q` acts on the central axis. The eight `H` outputs remain +coupled; they are **not eight autonomous H8 targets**. No complete caller or +new multiplication exponent follows. All nine owned outputs are zero. + +## 1. Exact source and the changed word + +`SOURCES.json` pins the main-branch source, code, normalizers and Clifford +compiler. The native source's decompressed SHA256 is +`cfcd36b40326d7a5815e1db5313444379b3fb756b27d5201c561574c085cc0dd`. +`WITNESS.json` retains Ali Romman's PR5383 candidate verbatim, with SHA256 +`24599011da06325e1012619b2b84a4dd3aceb90ab42d3caaf6414879e7d16591`. +It supplies candidate sites and rational rows; it is not a proof oracle or a +pending Git-object dependency. Every used identity is checked again against +the pinned main source. + +For witness row `i`, after the indicated original `cached_event`, CLEAR owned +`C[i+1]` and COPY the indicated persistent row into it at its actual chart. +Every cache precedes every removed center. At the original center event, +replace the H8 call by CLEAR `C0`, then COPY `C[i+1]` into `C0` at that same +rank-eight chart. At the indicated later H1 call, replace the call by a +`zero_retag`: this is physical identity on the **exactly zero** field, with +its bookkeeping chart changed to the old call's output chart. All other +instructions, including inherited physical metadata, remain unchanged. +`WORD.json.gz` emits the complete resulting backward native word; the verifier +regenerates it from the canonical source and compares its parsed content. + +The replay begins with one independent formal column per field, including +all nine owned fields. It tracks exact rational coefficients in the free +group on the source's native warp symbols, their inverses, and actual chart +tags. Every ordinary operation is checked at its true chart. COPY fills only +owned zero; CLEAR acts only on owned fields. Before each of the eight retags, +every one of the 641 input coefficients is zero. All initial owned dirt is +cleared before use and is absent from every endpoint. + +The source's ten `phase` records are named stage annotations, not scalar +Clifford phase gates; its 448 `adapter` records retain the predecessor's +physical entrance/exit bindings (there are no `residual_adapter` records in +this backward word). As in the pinned predecessor normalized-row semantics, +these do not update formal rows. They are preserved in the emitted word, +not deleted or priced away. Their physical interpretation and native cost +are inherited; this package separately verifies every new physical boundary +identity including absolute phase. + +The same interpreter replays the original source, obtaining its full +632-row normalized backward endpoint `(x-y,y,h)` and clean original temporary. +It separately replays center deletion to derive the native coupling below. +The changed word has eight fewer H8 and eight fewer H1 calls than the original +source, with no additional Gaussian call. It has 16 extra COPYs and 16 extra +CLEARs. This is a changed source construction, not a constraint such as +`Delta h=0` on otherwise independent inputs. + +## 2. Source-derived coupling and an ordinary helper basis + +Use the inherited 112-by-8 matrix `M`, stored transposed as `mode_columns`. +The verifier checks all entries of + +\[ + M^T M=56I_8,\qquad A=I-MM^T/4. +\] + +Fresh replay of the center-deleted source gives + +\[ + X=x-A^Ty,\qquad Y=y,\qquad H=h-B^TM^Ty. +\] + +The verifier derives every entry of `B` by projecting the actual 408-by-112 +helper-to-Y coefficient matrix onto `M/56`; it then checks the entire +factorization and all 632 endpoints. The eight candidate rows `Delta` satisfy +`Delta B^T = S`, an exactly checked signed permutation. Put `E=S^-1 Delta`. +Thus `E B^T=I8`. Fresh original-prefix replay also binds the candidate cache +rows, their chronology and their actual rank-eight charts. + +In these coordinates the changed word has normalized endpoint + +\[ + X=x-y+(M/4)Eh,\quad Y=y,\quad H=(I-B^TE)h, \tag{2} +\] + +and its canonical mode-`k` cache is + +\[ + f_i(E_kh-M_k^Ty),\qquad f_i=\texttt{zero_factor}_i\,S_{ik}. \tag{3} +\] + +The registered check composes all changed endpoint rows with the following +basis, rather than accepting (2) or (3) from a saved endpoint registry. + +The union of supports of `B` and `E` comprises 122 actual cold H9 owners: each +has ground entrance chart and full-R exit chart. Choose the eight original +mode owners `[224,225,227,229,240,241,256,257]`. Define `L` on these 122 owners: +its mode columns are `B^T`; its other columns are `(I-B^TE)e_j`. Exact +Gauss-Jordan reduction constructs `L^-1` and verifies both inverse products, +`EL` selecting precisely the eight mode coordinates, and `L^-1B^T` embedding +precisely those coordinates. Every coefficient is dyadic. The emitted +`input_basis_program` and `output_basis_program` execute these two maps in +place, without extra owned basis storage. + +Both bases mix only fields sharing the appropriate physical chart, so scalar +owner operations implement them ordinarily. After entrance `L` and exit +`L^-1`, every one of the 632 persistent rows is checked: the eight selected +helper rows are zero, the other 400 helper rows are unchanged, `Y=y`, and +`X=x-y+(M/4)h_mode`. Each cache is exactly +`f_i(h_mode,k-M_k^T y)`. Thus the cache fills a vacated original direction; +it supplies no additional productive input or job credit. + +## 3. Literal physical boundary maps and ownership + +Backward frames use complex conjugation of the native frames, as in the +pinned source convention; they are not silently replaced by adjoints. Let +`Kp` be the 112 inherited main normalizers. For each actual cache frame `F8`, +the verifier constructs an orthogonal, phase-correct monomial `Km` from its +unique missing odd noncharacteristic line, and compiles a monomial `N` with + +\[ + N\overline{F8}K_m=D,\qquad K_mR=RK_m. +\] + +`PROVIDER.json` contains all eight literal `Km` and `N` words, signed tableaux +and nonzero zero-column phase anchors. The compiler's output is checked +explicitly even under Python `-O`. All `Kp` commute with `R`, including +absolute phase. Every boundary word contains only monomial gates. + +Apply `2Km` to the eight original mode inputs before `L`. At the exit, apply +`N/(2f_i)` to each cache. Use the inherited **fused compiled** backward main +input/output wrappers. The verifier checks 336 main diagonal/shear blocks, +896 nonzero main/helper coupling blocks and eight helper diagonal blocks, +for 1,240 exact physical equations. Comparison includes the signed tableau +and exact zero-state vector, so an undetected global phase is impossible +within this Clifford model. These equations yield (1), with + +\[ + W=\operatorname{diag}(K_p^{-1})M\operatorname{diag}(K_m)/2, + \quad + Z=\operatorname{diag}(K_m^{-1})M^T\operatorname{diag}(K_p)/2. +\] + +The main code is the predecessor's `C=diag(Kp^-1) A diag(Kp)`. Exact word +cancellation and the scalar factorization give +`ZW=14I8`, `WZ=I-C`; `W` and `Z` intertwine `R` on their respective banks. +No commutation with `D` or `Q` is assumed. These are finite ordinary code +maps with exterior scalar coefficients, not additional Gaussian calls. + +After normalization, SWAP each cache's **whole physical field and chart tag** +with its identically zero original mode output. The original owner now holds +the normalized coupled output; the owned slot holds zero and can be CLEARed. +There is no persistent erasure and no attempted free chart conversion of a +nonzero field. `C0` is already zero, so all nine owned outputs are zero. +Ordering the coupled input/output banks as `(y,h,x)` makes (1) triangular +with invertible diagonal `D`. Together with the 400 unchanged native jobs, +this proves preservation of all 632 original input directions. It does not +emit an inverse schedule or establish a same-cost inverse/transpose. + +## 4. Exact local bill + +Relative to the original raw backward source, the selected schedule adds: + +| Ordinary operation | Added field operations | +| --- | ---: | +| ADD | 1,644 | +| SCALE | 40 | +| COPY | 16 | +| CLEAR | 24 | +| Whole-field SWAP, with chart tag | 8 | +| Monomial field map | 464 | + +Each basis direction uses 822 ADD and 12 SCALE: its three elimination swaps +are expanded into three ADDs and one SCALE each. Eight input scalings and +eight cache scalings give the remaining 16 SCALEs. The source rewrite adds +16 COPY and 16 CLEAR; final cache consumption adds eight CLEAR. The 464 +monomial maps are 448 fused inherited main standardizers, eight `Km` and +eight `N`. This counts the newly installed boundary schedule; all unchanged +source warp/phase/adapter traffic and native child implementations remain in +the emitted word and retain their inherited costs. In particular, this table +does not assert that a field monomial map is zero machine work. + +The original source has 16,273 ADD, 1,164 SCALE and 16 CLEAR. Including the +new boundary scalars, the schedule therefore has 17,917 ADD, 1,204 SCALE, +16 COPY, 40 CLEAR and eight whole-field SWAP, plus the explicitly described +monomial boundary maps and inherited native operations. Nine owned fields +suffice: the original center temporary and eight retained caches. Their +initial values are arbitrary; their final values are zero. The autonomous +helper profile is `{4:28,7:7,8:47,9:318}`. The physical implementations of +those unchanged native helper jobs are inherited from the pinned source; +scalar identity rows alone are not a new proof of those implementations. + +For an explicit local stability bound, use the maximum of field Euclidean +norms. ADD by `a` has norm at most `1+|a|`, SCALE has norm at most +`max(1,|a|)`, and unitary Gaussian/monomial maps, COPY, CLEAR and SWAP have +norm at most one. The verifier sums upward-rounded base-two logarithms for +every scalar operation in this finite schedule, obtaining **18,996**. Hence +every suffix amplifies an injected field error by at most `2^18996`; at most +`m` injections of norm `epsilon` give the conservative bound +`m*2^18996*epsilon`. All dyadic constants and word lengths are fixed. This +establishes local bounded amplification, not a complete coordinate rounding, +tape movement, recursive precision or outer multiplier budget. + +## 5. Every positive fiber width and verification boundary + +A free-group identity evaluates in any assignment of invertible native warp +operators. Therefore the exact rational row equalities and zero-retag +premises hold uniformly when native operations act on any positive fiber +width `f`. The scalar owner coefficients and scalar `L/L^-1` programs stay +outside the tensor product; in particular `ZW=14I`, not `14^f I`. Each +compiled monomial word uses the inherited prescription: `P` and `X` act +columnwise, `D` sums its Z4 polynomial over the columns, and a `phase` gate +contributes its phase once per column. Each address-operator identity is lifted +columnwise; an absolute phase `i^gamma` lifts to `i^(f gamma)`, rather than +being confused with an exterior scalar sign. Exact one-column operator +identities, word cancellation and rational matrix identities then prove the +same physical boundary composition for every `f`. The inherited native +uniform implementation hypotheses remain inherited. + +The registered verifier performs complete 641-column native row replay, +exact scalar endpoint composition, and the 1,240 physical boundary checks. +It does not claim a separately flattened 641-column physical-matrix replay, +a formal-kernel proof, independent human approval, hosted CI, or a complete +caller. It rejects a nonzero zero-retag, a single changed basis ADD +coefficient, a changed saved-cache coefficient and a phase-only error with +the correct tableau. Normal and optimized runs use explicit checks for the +new claims. The caller must close all 224 main and eight coupled helper +outputs, preserve the other 400 jobs, charge every added child and ordinary +operation, and discharge precision, storage and outer-budget obligations +before any new target credit or exponent is admitted. diff --git a/research/native-rank8-helper-provider/PROVIDER.json b/research/native-rank8-helper-provider/PROVIDER.json new file mode 100644 index 0000000000..0afd30ed01 --- /dev/null +++ b/research/native-rank8-helper-provider/PROVIDER.json @@ -0,0 +1,13105 @@ +{ + "schema_version": 1, + "source_payload_sha256": "cfcd36b40326d7a5815e1db5313444379b3fb756b27d5201c561574c085cc0dd", + "candidate_witness_sha256": "24599011da06325e1012619b2b84a4dd3aceb90ab42d3caaf6414879e7d16591", + "word_payload_sha256": "05490717144b3e6c69c0cc9e5c5df5c69d841ca13bf29aabd1b0db180628f038", + "basis_roles": [ + 224, + 225, + 227, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 245, + 246, + 247, + 250, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 261, + 262, + 263, + 266, + 268, + 269, + 270, + 271, + 272, + 276, + 280, + 283, + 286, + 287, + 288, + 294, + 296, + 297, + 300, + 302, + 303, + 306, + 308, + 312, + 315, + 318, + 319, + 324, + 326, + 328, + 332, + 333, + 334, + 335, + 336, + 340, + 347, + 350, + 351, + 352, + 356, + 366, + 367, + 368, + 372, + 379, + 382, + 383, + 384, + 388, + 390, + 391, + 392, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 405, + 406, + 409, + 410, + 411, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 421, + 422, + 425, + 426, + 427, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 437, + 438, + 441, + 442, + 443, + 445, + 446, + 447 + ], + "mode_owners": [ + 224, + 225, + 227, + 229, + 240, + 241, + 256, + 257 + ], + "candidate_mode_permutation": [ + 2, + 0, + 1, + 3, + 5, + 7, + 6, + 4 + ], + "candidate_mode_signs": [ + "1", + "1", + "1", + "-1", + "-1", + "1", + "1", + "-1" + ], + "canonical_retraction_E": [ + [ + [ + 1, + "1" + ], + [ + 160, + "-1" + ], + [ + 164, + "-1" + ], + [ + 166, + "1" + ], + [ + 167, + "1" + ], + [ + 168, + "1" + ], + [ + 173, + "-1" + ] + ], + [ + [ + 1, + "1" + ], + [ + 3, + "-1" + ], + [ + 5, + "1" + ], + [ + 7, + "-2" + ], + [ + 8, + "1" + ], + [ + 10, + "-1" + ], + [ + 11, + "-1" + ], + [ + 12, + "-1" + ], + [ + 13, + "-1" + ], + [ + 14, + "2" + ], + [ + 15, + "1" + ], + [ + 160, + "-1" + ], + [ + 164, + "-1" + ], + [ + 166, + "1" + ], + [ + 167, + "1" + ], + [ + 168, + "1" + ], + [ + 173, + "-1" + ] + ], + [ + [ + 6, + "1" + ], + [ + 100, + "-1" + ], + [ + 102, + "1" + ], + [ + 104, + "1" + ], + [ + 109, + "-1" + ] + ], + [ + [ + 3, + "-1" + ], + [ + 5, + "-1" + ], + [ + 8, + "1" + ], + [ + 10, + "-1" + ], + [ + 11, + "-1" + ], + [ + 12, + "1" + ], + [ + 13, + "-1" + ], + [ + 15, + "1" + ], + [ + 100, + "1" + ], + [ + 102, + "-1" + ], + [ + 104, + "-1" + ], + [ + 109, + "1" + ] + ], + [ + [ + 64, + "-1" + ], + [ + 70, + "1" + ], + [ + 72, + "1" + ], + [ + 73, + "1" + ], + [ + 76, + "-1" + ], + [ + 79, + "-1" + ] + ], + [ + [ + 17, + "-1" + ], + [ + 19, + "1" + ], + [ + 21, + "-1" + ], + [ + 23, + "1" + ], + [ + 28, + "1" + ], + [ + 29, + "1" + ], + [ + 30, + "-1" + ], + [ + 31, + "-1" + ] + ], + [ + [ + 33, + "1" + ], + [ + 35, + "-1" + ], + [ + 37, + "1" + ], + [ + 39, + "-1" + ], + [ + 44, + "-1" + ], + [ + 45, + "-1" + ], + [ + 46, + "1" + ], + [ + 47, + "1" + ] + ], + [ + [ + 1, + "1" + ], + [ + 17, + "-1" + ], + [ + 19, + "1" + ], + [ + 21, + "1" + ], + [ + 23, + "-1" + ], + [ + 28, + "-1" + ], + [ + 29, + "1" + ], + [ + 30, + "1" + ], + [ + 31, + "-1" + ], + [ + 100, + "-1" + ], + [ + 102, + "1" + ], + [ + 104, + "1" + ], + [ + 109, + "-1" + ], + [ + 160, + "-1" + ], + [ + 164, + "-1" + ], + [ + 166, + "1" + ], + [ + 167, + "1" + ], + [ + 168, + "1" + ], + [ + 173, + "-1" + ] + ] + ], + "input_basis_program": [ + [ + "add", + 257, + 397, + "1" + ], + [ + "add", + 225, + 397, + "1" + ], + [ + "add", + 224, + 397, + "1" + ], + [ + "add", + 257, + 392, + "-1" + ], + [ + "add", + 225, + 392, + "-1" + ], + [ + "add", + 224, + 392, + "-1" + ], + [ + "add", + 257, + 391, + "-1" + ], + [ + "add", + 225, + 391, + "-1" + ], + [ + "add", + 224, + 391, + "-1" + ], + [ + "add", + 257, + 390, + "-1" + ], + [ + "add", + 225, + 390, + "-1" + ], + [ + "add", + 224, + 390, + "-1" + ], + [ + "add", + 257, + 388, + "1" + ], + [ + "add", + 225, + 388, + "1" + ], + [ + "add", + 224, + 388, + "1" + ], + [ + "add", + 257, + 384, + "1" + ], + [ + "add", + 225, + 384, + "1" + ], + [ + "add", + 224, + 384, + "1" + ], + [ + "add", + 257, + 333, + "1" + ], + [ + "add", + 229, + 333, + "-1" + ], + [ + "add", + 227, + 333, + "1" + ], + [ + "add", + 257, + 328, + "-1" + ], + [ + "add", + 229, + 328, + "1" + ], + [ + "add", + 227, + 328, + "-1" + ], + [ + "add", + 257, + 326, + "-1" + ], + [ + "add", + 229, + 326, + "1" + ], + [ + "add", + 227, + 326, + "-1" + ], + [ + "add", + 257, + 324, + "1" + ], + [ + "add", + 229, + 324, + "-1" + ], + [ + "add", + 227, + 324, + "1" + ], + [ + "add", + 240, + 303, + "1" + ], + [ + "add", + 240, + 300, + "1" + ], + [ + "add", + 240, + 297, + "-1" + ], + [ + "add", + 240, + 296, + "-1" + ], + [ + "add", + 240, + 294, + "-1" + ], + [ + "add", + 240, + 288, + "1" + ], + [ + "add", + 256, + 271, + "-1" + ], + [ + "add", + 256, + 270, + "-1" + ], + [ + "add", + 256, + 269, + "1" + ], + [ + "add", + 256, + 268, + "1" + ], + [ + "add", + 256, + 263, + "1" + ], + [ + "add", + 256, + 261, + "-1" + ], + [ + "add", + 256, + 259, + "1" + ], + [ + "add", + 255, + 257, + "1" + ], + [ + "add", + 241, + 257, + "-1" + ], + [ + "scale", + 257, + "-1" + ], + [ + "add", + 447, + 256, + "-1/2" + ], + [ + "add", + 446, + 256, + "1/2" + ], + [ + "add", + 445, + 256, + "1/2" + ], + [ + "add", + 443, + 256, + "-1/2" + ], + [ + "add", + 437, + 256, + "1/2" + ], + [ + "add", + 435, + 256, + "-1/2" + ], + [ + "add", + 433, + 256, + "1/2" + ], + [ + "add", + 432, + 256, + "-1/2" + ], + [ + "add", + 431, + 256, + "-1/2" + ], + [ + "add", + 430, + 256, + "1/2" + ], + [ + "add", + 429, + 256, + "1/2" + ], + [ + "add", + 427, + 256, + "-1/2" + ], + [ + "add", + 421, + 256, + "1/2" + ], + [ + "add", + 419, + 256, + "-1/2" + ], + [ + "add", + 417, + 256, + "1/2" + ], + [ + "add", + 399, + 256, + "-3/4" + ], + [ + "add", + 398, + 256, + "1/4" + ], + [ + "add", + 388, + 256, + "1/4" + ], + [ + "add", + 384, + 256, + "-1/4" + ], + [ + "add", + 383, + 256, + "3/4" + ], + [ + "add", + 382, + 256, + "-1/4" + ], + [ + "add", + 372, + 256, + "-1/4" + ], + [ + "add", + 368, + 256, + "1/4" + ], + [ + "add", + 367, + 256, + "3/4" + ], + [ + "add", + 366, + 256, + "-1/4" + ], + [ + "add", + 356, + 256, + "-1/4" + ], + [ + "add", + 352, + 256, + "1/4" + ], + [ + "add", + 351, + 256, + "-3/4" + ], + [ + "add", + 350, + 256, + "1/4" + ], + [ + "add", + 340, + 256, + "1/4" + ], + [ + "add", + 336, + 256, + "-1/4" + ], + [ + "add", + 334, + 256, + "-1/2" + ], + [ + "add", + 332, + 256, + "1/2" + ], + [ + "add", + 328, + 256, + "-1" + ], + [ + "add", + 326, + 256, + "1/2" + ], + [ + "add", + 324, + 256, + "-1/2" + ], + [ + "add", + 319, + 256, + "-1/2" + ], + [ + "add", + 318, + 256, + "1/4" + ], + [ + "add", + 312, + 256, + "1/4" + ], + [ + "add", + 308, + 256, + "1/4" + ], + [ + "add", + 306, + 256, + "-1/4" + ], + [ + "add", + 303, + 256, + "-1/2" + ], + [ + "add", + 302, + 256, + "1/4" + ], + [ + "add", + 296, + 256, + "1/4" + ], + [ + "add", + 288, + 256, + "-1/4" + ], + [ + "add", + 287, + 256, + "1/2" + ], + [ + "add", + 286, + 256, + "-1/4" + ], + [ + "add", + 280, + 256, + "-1/4" + ], + [ + "add", + 272, + 256, + "1/4" + ], + [ + "add", + 271, + 256, + "-1/2" + ], + [ + "add", + 270, + 256, + "1/2" + ], + [ + "add", + 269, + 256, + "1/2" + ], + [ + "add", + 261, + 256, + "1/2" + ], + [ + "add", + 259, + 256, + "-1/2" + ], + [ + "add", + 258, + 256, + "-1/2" + ], + [ + "add", + 240, + 256, + "-1" + ], + [ + "scale", + 256, + "1/2" + ], + [ + "add", + 256, + 257, + "1" + ], + [ + "add", + 257, + 256, + "-1" + ], + [ + "add", + 256, + 257, + "1" + ], + [ + "scale", + 257, + "-1" + ], + [ + "add", + 447, + 255, + "-1" + ], + [ + "add", + 446, + 255, + "1" + ], + [ + "add", + 443, + 255, + "1" + ], + [ + "add", + 442, + 255, + "-1" + ], + [ + "add", + 438, + 255, + "1" + ], + [ + "add", + 437, + 255, + "1" + ], + [ + "add", + 435, + 255, + "1" + ], + [ + "add", + 432, + 255, + "1" + ], + [ + "add", + 415, + 255, + "-1" + ], + [ + "add", + 411, + 255, + "-1" + ], + [ + "add", + 410, + 255, + "1" + ], + [ + "add", + 409, + 255, + "1" + ], + [ + "add", + 406, + 255, + "-1" + ], + [ + "add", + 403, + 255, + "1" + ], + [ + "add", + 402, + 255, + "-1" + ], + [ + "add", + 400, + 255, + "1" + ], + [ + "add", + 399, + 255, + "-1/2" + ], + [ + "add", + 398, + 255, + "-1/2" + ], + [ + "add", + 388, + 255, + "-1/2" + ], + [ + "add", + 384, + 255, + "1/2" + ], + [ + "add", + 383, + 255, + "-1/2" + ], + [ + "add", + 382, + 255, + "-1/2" + ], + [ + "add", + 372, + 255, + "-1/2" + ], + [ + "add", + 368, + 255, + "1/2" + ], + [ + "add", + 367, + 255, + "-1/2" + ], + [ + "add", + 366, + 255, + "-1/2" + ], + [ + "add", + 356, + 255, + "-1/2" + ], + [ + "add", + 352, + 255, + "1/2" + ], + [ + "add", + 351, + 255, + "-1/2" + ], + [ + "add", + 350, + 255, + "-1/2" + ], + [ + "add", + 340, + 255, + "-1/2" + ], + [ + "add", + 336, + 255, + "1/2" + ], + [ + "add", + 335, + 255, + "-2" + ], + [ + "add", + 334, + 255, + "-1" + ], + [ + "add", + 332, + 255, + "1" + ], + [ + "add", + 328, + 255, + "-2" + ], + [ + "add", + 326, + 255, + "1" + ], + [ + "add", + 324, + 255, + "-1" + ], + [ + "add", + 319, + 255, + "-1" + ], + [ + "add", + 318, + 255, + "-1/2" + ], + [ + "add", + 312, + 255, + "-1/2" + ], + [ + "add", + 308, + 255, + "-1/2" + ], + [ + "add", + 306, + 255, + "1/2" + ], + [ + "add", + 303, + 255, + "-1" + ], + [ + "add", + 302, + 255, + "-1/2" + ], + [ + "add", + 296, + 255, + "-1/2" + ], + [ + "add", + 288, + 255, + "1/2" + ], + [ + "add", + 287, + 255, + "-1" + ], + [ + "add", + 286, + 255, + "-1/2" + ], + [ + "add", + 280, + 255, + "-1/2" + ], + [ + "add", + 272, + 255, + "1/2" + ], + [ + "add", + 250, + 255, + "1" + ], + [ + "add", + 246, + 255, + "-1" + ], + [ + "add", + 243, + 255, + "1" + ], + [ + "add", + 255, + 256, + "1" + ], + [ + "add", + 256, + 255, + "-1" + ], + [ + "add", + 255, + 256, + "1" + ], + [ + "scale", + 256, + "-1" + ], + [ + "add", + 447, + 254, + "1" + ], + [ + "add", + 446, + 254, + "-1" + ], + [ + "add", + 443, + 254, + "-1" + ], + [ + "add", + 442, + 254, + "1" + ], + [ + "add", + 438, + 254, + "-1" + ], + [ + "add", + 437, + 254, + "-1" + ], + [ + "add", + 435, + 254, + "-1" + ], + [ + "add", + 432, + 254, + "-1" + ], + [ + "add", + 415, + 254, + "1" + ], + [ + "add", + 411, + 254, + "1" + ], + [ + "add", + 410, + 254, + "-1" + ], + [ + "add", + 409, + 254, + "-1" + ], + [ + "add", + 406, + 254, + "1" + ], + [ + "add", + 403, + 254, + "-1" + ], + [ + "add", + 402, + 254, + "1" + ], + [ + "add", + 400, + 254, + "-1" + ], + [ + "add", + 399, + 254, + "1/2" + ], + [ + "add", + 398, + 254, + "1/2" + ], + [ + "add", + 388, + 254, + "1/2" + ], + [ + "add", + 384, + 254, + "-1/2" + ], + [ + "add", + 383, + 254, + "1/2" + ], + [ + "add", + 382, + 254, + "1/2" + ], + [ + "add", + 372, + 254, + "1/2" + ], + [ + "add", + 368, + 254, + "-1/2" + ], + [ + "add", + 367, + 254, + "1/2" + ], + [ + "add", + 366, + 254, + "1/2" + ], + [ + "add", + 356, + 254, + "1/2" + ], + [ + "add", + 352, + 254, + "-1/2" + ], + [ + "add", + 351, + 254, + "1/2" + ], + [ + "add", + 350, + 254, + "1/2" + ], + [ + "add", + 340, + 254, + "1/2" + ], + [ + "add", + 336, + 254, + "-1/2" + ], + [ + "add", + 335, + 254, + "2" + ], + [ + "add", + 334, + 254, + "1" + ], + [ + "add", + 332, + 254, + "-1" + ], + [ + "add", + 328, + 254, + "2" + ], + [ + "add", + 326, + 254, + "-1" + ], + [ + "add", + 324, + 254, + "1" + ], + [ + "add", + 319, + 254, + "1" + ], + [ + "add", + 318, + 254, + "1/2" + ], + [ + "add", + 312, + 254, + "1/2" + ], + [ + "add", + 308, + 254, + "1/2" + ], + [ + "add", + 306, + 254, + "-1/2" + ], + [ + "add", + 303, + 254, + "1" + ], + [ + "add", + 302, + 254, + "1/2" + ], + [ + "add", + 296, + 254, + "1/2" + ], + [ + "add", + 288, + 254, + "-1/2" + ], + [ + "add", + 287, + 254, + "1" + ], + [ + "add", + 286, + 254, + "1/2" + ], + [ + "add", + 280, + 254, + "1/2" + ], + [ + "add", + 272, + 254, + "-1/2" + ], + [ + "add", + 256, + 254, + "-1" + ], + [ + "add", + 255, + 254, + "1" + ], + [ + "add", + 250, + 254, + "-1" + ], + [ + "add", + 246, + 254, + "1" + ], + [ + "add", + 243, + 254, + "-1" + ], + [ + "add", + 241, + 254, + "2" + ], + [ + "add", + 447, + 253, + "1" + ], + [ + "add", + 446, + 253, + "-1" + ], + [ + "add", + 443, + 253, + "-1" + ], + [ + "add", + 442, + 253, + "1" + ], + [ + "add", + 438, + 253, + "-1" + ], + [ + "add", + 437, + 253, + "-1" + ], + [ + "add", + 435, + 253, + "-1" + ], + [ + "add", + 432, + 253, + "-1" + ], + [ + "add", + 415, + 253, + "1" + ], + [ + "add", + 411, + 253, + "1" + ], + [ + "add", + 410, + 253, + "-1" + ], + [ + "add", + 409, + 253, + "-1" + ], + [ + "add", + 406, + 253, + "1" + ], + [ + "add", + 403, + 253, + "-1" + ], + [ + "add", + 402, + 253, + "1" + ], + [ + "add", + 400, + 253, + "-1" + ], + [ + "add", + 399, + 253, + "1/2" + ], + [ + "add", + 398, + 253, + "1/2" + ], + [ + "add", + 388, + 253, + "1/2" + ], + [ + "add", + 384, + 253, + "-1/2" + ], + [ + "add", + 383, + 253, + "1/2" + ], + [ + "add", + 382, + 253, + "1/2" + ], + [ + "add", + 372, + 253, + "1/2" + ], + [ + "add", + 368, + 253, + "-1/2" + ], + [ + "add", + 367, + 253, + "1/2" + ], + [ + "add", + 366, + 253, + "1/2" + ], + [ + "add", + 356, + 253, + "1/2" + ], + [ + "add", + 352, + 253, + "-1/2" + ], + [ + "add", + 351, + 253, + "1/2" + ], + [ + "add", + 350, + 253, + "1/2" + ], + [ + "add", + 340, + 253, + "1/2" + ], + [ + "add", + 336, + 253, + "-1/2" + ], + [ + "add", + 335, + 253, + "2" + ], + [ + "add", + 334, + 253, + "1" + ], + [ + "add", + 332, + 253, + "-1" + ], + [ + "add", + 328, + 253, + "2" + ], + [ + "add", + 326, + 253, + "-1" + ], + [ + "add", + 324, + 253, + "1" + ], + [ + "add", + 319, + 253, + "1" + ], + [ + "add", + 318, + 253, + "1/2" + ], + [ + "add", + 312, + 253, + "1/2" + ], + [ + "add", + 308, + 253, + "1/2" + ], + [ + "add", + 306, + 253, + "-1/2" + ], + [ + "add", + 303, + 253, + "1" + ], + [ + "add", + 302, + 253, + "1/2" + ], + [ + "add", + 296, + 253, + "1/2" + ], + [ + "add", + 288, + 253, + "-1/2" + ], + [ + "add", + 287, + 253, + "1" + ], + [ + "add", + 286, + 253, + "1/2" + ], + [ + "add", + 280, + 253, + "1/2" + ], + [ + "add", + 272, + 253, + "-1/2" + ], + [ + "add", + 256, + 253, + "-1" + ], + [ + "add", + 255, + 253, + "1" + ], + [ + "add", + 250, + 253, + "-1" + ], + [ + "add", + 246, + 253, + "1" + ], + [ + "add", + 243, + 253, + "-1" + ], + [ + "add", + 447, + 252, + "-1" + ], + [ + "add", + 446, + 252, + "1" + ], + [ + "add", + 443, + 252, + "1" + ], + [ + "add", + 442, + 252, + "-1" + ], + [ + "add", + 438, + 252, + "1" + ], + [ + "add", + 437, + 252, + "1" + ], + [ + "add", + 435, + 252, + "1" + ], + [ + "add", + 432, + 252, + "1" + ], + [ + "add", + 415, + 252, + "-1" + ], + [ + "add", + 411, + 252, + "-1" + ], + [ + "add", + 410, + 252, + "1" + ], + [ + "add", + 409, + 252, + "1" + ], + [ + "add", + 406, + 252, + "-1" + ], + [ + "add", + 403, + 252, + "1" + ], + [ + "add", + 402, + 252, + "-1" + ], + [ + "add", + 400, + 252, + "1" + ], + [ + "add", + 399, + 252, + "-1/2" + ], + [ + "add", + 398, + 252, + "-1/2" + ], + [ + "add", + 388, + 252, + "-1/2" + ], + [ + "add", + 384, + 252, + "1/2" + ], + [ + "add", + 383, + 252, + "-1/2" + ], + [ + "add", + 382, + 252, + "-1/2" + ], + [ + "add", + 372, + 252, + "-1/2" + ], + [ + "add", + 368, + 252, + "1/2" + ], + [ + "add", + 367, + 252, + "-1/2" + ], + [ + "add", + 366, + 252, + "-1/2" + ], + [ + "add", + 356, + 252, + "-1/2" + ], + [ + "add", + 352, + 252, + "1/2" + ], + [ + "add", + 351, + 252, + "-1/2" + ], + [ + "add", + 350, + 252, + "-1/2" + ], + [ + "add", + 340, + 252, + "-1/2" + ], + [ + "add", + 336, + 252, + "1/2" + ], + [ + "add", + 335, + 252, + "-2" + ], + [ + "add", + 334, + 252, + "-1" + ], + [ + "add", + 332, + 252, + "1" + ], + [ + "add", + 328, + 252, + "-2" + ], + [ + "add", + 326, + 252, + "1" + ], + [ + "add", + 324, + 252, + "-1" + ], + [ + "add", + 319, + 252, + "-1" + ], + [ + "add", + 318, + 252, + "-1/2" + ], + [ + "add", + 312, + 252, + "-1/2" + ], + [ + "add", + 308, + 252, + "-1/2" + ], + [ + "add", + 306, + 252, + "1/2" + ], + [ + "add", + 303, + 252, + "-1" + ], + [ + "add", + 302, + 252, + "-1/2" + ], + [ + "add", + 296, + 252, + "-1/2" + ], + [ + "add", + 288, + 252, + "1/2" + ], + [ + "add", + 287, + 252, + "-1" + ], + [ + "add", + 286, + 252, + "-1/2" + ], + [ + "add", + 280, + 252, + "-1/2" + ], + [ + "add", + 272, + 252, + "1/2" + ], + [ + "add", + 256, + 252, + "1" + ], + [ + "add", + 255, + 252, + "-1" + ], + [ + "add", + 250, + 252, + "1" + ], + [ + "add", + 246, + 252, + "-1" + ], + [ + "add", + 243, + 252, + "1" + ], + [ + "add", + 241, + 252, + "-2" + ], + [ + "add", + 447, + 247, + "-1" + ], + [ + "add", + 446, + 247, + "1" + ], + [ + "add", + 443, + 247, + "1" + ], + [ + "add", + 442, + 247, + "-1" + ], + [ + "add", + 438, + 247, + "1" + ], + [ + "add", + 437, + 247, + "1" + ], + [ + "add", + 435, + 247, + "1" + ], + [ + "add", + 432, + 247, + "1" + ], + [ + "add", + 415, + 247, + "-1" + ], + [ + "add", + 411, + 247, + "-1" + ], + [ + "add", + 410, + 247, + "1" + ], + [ + "add", + 409, + 247, + "1" + ], + [ + "add", + 406, + 247, + "-1" + ], + [ + "add", + 403, + 247, + "1" + ], + [ + "add", + 402, + 247, + "-1" + ], + [ + "add", + 400, + 247, + "1" + ], + [ + "add", + 399, + 247, + "-1/2" + ], + [ + "add", + 398, + 247, + "-1/2" + ], + [ + "add", + 388, + 247, + "-1/2" + ], + [ + "add", + 384, + 247, + "1/2" + ], + [ + "add", + 383, + 247, + "-1/2" + ], + [ + "add", + 382, + 247, + "-1/2" + ], + [ + "add", + 372, + 247, + "-1/2" + ], + [ + "add", + 368, + 247, + "1/2" + ], + [ + "add", + 367, + 247, + "-1/2" + ], + [ + "add", + 366, + 247, + "-1/2" + ], + [ + "add", + 356, + 247, + "-1/2" + ], + [ + "add", + 352, + 247, + "1/2" + ], + [ + "add", + 351, + 247, + "-1/2" + ], + [ + "add", + 350, + 247, + "-1/2" + ], + [ + "add", + 340, + 247, + "-1/2" + ], + [ + "add", + 336, + 247, + "1/2" + ], + [ + "add", + 335, + 247, + "-2" + ], + [ + "add", + 334, + 247, + "-1" + ], + [ + "add", + 332, + 247, + "1" + ], + [ + "add", + 328, + 247, + "-2" + ], + [ + "add", + 326, + 247, + "1" + ], + [ + "add", + 324, + 247, + "-1" + ], + [ + "add", + 319, + 247, + "-1" + ], + [ + "add", + 318, + 247, + "-1/2" + ], + [ + "add", + 312, + 247, + "-1/2" + ], + [ + "add", + 308, + 247, + "-1/2" + ], + [ + "add", + 306, + 247, + "1/2" + ], + [ + "add", + 303, + 247, + "-1" + ], + [ + "add", + 302, + 247, + "-1/2" + ], + [ + "add", + 296, + 247, + "-1/2" + ], + [ + "add", + 288, + 247, + "1/2" + ], + [ + "add", + 287, + 247, + "-1" + ], + [ + "add", + 286, + 247, + "-1/2" + ], + [ + "add", + 280, + 247, + "-1/2" + ], + [ + "add", + 272, + 247, + "1/2" + ], + [ + "add", + 256, + 247, + "1" + ], + [ + "add", + 255, + 247, + "-1" + ], + [ + "add", + 250, + 247, + "1" + ], + [ + "add", + 246, + 247, + "-1" + ], + [ + "add", + 243, + 247, + "1" + ], + [ + "add", + 241, + 247, + "-2" + ], + [ + "add", + 447, + 245, + "1" + ], + [ + "add", + 446, + 245, + "-1" + ], + [ + "add", + 443, + 245, + "-1" + ], + [ + "add", + 442, + 245, + "1" + ], + [ + "add", + 438, + 245, + "-1" + ], + [ + "add", + 437, + 245, + "-1" + ], + [ + "add", + 435, + 245, + "-1" + ], + [ + "add", + 432, + 245, + "-1" + ], + [ + "add", + 415, + 245, + "1" + ], + [ + "add", + 411, + 245, + "1" + ], + [ + "add", + 410, + 245, + "-1" + ], + [ + "add", + 409, + 245, + "-1" + ], + [ + "add", + 406, + 245, + "1" + ], + [ + "add", + 403, + 245, + "-1" + ], + [ + "add", + 402, + 245, + "1" + ], + [ + "add", + 400, + 245, + "-1" + ], + [ + "add", + 399, + 245, + "1/2" + ], + [ + "add", + 398, + 245, + "1/2" + ], + [ + "add", + 388, + 245, + "1/2" + ], + [ + "add", + 384, + 245, + "-1/2" + ], + [ + "add", + 383, + 245, + "1/2" + ], + [ + "add", + 382, + 245, + "1/2" + ], + [ + "add", + 372, + 245, + "1/2" + ], + [ + "add", + 368, + 245, + "-1/2" + ], + [ + "add", + 367, + 245, + "1/2" + ], + [ + "add", + 366, + 245, + "1/2" + ], + [ + "add", + 356, + 245, + "1/2" + ], + [ + "add", + 352, + 245, + "-1/2" + ], + [ + "add", + 351, + 245, + "1/2" + ], + [ + "add", + 350, + 245, + "1/2" + ], + [ + "add", + 340, + 245, + "1/2" + ], + [ + "add", + 336, + 245, + "-1/2" + ], + [ + "add", + 335, + 245, + "2" + ], + [ + "add", + 334, + 245, + "1" + ], + [ + "add", + 332, + 245, + "-1" + ], + [ + "add", + 328, + 245, + "2" + ], + [ + "add", + 326, + 245, + "-1" + ], + [ + "add", + 324, + 245, + "1" + ], + [ + "add", + 319, + 245, + "1" + ], + [ + "add", + 318, + 245, + "1/2" + ], + [ + "add", + 312, + 245, + "1/2" + ], + [ + "add", + 308, + 245, + "1/2" + ], + [ + "add", + 306, + 245, + "-1/2" + ], + [ + "add", + 303, + 245, + "1" + ], + [ + "add", + 302, + 245, + "1/2" + ], + [ + "add", + 296, + 245, + "1/2" + ], + [ + "add", + 288, + 245, + "-1/2" + ], + [ + "add", + 287, + 245, + "1" + ], + [ + "add", + 286, + 245, + "1/2" + ], + [ + "add", + 280, + 245, + "1/2" + ], + [ + "add", + 272, + 245, + "-1/2" + ], + [ + "add", + 256, + 245, + "-1" + ], + [ + "add", + 255, + 245, + "1" + ], + [ + "add", + 250, + 245, + "-1" + ], + [ + "add", + 246, + 245, + "1" + ], + [ + "add", + 243, + 245, + "-1" + ], + [ + "add", + 241, + 245, + "2" + ], + [ + "add", + 447, + 243, + "1/2" + ], + [ + "add", + 446, + 243, + "-1/2" + ], + [ + "add", + 443, + 243, + "-1/2" + ], + [ + "add", + 442, + 243, + "1/2" + ], + [ + "add", + 438, + 243, + "-1/2" + ], + [ + "add", + 437, + 243, + "-1/2" + ], + [ + "add", + 435, + 243, + "-1/2" + ], + [ + "add", + 432, + 243, + "-1/2" + ], + [ + "add", + 415, + 243, + "1/2" + ], + [ + "add", + 411, + 243, + "1/2" + ], + [ + "add", + 410, + 243, + "-1/2" + ], + [ + "add", + 409, + 243, + "-1/2" + ], + [ + "add", + 406, + 243, + "1/2" + ], + [ + "add", + 403, + 243, + "-1/2" + ], + [ + "add", + 402, + 243, + "1/2" + ], + [ + "add", + 400, + 243, + "-1/2" + ], + [ + "add", + 399, + 243, + "1/4" + ], + [ + "add", + 398, + 243, + "1/4" + ], + [ + "add", + 388, + 243, + "1/4" + ], + [ + "add", + 384, + 243, + "-1/4" + ], + [ + "add", + 383, + 243, + "1/4" + ], + [ + "add", + 382, + 243, + "1/4" + ], + [ + "add", + 372, + 243, + "1/4" + ], + [ + "add", + 368, + 243, + "-1/4" + ], + [ + "add", + 367, + 243, + "1/4" + ], + [ + "add", + 366, + 243, + "1/4" + ], + [ + "add", + 356, + 243, + "1/4" + ], + [ + "add", + 352, + 243, + "-1/4" + ], + [ + "add", + 351, + 243, + "1/4" + ], + [ + "add", + 350, + 243, + "1/4" + ], + [ + "add", + 340, + 243, + "1/4" + ], + [ + "add", + 336, + 243, + "-1/4" + ], + [ + "add", + 335, + 243, + "1" + ], + [ + "add", + 334, + 243, + "1/2" + ], + [ + "add", + 332, + 243, + "-1/2" + ], + [ + "add", + 328, + 243, + "1" + ], + [ + "add", + 326, + 243, + "-1/2" + ], + [ + "add", + 324, + 243, + "1/2" + ], + [ + "add", + 319, + 243, + "1/2" + ], + [ + "add", + 318, + 243, + "1/4" + ], + [ + "add", + 312, + 243, + "1/4" + ], + [ + "add", + 308, + 243, + "1/4" + ], + [ + "add", + 306, + 243, + "-1/4" + ], + [ + "add", + 303, + 243, + "1/2" + ], + [ + "add", + 302, + 243, + "1/4" + ], + [ + "add", + 296, + 243, + "1/4" + ], + [ + "add", + 288, + 243, + "-1/4" + ], + [ + "add", + 287, + 243, + "1/2" + ], + [ + "add", + 286, + 243, + "1/4" + ], + [ + "add", + 280, + 243, + "1/4" + ], + [ + "add", + 272, + 243, + "-1/4" + ], + [ + "add", + 256, + 243, + "-1/2" + ], + [ + "add", + 255, + 243, + "1/2" + ], + [ + "add", + 250, + 243, + "-1/2" + ], + [ + "add", + 246, + 243, + "1/2" + ], + [ + "scale", + 243, + "1/2" + ], + [ + "add", + 446, + 241, + "1/4" + ], + [ + "add", + 445, + 241, + "1/4" + ], + [ + "add", + 443, + 241, + "1/2" + ], + [ + "add", + 442, + 241, + "-1/4" + ], + [ + "add", + 441, + 241, + "1/4" + ], + [ + "add", + 438, + 241, + "1/4" + ], + [ + "add", + 437, + 241, + "1/4" + ], + [ + "add", + 435, + 241, + "1/2" + ], + [ + "add", + 434, + 241, + "-1/4" + ], + [ + "add", + 433, + 241, + "1/4" + ], + [ + "add", + 414, + 241, + "-1/4" + ], + [ + "add", + 413, + 241, + "-1/4" + ], + [ + "add", + 410, + 241, + "1/4" + ], + [ + "add", + 409, + 241, + "1/4" + ], + [ + "add", + 406, + 241, + "-1/4" + ], + [ + "add", + 405, + 241, + "-1/4" + ], + [ + "add", + 403, + 241, + "1/2" + ], + [ + "add", + 402, + 241, + "-1/4" + ], + [ + "add", + 401, + 241, + "-1/4" + ], + [ + "add", + 400, + 241, + "1/4" + ], + [ + "add", + 383, + 241, + "-1/4" + ], + [ + "add", + 382, + 241, + "-1/4" + ], + [ + "add", + 372, + 241, + "-1/4" + ], + [ + "add", + 368, + 241, + "1/4" + ], + [ + "add", + 351, + 241, + "-1/4" + ], + [ + "add", + 350, + 241, + "-1/4" + ], + [ + "add", + 340, + 241, + "-1/4" + ], + [ + "add", + 336, + 241, + "1/4" + ], + [ + "add", + 319, + 241, + "-1/2" + ], + [ + "add", + 318, + 241, + "-1/4" + ], + [ + "add", + 312, + 241, + "-1/4" + ], + [ + "add", + 308, + 241, + "-1/4" + ], + [ + "add", + 306, + 241, + "1/4" + ], + [ + "add", + 287, + 241, + "-1/2" + ], + [ + "add", + 286, + 241, + "-1/4" + ], + [ + "add", + 280, + 241, + "-1/4" + ], + [ + "add", + 272, + 241, + "1/4" + ], + [ + "add", + 256, + 241, + "1/4" + ], + [ + "add", + 254, + 241, + "-1/4" + ], + [ + "add", + 253, + 241, + "-1/4" + ], + [ + "add", + 250, + 241, + "1/4" + ], + [ + "add", + 246, + 241, + "-1/4" + ], + [ + "add", + 245, + 241, + "-1/4" + ], + [ + "add", + 243, + 241, + "1/2" + ], + [ + "add", + 242, + 241, + "1/4" + ], + [ + "scale", + 241, + "-1/4" + ], + [ + "add", + 447, + 240, + "-1/2" + ], + [ + "add", + 446, + 240, + "1/4" + ], + [ + "add", + 445, + 240, + "1/4" + ], + [ + "add", + 443, + 240, + "-1/2" + ], + [ + "add", + 442, + 240, + "1/4" + ], + [ + "add", + 441, + 240, + "1/4" + ], + [ + "add", + 438, + 240, + "-1/4" + ], + [ + "add", + 437, + 240, + "1/4" + ], + [ + "add", + 434, + 240, + "-1/4" + ], + [ + "add", + 433, + 240, + "1/4" + ], + [ + "add", + 431, + 240, + "-1/2" + ], + [ + "add", + 430, + 240, + "1/4" + ], + [ + "add", + 429, + 240, + "1/4" + ], + [ + "add", + 427, + 240, + "-1/2" + ], + [ + "add", + 426, + 240, + "1/4" + ], + [ + "add", + 425, + 240, + "1/4" + ], + [ + "add", + 422, + 240, + "-1/4" + ], + [ + "add", + 421, + 240, + "1/4" + ], + [ + "add", + 418, + 240, + "-1/4" + ], + [ + "add", + 417, + 240, + "1/4" + ], + [ + "add", + 416, + 240, + "1/4" + ], + [ + "add", + 399, + 240, + "-3/4" + ], + [ + "add", + 398, + 240, + "1/4" + ], + [ + "add", + 388, + 240, + "1/4" + ], + [ + "add", + 384, + 240, + "-1/4" + ], + [ + "add", + 351, + 240, + "-3/4" + ], + [ + "add", + 350, + 240, + "1/4" + ], + [ + "add", + 340, + 240, + "1/4" + ], + [ + "add", + 336, + 240, + "-1/4" + ], + [ + "add", + 319, + 240, + "-1/2" + ], + [ + "add", + 318, + 240, + "1/4" + ], + [ + "add", + 312, + 240, + "1/4" + ], + [ + "add", + 308, + 240, + "1/4" + ], + [ + "add", + 306, + 240, + "-1/4" + ], + [ + "add", + 303, + 240, + "-1/2" + ], + [ + "add", + 302, + 240, + "1/4" + ], + [ + "add", + 296, + 240, + "1/4" + ], + [ + "add", + 288, + 240, + "-1/4" + ], + [ + "add", + 271, + 240, + "-1/2" + ], + [ + "add", + 270, + 240, + "1/4" + ], + [ + "add", + 269, + 240, + "1/4" + ], + [ + "add", + 266, + 240, + "1/4" + ], + [ + "add", + 262, + 240, + "-1/4" + ], + [ + "add", + 261, + 240, + "1/4" + ], + [ + "add", + 258, + 240, + "-1/4" + ], + [ + "add", + 257, + 240, + "1/4" + ], + [ + "scale", + 240, + "1/4" + ], + [ + "add", + 240, + 256, + "1" + ], + [ + "add", + 256, + 240, + "-1" + ], + [ + "add", + 240, + 256, + "1" + ], + [ + "scale", + 256, + "-1" + ], + [ + "add", + 229, + 239, + "-1" + ], + [ + "add", + 225, + 239, + "-1" + ], + [ + "add", + 225, + 238, + "-2" + ], + [ + "add", + 229, + 237, + "1" + ], + [ + "add", + 225, + 237, + "1" + ], + [ + "add", + 229, + 236, + "-1" + ], + [ + "add", + 225, + 236, + "1" + ], + [ + "add", + 229, + 235, + "1" + ], + [ + "add", + 225, + 235, + "1" + ], + [ + "add", + 229, + 234, + "1" + ], + [ + "add", + 225, + 234, + "1" + ], + [ + "add", + 229, + 232, + "-1" + ], + [ + "add", + 225, + 232, + "-1" + ], + [ + "add", + 225, + 231, + "2" + ], + [ + "add", + 227, + 230, + "-1" + ], + [ + "add", + 431, + 229, + "1/2" + ], + [ + "add", + 429, + 229, + "1/2" + ], + [ + "add", + 427, + 229, + "1/2" + ], + [ + "add", + 425, + 229, + "1/2" + ], + [ + "add", + 419, + 229, + "1/2" + ], + [ + "add", + 418, + 229, + "-1/2" + ], + [ + "add", + 417, + 229, + "1/2" + ], + [ + "add", + 415, + 229, + "1/2" + ], + [ + "add", + 413, + 229, + "1/2" + ], + [ + "add", + 411, + 229, + "1/2" + ], + [ + "add", + 409, + 229, + "1/2" + ], + [ + "add", + 403, + 229, + "1/2" + ], + [ + "add", + 402, + 229, + "-1/2" + ], + [ + "add", + 401, + 229, + "1/2" + ], + [ + "add", + 399, + 229, + "1/2" + ], + [ + "add", + 398, + 229, + "-1/2" + ], + [ + "add", + 388, + 229, + "-1/2" + ], + [ + "add", + 384, + 229, + "-1/2" + ], + [ + "add", + 383, + 229, + "1/2" + ], + [ + "add", + 382, + 229, + "-1/2" + ], + [ + "add", + 372, + 229, + "-1/2" + ], + [ + "add", + 368, + 229, + "-1/2" + ], + [ + "add", + 347, + 229, + "-1" + ], + [ + "add", + 335, + 229, + "2" + ], + [ + "add", + 332, + 229, + "-1" + ], + [ + "add", + 328, + 229, + "2" + ], + [ + "add", + 326, + 229, + "-1" + ], + [ + "add", + 319, + 229, + "1" + ], + [ + "add", + 318, + 229, + "-1/2" + ], + [ + "add", + 312, + 229, + "1/2" + ], + [ + "add", + 308, + 229, + "-1/2" + ], + [ + "add", + 306, + 229, + "-1/2" + ], + [ + "add", + 303, + 229, + "1" + ], + [ + "add", + 302, + 229, + "-1/2" + ], + [ + "add", + 296, + 229, + "1/2" + ], + [ + "add", + 288, + 229, + "-1/2" + ], + [ + "add", + 283, + 229, + "-1" + ], + [ + "add", + 276, + 229, + "1/2" + ], + [ + "add", + 271, + 229, + "1/2" + ], + [ + "add", + 270, + 229, + "-1/2" + ], + [ + "add", + 266, + 229, + "1/2" + ], + [ + "add", + 262, + 229, + "-1/2" + ], + [ + "add", + 261, + 229, + "-1/2" + ], + [ + "add", + 259, + 229, + "-1/2" + ], + [ + "add", + 258, + 229, + "-1/2" + ], + [ + "add", + 256, + 229, + "-1/2" + ], + [ + "add", + 255, + 229, + "1/2" + ], + [ + "add", + 254, + 229, + "-1/2" + ], + [ + "add", + 250, + 229, + "1/2" + ], + [ + "add", + 246, + 229, + "-1/2" + ], + [ + "add", + 245, + 229, + "-1/2" + ], + [ + "add", + 243, + 229, + "-1/2" + ], + [ + "add", + 242, + 229, + "-1/2" + ], + [ + "add", + 240, + 229, + "-1/2" + ], + [ + "add", + 239, + 229, + "1" + ], + [ + "add", + 238, + 229, + "-1" + ], + [ + "add", + 237, + 229, + "-1/2" + ], + [ + "add", + 234, + 229, + "1/2" + ], + [ + "add", + 227, + 229, + "-1" + ], + [ + "add", + 225, + 229, + "1" + ], + [ + "add", + 224, + 229, + "-1" + ], + [ + "scale", + 229, + "-1" + ], + [ + "add", + 335, + 227, + "2" + ], + [ + "add", + 332, + 227, + "-1" + ], + [ + "add", + 328, + 227, + "2" + ], + [ + "add", + 326, + 227, + "-1" + ], + [ + "add", + 319, + 227, + "1/2" + ], + [ + "add", + 318, + 227, + "-1/4" + ], + [ + "add", + 315, + 227, + "-1/2" + ], + [ + "add", + 312, + 227, + "1/4" + ], + [ + "add", + 308, + 227, + "-1/4" + ], + [ + "add", + 306, + 227, + "-1/4" + ], + [ + "add", + 303, + 227, + "1" + ], + [ + "add", + 302, + 227, + "-1/2" + ], + [ + "add", + 296, + 227, + "1/2" + ], + [ + "add", + 288, + 227, + "-1/2" + ], + [ + "add", + 287, + 227, + "1/2" + ], + [ + "add", + 286, + 227, + "-1/4" + ], + [ + "add", + 283, + 227, + "-1/2" + ], + [ + "add", + 280, + 227, + "1/4" + ], + [ + "add", + 276, + 227, + "1/4" + ], + [ + "add", + 272, + 227, + "-1/4" + ], + [ + "add", + 270, + 227, + "-1/4" + ], + [ + "add", + 269, + 227, + "-1/4" + ], + [ + "add", + 266, + 227, + "1/4" + ], + [ + "add", + 262, + 227, + "-1/4" + ], + [ + "add", + 261, + 227, + "-1/4" + ], + [ + "add", + 259, + 227, + "-1/2" + ], + [ + "add", + 258, + 227, + "-1/4" + ], + [ + "add", + 257, + 227, + "-1/4" + ], + [ + "add", + 256, + 227, + "-1/4" + ], + [ + "add", + 254, + 227, + "-1/4" + ], + [ + "add", + 253, + 227, + "-1/4" + ], + [ + "add", + 250, + 227, + "1/4" + ], + [ + "add", + 246, + 227, + "-1/4" + ], + [ + "add", + 245, + 227, + "-1/4" + ], + [ + "add", + 243, + 227, + "-1/2" + ], + [ + "add", + 242, + 227, + "-1/4" + ], + [ + "add", + 241, + 227, + "-1/4" + ], + [ + "add", + 240, + 227, + "-1/4" + ], + [ + "add", + 238, + 227, + "-1/4" + ], + [ + "add", + 237, + 227, + "-1/4" + ], + [ + "add", + 235, + 227, + "-1/2" + ], + [ + "add", + 234, + 227, + "1/4" + ], + [ + "add", + 233, + 227, + "-1/4" + ], + [ + "add", + 229, + 227, + "-1/4" + ], + [ + "scale", + 227, + "-1/4" + ], + [ + "add", + 430, + 225, + "-1/4" + ], + [ + "add", + 429, + 225, + "-1/4" + ], + [ + "add", + 427, + 225, + "-1/2" + ], + [ + "add", + 426, + 225, + "1/4" + ], + [ + "add", + 425, + 225, + "-1/4" + ], + [ + "add", + 422, + 225, + "-1/4" + ], + [ + "add", + 421, + 225, + "-1/4" + ], + [ + "add", + 419, + 225, + "-1/2" + ], + [ + "add", + 418, + 225, + "1/4" + ], + [ + "add", + 417, + 225, + "-1/4" + ], + [ + "add", + 416, + 225, + "-1/4" + ], + [ + "add", + 414, + 225, + "-1/4" + ], + [ + "add", + 413, + 225, + "-1/4" + ], + [ + "add", + 411, + 225, + "-1/2" + ], + [ + "add", + 410, + 225, + "1/4" + ], + [ + "add", + 409, + 225, + "-1/4" + ], + [ + "add", + 406, + 225, + "-1/4" + ], + [ + "add", + 405, + 225, + "-1/4" + ], + [ + "add", + 403, + 225, + "-1/2" + ], + [ + "add", + 402, + 225, + "1/4" + ], + [ + "add", + 401, + 225, + "-1/4" + ], + [ + "add", + 400, + 225, + "-1/4" + ], + [ + "add", + 399, + 225, + "-1/4" + ], + [ + "add", + 398, + 225, + "1/4" + ], + [ + "add", + 388, + 225, + "1/4" + ], + [ + "add", + 384, + 225, + "1/4" + ], + [ + "add", + 383, + 225, + "-1/4" + ], + [ + "add", + 382, + 225, + "1/4" + ], + [ + "add", + 379, + 225, + "1/2" + ], + [ + "add", + 372, + 225, + "1/4" + ], + [ + "add", + 368, + 225, + "1/4" + ], + [ + "add", + 347, + 225, + "1" + ], + [ + "add", + 287, + 225, + "1/2" + ], + [ + "add", + 286, + 225, + "-1/4" + ], + [ + "add", + 283, + 225, + "1/2" + ], + [ + "add", + 280, + 225, + "1/4" + ], + [ + "add", + 276, + 225, + "-1/2" + ], + [ + "add", + 272, + 225, + "-1/4" + ], + [ + "add", + 271, + 225, + "-1/2" + ], + [ + "add", + 270, + 225, + "1/4" + ], + [ + "add", + 269, + 225, + "-1/4" + ], + [ + "add", + 266, + 225, + "-1/4" + ], + [ + "add", + 262, + 225, + "1/4" + ], + [ + "add", + 261, + 225, + "1/4" + ], + [ + "add", + 258, + 225, + "1/4" + ], + [ + "add", + 257, + 225, + "-1/4" + ], + [ + "add", + 256, + 225, + "1/4" + ], + [ + "add", + 255, + 225, + "-1/2" + ], + [ + "add", + 254, + 225, + "1/4" + ], + [ + "add", + 253, + 225, + "-1/4" + ], + [ + "add", + 250, + 225, + "-1/4" + ], + [ + "add", + 246, + 225, + "1/4" + ], + [ + "add", + 245, + 225, + "1/4" + ], + [ + "add", + 242, + 225, + "1/4" + ], + [ + "add", + 241, + 225, + "-1/4" + ], + [ + "add", + 240, + 225, + "1/4" + ], + [ + "add", + 239, + 225, + "-1/2" + ], + [ + "add", + 238, + 225, + "1/2" + ], + [ + "add", + 234, + 225, + "-1/2" + ], + [ + "add", + 233, + 225, + "-1/2" + ], + [ + "add", + 229, + 225, + "1/2" + ], + [ + "add", + 227, + 225, + "-1/2" + ], + [ + "add", + 224, + 225, + "1" + ], + [ + "scale", + 225, + "-1/2" + ], + [ + "add", + 399, + 224, + "1/4" + ], + [ + "add", + 398, + 224, + "-1/4" + ], + [ + "add", + 388, + 224, + "-1/4" + ], + [ + "add", + 384, + 224, + "-1/4" + ], + [ + "add", + 383, + 224, + "1/4" + ], + [ + "add", + 382, + 224, + "-1/4" + ], + [ + "add", + 379, + 224, + "-1/2" + ], + [ + "add", + 372, + 224, + "-1/4" + ], + [ + "add", + 368, + 224, + "-1/4" + ], + [ + "add", + 367, + 224, + "1/4" + ], + [ + "add", + 366, + 224, + "-1/4" + ], + [ + "add", + 356, + 224, + "-1/4" + ], + [ + "add", + 352, + 224, + "-1/4" + ], + [ + "add", + 351, + 224, + "1/4" + ], + [ + "add", + 350, + 224, + "-1/4" + ], + [ + "add", + 347, + 224, + "-1/2" + ], + [ + "add", + 340, + 224, + "-1/4" + ], + [ + "add", + 336, + 224, + "-1/4" + ], + [ + "add", + 276, + 224, + "1/4" + ], + [ + "add", + 271, + 224, + "1/2" + ], + [ + "add", + 270, + 224, + "-1/4" + ], + [ + "add", + 269, + 224, + "1/4" + ], + [ + "add", + 266, + 224, + "1/4" + ], + [ + "add", + 262, + 224, + "-1/4" + ], + [ + "add", + 261, + 224, + "-1/4" + ], + [ + "add", + 258, + 224, + "-1/4" + ], + [ + "add", + 257, + 224, + "1/4" + ], + [ + "add", + 256, + 224, + "-1/4" + ], + [ + "add", + 255, + 224, + "1/2" + ], + [ + "add", + 254, + 224, + "-1/4" + ], + [ + "add", + 253, + 224, + "1/4" + ], + [ + "add", + 250, + 224, + "1/4" + ], + [ + "add", + 246, + 224, + "-1/4" + ], + [ + "add", + 245, + 224, + "-1/4" + ], + [ + "add", + 242, + 224, + "-1/4" + ], + [ + "add", + 241, + 224, + "1/4" + ], + [ + "add", + 240, + 224, + "-1/4" + ], + [ + "add", + 239, + 224, + "1/2" + ], + [ + "add", + 238, + 224, + "-1/4" + ], + [ + "add", + 237, + 224, + "1/4" + ], + [ + "add", + 234, + 224, + "1/4" + ], + [ + "add", + 233, + 224, + "1/4" + ], + [ + "add", + 229, + 224, + "-1/4" + ], + [ + "add", + 227, + 224, + "1/4" + ], + [ + "add", + 225, + 224, + "1/2" + ], + [ + "scale", + 224, + "-1/2" + ] + ], + "output_basis_program": [ + [ + "scale", + 224, + "-2" + ], + [ + "add", + 225, + 224, + "-1/2" + ], + [ + "add", + 227, + 224, + "-1/4" + ], + [ + "add", + 229, + 224, + "1/4" + ], + [ + "add", + 233, + 224, + "-1/4" + ], + [ + "add", + 234, + 224, + "-1/4" + ], + [ + "add", + 237, + 224, + "-1/4" + ], + [ + "add", + 238, + 224, + "1/4" + ], + [ + "add", + 239, + 224, + "-1/2" + ], + [ + "add", + 240, + 224, + "1/4" + ], + [ + "add", + 241, + 224, + "-1/4" + ], + [ + "add", + 242, + 224, + "1/4" + ], + [ + "add", + 245, + 224, + "1/4" + ], + [ + "add", + 246, + 224, + "1/4" + ], + [ + "add", + 250, + 224, + "-1/4" + ], + [ + "add", + 253, + 224, + "-1/4" + ], + [ + "add", + 254, + 224, + "1/4" + ], + [ + "add", + 255, + 224, + "-1/2" + ], + [ + "add", + 256, + 224, + "1/4" + ], + [ + "add", + 257, + 224, + "-1/4" + ], + [ + "add", + 258, + 224, + "1/4" + ], + [ + "add", + 261, + 224, + "1/4" + ], + [ + "add", + 262, + 224, + "1/4" + ], + [ + "add", + 266, + 224, + "-1/4" + ], + [ + "add", + 269, + 224, + "-1/4" + ], + [ + "add", + 270, + 224, + "1/4" + ], + [ + "add", + 271, + 224, + "-1/2" + ], + [ + "add", + 276, + 224, + "-1/4" + ], + [ + "add", + 336, + 224, + "1/4" + ], + [ + "add", + 340, + 224, + "1/4" + ], + [ + "add", + 347, + 224, + "1/2" + ], + [ + "add", + 350, + 224, + "1/4" + ], + [ + "add", + 351, + 224, + "-1/4" + ], + [ + "add", + 352, + 224, + "1/4" + ], + [ + "add", + 356, + 224, + "1/4" + ], + [ + "add", + 366, + 224, + "1/4" + ], + [ + "add", + 367, + 224, + "-1/4" + ], + [ + "add", + 368, + 224, + "1/4" + ], + [ + "add", + 372, + 224, + "1/4" + ], + [ + "add", + 379, + 224, + "1/2" + ], + [ + "add", + 382, + 224, + "1/4" + ], + [ + "add", + 383, + 224, + "-1/4" + ], + [ + "add", + 384, + 224, + "1/4" + ], + [ + "add", + 388, + 224, + "1/4" + ], + [ + "add", + 398, + 224, + "1/4" + ], + [ + "add", + 399, + 224, + "-1/4" + ], + [ + "scale", + 225, + "-2" + ], + [ + "add", + 224, + 225, + "-1" + ], + [ + "add", + 227, + 225, + "1/2" + ], + [ + "add", + 229, + 225, + "-1/2" + ], + [ + "add", + 233, + 225, + "1/2" + ], + [ + "add", + 234, + 225, + "1/2" + ], + [ + "add", + 238, + 225, + "-1/2" + ], + [ + "add", + 239, + 225, + "1/2" + ], + [ + "add", + 240, + 225, + "-1/4" + ], + [ + "add", + 241, + 225, + "1/4" + ], + [ + "add", + 242, + 225, + "-1/4" + ], + [ + "add", + 245, + 225, + "-1/4" + ], + [ + "add", + 246, + 225, + "-1/4" + ], + [ + "add", + 250, + 225, + "1/4" + ], + [ + "add", + 253, + 225, + "1/4" + ], + [ + "add", + 254, + 225, + "-1/4" + ], + [ + "add", + 255, + 225, + "1/2" + ], + [ + "add", + 256, + 225, + "-1/4" + ], + [ + "add", + 257, + 225, + "1/4" + ], + [ + "add", + 258, + 225, + "-1/4" + ], + [ + "add", + 261, + 225, + "-1/4" + ], + [ + "add", + 262, + 225, + "-1/4" + ], + [ + "add", + 266, + 225, + "1/4" + ], + [ + "add", + 269, + 225, + "1/4" + ], + [ + "add", + 270, + 225, + "-1/4" + ], + [ + "add", + 271, + 225, + "1/2" + ], + [ + "add", + 272, + 225, + "1/4" + ], + [ + "add", + 276, + 225, + "1/2" + ], + [ + "add", + 280, + 225, + "-1/4" + ], + [ + "add", + 283, + 225, + "-1/2" + ], + [ + "add", + 286, + 225, + "1/4" + ], + [ + "add", + 287, + 225, + "-1/2" + ], + [ + "add", + 347, + 225, + "-1" + ], + [ + "add", + 368, + 225, + "-1/4" + ], + [ + "add", + 372, + 225, + "-1/4" + ], + [ + "add", + 379, + 225, + "-1/2" + ], + [ + "add", + 382, + 225, + "-1/4" + ], + [ + "add", + 383, + 225, + "1/4" + ], + [ + "add", + 384, + 225, + "-1/4" + ], + [ + "add", + 388, + 225, + "-1/4" + ], + [ + "add", + 398, + 225, + "-1/4" + ], + [ + "add", + 399, + 225, + "1/4" + ], + [ + "add", + 400, + 225, + "1/4" + ], + [ + "add", + 401, + 225, + "1/4" + ], + [ + "add", + 402, + 225, + "-1/4" + ], + [ + "add", + 403, + 225, + "1/2" + ], + [ + "add", + 405, + 225, + "1/4" + ], + [ + "add", + 406, + 225, + "1/4" + ], + [ + "add", + 409, + 225, + "1/4" + ], + [ + "add", + 410, + 225, + "-1/4" + ], + [ + "add", + 411, + 225, + "1/2" + ], + [ + "add", + 413, + 225, + "1/4" + ], + [ + "add", + 414, + 225, + "1/4" + ], + [ + "add", + 416, + 225, + "1/4" + ], + [ + "add", + 417, + 225, + "1/4" + ], + [ + "add", + 418, + 225, + "-1/4" + ], + [ + "add", + 419, + 225, + "1/2" + ], + [ + "add", + 421, + 225, + "1/4" + ], + [ + "add", + 422, + 225, + "1/4" + ], + [ + "add", + 425, + 225, + "1/4" + ], + [ + "add", + 426, + 225, + "-1/4" + ], + [ + "add", + 427, + 225, + "1/2" + ], + [ + "add", + 429, + 225, + "1/4" + ], + [ + "add", + 430, + 225, + "1/4" + ], + [ + "scale", + 227, + "-4" + ], + [ + "add", + 229, + 227, + "1/4" + ], + [ + "add", + 233, + 227, + "1/4" + ], + [ + "add", + 234, + 227, + "-1/4" + ], + [ + "add", + 235, + 227, + "1/2" + ], + [ + "add", + 237, + 227, + "1/4" + ], + [ + "add", + 238, + 227, + "1/4" + ], + [ + "add", + 240, + 227, + "1/4" + ], + [ + "add", + 241, + 227, + "1/4" + ], + [ + "add", + 242, + 227, + "1/4" + ], + [ + "add", + 243, + 227, + "1/2" + ], + [ + "add", + 245, + 227, + "1/4" + ], + [ + "add", + 246, + 227, + "1/4" + ], + [ + "add", + 250, + 227, + "-1/4" + ], + [ + "add", + 253, + 227, + "1/4" + ], + [ + "add", + 254, + 227, + "1/4" + ], + [ + "add", + 256, + 227, + "1/4" + ], + [ + "add", + 257, + 227, + "1/4" + ], + [ + "add", + 258, + 227, + "1/4" + ], + [ + "add", + 259, + 227, + "1/2" + ], + [ + "add", + 261, + 227, + "1/4" + ], + [ + "add", + 262, + 227, + "1/4" + ], + [ + "add", + 266, + 227, + "-1/4" + ], + [ + "add", + 269, + 227, + "1/4" + ], + [ + "add", + 270, + 227, + "1/4" + ], + [ + "add", + 272, + 227, + "1/4" + ], + [ + "add", + 276, + 227, + "-1/4" + ], + [ + "add", + 280, + 227, + "-1/4" + ], + [ + "add", + 283, + 227, + "1/2" + ], + [ + "add", + 286, + 227, + "1/4" + ], + [ + "add", + 287, + 227, + "-1/2" + ], + [ + "add", + 288, + 227, + "1/2" + ], + [ + "add", + 296, + 227, + "-1/2" + ], + [ + "add", + 302, + 227, + "1/2" + ], + [ + "add", + 303, + 227, + "-1" + ], + [ + "add", + 306, + 227, + "1/4" + ], + [ + "add", + 308, + 227, + "1/4" + ], + [ + "add", + 312, + 227, + "-1/4" + ], + [ + "add", + 315, + 227, + "1/2" + ], + [ + "add", + 318, + 227, + "1/4" + ], + [ + "add", + 319, + 227, + "-1/2" + ], + [ + "add", + 326, + 227, + "1" + ], + [ + "add", + 328, + 227, + "-2" + ], + [ + "add", + 332, + 227, + "1" + ], + [ + "add", + 335, + 227, + "-2" + ], + [ + "scale", + 229, + "-1" + ], + [ + "add", + 224, + 229, + "1" + ], + [ + "add", + 225, + 229, + "-1" + ], + [ + "add", + 227, + 229, + "1" + ], + [ + "add", + 234, + 229, + "-1/2" + ], + [ + "add", + 237, + 229, + "1/2" + ], + [ + "add", + 238, + 229, + "1" + ], + [ + "add", + 239, + 229, + "-1" + ], + [ + "add", + 240, + 229, + "1/2" + ], + [ + "add", + 242, + 229, + "1/2" + ], + [ + "add", + 243, + 229, + "1/2" + ], + [ + "add", + 245, + 229, + "1/2" + ], + [ + "add", + 246, + 229, + "1/2" + ], + [ + "add", + 250, + 229, + "-1/2" + ], + [ + "add", + 254, + 229, + "1/2" + ], + [ + "add", + 255, + 229, + "-1/2" + ], + [ + "add", + 256, + 229, + "1/2" + ], + [ + "add", + 258, + 229, + "1/2" + ], + [ + "add", + 259, + 229, + "1/2" + ], + [ + "add", + 261, + 229, + "1/2" + ], + [ + "add", + 262, + 229, + "1/2" + ], + [ + "add", + 266, + 229, + "-1/2" + ], + [ + "add", + 270, + 229, + "1/2" + ], + [ + "add", + 271, + 229, + "-1/2" + ], + [ + "add", + 276, + 229, + "-1/2" + ], + [ + "add", + 283, + 229, + "1" + ], + [ + "add", + 288, + 229, + "1/2" + ], + [ + "add", + 296, + 229, + "-1/2" + ], + [ + "add", + 302, + 229, + "1/2" + ], + [ + "add", + 303, + 229, + "-1" + ], + [ + "add", + 306, + 229, + "1/2" + ], + [ + "add", + 308, + 229, + "1/2" + ], + [ + "add", + 312, + 229, + "-1/2" + ], + [ + "add", + 318, + 229, + "1/2" + ], + [ + "add", + 319, + 229, + "-1" + ], + [ + "add", + 326, + 229, + "1" + ], + [ + "add", + 328, + 229, + "-2" + ], + [ + "add", + 332, + 229, + "1" + ], + [ + "add", + 335, + 229, + "-2" + ], + [ + "add", + 347, + 229, + "1" + ], + [ + "add", + 368, + 229, + "1/2" + ], + [ + "add", + 372, + 229, + "1/2" + ], + [ + "add", + 382, + 229, + "1/2" + ], + [ + "add", + 383, + 229, + "-1/2" + ], + [ + "add", + 384, + 229, + "1/2" + ], + [ + "add", + 388, + 229, + "1/2" + ], + [ + "add", + 398, + 229, + "1/2" + ], + [ + "add", + 399, + 229, + "-1/2" + ], + [ + "add", + 401, + 229, + "-1/2" + ], + [ + "add", + 402, + 229, + "1/2" + ], + [ + "add", + 403, + 229, + "-1/2" + ], + [ + "add", + 409, + 229, + "-1/2" + ], + [ + "add", + 411, + 229, + "-1/2" + ], + [ + "add", + 413, + 229, + "-1/2" + ], + [ + "add", + 415, + 229, + "-1/2" + ], + [ + "add", + 417, + 229, + "-1/2" + ], + [ + "add", + 418, + 229, + "1/2" + ], + [ + "add", + 419, + 229, + "-1/2" + ], + [ + "add", + 425, + 229, + "-1/2" + ], + [ + "add", + 427, + 229, + "-1/2" + ], + [ + "add", + 429, + 229, + "-1/2" + ], + [ + "add", + 431, + 229, + "-1/2" + ], + [ + "add", + 227, + 230, + "1" + ], + [ + "add", + 225, + 231, + "-2" + ], + [ + "add", + 225, + 232, + "1" + ], + [ + "add", + 229, + 232, + "1" + ], + [ + "add", + 225, + 234, + "-1" + ], + [ + "add", + 229, + 234, + "-1" + ], + [ + "add", + 225, + 235, + "-1" + ], + [ + "add", + 229, + 235, + "-1" + ], + [ + "add", + 225, + 236, + "-1" + ], + [ + "add", + 229, + 236, + "1" + ], + [ + "add", + 225, + 237, + "-1" + ], + [ + "add", + 229, + 237, + "-1" + ], + [ + "add", + 225, + 238, + "2" + ], + [ + "add", + 225, + 239, + "1" + ], + [ + "add", + 229, + 239, + "1" + ], + [ + "add", + 240, + 256, + "1" + ], + [ + "add", + 256, + 240, + "-1" + ], + [ + "add", + 240, + 256, + "1" + ], + [ + "scale", + 256, + "-1" + ], + [ + "scale", + 240, + "4" + ], + [ + "add", + 257, + 240, + "-1/4" + ], + [ + "add", + 258, + 240, + "1/4" + ], + [ + "add", + 261, + 240, + "-1/4" + ], + [ + "add", + 262, + 240, + "1/4" + ], + [ + "add", + 266, + 240, + "-1/4" + ], + [ + "add", + 269, + 240, + "-1/4" + ], + [ + "add", + 270, + 240, + "-1/4" + ], + [ + "add", + 271, + 240, + "1/2" + ], + [ + "add", + 288, + 240, + "1/4" + ], + [ + "add", + 296, + 240, + "-1/4" + ], + [ + "add", + 302, + 240, + "-1/4" + ], + [ + "add", + 303, + 240, + "1/2" + ], + [ + "add", + 306, + 240, + "1/4" + ], + [ + "add", + 308, + 240, + "-1/4" + ], + [ + "add", + 312, + 240, + "-1/4" + ], + [ + "add", + 318, + 240, + "-1/4" + ], + [ + "add", + 319, + 240, + "1/2" + ], + [ + "add", + 336, + 240, + "1/4" + ], + [ + "add", + 340, + 240, + "-1/4" + ], + [ + "add", + 350, + 240, + "-1/4" + ], + [ + "add", + 351, + 240, + "3/4" + ], + [ + "add", + 384, + 240, + "1/4" + ], + [ + "add", + 388, + 240, + "-1/4" + ], + [ + "add", + 398, + 240, + "-1/4" + ], + [ + "add", + 399, + 240, + "3/4" + ], + [ + "add", + 416, + 240, + "-1/4" + ], + [ + "add", + 417, + 240, + "-1/4" + ], + [ + "add", + 418, + 240, + "1/4" + ], + [ + "add", + 421, + 240, + "-1/4" + ], + [ + "add", + 422, + 240, + "1/4" + ], + [ + "add", + 425, + 240, + "-1/4" + ], + [ + "add", + 426, + 240, + "-1/4" + ], + [ + "add", + 427, + 240, + "1/2" + ], + [ + "add", + 429, + 240, + "-1/4" + ], + [ + "add", + 430, + 240, + "-1/4" + ], + [ + "add", + 431, + 240, + "1/2" + ], + [ + "add", + 433, + 240, + "-1/4" + ], + [ + "add", + 434, + 240, + "1/4" + ], + [ + "add", + 437, + 240, + "-1/4" + ], + [ + "add", + 438, + 240, + "1/4" + ], + [ + "add", + 441, + 240, + "-1/4" + ], + [ + "add", + 442, + 240, + "-1/4" + ], + [ + "add", + 443, + 240, + "1/2" + ], + [ + "add", + 445, + 240, + "-1/4" + ], + [ + "add", + 446, + 240, + "-1/4" + ], + [ + "add", + 447, + 240, + "1/2" + ], + [ + "scale", + 241, + "-4" + ], + [ + "add", + 242, + 241, + "-1/4" + ], + [ + "add", + 243, + 241, + "-1/2" + ], + [ + "add", + 245, + 241, + "1/4" + ], + [ + "add", + 246, + 241, + "1/4" + ], + [ + "add", + 250, + 241, + "-1/4" + ], + [ + "add", + 253, + 241, + "1/4" + ], + [ + "add", + 254, + 241, + "1/4" + ], + [ + "add", + 256, + 241, + "-1/4" + ], + [ + "add", + 272, + 241, + "-1/4" + ], + [ + "add", + 280, + 241, + "1/4" + ], + [ + "add", + 286, + 241, + "1/4" + ], + [ + "add", + 287, + 241, + "1/2" + ], + [ + "add", + 306, + 241, + "-1/4" + ], + [ + "add", + 308, + 241, + "1/4" + ], + [ + "add", + 312, + 241, + "1/4" + ], + [ + "add", + 318, + 241, + "1/4" + ], + [ + "add", + 319, + 241, + "1/2" + ], + [ + "add", + 336, + 241, + "-1/4" + ], + [ + "add", + 340, + 241, + "1/4" + ], + [ + "add", + 350, + 241, + "1/4" + ], + [ + "add", + 351, + 241, + "1/4" + ], + [ + "add", + 368, + 241, + "-1/4" + ], + [ + "add", + 372, + 241, + "1/4" + ], + [ + "add", + 382, + 241, + "1/4" + ], + [ + "add", + 383, + 241, + "1/4" + ], + [ + "add", + 400, + 241, + "-1/4" + ], + [ + "add", + 401, + 241, + "1/4" + ], + [ + "add", + 402, + 241, + "1/4" + ], + [ + "add", + 403, + 241, + "-1/2" + ], + [ + "add", + 405, + 241, + "1/4" + ], + [ + "add", + 406, + 241, + "1/4" + ], + [ + "add", + 409, + 241, + "-1/4" + ], + [ + "add", + 410, + 241, + "-1/4" + ], + [ + "add", + 413, + 241, + "1/4" + ], + [ + "add", + 414, + 241, + "1/4" + ], + [ + "add", + 433, + 241, + "-1/4" + ], + [ + "add", + 434, + 241, + "1/4" + ], + [ + "add", + 435, + 241, + "-1/2" + ], + [ + "add", + 437, + 241, + "-1/4" + ], + [ + "add", + 438, + 241, + "-1/4" + ], + [ + "add", + 441, + 241, + "-1/4" + ], + [ + "add", + 442, + 241, + "1/4" + ], + [ + "add", + 443, + 241, + "-1/2" + ], + [ + "add", + 445, + 241, + "-1/4" + ], + [ + "add", + 446, + 241, + "-1/4" + ], + [ + "scale", + 243, + "2" + ], + [ + "add", + 246, + 243, + "-1/2" + ], + [ + "add", + 250, + 243, + "1/2" + ], + [ + "add", + 255, + 243, + "-1/2" + ], + [ + "add", + 256, + 243, + "1/2" + ], + [ + "add", + 272, + 243, + "1/4" + ], + [ + "add", + 280, + 243, + "-1/4" + ], + [ + "add", + 286, + 243, + "-1/4" + ], + [ + "add", + 287, + 243, + "-1/2" + ], + [ + "add", + 288, + 243, + "1/4" + ], + [ + "add", + 296, + 243, + "-1/4" + ], + [ + "add", + 302, + 243, + "-1/4" + ], + [ + "add", + 303, + 243, + "-1/2" + ], + [ + "add", + 306, + 243, + "1/4" + ], + [ + "add", + 308, + 243, + "-1/4" + ], + [ + "add", + 312, + 243, + "-1/4" + ], + [ + "add", + 318, + 243, + "-1/4" + ], + [ + "add", + 319, + 243, + "-1/2" + ], + [ + "add", + 324, + 243, + "-1/2" + ], + [ + "add", + 326, + 243, + "1/2" + ], + [ + "add", + 328, + 243, + "-1" + ], + [ + "add", + 332, + 243, + "1/2" + ], + [ + "add", + 334, + 243, + "-1/2" + ], + [ + "add", + 335, + 243, + "-1" + ], + [ + "add", + 336, + 243, + "1/4" + ], + [ + "add", + 340, + 243, + "-1/4" + ], + [ + "add", + 350, + 243, + "-1/4" + ], + [ + "add", + 351, + 243, + "-1/4" + ], + [ + "add", + 352, + 243, + "1/4" + ], + [ + "add", + 356, + 243, + "-1/4" + ], + [ + "add", + 366, + 243, + "-1/4" + ], + [ + "add", + 367, + 243, + "-1/4" + ], + [ + "add", + 368, + 243, + "1/4" + ], + [ + "add", + 372, + 243, + "-1/4" + ], + [ + "add", + 382, + 243, + "-1/4" + ], + [ + "add", + 383, + 243, + "-1/4" + ], + [ + "add", + 384, + 243, + "1/4" + ], + [ + "add", + 388, + 243, + "-1/4" + ], + [ + "add", + 398, + 243, + "-1/4" + ], + [ + "add", + 399, + 243, + "-1/4" + ], + [ + "add", + 400, + 243, + "1/2" + ], + [ + "add", + 402, + 243, + "-1/2" + ], + [ + "add", + 403, + 243, + "1/2" + ], + [ + "add", + 406, + 243, + "-1/2" + ], + [ + "add", + 409, + 243, + "1/2" + ], + [ + "add", + 410, + 243, + "1/2" + ], + [ + "add", + 411, + 243, + "-1/2" + ], + [ + "add", + 415, + 243, + "-1/2" + ], + [ + "add", + 432, + 243, + "1/2" + ], + [ + "add", + 435, + 243, + "1/2" + ], + [ + "add", + 437, + 243, + "1/2" + ], + [ + "add", + 438, + 243, + "1/2" + ], + [ + "add", + 442, + 243, + "-1/2" + ], + [ + "add", + 443, + 243, + "1/2" + ], + [ + "add", + 446, + 243, + "1/2" + ], + [ + "add", + 447, + 243, + "-1/2" + ], + [ + "add", + 241, + 245, + "-2" + ], + [ + "add", + 243, + 245, + "1" + ], + [ + "add", + 246, + 245, + "-1" + ], + [ + "add", + 250, + 245, + "1" + ], + [ + "add", + 255, + 245, + "-1" + ], + [ + "add", + 256, + 245, + "1" + ], + [ + "add", + 272, + 245, + "1/2" + ], + [ + "add", + 280, + 245, + "-1/2" + ], + [ + "add", + 286, + 245, + "-1/2" + ], + [ + "add", + 287, + 245, + "-1" + ], + [ + "add", + 288, + 245, + "1/2" + ], + [ + "add", + 296, + 245, + "-1/2" + ], + [ + "add", + 302, + 245, + "-1/2" + ], + [ + "add", + 303, + 245, + "-1" + ], + [ + "add", + 306, + 245, + "1/2" + ], + [ + "add", + 308, + 245, + "-1/2" + ], + [ + "add", + 312, + 245, + "-1/2" + ], + [ + "add", + 318, + 245, + "-1/2" + ], + [ + "add", + 319, + 245, + "-1" + ], + [ + "add", + 324, + 245, + "-1" + ], + [ + "add", + 326, + 245, + "1" + ], + [ + "add", + 328, + 245, + "-2" + ], + [ + "add", + 332, + 245, + "1" + ], + [ + "add", + 334, + 245, + "-1" + ], + [ + "add", + 335, + 245, + "-2" + ], + [ + "add", + 336, + 245, + "1/2" + ], + [ + "add", + 340, + 245, + "-1/2" + ], + [ + "add", + 350, + 245, + "-1/2" + ], + [ + "add", + 351, + 245, + "-1/2" + ], + [ + "add", + 352, + 245, + "1/2" + ], + [ + "add", + 356, + 245, + "-1/2" + ], + [ + "add", + 366, + 245, + "-1/2" + ], + [ + "add", + 367, + 245, + "-1/2" + ], + [ + "add", + 368, + 245, + "1/2" + ], + [ + "add", + 372, + 245, + "-1/2" + ], + [ + "add", + 382, + 245, + "-1/2" + ], + [ + "add", + 383, + 245, + "-1/2" + ], + [ + "add", + 384, + 245, + "1/2" + ], + [ + "add", + 388, + 245, + "-1/2" + ], + [ + "add", + 398, + 245, + "-1/2" + ], + [ + "add", + 399, + 245, + "-1/2" + ], + [ + "add", + 400, + 245, + "1" + ], + [ + "add", + 402, + 245, + "-1" + ], + [ + "add", + 403, + 245, + "1" + ], + [ + "add", + 406, + 245, + "-1" + ], + [ + "add", + 409, + 245, + "1" + ], + [ + "add", + 410, + 245, + "1" + ], + [ + "add", + 411, + 245, + "-1" + ], + [ + "add", + 415, + 245, + "-1" + ], + [ + "add", + 432, + 245, + "1" + ], + [ + "add", + 435, + 245, + "1" + ], + [ + "add", + 437, + 245, + "1" + ], + [ + "add", + 438, + 245, + "1" + ], + [ + "add", + 442, + 245, + "-1" + ], + [ + "add", + 443, + 245, + "1" + ], + [ + "add", + 446, + 245, + "1" + ], + [ + "add", + 447, + 245, + "-1" + ], + [ + "add", + 241, + 247, + "2" + ], + [ + "add", + 243, + 247, + "-1" + ], + [ + "add", + 246, + 247, + "1" + ], + [ + "add", + 250, + 247, + "-1" + ], + [ + "add", + 255, + 247, + "1" + ], + [ + "add", + 256, + 247, + "-1" + ], + [ + "add", + 272, + 247, + "-1/2" + ], + [ + "add", + 280, + 247, + "1/2" + ], + [ + "add", + 286, + 247, + "1/2" + ], + [ + "add", + 287, + 247, + "1" + ], + [ + "add", + 288, + 247, + "-1/2" + ], + [ + "add", + 296, + 247, + "1/2" + ], + [ + "add", + 302, + 247, + "1/2" + ], + [ + "add", + 303, + 247, + "1" + ], + [ + "add", + 306, + 247, + "-1/2" + ], + [ + "add", + 308, + 247, + "1/2" + ], + [ + "add", + 312, + 247, + "1/2" + ], + [ + "add", + 318, + 247, + "1/2" + ], + [ + "add", + 319, + 247, + "1" + ], + [ + "add", + 324, + 247, + "1" + ], + [ + "add", + 326, + 247, + "-1" + ], + [ + "add", + 328, + 247, + "2" + ], + [ + "add", + 332, + 247, + "-1" + ], + [ + "add", + 334, + 247, + "1" + ], + [ + "add", + 335, + 247, + "2" + ], + [ + "add", + 336, + 247, + "-1/2" + ], + [ + "add", + 340, + 247, + "1/2" + ], + [ + "add", + 350, + 247, + "1/2" + ], + [ + "add", + 351, + 247, + "1/2" + ], + [ + "add", + 352, + 247, + "-1/2" + ], + [ + "add", + 356, + 247, + "1/2" + ], + [ + "add", + 366, + 247, + "1/2" + ], + [ + "add", + 367, + 247, + "1/2" + ], + [ + "add", + 368, + 247, + "-1/2" + ], + [ + "add", + 372, + 247, + "1/2" + ], + [ + "add", + 382, + 247, + "1/2" + ], + [ + "add", + 383, + 247, + "1/2" + ], + [ + "add", + 384, + 247, + "-1/2" + ], + [ + "add", + 388, + 247, + "1/2" + ], + [ + "add", + 398, + 247, + "1/2" + ], + [ + "add", + 399, + 247, + "1/2" + ], + [ + "add", + 400, + 247, + "-1" + ], + [ + "add", + 402, + 247, + "1" + ], + [ + "add", + 403, + 247, + "-1" + ], + [ + "add", + 406, + 247, + "1" + ], + [ + "add", + 409, + 247, + "-1" + ], + [ + "add", + 410, + 247, + "-1" + ], + [ + "add", + 411, + 247, + "1" + ], + [ + "add", + 415, + 247, + "1" + ], + [ + "add", + 432, + 247, + "-1" + ], + [ + "add", + 435, + 247, + "-1" + ], + [ + "add", + 437, + 247, + "-1" + ], + [ + "add", + 438, + 247, + "-1" + ], + [ + "add", + 442, + 247, + "1" + ], + [ + "add", + 443, + 247, + "-1" + ], + [ + "add", + 446, + 247, + "-1" + ], + [ + "add", + 447, + 247, + "1" + ], + [ + "add", + 241, + 252, + "2" + ], + [ + "add", + 243, + 252, + "-1" + ], + [ + "add", + 246, + 252, + "1" + ], + [ + "add", + 250, + 252, + "-1" + ], + [ + "add", + 255, + 252, + "1" + ], + [ + "add", + 256, + 252, + "-1" + ], + [ + "add", + 272, + 252, + "-1/2" + ], + [ + "add", + 280, + 252, + "1/2" + ], + [ + "add", + 286, + 252, + "1/2" + ], + [ + "add", + 287, + 252, + "1" + ], + [ + "add", + 288, + 252, + "-1/2" + ], + [ + "add", + 296, + 252, + "1/2" + ], + [ + "add", + 302, + 252, + "1/2" + ], + [ + "add", + 303, + 252, + "1" + ], + [ + "add", + 306, + 252, + "-1/2" + ], + [ + "add", + 308, + 252, + "1/2" + ], + [ + "add", + 312, + 252, + "1/2" + ], + [ + "add", + 318, + 252, + "1/2" + ], + [ + "add", + 319, + 252, + "1" + ], + [ + "add", + 324, + 252, + "1" + ], + [ + "add", + 326, + 252, + "-1" + ], + [ + "add", + 328, + 252, + "2" + ], + [ + "add", + 332, + 252, + "-1" + ], + [ + "add", + 334, + 252, + "1" + ], + [ + "add", + 335, + 252, + "2" + ], + [ + "add", + 336, + 252, + "-1/2" + ], + [ + "add", + 340, + 252, + "1/2" + ], + [ + "add", + 350, + 252, + "1/2" + ], + [ + "add", + 351, + 252, + "1/2" + ], + [ + "add", + 352, + 252, + "-1/2" + ], + [ + "add", + 356, + 252, + "1/2" + ], + [ + "add", + 366, + 252, + "1/2" + ], + [ + "add", + 367, + 252, + "1/2" + ], + [ + "add", + 368, + 252, + "-1/2" + ], + [ + "add", + 372, + 252, + "1/2" + ], + [ + "add", + 382, + 252, + "1/2" + ], + [ + "add", + 383, + 252, + "1/2" + ], + [ + "add", + 384, + 252, + "-1/2" + ], + [ + "add", + 388, + 252, + "1/2" + ], + [ + "add", + 398, + 252, + "1/2" + ], + [ + "add", + 399, + 252, + "1/2" + ], + [ + "add", + 400, + 252, + "-1" + ], + [ + "add", + 402, + 252, + "1" + ], + [ + "add", + 403, + 252, + "-1" + ], + [ + "add", + 406, + 252, + "1" + ], + [ + "add", + 409, + 252, + "-1" + ], + [ + "add", + 410, + 252, + "-1" + ], + [ + "add", + 411, + 252, + "1" + ], + [ + "add", + 415, + 252, + "1" + ], + [ + "add", + 432, + 252, + "-1" + ], + [ + "add", + 435, + 252, + "-1" + ], + [ + "add", + 437, + 252, + "-1" + ], + [ + "add", + 438, + 252, + "-1" + ], + [ + "add", + 442, + 252, + "1" + ], + [ + "add", + 443, + 252, + "-1" + ], + [ + "add", + 446, + 252, + "-1" + ], + [ + "add", + 447, + 252, + "1" + ], + [ + "add", + 243, + 253, + "1" + ], + [ + "add", + 246, + 253, + "-1" + ], + [ + "add", + 250, + 253, + "1" + ], + [ + "add", + 255, + 253, + "-1" + ], + [ + "add", + 256, + 253, + "1" + ], + [ + "add", + 272, + 253, + "1/2" + ], + [ + "add", + 280, + 253, + "-1/2" + ], + [ + "add", + 286, + 253, + "-1/2" + ], + [ + "add", + 287, + 253, + "-1" + ], + [ + "add", + 288, + 253, + "1/2" + ], + [ + "add", + 296, + 253, + "-1/2" + ], + [ + "add", + 302, + 253, + "-1/2" + ], + [ + "add", + 303, + 253, + "-1" + ], + [ + "add", + 306, + 253, + "1/2" + ], + [ + "add", + 308, + 253, + "-1/2" + ], + [ + "add", + 312, + 253, + "-1/2" + ], + [ + "add", + 318, + 253, + "-1/2" + ], + [ + "add", + 319, + 253, + "-1" + ], + [ + "add", + 324, + 253, + "-1" + ], + [ + "add", + 326, + 253, + "1" + ], + [ + "add", + 328, + 253, + "-2" + ], + [ + "add", + 332, + 253, + "1" + ], + [ + "add", + 334, + 253, + "-1" + ], + [ + "add", + 335, + 253, + "-2" + ], + [ + "add", + 336, + 253, + "1/2" + ], + [ + "add", + 340, + 253, + "-1/2" + ], + [ + "add", + 350, + 253, + "-1/2" + ], + [ + "add", + 351, + 253, + "-1/2" + ], + [ + "add", + 352, + 253, + "1/2" + ], + [ + "add", + 356, + 253, + "-1/2" + ], + [ + "add", + 366, + 253, + "-1/2" + ], + [ + "add", + 367, + 253, + "-1/2" + ], + [ + "add", + 368, + 253, + "1/2" + ], + [ + "add", + 372, + 253, + "-1/2" + ], + [ + "add", + 382, + 253, + "-1/2" + ], + [ + "add", + 383, + 253, + "-1/2" + ], + [ + "add", + 384, + 253, + "1/2" + ], + [ + "add", + 388, + 253, + "-1/2" + ], + [ + "add", + 398, + 253, + "-1/2" + ], + [ + "add", + 399, + 253, + "-1/2" + ], + [ + "add", + 400, + 253, + "1" + ], + [ + "add", + 402, + 253, + "-1" + ], + [ + "add", + 403, + 253, + "1" + ], + [ + "add", + 406, + 253, + "-1" + ], + [ + "add", + 409, + 253, + "1" + ], + [ + "add", + 410, + 253, + "1" + ], + [ + "add", + 411, + 253, + "-1" + ], + [ + "add", + 415, + 253, + "-1" + ], + [ + "add", + 432, + 253, + "1" + ], + [ + "add", + 435, + 253, + "1" + ], + [ + "add", + 437, + 253, + "1" + ], + [ + "add", + 438, + 253, + "1" + ], + [ + "add", + 442, + 253, + "-1" + ], + [ + "add", + 443, + 253, + "1" + ], + [ + "add", + 446, + 253, + "1" + ], + [ + "add", + 447, + 253, + "-1" + ], + [ + "add", + 241, + 254, + "-2" + ], + [ + "add", + 243, + 254, + "1" + ], + [ + "add", + 246, + 254, + "-1" + ], + [ + "add", + 250, + 254, + "1" + ], + [ + "add", + 255, + 254, + "-1" + ], + [ + "add", + 256, + 254, + "1" + ], + [ + "add", + 272, + 254, + "1/2" + ], + [ + "add", + 280, + 254, + "-1/2" + ], + [ + "add", + 286, + 254, + "-1/2" + ], + [ + "add", + 287, + 254, + "-1" + ], + [ + "add", + 288, + 254, + "1/2" + ], + [ + "add", + 296, + 254, + "-1/2" + ], + [ + "add", + 302, + 254, + "-1/2" + ], + [ + "add", + 303, + 254, + "-1" + ], + [ + "add", + 306, + 254, + "1/2" + ], + [ + "add", + 308, + 254, + "-1/2" + ], + [ + "add", + 312, + 254, + "-1/2" + ], + [ + "add", + 318, + 254, + "-1/2" + ], + [ + "add", + 319, + 254, + "-1" + ], + [ + "add", + 324, + 254, + "-1" + ], + [ + "add", + 326, + 254, + "1" + ], + [ + "add", + 328, + 254, + "-2" + ], + [ + "add", + 332, + 254, + "1" + ], + [ + "add", + 334, + 254, + "-1" + ], + [ + "add", + 335, + 254, + "-2" + ], + [ + "add", + 336, + 254, + "1/2" + ], + [ + "add", + 340, + 254, + "-1/2" + ], + [ + "add", + 350, + 254, + "-1/2" + ], + [ + "add", + 351, + 254, + "-1/2" + ], + [ + "add", + 352, + 254, + "1/2" + ], + [ + "add", + 356, + 254, + "-1/2" + ], + [ + "add", + 366, + 254, + "-1/2" + ], + [ + "add", + 367, + 254, + "-1/2" + ], + [ + "add", + 368, + 254, + "1/2" + ], + [ + "add", + 372, + 254, + "-1/2" + ], + [ + "add", + 382, + 254, + "-1/2" + ], + [ + "add", + 383, + 254, + "-1/2" + ], + [ + "add", + 384, + 254, + "1/2" + ], + [ + "add", + 388, + 254, + "-1/2" + ], + [ + "add", + 398, + 254, + "-1/2" + ], + [ + "add", + 399, + 254, + "-1/2" + ], + [ + "add", + 400, + 254, + "1" + ], + [ + "add", + 402, + 254, + "-1" + ], + [ + "add", + 403, + 254, + "1" + ], + [ + "add", + 406, + 254, + "-1" + ], + [ + "add", + 409, + 254, + "1" + ], + [ + "add", + 410, + 254, + "1" + ], + [ + "add", + 411, + 254, + "-1" + ], + [ + "add", + 415, + 254, + "-1" + ], + [ + "add", + 432, + 254, + "1" + ], + [ + "add", + 435, + 254, + "1" + ], + [ + "add", + 437, + 254, + "1" + ], + [ + "add", + 438, + 254, + "1" + ], + [ + "add", + 442, + 254, + "-1" + ], + [ + "add", + 443, + 254, + "1" + ], + [ + "add", + 446, + 254, + "1" + ], + [ + "add", + 447, + 254, + "-1" + ], + [ + "add", + 255, + 256, + "1" + ], + [ + "add", + 256, + 255, + "-1" + ], + [ + "add", + 255, + 256, + "1" + ], + [ + "scale", + 256, + "-1" + ], + [ + "add", + 243, + 255, + "-1" + ], + [ + "add", + 246, + 255, + "1" + ], + [ + "add", + 250, + 255, + "-1" + ], + [ + "add", + 272, + 255, + "-1/2" + ], + [ + "add", + 280, + 255, + "1/2" + ], + [ + "add", + 286, + 255, + "1/2" + ], + [ + "add", + 287, + 255, + "1" + ], + [ + "add", + 288, + 255, + "-1/2" + ], + [ + "add", + 296, + 255, + "1/2" + ], + [ + "add", + 302, + 255, + "1/2" + ], + [ + "add", + 303, + 255, + "1" + ], + [ + "add", + 306, + 255, + "-1/2" + ], + [ + "add", + 308, + 255, + "1/2" + ], + [ + "add", + 312, + 255, + "1/2" + ], + [ + "add", + 318, + 255, + "1/2" + ], + [ + "add", + 319, + 255, + "1" + ], + [ + "add", + 324, + 255, + "1" + ], + [ + "add", + 326, + 255, + "-1" + ], + [ + "add", + 328, + 255, + "2" + ], + [ + "add", + 332, + 255, + "-1" + ], + [ + "add", + 334, + 255, + "1" + ], + [ + "add", + 335, + 255, + "2" + ], + [ + "add", + 336, + 255, + "-1/2" + ], + [ + "add", + 340, + 255, + "1/2" + ], + [ + "add", + 350, + 255, + "1/2" + ], + [ + "add", + 351, + 255, + "1/2" + ], + [ + "add", + 352, + 255, + "-1/2" + ], + [ + "add", + 356, + 255, + "1/2" + ], + [ + "add", + 366, + 255, + "1/2" + ], + [ + "add", + 367, + 255, + "1/2" + ], + [ + "add", + 368, + 255, + "-1/2" + ], + [ + "add", + 372, + 255, + "1/2" + ], + [ + "add", + 382, + 255, + "1/2" + ], + [ + "add", + 383, + 255, + "1/2" + ], + [ + "add", + 384, + 255, + "-1/2" + ], + [ + "add", + 388, + 255, + "1/2" + ], + [ + "add", + 398, + 255, + "1/2" + ], + [ + "add", + 399, + 255, + "1/2" + ], + [ + "add", + 400, + 255, + "-1" + ], + [ + "add", + 402, + 255, + "1" + ], + [ + "add", + 403, + 255, + "-1" + ], + [ + "add", + 406, + 255, + "1" + ], + [ + "add", + 409, + 255, + "-1" + ], + [ + "add", + 410, + 255, + "-1" + ], + [ + "add", + 411, + 255, + "1" + ], + [ + "add", + 415, + 255, + "1" + ], + [ + "add", + 432, + 255, + "-1" + ], + [ + "add", + 435, + 255, + "-1" + ], + [ + "add", + 437, + 255, + "-1" + ], + [ + "add", + 438, + 255, + "-1" + ], + [ + "add", + 442, + 255, + "1" + ], + [ + "add", + 443, + 255, + "-1" + ], + [ + "add", + 446, + 255, + "-1" + ], + [ + "add", + 447, + 255, + "1" + ], + [ + "add", + 256, + 257, + "1" + ], + [ + "add", + 257, + 256, + "-1" + ], + [ + "add", + 256, + 257, + "1" + ], + [ + "scale", + 257, + "-1" + ], + [ + "scale", + 256, + "2" + ], + [ + "add", + 240, + 256, + "1" + ], + [ + "add", + 258, + 256, + "1/2" + ], + [ + "add", + 259, + 256, + "1/2" + ], + [ + "add", + 261, + 256, + "-1/2" + ], + [ + "add", + 269, + 256, + "-1/2" + ], + [ + "add", + 270, + 256, + "-1/2" + ], + [ + "add", + 271, + 256, + "1/2" + ], + [ + "add", + 272, + 256, + "-1/4" + ], + [ + "add", + 280, + 256, + "1/4" + ], + [ + "add", + 286, + 256, + "1/4" + ], + [ + "add", + 287, + 256, + "-1/2" + ], + [ + "add", + 288, + 256, + "1/4" + ], + [ + "add", + 296, + 256, + "-1/4" + ], + [ + "add", + 302, + 256, + "-1/4" + ], + [ + "add", + 303, + 256, + "1/2" + ], + [ + "add", + 306, + 256, + "1/4" + ], + [ + "add", + 308, + 256, + "-1/4" + ], + [ + "add", + 312, + 256, + "-1/4" + ], + [ + "add", + 318, + 256, + "-1/4" + ], + [ + "add", + 319, + 256, + "1/2" + ], + [ + "add", + 324, + 256, + "1/2" + ], + [ + "add", + 326, + 256, + "-1/2" + ], + [ + "add", + 328, + 256, + "1" + ], + [ + "add", + 332, + 256, + "-1/2" + ], + [ + "add", + 334, + 256, + "1/2" + ], + [ + "add", + 336, + 256, + "1/4" + ], + [ + "add", + 340, + 256, + "-1/4" + ], + [ + "add", + 350, + 256, + "-1/4" + ], + [ + "add", + 351, + 256, + "3/4" + ], + [ + "add", + 352, + 256, + "-1/4" + ], + [ + "add", + 356, + 256, + "1/4" + ], + [ + "add", + 366, + 256, + "1/4" + ], + [ + "add", + 367, + 256, + "-3/4" + ], + [ + "add", + 368, + 256, + "-1/4" + ], + [ + "add", + 372, + 256, + "1/4" + ], + [ + "add", + 382, + 256, + "1/4" + ], + [ + "add", + 383, + 256, + "-3/4" + ], + [ + "add", + 384, + 256, + "1/4" + ], + [ + "add", + 388, + 256, + "-1/4" + ], + [ + "add", + 398, + 256, + "-1/4" + ], + [ + "add", + 399, + 256, + "3/4" + ], + [ + "add", + 417, + 256, + "-1/2" + ], + [ + "add", + 419, + 256, + "1/2" + ], + [ + "add", + 421, + 256, + "-1/2" + ], + [ + "add", + 427, + 256, + "1/2" + ], + [ + "add", + 429, + 256, + "-1/2" + ], + [ + "add", + 430, + 256, + "-1/2" + ], + [ + "add", + 431, + 256, + "1/2" + ], + [ + "add", + 432, + 256, + "1/2" + ], + [ + "add", + 433, + 256, + "-1/2" + ], + [ + "add", + 435, + 256, + "1/2" + ], + [ + "add", + 437, + 256, + "-1/2" + ], + [ + "add", + 443, + 256, + "1/2" + ], + [ + "add", + 445, + 256, + "-1/2" + ], + [ + "add", + 446, + 256, + "-1/2" + ], + [ + "add", + 447, + 256, + "1/2" + ], + [ + "scale", + 257, + "-1" + ], + [ + "add", + 241, + 257, + "1" + ], + [ + "add", + 255, + 257, + "-1" + ], + [ + "add", + 256, + 259, + "-1" + ], + [ + "add", + 256, + 261, + "1" + ], + [ + "add", + 256, + 263, + "-1" + ], + [ + "add", + 256, + 268, + "-1" + ], + [ + "add", + 256, + 269, + "-1" + ], + [ + "add", + 256, + 270, + "1" + ], + [ + "add", + 256, + 271, + "1" + ], + [ + "add", + 240, + 288, + "-1" + ], + [ + "add", + 240, + 294, + "1" + ], + [ + "add", + 240, + 296, + "1" + ], + [ + "add", + 240, + 297, + "1" + ], + [ + "add", + 240, + 300, + "-1" + ], + [ + "add", + 240, + 303, + "-1" + ], + [ + "add", + 227, + 324, + "-1" + ], + [ + "add", + 229, + 324, + "1" + ], + [ + "add", + 257, + 324, + "-1" + ], + [ + "add", + 227, + 326, + "1" + ], + [ + "add", + 229, + 326, + "-1" + ], + [ + "add", + 257, + 326, + "1" + ], + [ + "add", + 227, + 328, + "1" + ], + [ + "add", + 229, + 328, + "-1" + ], + [ + "add", + 257, + 328, + "1" + ], + [ + "add", + 227, + 333, + "-1" + ], + [ + "add", + 229, + 333, + "1" + ], + [ + "add", + 257, + 333, + "-1" + ], + [ + "add", + 224, + 384, + "-1" + ], + [ + "add", + 225, + 384, + "-1" + ], + [ + "add", + 257, + 384, + "-1" + ], + [ + "add", + 224, + 388, + "-1" + ], + [ + "add", + 225, + 388, + "-1" + ], + [ + "add", + 257, + 388, + "-1" + ], + [ + "add", + 224, + 390, + "1" + ], + [ + "add", + 225, + 390, + "1" + ], + [ + "add", + 257, + 390, + "1" + ], + [ + "add", + 224, + 391, + "1" + ], + [ + "add", + 225, + 391, + "1" + ], + [ + "add", + 257, + 391, + "1" + ], + [ + "add", + 224, + 392, + "1" + ], + [ + "add", + 225, + 392, + "1" + ], + [ + "add", + 257, + 392, + "1" + ], + [ + "add", + 224, + 397, + "-1" + ], + [ + "add", + 225, + 397, + "-1" + ], + [ + "add", + 257, + 397, + "-1" + ] + ], + "mode_boundaries": [ + { + "mode": 0, + "owner": 224, + "cache_slot": 634, + "witness_row": 1, + "frame": 274, + "missing_line": 7, + "cache_scalar": "-2", + "input_K": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 2, + 2, + 2, + 2, + 0, + 0, + 0, + 0, + 0 + ] + ], + [ + "P", + [ + 7, + 13, + 11, + 14, + 16, + 32, + 64, + 128, + 256 + ] + ], + [ + "X", + 0 + ], + [ + "phase", + 0 + ] + ], + "signed_tableau": [ + [ + 7, + 0, + 2 + ], + [ + 13, + 0, + 2 + ], + [ + 11, + 0, + 2 + ], + [ + 14, + 0, + 2 + ], + [ + 16, + 0, + 0 + ], + [ + 32, + 0, + 0 + ], + [ + 64, + 0, + 0 + ], + [ + 128, + 0, + 0 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 7, + 0 + ], + [ + 0, + 13, + 0 + ], + [ + 0, + 11, + 0 + ], + [ + 0, + 14, + 0 + ], + [ + 0, + 16, + 0 + ], + [ + 0, + 32, + 0 + ], + [ + 0, + 64, + 0 + ], + [ + 0, + 128, + 0 + ], + [ + 0, + 256, + 0 + ] + ], + "zero_column_anchor": { + "index": 0, + "gaussian_numerator": [ + 1, + 0 + ], + "denominator_power2": 0 + } + }, + "output_N": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 2, + 2, + 2, + 0, + 0, + 0, + 0, + 0 + ] + ], + [ + "P", + [ + 7, + 12, + 10, + 14, + 16, + 32, + 64, + 128, + 256 + ] + ], + [ + "X", + 504 + ], + [ + "phase", + 2 + ] + ], + "signed_tableau": [ + [ + 1, + 0, + 0 + ], + [ + 13, + 0, + 2 + ], + [ + 11, + 0, + 2 + ], + [ + 14, + 0, + 2 + ], + [ + 16, + 0, + 0 + ], + [ + 32, + 0, + 0 + ], + [ + 64, + 0, + 0 + ], + [ + 128, + 0, + 0 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 7, + 0 + ], + [ + 0, + 10, + 2 + ], + [ + 0, + 12, + 2 + ], + [ + 0, + 14, + 2 + ], + [ + 0, + 16, + 2 + ], + [ + 0, + 32, + 2 + ], + [ + 0, + 64, + 2 + ], + [ + 0, + 128, + 2 + ], + [ + 0, + 256, + 2 + ] + ], + "zero_column_anchor": { + "index": 504, + "gaussian_numerator": [ + -1, + 0 + ], + "denominator_power2": 0 + } + } + }, + { + "mode": 1, + "owner": 225, + "cache_slot": 635, + "witness_row": 2, + "frame": 619, + "missing_line": 25, + "cache_scalar": "-2", + "input_K": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 2, + 2, + 0, + 2, + 2, + 0, + 0, + 0, + 0 + ] + ], + [ + "P", + [ + 25, + 26, + 4, + 19, + 11, + 32, + 64, + 128, + 256 + ] + ], + [ + "X", + 0 + ], + [ + "phase", + 0 + ] + ], + "signed_tableau": [ + [ + 25, + 0, + 2 + ], + [ + 26, + 0, + 2 + ], + [ + 4, + 0, + 0 + ], + [ + 19, + 0, + 2 + ], + [ + 11, + 0, + 2 + ], + [ + 32, + 0, + 0 + ], + [ + 64, + 0, + 0 + ], + [ + 128, + 0, + 0 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 25, + 0 + ], + [ + 0, + 26, + 0 + ], + [ + 0, + 4, + 0 + ], + [ + 0, + 19, + 0 + ], + [ + 0, + 11, + 0 + ], + [ + 0, + 32, + 0 + ], + [ + 0, + 64, + 0 + ], + [ + 0, + 128, + 0 + ], + [ + 0, + 256, + 0 + ] + ], + "zero_column_anchor": { + "index": 0, + "gaussian_numerator": [ + 1, + 0 + ], + "denominator_power2": 0 + } + }, + "output_N": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 2, + 0, + 2, + 2, + 0, + 0, + 0, + 0 + ] + ], + [ + "P", + [ + 25, + 26, + 4, + 18, + 10, + 32, + 64, + 128, + 256 + ] + ], + [ + "X", + 486 + ], + [ + "phase", + 2 + ] + ], + "signed_tableau": [ + [ + 1, + 0, + 0 + ], + [ + 26, + 0, + 2 + ], + [ + 4, + 0, + 0 + ], + [ + 19, + 0, + 2 + ], + [ + 11, + 0, + 2 + ], + [ + 32, + 0, + 0 + ], + [ + 64, + 0, + 0 + ], + [ + 128, + 0, + 0 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 25, + 0 + ], + [ + 0, + 26, + 2 + ], + [ + 0, + 4, + 2 + ], + [ + 0, + 10, + 2 + ], + [ + 0, + 18, + 2 + ], + [ + 0, + 32, + 2 + ], + [ + 0, + 64, + 2 + ], + [ + 0, + 128, + 2 + ], + [ + 0, + 256, + 2 + ] + ], + "zero_column_anchor": { + "index": 486, + "gaussian_numerator": [ + -1, + 0 + ], + "denominator_power2": 0 + } + } + }, + { + "mode": 2, + "owner": 227, + "cache_slot": 633, + "witness_row": 0, + "frame": 254, + "missing_line": 42, + "cache_scalar": "-2", + "input_K": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 2, + 2, + 0, + 2, + 0, + 2, + 0, + 0, + 0 + ] + ], + [ + "P", + [ + 42, + 41, + 4, + 35, + 16, + 11, + 64, + 128, + 256 + ] + ], + [ + "X", + 0 + ], + [ + "phase", + 0 + ] + ], + "signed_tableau": [ + [ + 42, + 0, + 2 + ], + [ + 41, + 0, + 2 + ], + [ + 4, + 0, + 0 + ], + [ + 35, + 0, + 2 + ], + [ + 16, + 0, + 0 + ], + [ + 11, + 0, + 2 + ], + [ + 64, + 0, + 0 + ], + [ + 128, + 0, + 0 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 42, + 0 + ], + [ + 0, + 41, + 0 + ], + [ + 0, + 4, + 0 + ], + [ + 0, + 35, + 0 + ], + [ + 0, + 16, + 0 + ], + [ + 0, + 11, + 0 + ], + [ + 0, + 64, + 0 + ], + [ + 0, + 128, + 0 + ], + [ + 0, + 256, + 0 + ] + ], + "zero_column_anchor": { + "index": 0, + "gaussian_numerator": [ + 1, + 0 + ], + "denominator_power2": 0 + } + }, + "output_N": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 2, + 0, + 0, + 2, + 0, + 2, + 0, + 0, + 0 + ] + ], + [ + "P", + [ + 42, + 41, + 4, + 33, + 16, + 9, + 64, + 128, + 256 + ] + ], + [ + "X", + 470 + ], + [ + "phase", + 2 + ] + ], + "signed_tableau": [ + [ + 42, + 0, + 2 + ], + [ + 1, + 0, + 0 + ], + [ + 4, + 0, + 0 + ], + [ + 35, + 0, + 2 + ], + [ + 16, + 0, + 0 + ], + [ + 11, + 0, + 2 + ], + [ + 64, + 0, + 0 + ], + [ + 128, + 0, + 0 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 42, + 2 + ], + [ + 0, + 41, + 0 + ], + [ + 0, + 4, + 2 + ], + [ + 0, + 10, + 2 + ], + [ + 0, + 16, + 2 + ], + [ + 0, + 34, + 2 + ], + [ + 0, + 64, + 2 + ], + [ + 0, + 128, + 2 + ], + [ + 0, + 256, + 2 + ] + ], + "zero_column_anchor": { + "index": 470, + "gaussian_numerator": [ + -1, + 0 + ], + "denominator_power2": 0 + } + } + }, + { + "mode": 3, + "owner": 229, + "cache_slot": 636, + "witness_row": 3, + "frame": 279, + "missing_line": 52, + "cache_scalar": "-2", + "input_K": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 2, + 0, + 2, + 0, + 2, + 2, + 0, + 0, + 0 + ] + ], + [ + "P", + [ + 52, + 2, + 49, + 8, + 37, + 21, + 64, + 128, + 256 + ] + ], + [ + "X", + 0 + ], + [ + "phase", + 0 + ] + ], + "signed_tableau": [ + [ + 52, + 0, + 2 + ], + [ + 2, + 0, + 0 + ], + [ + 49, + 0, + 2 + ], + [ + 8, + 0, + 0 + ], + [ + 37, + 0, + 2 + ], + [ + 21, + 0, + 2 + ], + [ + 64, + 0, + 0 + ], + [ + 128, + 0, + 0 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 52, + 0 + ], + [ + 0, + 2, + 0 + ], + [ + 0, + 49, + 0 + ], + [ + 0, + 8, + 0 + ], + [ + 0, + 37, + 0 + ], + [ + 0, + 21, + 0 + ], + [ + 0, + 64, + 0 + ], + [ + 0, + 128, + 0 + ], + [ + 0, + 256, + 0 + ] + ], + "zero_column_anchor": { + "index": 0, + "gaussian_numerator": [ + 1, + 0 + ], + "denominator_power2": 0 + } + }, + "output_N": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 2, + 0, + 0, + 0, + 2, + 2, + 0, + 0, + 0 + ] + ], + [ + "P", + [ + 52, + 2, + 49, + 8, + 33, + 17, + 64, + 128, + 256 + ] + ], + [ + "X", + 462 + ], + [ + "phase", + 2 + ] + ], + "signed_tableau": [ + [ + 52, + 0, + 2 + ], + [ + 2, + 0, + 0 + ], + [ + 1, + 0, + 0 + ], + [ + 8, + 0, + 0 + ], + [ + 37, + 0, + 2 + ], + [ + 21, + 0, + 2 + ], + [ + 64, + 0, + 0 + ], + [ + 128, + 0, + 0 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 52, + 2 + ], + [ + 0, + 2, + 2 + ], + [ + 0, + 49, + 0 + ], + [ + 0, + 8, + 2 + ], + [ + 0, + 20, + 2 + ], + [ + 0, + 36, + 2 + ], + [ + 0, + 64, + 2 + ], + [ + 0, + 128, + 2 + ], + [ + 0, + 256, + 2 + ] + ], + "zero_column_anchor": { + "index": 462, + "gaussian_numerator": [ + -1, + 0 + ], + "denominator_power2": 0 + } + } + }, + { + "mode": 4, + "owner": 240, + "cache_slot": 640, + "witness_row": 7, + "frame": 281, + "missing_line": 76, + "cache_scalar": "2", + "input_K": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 2, + 0, + 2, + 2, + 0, + 0, + 2, + 0, + 0 + ] + ], + [ + "P", + [ + 76, + 2, + 73, + 69, + 16, + 32, + 13, + 128, + 256 + ] + ], + [ + "X", + 0 + ], + [ + "phase", + 0 + ] + ], + "signed_tableau": [ + [ + 76, + 0, + 2 + ], + [ + 2, + 0, + 0 + ], + [ + 73, + 0, + 2 + ], + [ + 69, + 0, + 2 + ], + [ + 16, + 0, + 0 + ], + [ + 32, + 0, + 0 + ], + [ + 13, + 0, + 2 + ], + [ + 128, + 0, + 0 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 76, + 0 + ], + [ + 0, + 2, + 0 + ], + [ + 0, + 73, + 0 + ], + [ + 0, + 69, + 0 + ], + [ + 0, + 16, + 0 + ], + [ + 0, + 32, + 0 + ], + [ + 0, + 13, + 0 + ], + [ + 0, + 128, + 0 + ], + [ + 0, + 256, + 0 + ] + ], + "zero_column_anchor": { + "index": 0, + "gaussian_numerator": [ + 1, + 0 + ], + "denominator_power2": 0 + } + }, + "output_N": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 2, + 0, + 0, + 2, + 0, + 0, + 2, + 0, + 0 + ] + ], + [ + "P", + [ + 76, + 2, + 73, + 65, + 16, + 32, + 9, + 128, + 256 + ] + ], + [ + "X", + 438 + ], + [ + "phase", + 2 + ] + ], + "signed_tableau": [ + [ + 76, + 0, + 2 + ], + [ + 2, + 0, + 0 + ], + [ + 1, + 0, + 0 + ], + [ + 69, + 0, + 2 + ], + [ + 16, + 0, + 0 + ], + [ + 32, + 0, + 0 + ], + [ + 13, + 0, + 2 + ], + [ + 128, + 0, + 0 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 76, + 2 + ], + [ + 0, + 2, + 2 + ], + [ + 0, + 73, + 0 + ], + [ + 0, + 12, + 2 + ], + [ + 0, + 16, + 2 + ], + [ + 0, + 32, + 2 + ], + [ + 0, + 68, + 2 + ], + [ + 0, + 128, + 2 + ], + [ + 0, + 256, + 2 + ] + ], + "zero_column_anchor": { + "index": 438, + "gaussian_numerator": [ + -1, + 0 + ], + "denominator_power2": 0 + } + } + }, + { + "mode": 5, + "owner": 241, + "cache_slot": 637, + "witness_row": 4, + "frame": 621, + "missing_line": 82, + "cache_scalar": "2", + "input_K": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 2, + 2, + 0, + 0, + 2, + 0, + 2, + 0, + 0 + ] + ], + [ + "P", + [ + 82, + 81, + 4, + 8, + 67, + 32, + 19, + 128, + 256 + ] + ], + [ + "X", + 0 + ], + [ + "phase", + 0 + ] + ], + "signed_tableau": [ + [ + 82, + 0, + 2 + ], + [ + 81, + 0, + 2 + ], + [ + 4, + 0, + 0 + ], + [ + 8, + 0, + 0 + ], + [ + 67, + 0, + 2 + ], + [ + 32, + 0, + 0 + ], + [ + 19, + 0, + 2 + ], + [ + 128, + 0, + 0 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 82, + 0 + ], + [ + 0, + 81, + 0 + ], + [ + 0, + 4, + 0 + ], + [ + 0, + 8, + 0 + ], + [ + 0, + 67, + 0 + ], + [ + 0, + 32, + 0 + ], + [ + 0, + 19, + 0 + ], + [ + 0, + 128, + 0 + ], + [ + 0, + 256, + 0 + ] + ], + "zero_column_anchor": { + "index": 0, + "gaussian_numerator": [ + 1, + 0 + ], + "denominator_power2": 0 + } + }, + "output_N": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 2, + 0, + 0, + 0, + 2, + 0, + 2, + 0, + 0 + ] + ], + [ + "P", + [ + 82, + 81, + 4, + 8, + 65, + 32, + 17, + 128, + 256 + ] + ], + [ + "X", + 430 + ], + [ + "phase", + 2 + ] + ], + "signed_tableau": [ + [ + 82, + 0, + 2 + ], + [ + 1, + 0, + 0 + ], + [ + 4, + 0, + 0 + ], + [ + 8, + 0, + 0 + ], + [ + 67, + 0, + 2 + ], + [ + 32, + 0, + 0 + ], + [ + 19, + 0, + 2 + ], + [ + 128, + 0, + 0 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 82, + 2 + ], + [ + 0, + 81, + 0 + ], + [ + 0, + 4, + 2 + ], + [ + 0, + 8, + 2 + ], + [ + 0, + 18, + 2 + ], + [ + 0, + 32, + 2 + ], + [ + 0, + 66, + 2 + ], + [ + 0, + 128, + 2 + ], + [ + 0, + 256, + 2 + ] + ], + "zero_column_anchor": { + "index": 430, + "gaussian_numerator": [ + -1, + 0 + ], + "denominator_power2": 0 + } + } + }, + { + "mode": 6, + "owner": 256, + "cache_slot": 639, + "witness_row": 6, + "frame": 624, + "missing_line": 97, + "cache_scalar": "-2", + "input_K": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 2, + 2, + 0, + 0, + 0, + 2, + 2, + 0, + 0 + ] + ], + [ + "P", + [ + 97, + 98, + 4, + 8, + 16, + 67, + 35, + 128, + 256 + ] + ], + [ + "X", + 0 + ], + [ + "phase", + 0 + ] + ], + "signed_tableau": [ + [ + 97, + 0, + 2 + ], + [ + 98, + 0, + 2 + ], + [ + 4, + 0, + 0 + ], + [ + 8, + 0, + 0 + ], + [ + 16, + 0, + 0 + ], + [ + 67, + 0, + 2 + ], + [ + 35, + 0, + 2 + ], + [ + 128, + 0, + 0 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 97, + 0 + ], + [ + 0, + 98, + 0 + ], + [ + 0, + 4, + 0 + ], + [ + 0, + 8, + 0 + ], + [ + 0, + 16, + 0 + ], + [ + 0, + 67, + 0 + ], + [ + 0, + 35, + 0 + ], + [ + 0, + 128, + 0 + ], + [ + 0, + 256, + 0 + ] + ], + "zero_column_anchor": { + "index": 0, + "gaussian_numerator": [ + 1, + 0 + ], + "denominator_power2": 0 + } + }, + "output_N": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 2, + 0, + 0, + 0, + 2, + 2, + 0, + 0 + ] + ], + [ + "P", + [ + 97, + 98, + 4, + 8, + 16, + 66, + 34, + 128, + 256 + ] + ], + [ + "X", + 414 + ], + [ + "phase", + 2 + ] + ], + "signed_tableau": [ + [ + 1, + 0, + 0 + ], + [ + 98, + 0, + 2 + ], + [ + 4, + 0, + 0 + ], + [ + 8, + 0, + 0 + ], + [ + 16, + 0, + 0 + ], + [ + 67, + 0, + 2 + ], + [ + 35, + 0, + 2 + ], + [ + 128, + 0, + 0 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 97, + 0 + ], + [ + 0, + 98, + 2 + ], + [ + 0, + 4, + 2 + ], + [ + 0, + 8, + 2 + ], + [ + 0, + 16, + 2 + ], + [ + 0, + 34, + 2 + ], + [ + 0, + 66, + 2 + ], + [ + 0, + 128, + 2 + ], + [ + 0, + 256, + 2 + ] + ], + "zero_column_anchor": { + "index": 414, + "gaussian_numerator": [ + -1, + 0 + ], + "denominator_power2": 0 + } + } + }, + { + "mode": 7, + "owner": 257, + "cache_slot": 638, + "witness_row": 5, + "frame": 280, + "missing_line": 127, + "cache_scalar": "2", + "input_K": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 0 + ] + ], + [ + "P", + [ + 127, + 253, + 251, + 247, + 239, + 223, + 191, + 254, + 256 + ] + ], + [ + "X", + 0 + ], + [ + "phase", + 0 + ] + ], + "signed_tableau": [ + [ + 127, + 0, + 2 + ], + [ + 253, + 0, + 2 + ], + [ + 251, + 0, + 2 + ], + [ + 247, + 0, + 2 + ], + [ + 239, + 0, + 2 + ], + [ + 223, + 0, + 2 + ], + [ + 191, + 0, + 2 + ], + [ + 254, + 0, + 2 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 127, + 0 + ], + [ + 0, + 253, + 0 + ], + [ + 0, + 251, + 0 + ], + [ + 0, + 247, + 0 + ], + [ + 0, + 239, + 0 + ], + [ + 0, + 223, + 0 + ], + [ + 0, + 191, + 0 + ], + [ + 0, + 254, + 0 + ], + [ + 0, + 256, + 0 + ] + ], + "zero_column_anchor": { + "index": 0, + "gaussian_numerator": [ + 1, + 0 + ], + "denominator_power2": 0 + } + }, + "output_N": { + "literal_word": [ + [ + "D", + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 0 + ] + ], + [ + "P", + [ + 127, + 252, + 250, + 246, + 238, + 222, + 190, + 254, + 256 + ] + ], + [ + "X", + 384 + ], + [ + "phase", + 2 + ] + ], + "signed_tableau": [ + [ + 1, + 0, + 0 + ], + [ + 253, + 0, + 2 + ], + [ + 251, + 0, + 2 + ], + [ + 247, + 0, + 2 + ], + [ + 239, + 0, + 2 + ], + [ + 223, + 0, + 2 + ], + [ + 191, + 0, + 2 + ], + [ + 254, + 0, + 2 + ], + [ + 256, + 0, + 0 + ], + [ + 0, + 127, + 0 + ], + [ + 0, + 130, + 2 + ], + [ + 0, + 132, + 2 + ], + [ + 0, + 136, + 2 + ], + [ + 0, + 144, + 2 + ], + [ + 0, + 160, + 2 + ], + [ + 0, + 192, + 2 + ], + [ + 0, + 254, + 2 + ], + [ + 0, + 256, + 2 + ] + ], + "zero_column_anchor": { + "index": 384, + "gaussian_numerator": [ + -1, + 0 + ], + "denominator_power2": 0 + } + } + } + ], + "ordered_schedule": [ + "Main input wrappers: NORMALIZERS.ports[j].compiled_wrappers.backward_input_X/Y.", + "On each mode owner apply input_K and scalar 2; run input_basis_program.", + "Run every instruction of WORD.json.gz; C0..C8 initially arbitrary.", + "Run output_basis_program on the 122 persistent common-chart helpers.", + "For each mode apply cache_scalar and output_N to its owned cache; SWAP the whole field and chart with its zero original owner; CLEAR the owned zero.", + "Main output wrappers: NORMALIZERS.ports[j].compiled_wrappers.backward_output_X/Y." + ], + "paid": { + "1": 2193, + "2": 412, + "3": 510, + "4": 127, + "5": 40 + }, + "autonomous_native_helpers": { + "4": 28, + "7": 7, + "8": 47, + "9": 318 + }, + "owned_fields": { + "count": 9, + "initial_values": "arbitrary", + "final_values": "zero", + "productive_credit": 0 + }, + "added_ordinary_work_vs_original_raw_source": { + "ADD": 1644, + "SCALE": 40, + "COPY": 16, + "CLEAR": 24, + "whole_field_SWAP": 8, + "monomial_field_maps": 464, + "monomial_breakdown": { + "fused_inherited_main_standardizers": 448, + "mode_inputs": 8, + "cache_outputs": 8 + } + }, + "local_error_amplification_power2_bound": 18996, + "source_original_scalar_counts": { + "add": 16273, + "clear": 16, + "scale": 1164 + }, + "source_changed_scalar_counts": { + "add": 16273, + "clear": 32, + "copy": 16, + "scale": 1164 + }, + "physical_phase_bindings": { + "main_diagonal_and_shear": 336, + "two_coupling_directions": 896, + "helper_diagonal": 8 + }, + "exact_zero_retags": [ + [ + 15608, + 92, + 254, + 1 + ], + [ + 15894, + 9, + 624, + 1 + ], + [ + 15900, + 11, + 621, + 1 + ], + [ + 17269, + 240, + 280, + 1 + ], + [ + 17280, + 81, + 619, + 1 + ], + [ + 17288, + 57, + 274, + 1 + ], + [ + 17604, + 288, + 281, + 1 + ], + [ + 17746, + 224, + 279, + 1 + ] + ], + "formula": { + "X": "D x - R y + R W h", + "Y": "D y", + "H": "D (h - Z y)", + "W": "diag(K_port^-1) M diag(K_mode)/2", + "Z": "diag(K_mode^-1) M^T diag(K_port)/2" + }, + "failure_controls": [ + "nonzero zero-retag rejected", + "one altered basis ADD coefficient rejected", + "same-tableau phase-only cache error rejected", + "one altered saved-cache coefficient rejected" + ], + "scope": "Changed coupled backward provider. No autonomous credit for eight coupled outputs; no completed caller, inverse/transpose implementation, new kappa or selected-result change." +} diff --git a/research/native-rank8-helper-provider/README.md b/research/native-rank8-helper-provider/README.md new file mode 100644 index 0000000000..92d0d7e523 --- /dev/null +++ b/research/native-rank8-helper-provider/README.md @@ -0,0 +1,83 @@ +# Eight coupled helper outputs from the retained-center native word + +This package constructs and replays an exact changed backward native provider +on all 632 original owners. It replaces eight rank-eight center calls by +retained earlier same-frame caches; eight later H1 inputs become identically +zero and their calls disappear. The resulting paid profile is +`{1:2193,2:412,3:510,4:127,5:40}`: the center-free profile minus eight H1 calls. + +After explicit ordinary basis and boundary operations, the coupled outputs are + +```text +X = D x - R y + R W h +Y = D y +H = D(h - Z y) +``` + +Here `R=DQ`, `D` is the native rank-eight Gaussian, `ZW=14I8`, and `WZ=I-C` +for the existing physical code `C`. The 400 other original helpers retain +their native jobs, with profile `{4:28,7:7,8:47,9:318}`. All nine owned fields +start arbitrary and finish zero. **The eight H outputs remain coupled; no +new autonomous Gaussian targets, complete caller or improved κ are claimed.** + +[PROOF.md](PROOF.md) gives the every-positive-width argument, ownership rule, +exact local bill and precision boundary. [WORD.json.gz](WORD.json.gz) is the +complete changed native word. [PROVIDER.json](PROVIDER.json) is its ordered +boundary recipe, including explicit dyadic basis programs and phase-bound +monomial words; its references to the pinned source main normalizers are part +of that recipe. The verifier recomputes the word and recipe from authenticated +main inputs, with no scratch paths or network access. + +The new schedule adds 1,644 ADD, 40 SCALE, 16 COPY, 24 CLEAR, eight physical +SWAPs and 464 monomial maps relative to the original raw source. The 464 maps +include 448 fused inherited main wrappers. Unchanged native internal traffic +and implementations remain inherited. These are ordinary work, not free +machine operations. Nine owned fields suffice without basis scratch storage. + +## Reproduce + +From the repository root, using only Python 3.12 and its standard library: + +```sh +python3.12 -B scripts/research_package.py --package research/native-rank8-helper-provider +python3.12 -I -Werror -B research/native-rank8-helper-provider/verify.py +python3.12 -I -Werror -O -B research/native-rank8-helper-provider/verify.py +``` + +The registered normal and optimized commands check all 641 native input +columns, every original endpoint, all nine owned outputs and 1,240 physical +phase bindings. Mutation controls reject a changed basis ADD coefficient, a +changed cache coefficient, nonzero zero-retag input and a same-tableau phase +error. A direct run takes about 13 seconds on the preparation machine; the +registered pair is bounded separately in [VERIFY.json](VERIFY.json). +`--emit` regenerates only the package-local `PROVIDER.json`; normal replay is +read-only. Frozen scientific source inputs are never regenerated or modified. + +[WITNESS.json](WITNESS.json) retains Ali Romman's PR5383 candidate verbatim, +from head `4bd6efa51a495a7c7b7754915cf0244e7e60969e`, SHA256 +`24599011da06325e1012619b2b84a4dd3aceb90ab42d3caaf6414879e7d16591`. +The candidate is package-local data; every used relation is reproved against +main's native source. No pending PR Git object is required. The phase engine, +existing code and native implementation retain their predecessor proof +boundaries; this is author-side exact replay, not formal or human acceptance. + +## Open next questions + +The complete structured obligations are in [TASK.json](TASK.json). A caller +must close the 224 main and eight coupled helper outputs while retaining the +400 autonomous helpers per call, price all additional children and ordinary +work, then prove its final Gaussian ranks, chronology, finite precision and +outer budget. Begin with one fully owned caller identity; a field becoming +available at rank eight is insufficient for autonomous target credit. The +selected frontier is unchanged. + +## Credit + +Ali Romman supplies PR5383's exact cached-center relations. Cao Yifan supplies +the native round-three helper/map word; Dugongue supplies the center-free code +and its factorization; Cinna Davis supplies the earlier retained-center, +helper-basis and controller work. Retain zxv's Clifford/native/compiler work, +Jacob Alan Sussman's recursion, Ryanson Jonathan's controller checks, and the +full source lineage. See [ATTRIBUTION.md](ATTRIBUTION.md). Prepared for Dillon +with substantial OpenAI Codex assistance from coordinated construction, +mechanism and review agents. Apache-2.0. diff --git a/research/native-rank8-helper-provider/SOURCES.json b/research/native-rank8-helper-provider/SOURCES.json new file mode 100644 index 0000000000..dd77397ca5 --- /dev/null +++ b/research/native-rank8-helper-provider/SOURCES.json @@ -0,0 +1,54 @@ +{ + "schema_version": 1, + "base_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "b288ae44032fd84dd5564243422836cbcd29835e", + "sha256": "f9ed52bb642cd1e1486cf2743557ac5fa23cf1514a3277d786a644e39a565038" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "f126dd2e2dad2b669e75d1d0d0bd05c600725602", + "sha256": "f7a48bfa2659b88378282a8eee7d9fe52cdf505594124c4d1686b58510fffd72" + }, + { + "path": "research/coded-native-caller/NORMALIZERS.json", + "usage": "input", + "git_blob": "bca92c222c395d3d75c047fbb678f3cd0947c60f", + "sha256": "ae8aad06aa5d1811d725895b3ab5a4f4daa9dcdd88294aa0d5f723e78bb1e0da" + }, + { + "path": "research/coded-native-caller/PHYSICAL.md", + "usage": "input", + "git_blob": "da8837ba67423ef08ef1afb8e8297a8032aafe9f", + "sha256": "4321b159ff8d3fe705419adaaa1beef75606e869e34341bda553f17d598a6078" + }, + { + "path": "research/coded-native-caller/clifford_exact.py", + "usage": "input", + "git_blob": "166841a037f069249f6f7f6dedb89248812f59e2", + "sha256": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962" + }, + { + "path": "research/native-center-free-code/CODE.json", + "usage": "input", + "git_blob": "03170f4a31f7a8a3db7228f1cd5a6fdcb32720ae", + "sha256": "8be7f3f073b7981ec91c6af43edff0ac8a89f4824ef6026ae758c287dd6c03d0" + }, + { + "path": "research/native-center-free-code/CODED-PROOF.md", + "usage": "input", + "git_blob": "1f28d33884ec99b34f8366d022d8f7b9b7653ae2", + "sha256": "acd904af677718da8cdaf81d205d29866a6855efd393047e7128320a46753b01" + }, + { + "path": "research/native-center-free-code/SOURCE-WORD.json.gz", + "usage": "input", + "git_blob": "46d929df83817b85a5387bcdb9745e0627d6366e", + "sha256": "7679daa4ec6a40f56fc7f0202379a6f454310e94945aba4f48beaaaafb838d05" + } + ] +} diff --git a/research/native-rank8-helper-provider/TASK.json b/research/native-rank8-helper-provider/TASK.json new file mode 100644 index 0000000000..e82da0445c --- /dev/null +++ b/research/native-rank8-helper-provider/TASK.json @@ -0,0 +1,88 @@ +{ + "schema_version": 1, + "task_id": "centre-path-sharing", + "priority_revision": 7, + "base_commit": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "original_card": { + "id": "centre-path-sharing", + "question": "Can the 64-per-call centre path (eight rank-8 COPY/ERASE totals through the private temporary) be shared across calls or shrunk?", + "starting_points": [ + "docs/research/research-family-status.md", + "research/complex-local-word-ceiling/README.md", + "research/split-centres-global/proofs/PR386-BIT-GEOMETRY.txt", + "certificates/selected-result.json" + ], + "methods": [ + "Derive a fully charged favorable relaxation for sharing one centre path across k calls, including restoration, hosting and precision.", + "Prove a lower bound on copied information per call for the selected decoder contract." + ], + "acceptance_gate": "Show the changed centre charge and copy profile per call with every added restoration or hosting cost charged, and its ceiling via ceiling.ceiling(centre=...). A scoped local result may be retained without a complete supplier. Expanding it into further construction rounds requires the family-level budget and obligation gate in research-family-status.md; an optimistic passing relaxation alone is not acceptance.", + "first_step": { + "command": [ + "python3", + "-B", + "research/complex-local-word-ceiling/verify.py" + ], + "expected": "PASS_COMPLEX_LOCAL_WORD_CEILING", + "inspect": "Read the selected word's per-call local profile, its packing ceiling and the lever table; run levers.py for the ideal budget of the lever you target.", + "scope": "Positive control and planning budget only; this is not a new construction or full cold replay." + }, + "first_experiment": "Write the per-call centre charge and copy children for sharing across k = 2 calls, charge the sharing overhead, and screen it; stop this route if even the ideal sharing gains under 10%. Ideal budgets: free 2.80x, shared by two 1.90x (levers.py).", + "bottleneck_link": "The centre path consumes 64 of about 99.6 unpaid coordinates per call, i.e. about 64% of the raw deficit.", + "allowed_variations": [ + "One sharing pattern across a fixed number of calls.", + "One reduced copied-total contract for the existing decoder.", + "If the coverage law, template or guard changes, derive an applicable fully charged replacement bound instead of applying the incumbent ceiling outside its scope." + ], + "scope_change_triggers": [ + "Removing copies without a replacement contract for the decoder's copied totals.", + "Continuing a partial cost improvement while leaving the same unpriced consumer, restoration or central-readout obligation unresolved; refresh the family expansion decision first. Local product-retiming evidence has a narrow scope and is not a ban on changed graphs or contracts." + ], + "overlap_terms": [ + "centre path", + "copied totals", + "private temporary", + "shared centre", + "batching" + ] + }, + "scope_status": "refined", + "actual_scope": "Emit a source-bound backward provider using retained center caches and an invertible cold-helper basis, with eight coupled rank-eight helper outputs, all 632 original owners retained and all 9 owned outputs zero.", + "scope_change_reason": "The user explicitly authorized ambitious changed-source research and removed the hour limit. This focused result replaces the copied-center path using source-proved early observations, while preserving every original direction; it does not claim an autonomous supplier or complete caller.", + "bottleneck_link": "Deletes all eight native H8 center calls and eight later H1 calls. The new bottleneck is closing eight main/helper couplings under a paid, fully owned caller rather than treating them as autonomous H8 targets.", + "budget_minutes": null, + "stop_rule": "Freeze this focused provider once original/changed all-owner replay, explicit ordinary basis programs, exact physical boundaries, owned cleanup, operation counts and every-positive-width proof pass. Further caller work is separate and must close all original outputs before admitting target credit.", + "outcome": "partial", + "evidence": "Registered Python3.12 normal and optimized replay derives B from main source, reproves the verbatim Ali candidate, checks 641 native input columns and 1240 exact physical phase bindings, executes both 122-owner basis programs, clears all 9 owned outputs and rejects coefficient/phase/zero-retag mutations.", + "author": "Dillon / dillona", + "ai_assistance": "Substantial OpenAI Codex assistance from coordinated construction, mechanism, packaging and independent author-side review agents; no independent human or kernel acceptance claimed.", + "open_questions": [ + { + "question": "Can a complete chronological caller close all 224 main and eight coupled helper outputs while retaining 400 autonomous native helper jobs per provider?", + "why_it_matters": "The eight D outputs depend on main inputs and earn no autonomous target credit. The paid savings alone do not imply a recursive multiplier or improved kappa.", + "first_step": "Emit one fully owned caller word using the exact W/Z physical maps; replay every original input and output, price all added Gaussian calls and keep all helper outputs.", + "blocked_by": "No accepted closure with final Gaussian ranks, complete query invoice and owner chronology is supplied by this provider package." + }, + { + "question": "What finite-precision and machine-work budget supports any successful complete caller?", + "why_it_matters": "The local finite schedule has bounded amplification and exact dyadic coefficients, but those facts do not supply recursive rounding, indexed movement or the outer multiplication recurrence.", + "first_step": "Use the emitted ordinary counts and local 2^18996 suffix amplification bound to assign coordinate precision and movement costs to the proposed complete caller.", + "blocked_by": "Depends on a complete caller and its recursion/packing contract; this package claims only the source-bound local primitive." + } + ], + "checkpoint": { + "canonical_main": "1ec1119972c9aefe42525172d07b332fcff81cb4", + "priority_revision": 7, + "selected_kappa": "0.0030217758", + "frozen_source_payload_sha256": "cfcd36b40326d7a5815e1db5313444379b3fb756b27d5201c561574c085cc0dd", + "overlap": [ + "Ali Romman PR5383 retained-center candidate at 4bd6efa51a495a7c7b7754915cf0244e7e60969e", + "Cinna Davis PR4694 retained-center and PR4698 common-chart helper basis", + "Dugongue PR4929 center-free code and coded-native-caller physical normalizers", + "PR5397 scoped owned-exchange ceiling, PR5398 direct backward conjugation and independent PR5399/5400 reviews; these do not supply this unrestricted coupled-output contract." + ], + "campaign_thread": "https://github.com/CrocSwap/integer-mult-bounds/discussions/4930", + "frontier_changed": false, + "checked_at_utc": "2026-10-23T22:26:00Z" + } +} diff --git a/research/native-rank8-helper-provider/VERIFY.json b/research/native-rank8-helper-provider/VERIFY.json new file mode 100644 index 0000000000..6e831dff03 --- /dev/null +++ b/research/native-rank8-helper-provider/VERIFY.json @@ -0,0 +1,39 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/coded-native-caller/NORMALIZERS.json", + "research/coded-native-caller/PHYSICAL.md", + "research/coded-native-caller/clifford_exact.py", + "research/native-center-free-code/CODE.json", + "research/native-center-free-code/CODED-PROOF.md", + "research/native-center-free-code/SOURCE-WORD.json.gz" + ], + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-Werror", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 180, + "checks": "Fresh canonical original/center-free/changed native replay on 641 columns; candidate relation, literal dyadic basis, all 632 endpoint and 9 owned-zero checks; 1240 signed-tableau/absolute-phase bindings; exact recipe equality and altered basis/cache coefficient, phase-only and nonzero zero-retag rejection controls." + }, + { + "argv": [ + "{python}", + "-I", + "-Werror", + "-O", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 180, + "checks": "Fresh canonical original/center-free/changed native replay on 641 columns; candidate relation, literal dyadic basis, all 632 endpoint and 9 owned-zero checks; 1240 signed-tableau/absolute-phase bindings; exact recipe equality and altered basis/cache coefficient, phase-only and nonzero zero-retag rejection controls." + } + ] +} diff --git a/research/native-rank8-helper-provider/WITNESS.json b/research/native-rank8-helper-provider/WITNESS.json new file mode 100644 index 0000000000..19665f9eac --- /dev/null +++ b/research/native-rank8-helper-provider/WITNESS.json @@ -0,0 +1,434 @@ +[ + { + "relation": [ + [ + 230, + "1" + ], + [ + 324, + "-1" + ], + [ + 326, + "1" + ], + [ + 328, + "1" + ], + [ + 333, + "-1" + ] + ], + "event": 11332, + "frame": 254, + "cached_event": 11205, + "cached_role": 92, + "zero_event": 15584, + "zero_role": 92, + "copy_factor": "1", + "difference_factor": "1/4", + "zero_factor": "-1/4" + }, + { + "relation": [ + [ + 225, + "1" + ], + [ + 384, + "-1" + ], + [ + 388, + "-1" + ], + [ + 390, + "1" + ], + [ + 391, + "1" + ], + [ + 392, + "1" + ], + [ + 397, + "-1" + ] + ], + "event": 11358, + "frame": 274, + "cached_event": 11218, + "cached_role": 57, + "zero_event": 17264, + "zero_role": 57, + "copy_factor": "1", + "difference_factor": "1/4", + "zero_factor": "-1/4" + }, + { + "relation": [ + [ + 225, + "1" + ], + [ + 227, + "-1" + ], + [ + 229, + "1" + ], + [ + 231, + "-2" + ], + [ + 232, + "1" + ], + [ + 234, + "-1" + ], + [ + 235, + "-1" + ], + [ + 236, + "-1" + ], + [ + 237, + "-1" + ], + [ + 238, + "2" + ], + [ + 239, + "1" + ], + [ + 384, + "-1" + ], + [ + 388, + "-1" + ], + [ + 390, + "1" + ], + [ + 391, + "1" + ], + [ + 392, + "1" + ], + [ + 397, + "-1" + ] + ], + "event": 11384, + "frame": 619, + "cached_event": 11231, + "cached_role": 81, + "zero_event": 17256, + "zero_role": 81, + "copy_factor": "1", + "difference_factor": "1/4", + "zero_factor": "-1/4" + }, + { + "relation": [ + [ + 227, + "1" + ], + [ + 229, + "1" + ], + [ + 232, + "-1" + ], + [ + 234, + "1" + ], + [ + 235, + "1" + ], + [ + 236, + "-1" + ], + [ + 237, + "1" + ], + [ + 239, + "-1" + ], + [ + 324, + "-1" + ], + [ + 326, + "1" + ], + [ + 328, + "1" + ], + [ + 333, + "-1" + ] + ], + "event": 11410, + "frame": 279, + "cached_event": 11244, + "cached_role": 224, + "zero_event": 17722, + "zero_role": 224, + "copy_factor": "1", + "difference_factor": "-1/4", + "zero_factor": "1/4" + }, + { + "relation": [ + [ + 241, + "1" + ], + [ + 243, + "-1" + ], + [ + 245, + "1" + ], + [ + 247, + "-1" + ], + [ + 252, + "-1" + ], + [ + 253, + "-1" + ], + [ + 254, + "1" + ], + [ + 255, + "1" + ] + ], + "event": 11436, + "frame": 621, + "cached_event": 11257, + "cached_role": 11, + "zero_event": 15876, + "zero_role": 11, + "copy_factor": "1", + "difference_factor": "1/4", + "zero_factor": "-1/4" + }, + { + "relation": [ + [ + 225, + "1" + ], + [ + 241, + "-1" + ], + [ + 243, + "1" + ], + [ + 245, + "1" + ], + [ + 247, + "-1" + ], + [ + 252, + "-1" + ], + [ + 253, + "1" + ], + [ + 254, + "1" + ], + [ + 255, + "-1" + ], + [ + 324, + "-1" + ], + [ + 326, + "1" + ], + [ + 328, + "1" + ], + [ + 333, + "-1" + ], + [ + 384, + "-1" + ], + [ + 388, + "-1" + ], + [ + 390, + "1" + ], + [ + 391, + "1" + ], + [ + 392, + "1" + ], + [ + 397, + "-1" + ] + ], + "event": 11462, + "frame": 280, + "cached_event": 11270, + "cached_role": 240, + "zero_event": 17245, + "zero_role": 240, + "copy_factor": "1", + "difference_factor": "-1/4", + "zero_factor": "1/4" + }, + { + "relation": [ + [ + 257, + "1" + ], + [ + 259, + "-1" + ], + [ + 261, + "1" + ], + [ + 263, + "-1" + ], + [ + 268, + "-1" + ], + [ + 269, + "-1" + ], + [ + 270, + "1" + ], + [ + 271, + "1" + ] + ], + "event": 11488, + "frame": 624, + "cached_event": 11283, + "cached_role": 9, + "zero_event": 15870, + "zero_role": 9, + "copy_factor": "1", + "difference_factor": "1/4", + "zero_factor": "-1/4" + }, + { + "relation": [ + [ + 288, + "1" + ], + [ + 294, + "-1" + ], + [ + 296, + "-1" + ], + [ + 297, + "-1" + ], + [ + 300, + "1" + ], + [ + 303, + "1" + ] + ], + "event": 11514, + "frame": 281, + "cached_event": 11306, + "cached_role": 288, + "zero_event": 17580, + "zero_role": 288, + "copy_factor": "1", + "difference_factor": "1/4", + "zero_factor": "-1/4" + } +] diff --git a/research/native-rank8-helper-provider/WORD.json.gz b/research/native-rank8-helper-provider/WORD.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..f3111b47e89496da8ca0ee45b2e4b258c0634d8e GIT binary patch literal 94039 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 z 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 literal 0 HcmV?d00001 diff --git a/research/native-rank8-helper-provider/verify.py b/research/native-rank8-helper-provider/verify.py new file mode 100644 index 0000000000..b62af49c87 --- /dev/null +++ b/research/native-rank8-helper-provider/verify.py @@ -0,0 +1,602 @@ +#!/usr/bin/env python3 +"""Source-bound coupled provider, exact rational rows and absolute phases. + +No scratch registry, pending Git object, network access or third-party package. +The authenticated predecessor Clifford evaluator is the only imported module. +""" +from collections import Counter +from fractions import Fraction as F +from functools import lru_cache +from hashlib import sha256 +from pathlib import Path +import argparse +import gzip +import importlib.util +import json +import sys +import time + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parent.parent +SOURCE_HASH = 'cfcd36b40326d7a5815e1db5313444379b3fb756b27d5201c561574c085cc0dd' +WITNESS_HASH = '24599011da06325e1012619b2b84a4dd3aceb90ab42d3caaf6414879e7d16591' +MODE = [224, 225, 227, 229, 240, 241, 256, 257] +PAID = Counter({1: 2193, 2: 412, 3: 510, 4: 127, 5: 40}) + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def enc(row): + return [[j, str(a)] for j, a in sorted(row.items()) if a] + + +def add(target, source, factor=1): + for key, value in tuple(source.items()): + value = target.get(key, F(0)) + factor * value + if value: + target[key] = value + else: + target.pop(key, None) + + +def addr(ref): + need(ref[0] in ('L', 'C'), 'unknown field kind') + return ref[1] + (632 if ref[0] == 'C' else 0) + + +def replay(program, c, owners, snapshots=()): + """Every owner is an independent free-group column, including dirty C fields.""" + rows = [{(j, ()): F(1)} for j in range(owners)] + charts = c['start'][:] + [None] * (owners - 632) + paid, scalar = Counter(), Counter() + zeros, dirt_clears, saved = [], [], {} + for event, e in enumerate(program): + kind = e[0] + if kind == 'scalar': + op, chart = e[1:] + dst = addr(op[1]) + scalar[op[0]] += 1 + if op[0] == 'clear': + need(dst >= 632, 'persistent CLEAR forbidden') + dirt = {k: v for k, v in rows[dst].items() if k[0] >= 632} + if dirt: + dirt_clears.append((dst, dirt)) + rows[dst], charts[dst] = {}, chart + else: + need(charts[dst] == chart, 'destination chart') + if op[0] in ('copy', 'add'): + src = addr(op[2]) + need(charts[src] == chart, 'source chart') + if op[0] == 'copy': + need(dst >= 632 and not rows[dst], 'COPY must fill owned zero') + rows[dst] = dict(rows[src]) + else: + need(dst != src, 'ADD self alias') + add(rows[dst], rows[src], F(op[3], op[4])) + else: + need(op[0] == 'scale', 'unknown scalar operation') + factor = F(op[2], op[3]) + rows[dst] = {k: v * factor for k, v in rows[dst].items() if v * factor} + elif kind == 'warp': + _, ref, warp, old, new = e + dst = addr(ref) + need(charts[dst] == old, 'warp chart') + symbol = (1 if warp > 0 else -1) * (abs(warp) + 1000000) + after = {} + for (owner, word), value in rows[dst].items(): + word = word[1:] if word and word[0] == -symbol else (symbol,) + word + add(after, {(owner, word): value}) + rows[dst], charts[dst] = after, new + elif kind in ('climb', 'center'): + if kind == 'climb': + _, _, dst, old, new, rank = e + expected = len(c['frames'][new]) - len(c['frames'][old]) + else: + _, dst, old, new, rank = e + dst += 632 + expected = abs(len(c['frames'][new]) - len(c['frames'][old])) + need(charts[dst] == old and rank == expected and rank > 0, + 'paid child chart/rank') + charts[dst] = new + paid[rank] += 1 + elif kind == 'zero_retag': + _, dst, old, new = e + need(charts[dst] == old and not rows[dst], 'zero retag has nonzero input') + zeros.append([event, dst, old, new]) + charts[dst] = new + else: + # Inherited source annotations / physical boundary bindings. The + # predecessor's normalized-row convention treats these as no row + # update; they remain byte-for-byte records in the emitted word. + # New physical boundaries are checked separately below, with phase. + need(kind in ('phase', 'adapter', 'residual_adapter'), 'unknown source record') + for at, owner in snapshots: + if event == at: + saved[(at, owner)] = (charts[owner], dict(rows[owner])) + return rows, charts, paid, scalar, zeros, dirt_clears, saved + + +def scalar(row): + need(all(not word for _, word in row), 'endpoint has unreduced native word') + return {j: a for (j, _), a in row.items()} + + +def rewrite(source, witness): + centers = {r['event']: i for i, r in enumerate(witness)} + late = {r['zero_event']: i for i, r in enumerate(witness)} + caches = {r['cached_event']: i for i, r in enumerate(witness)} + need(len(centers) == len(late) == len(caches) == 8, 'distinct eight sites') + need(max(caches) < min(centers), 'caches must precede all replacements') + word = [] + for event, op in enumerate(source['programs']['backward']): + if event in centers: + i = centers[event] + frame = witness[i]['frame'] + need(op == ['center', 0, 0, frame, 8], 'center source binding') + word += [['scalar', ['clear', ['C', 0]], frame], + ['scalar', ['copy', ['C', 0], ['C', i + 1]], frame]] + elif event in late: + r = witness[late[event]] + need(op == ['climb', 'warp_retimed', r['zero_role'], r['frame'], 1, 1], + 'late H1 source binding') + word.append(['zero_retag', r['zero_role'], r['frame'], 1]) + else: + word.append(op) + if event in caches: + i = caches[event] + r = witness[i] + word += [['scalar', ['clear', ['C', i + 1]], r['frame']], + ['scalar', ['copy', ['C', i + 1], ['L', r['cached_role']]], r['frame']]] + return {'source_sha256': SOURCE_HASH, 'direction': 'backward', 'word': word} + + +def inverse(matrix): + n = len(matrix) + a, b, ops = [dict(r) for r in matrix], [{j: F(1)} for j in range(n)], [] + for j in range(n): + k = next((i for i in range(j, n) if a[i].get(j)), None) + need(k is not None, 'singular basis') + if k != j: + a[j], a[k], b[j], b[k] = a[k], a[j], b[k], b[j] + ops.append(['swap', j, k]) + factor = 1 / a[j][j] + if factor != 1: + a[j] = {k: factor * v for k, v in a[j].items()} + b[j] = {k: factor * v for k, v in b[j].items()} + ops.append(['scale', j, str(factor)]) + for i in range(n): + if i == j or not a[i].get(j): + continue + factor = -a[i][j] + add(a[i], a[j], factor) + add(b[i], b[j], factor) + ops.append(['add', i, j, str(factor)]) + need(a == [{j: F(1)} for j in range(n)], 'basis reduction') + return b, ops + + +def ordinary(ops, roles, reverse=False): + out = [] + for e in reversed(ops) if reverse else ops: + if e[0] == 'swap': + a, b = roles[e[1]], roles[e[2]] + out += [['add', a, b, '1'], ['add', b, a, '-1'], + ['add', a, b, '1'], ['scale', b, '-1']] + elif e[0] == 'scale': + v = F(e[2]) + out.append(['scale', roles[e[1]], str(1 / v if reverse else v)]) + else: + v = F(e[3]) + out.append(['add', roles[e[1]], roles[e[2]], str(-v if reverse else v)]) + return out + + +def apply_ordinary(program, rows): + rows = [dict(r) for r in rows] + for e in program: + if e[0] == 'add': + need(e[1] != e[2], 'ordinary ADD alias') + add(rows[e[1]], rows[e[2]], F(e[3])) + else: + need(e[0] == 'scale', 'ordinary operation') + rows[e[1]] = {j: a * F(e[2]) for j, a in rows[e[1]].items() if a * F(e[2])} + return rows + + +def authenticate(): + pins = json.loads((HERE / 'SOURCES.json').read_text()) + for r in pins['files']: + if r['usage'] == 'input': + need(sha256((ROOT / r['path']).read_bytes()).hexdigest() == r['sha256'], + 'changed scientific input: ' + r['path']) + raw = gzip.decompress((ROOT / 'research/native-center-free-code/SOURCE-WORD.json.gz').read_bytes()) + need(sha256(raw).hexdigest() == SOURCE_HASH, 'native payload') + need(sha256((HERE / 'WITNESS.json').read_bytes()).hexdigest() == WITNESS_HASH, + 'Ali verbatim candidate provenance') + cp = ROOT / 'research/coded-native-caller/clifford_exact.py' + spec = importlib.util.spec_from_file_location('rank8_provider_clifford', cp) + ce = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = ce + spec.loader.exec_module(ce) + return json.loads(raw), json.loads((HERE / 'WITNESS.json').read_text()), ce + + +def main(emit=False): + started = time.monotonic() + source, witness, ce = authenticate() + c = source['canonical'] + normal = json.loads((ROOT / 'research/coded-native-caller/NORMALIZERS.json').read_text()) + M = normal['mode_columns'] + A = [[F(a) for a in r] for r in json.loads((ROOT / 'research/native-center-free-code/CODE.json').read_text())['A']] + need(c['start'][112:224] == [0] * 112, 'main Y inputs have ground chart') + need(len(M) == 8 and all(len(r) == 112 for r in M), 'M dimensions') + need(all(sum(M[k][i] * M[l][i] for i in range(112)) == 56 * int(k == l) + for k in range(8) for l in range(8)), 'M Gram') + need(all(A[i][j] == F(i == j) - sum(F(M[k][i] * M[k][j], 4) for k in range(8)) + for i in range(112) for j in range(112)), 'A factorization') + original = replay(source['programs']['backward'], c, 633, + [(r['cached_event'], r['cached_role']) for r in witness]) + oldrows, oldcharts, oldpaid, oldscalar = original[:4] + expected = [{(j, ()): F(1)} for j in range(632)] + for j in range(112): + expected[j][(j + 112, ())] = F(-1) + need(oldrows[:632] == expected and not oldrows[632], 'original 632-row endpoint') + need(oldcharts[:632] == c['final'], 'original exit charts') + + centerfree = [['scalar', ['clear', ['C', e[1]]], e[3]] if e[0] == 'center' else e + for e in source['programs']['backward']] + cf = replay(centerfree, c, 633) + cfrows = [scalar(r) for r in cf[0]] + need(cf[1][:632] == c['final'] and not cfrows[632], 'center-free charts/owned') + P = [[-cfrows[j + 224].get(i + 112, F(0)) for i in range(112)] for j in range(408)] + B = [[sum(P[j][i] * M[k][i] for i in range(112)) / 56 for j in range(408)] for k in range(8)] + need(all(P[j][i] == sum(B[k][j] * M[k][i] for k in range(8)) + for j in range(408) for i in range(112)), 'full native coupling factorization') + for j in range(632): + row = {j: F(1)} + if j < 112: + for i in range(112): + if A[i][j]: + row[i + 112] = -A[i][j] + elif j >= 224: + for i, a in enumerate(P[j - 224]): + if a: + row[i + 112] = -a + need(cfrows[j] == row, 'center-free complete scalar endpoint') + + delta = [{j - 224: F(a) for j, a in r['relation']} for r in witness] + coupling = [[sum(a * B[k][j] for j, a in d.items()) for k in range(8)] for d in delta] + need(all(sum(bool(a) for a in r) == 1 and set(r) <= {F(0), F(1), F(-1)} + for r in coupling), 'candidate is not a signed retraction') + perm = [next(k for k, a in enumerate(r) if a) for r in coupling] + sign = [coupling[i][perm[i]] for i in range(8)] + need(sorted(perm) == list(range(8)), 'retraction permutation') + E = [{} for _ in range(8)] + for i, k in enumerate(perm): + E[k] = {j: sign[i] * a for j, a in delta[i].items()} + row = {(j + 224, ()): F(witness[i]['zero_factor']) * a for j, a in delta[i].items()} + for j in range(112): + a = -F(witness[i]['zero_factor']) * sign[i] * M[k][j] + if a: + row[(j + 112, ())] = a + need(original[6][(witness[i]['cached_event'], witness[i]['cached_role'])] + == (witness[i]['frame'], row), 'fresh original cached row binding') + need(all(sum(a * B[l][j] for j, a in E[k].items()) == int(k == l) + for k in range(8) for l in range(8)), 'E B^T identity') + active = sorted(set(j for r in B for j, a in enumerate(r) if a) | set(j for r in E for j in r)) + roles, index = [224 + j for j in active], {j: i for i, j in enumerate(active)} + need(len(active) == 122 and all(c['start'][j] == 0 and c['final'][j] == 1 for j in roles), + 'basis requires 122 actual cold H9 owners') + J = [j - 224 for j in MODE] + L = [{} for _ in active] + for k, j in enumerate(J): + for r in active: + if B[k][r]: + L[index[r]][index[j]] = B[k][r] + for j in active: + if j in J: + continue + for r in active: + a = F(r == j) - sum(B[k][r] * E[k].get(j, F(0)) for k in range(8)) + if a: + L[index[r]][index[j]] = a + Li, ops = inverse(L) + for left, right in ((L, Li), (Li, L)): + for i, row in enumerate(left): + product = {} + for j, a in row.items(): + add(product, right[j], a) + need(product == {i: F(1)}, 'two-sided basis inverse') + for k, row in enumerate(E): + product = {} + for j, a in row.items(): + add(product, L[index[j]], a) + need(product == {index[J[k]]: F(1)}, 'E L mode selection') + need(all(sum(a * B[k][active[j]] for j, a in row.items()) == int(i == index[J[k]]) + for i, row in enumerate(Li) for k in range(8)), 'Li B mode embedding') + need(all(a.denominator & (a.denominator - 1) == 0 + for matrix in (L, Li) for row in matrix for a in row.values()), 'dyadic basis') + entrance, exitword = ordinary(ops, roles, True), ordinary(ops, roles) + identity = [{j: F(1)} for j in range(632)] + entered = apply_ordinary(entrance, identity) + def check_basis(rows): + for i, j in enumerate(roles): + need(rows[j] == {roles[k]: a for k, a in L[i].items()}, 'literal L program') + check_basis(entered) + need(apply_ordinary(exitword, entered) == identity, 'literal Li program') + need(Counter(e[0] for e in entrance) == Counter(add=822, scale=12), 'basis program bill') + need(Counter(e[0] for e in exitword) == Counter(add=822, scale=12), 'inverse program bill') + + changed = rewrite(source, witness) + frozen_word = json.loads(gzip.decompress((HERE / 'WORD.json.gz').read_bytes())) + need(changed == frozen_word, 'committed exact word differs from source rewrite') + result = replay(changed['word'], c, 641) + rawrows, charts, paid, scalars, zeros, dirt = result[:6] + need(charts[:632] == c['final'] and not rawrows[632], 'changed persistent charts/C0') + need(paid == PAID and oldpaid == paid + Counter({1: 8, 8: 8}), 'paid children') + need(scalars == oldscalar + Counter(clear=16, copy=16), 'source ordinary delta') + need(len(zeros) == 8, 'eight exact zero retags') + need(len(dirt) == 9 and {j for j, _ in dirt} == set(range(632, 641)) + and all(d == {(j, ()): F(1)} for j, d in dirt), 'all arbitrary owned dirt cleared') + need(not any(j >= 632 for row in rawrows for j, _ in row), 'owned dirt leaked') + need(sum(rawrows[j] != oldrows[j] for j in range(632)) == 218, 'changed endpoint count') + endpoint = [] + for row in rawrows: + out = {} + for j, a in scalar(row).items(): + add(out, entered[j], a) + endpoint.append(out) + endpoint = apply_ordinary(exitword, endpoint) + for j in range(632): + expected = {} if j in MODE else {j: F(1)} + if j < 112: + expected[j + 112] = F(-1) + for k in range(8): + if M[k][j]: + expected[MODE[k]] = F(M[k][j], 4) + need(endpoint[j] == expected, 'composed all-owner endpoint at ' + str(j)) + def check_cache(i, row): + r, k = witness[i], perm[i] + factor = F(r['zero_factor']) * sign[i] + expected = {MODE[k]: factor} + for j in range(112): + if M[k][j]: + expected[j + 112] = -factor * M[k][j] + need(row == expected and charts[633 + i] == r['frame'], 'composed retained cache') + for i in range(8): + check_cache(i, endpoint[633 + i]) + first_cache = dict(endpoint[633]) + + def conjugate(op): + circuit = [] + for e in op.circuit: + if e[0] == 'D': + circuit.append(('D', e[1], tuple((-x) % 4 for x in e[2]))) + elif e[0] == 'C': + circuit.append(('C', e[1], -e[2])) + elif e[0] == 'phase': + circuit.append(('phase', (-e[1]) % 4)) + else: + circuit.append(e) + return ce.Op(9, tuple((x, z, -p % 4) for x, z, p in op.tab), circuit) + + @lru_cache(None) + def frame(j, back=False): + op = ce.canonical_frame(9, c['frames'][j]) + return conjugate(op) if back else op + + def literal(word): + op = ce.ident(9) + for e in word: + if e[0] == 'P': + part = ce.perm(9, tuple(e[1])) + elif e[0] == 'D': + part = ce.diag(9, tuple(e[1]), tuple(e[2])) + elif e[0] == 'X': + part = ce.xgate(9, e[1]) + elif e[0] == 'phase': + part = ce.Op(9, ce.identity(9), [('phase', e[1])]) + else: + raise ValueError('boundary contains a Gaussian gate') + op = op.then(part) + return op + + def equal(a, b): + return a.tab == b.tab and a.zero_state() == b.zero_state() + + def rank(op): + return ce.rank([x for x, _, _ in op.tab[9:]]) + + def receipt(op): + vec, den = op.zero_state() + j = next(j for j, a in enumerate(vec) if a != (0, 0)) + return {'literal_word': op.circuit, 'signed_tableau': op.tab, + 'zero_column_anchor': {'index': j, 'gaussian_numerator': vec[j], + 'denominator_power2': den}} + + def compile_monomial(op): + need(rank(op) == 0, 'nonmonomial boundary map') + compiled, _ = ce.monomial(op) + need(equal(compiled, op) and equal(literal(compiled.circuit), op), + 'literal phase-correct monomial compilation') + return compiled + + R, D = frame(1), ce.fourier(9, range(1, 9)) + Km, N = [None] * 8, [None] * 8 + records = [None] * 8 + for i, r in enumerate(witness): + k = perm[i] + candidates = [q for q in range(1, 512) + if all(ce.parity(q & v) == 0 for v in c['frames'][r['frame']])] + need(len(candidates) == 1, 'rank-eight missing line') + q = candidates[0] + need(q.bit_count() % 2 == 1 and q != 511, 'odd noncharacteristic line') + if not q & 1: + transvections = [1 ^ q] + else: + j = next(j for j in range(1, 9) if not q >> j & 1) + transvections = [1 ^ (1 << j), (1 << j) ^ q] + cols = [] + for j in range(9): + x = 1 << j + for v in transvections: + x ^= v if ce.parity(x & v) else 0 + cols.append(x) + G = ce.transpose(cols, 9) + z = sum((((row.bit_count() - 1) // 2) & 1) << j for j, row in enumerate(G)) + K = ce.perm(9, G).then(ce.diag(9, (0,) * 9, tuple(2 * ((z >> j) & 1) for j in range(9)))) + need(equal(K.then(R), R.then(K)), 'mode K/R absolute phase') + need(all((ce.mv(ce.transpose(G, 9), x).bit_count() - x.bit_count() + - 2 * ce.parity(z & x)) % 4 == 0 for x in range(512)), 'K weight congruence') + F8 = frame(r['frame'], True) + need(rank(F8) == 8, 'actual cache rank') + Km[k] = compile_monomial(K) + N[k] = compile_monomial(K.then(F8).adjoint().then(D)) + records[k] = {'mode': k, 'owner': MODE[k], 'cache_slot': 633 + i, + 'witness_row': i, 'frame': r['frame'], 'missing_line': q, + 'cache_scalar': str(1 / (2 * F(r['zero_factor']) * sign[i])), + 'input_K': receipt(Km[k]), 'output_N': receipt(N[k])} + Kp = [literal(r['K_word']) for r in normal['ports']] + checks = Counter() + for j, port in enumerate(normal['ports']): + need(port['port'] == j and rank(Kp[j]) == 0 and equal(Kp[j].then(R), R.then(Kp[j])), + 'port K binding and R commutation') + wrappers = port['compiled_wrappers'] + BX, BY, OX, OY = [literal(wrappers[key]['word']) for key in + ('backward_input_X', 'backward_input_Y', 'backward_output_X', 'backward_output_Y')] + birth, final, finalY = frame(c['start'][j], True), frame(c['final'][j], True), frame(c['final'][112 + j], True) + need(equal(BX.then(birth.adjoint()).then(final).then(OX), D), 'X diagonal physical block') + need(equal(BY.then(finalY).then(OY), D), 'Y diagonal physical block') + need(equal(BY.then(final).then(OX), R), 'main shear physical block') + checks['main_diagonal_and_shear'] += 3 + for k in range(8): + if not M[k][j]: + continue + need(equal(Km[k].then(final).then(OX), Km[k].then(Kp[j].adjoint()).then(R)), + 'helper-to-main physical coupling') + F8 = frame(records[k]['frame'], True) + need(equal(BY.then(F8).then(N[k]), Kp[j].then(Km[k].adjoint()).then(D)), + 'main-to-helper physical coupling') + checks['two_coupling_directions'] += 2 + for k in range(8): + need(equal(Km[k].then(frame(records[k]['frame'], True)).then(N[k]), D), + 'helper diagonal physical block') + checks['helper_diagonal'] += 1 + need(dict(checks) == {'main_diagonal_and_shear': 336, 'two_coupling_directions': 896, + 'helper_diagonal': 8}, '1,240 physical bindings') + autonomous = Counter(len(c['frames'][c['final'][j]]) - len(c['frames'][c['start'][j]]) + for j in range(224, 632) if j not in MODE) + need(autonomous == Counter({4: 28, 7: 7, 8: 47, 9: 318}), '400 retained native helper jobs') + # Physical normalization precedes a complete-field SWAP, including chart tags. + for r in records: + owner, cache = r['owner'], r['cache_slot'] + need(not endpoint[owner], 'SWAP destination must be identically zero') + endpoint[owner], endpoint[cache] = endpoint[cache], endpoint[owner] + need(all(not endpoint[j] for j in range(632, 641)), 'all owned outputs clean') + + # Failure controls invoke the same predicates as the construction. + controls = [] + bad_c = dict(c) + bad_c['start'] = c['start'][:] + bad_c['start'][0] = 0 + try: + replay([['zero_retag', 0, 0, 1]], bad_c, 641) + except ValueError as e: + need(str(e) == 'zero retag has nonzero input', 'wrong rejection') + controls.append('nonzero zero-retag rejected') + need(len(controls) == 1, 'zero-retag control accepted') + corrupted = [e[:] for e in entrance] + mutated = next(e for e in corrupted if e[0] == 'add') + mutated[3] = str(F(mutated[3]) + 1) + try: + check_basis(apply_ordinary(corrupted, identity)) + except ValueError as e: + need(str(e) == 'literal L program', 'wrong basis rejection') + controls.append('one altered basis ADD coefficient rejected') + need(len(controls) == 2, 'basis coefficient mutation accepted') + badN = ce.Op(9, N[0].tab, N[0].circuit + [('phase', 1)]) + need(badN.tab == N[0].tab and not equal(Km[0].then(frame(records[0]['frame'], True)).then(badN), D), + 'phase-only error escaped') + controls.append('same-tableau phase-only cache error rejected') + wrong = dict(first_cache) + add(wrong, {MODE[perm[0]]: F(1)}) + try: + check_cache(0, wrong) + except ValueError as e: + need(str(e) == 'composed retained cache', 'wrong cache rejection') + controls.append('one altered saved-cache coefficient rejected') + need(len(controls) == 4, 'saved-cache coefficient mutation accepted') + + # An explicit, conservative local error-amplification bound for this finite + # schedule. Gaussian and monomial field maps have Euclidean norm one. + def log2_bound(a): + a, exponent = max(F(1), a), 0 + while a > 1: + a /= 2 + exponent += 1 + return exponent + amplification = 0 + for e in changed['word']: + if e[0] == 'scalar': + op = e[1] + if op[0] == 'add': + amplification += log2_bound(1 + abs(F(op[3], op[4]))) + elif op[0] == 'scale': + amplification += log2_bound(abs(F(op[2], op[3]))) + for e in entrance + exitword: + amplification += log2_bound(1 + abs(F(e[3]))) if e[0] == 'add' else log2_bound(abs(F(e[2]))) + amplification += 8 * log2_bound(F(2)) + amplification += sum(log2_bound(abs(F(r['cache_scalar']))) for r in records) + + artifact = { + 'schema_version': 1, 'source_payload_sha256': SOURCE_HASH, + 'candidate_witness_sha256': WITNESS_HASH, + 'word_payload_sha256': sha256(gzip.decompress((HERE / 'WORD.json.gz').read_bytes())).hexdigest(), + 'basis_roles': roles, 'mode_owners': MODE, + 'candidate_mode_permutation': perm, 'candidate_mode_signs': list(map(str, sign)), + 'canonical_retraction_E': [enc(row) for row in E], + 'input_basis_program': entrance, 'output_basis_program': exitword, + 'mode_boundaries': records, + 'ordered_schedule': [ + 'Main input wrappers: NORMALIZERS.ports[j].compiled_wrappers.backward_input_X/Y.', + 'On each mode owner apply input_K and scalar 2; run input_basis_program.', + 'Run every instruction of WORD.json.gz; C0..C8 initially arbitrary.', + 'Run output_basis_program on the 122 persistent common-chart helpers.', + 'For each mode apply cache_scalar and output_N to its owned cache; SWAP the whole field and chart with its zero original owner; CLEAR the owned zero.', + 'Main output wrappers: NORMALIZERS.ports[j].compiled_wrappers.backward_output_X/Y.' + ], + 'paid': dict(sorted(paid.items())), 'autonomous_native_helpers': dict(sorted(autonomous.items())), + 'owned_fields': {'count': 9, 'initial_values': 'arbitrary', 'final_values': 'zero', 'productive_credit': 0}, + 'added_ordinary_work_vs_original_raw_source': { + 'ADD': 1644, 'SCALE': 40, 'COPY': 16, 'CLEAR': 24, 'whole_field_SWAP': 8, + 'monomial_field_maps': 464, + 'monomial_breakdown': {'fused_inherited_main_standardizers': 448, 'mode_inputs': 8, 'cache_outputs': 8}}, + 'local_error_amplification_power2_bound': amplification, + 'source_original_scalar_counts': dict(sorted(oldscalar.items())), + 'source_changed_scalar_counts': dict(sorted(scalars.items())), + 'physical_phase_bindings': dict(checks), 'exact_zero_retags': zeros, + 'formula': {'X': 'D x - R y + R W h', 'Y': 'D y', 'H': 'D (h - Z y)', + 'W': 'diag(K_port^-1) M diag(K_mode)/2', + 'Z': 'diag(K_mode^-1) M^T diag(K_port)/2'}, + 'failure_controls': controls, + 'scope': 'Changed coupled backward provider. No autonomous credit for eight coupled outputs; no completed caller, inverse/transpose implementation, new kappa or selected-result change.' + } + artifact = json.loads(json.dumps(artifact)) + path = HERE / 'PROVIDER.json' + if emit: + path.write_text(json.dumps(artifact, indent=2) + '\n') + else: + need(json.loads(path.read_text()) == artifact, 'committed boundary recipe differs from replay') + print('PASS_NATIVE_RANK8_HELPER_PROVIDER ' + json.dumps({ + 'original_inputs': 632, 'arbitrary_owned_inputs': 9, 'owned_outputs_zero': 9, + 'autonomous_helpers': 400, 'coupled_helpers': 8, 'paid': dict(sorted(paid.items())), + 'phase_bindings': sum(checks.values()), 'seconds': round(time.monotonic() - started, 3)})) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--emit', action='store_true', help='regenerate the package-local boundary recipe') + main(parser.parse_args().emit)