diff --git a/research/crt-multitarget-row-audit/PROOF.md b/research/crt-multitarget-row-audit/PROOF.md new file mode 100644 index 0000000000..77adf1bcd4 --- /dev/null +++ b/research/crt-multitarget-row-audit/PROOF.md @@ -0,0 +1,302 @@ +# Multi-target composition at the current CRT row boundary + +This is an independent, source-relative audit of JoyboyBrian's PR #5496, +head `a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5`. The unchanged program and +the exact claim audited are retained in `vendor/`. We found no defect in +the implication below. The inherited numerical and ROM-producer theorems +remain hypotheses; this is not an independent acceptance of those theorems, +of #4100, or of a complete multiplication algorithm. + +## Statement and inherited contracts + +Let `d` be a power of two, `ell >= 2`, and `h_i in {ell-1,ell}`. At every +axis let `2 <= s_i < 2^h_i`, with all moduli pairwise coprime, and let +`0 <= x_i < 2^h_i`. Fix an admitted tree node `[a,a+n)`, `n=2^level >= 2`, +with `b=a+n/2`, and a global row `0 <= g < 2ell-1`. Put + + P = 1 + sum_{a <= i < a+n} h_i. + +Use the sequential axis-record format of PR5353, eight distinct protected +numerical ports, the fixed compiled topology, and initially blank new +owned backing. The source and all ports have their specified entry heads. +Assume these two source contracts: + +1. **Numerical Entry.** PR5353/PR5219/PR5053 produce one P-bit `(c_i,v_i)` + record for **every** right axis `b <= i < a+n`, including idle axes. + If the left coordinates are valid, their current child is the unique + `k in [0,M)`, `M=product_{a <= j < b} s_j`, satisfying + + k = x_i product_{a <= j < i} s_j (mod s_i), a <= i < b. + + If any left coordinate is padded, `k=0`. Each offset is + + c_i = k (product_{a <= j < i} s_j)^(-1) mod s_i. + + `v_i` is the complete-rotation output, not the micro-row output. + Entry supplies its stated input preservation, numerical ownership and + retirement guarantees. +2. **ROM producer.** PR5092 accepts its encoded headers with `W>=h+3`, + legal modulus, selector and offsets; it returns the canonical complete + Beneš layers and selected row on the supplied output backings. It + preserves its headers, returns all heads to zero, and erases private + work. Blank tails beyond the current records are permitted. Its literal + loops terminate at their record markers, rather than the allocated list + length. This last fact is also directly visible in `microcode.py`. + +The conclusion is the original #5496 multi-target interface: if at least +one right axis is active, `RowQuery` returns the exact current micro-row +output for every right axis in order, copying idle axes unchanged. It +uses one producer bank throughout that row, returns the borrowed bytes +and heads, and retires all joined owned work on `close`. An all-idle row +performs no tape work and allocates no numerical or ROM bank. + +This quantifies over all admitted parameters and padded current values, +conditional on the two contracts. The finite executions below corroborate +the implication; they are not the reason the quantifier holds. + +## Width and synchronized-row checks + +Admissibility forces every `h_i >= 2`: there is no integer `s_i` with +`2 <= s_i < 2^1`. A node contains another axis besides any chosen target, +so `P >= h_i+3`. Thus `W=P` meets the unchanged ROM producer's guard, +including the minimum case `P=5,h_i=2`. The encoded constants `h_i` and +the local row fit P bits. Offsets are in `[0,s_i)` by the Entry contract. + +For a long axis the local row is `g`. For a short axis the two global +rows `ell-1,ell` are idle; the remaining local rows are `g` before that +gap and `g-2` afterward. This lists `0,...,2h_i-2` exactly once. On every +active row the target bit + + min(local, 2h_i-2-local) + +equals the corresponding global schedule bit `min(g,2ell-2-g)`. These +are the exact predicates and formulas used by the source loop. + +## Induction over the literal axis loop + +Immediately before parsing axis j, maintain these facts: + +* The borrowed source head is at that axis's ROOT, with all bytes unchanged. + The unary guide is back at its initial head. +* The numerical result head is at the first unconsumed right-axis record. + Exactly one record has been consumed for each earlier **right** axis, + whether active or idle. Axes outside the node consume no result record. +* The open output stream consists of exactly the processed right-axis + outputs, each in its declared `h_i` bits and followed by `|`; its head + is at the next blank output position. +* Coordinate/countdown scratch and all four headers are blank at origin. + After every completed active target, the same physical producer roles + are blank at origin, including both outputs and every previously exposed + tail. The numerical result remains live until the entire loop ends. + +The first state follows from Entry's return and the fresh joined ports. +There are three induction steps. + +**An axis outside the right half.** The loop reads its declared width, +modulus and coordinate once, changes no source byte, and advances to the +next ROOT. It consumes no numerical record and emits nothing. + +**An idle right axis.** The loop copies its h-bit coordinate to the +coordinate port, skips exactly P offset bits and their delimiter, then +skips exactly P complete-rotation bits and their delimiter. It checks and +crosses RECORD_END. The coordinate is appended unchanged to the output, +followed by `|`, and its scratch is erased. In particular, skipping the +ROM call does **not** skip the numerical record. This is the boundary a +single-target/all-idle test does not exercise: there can be a later active +axis whose record must still be aligned. + +**An active right axis.** The loop copies the current modulus, offset, +and compiled row/width to the producer's four headers, padded against the +same unary P guide. It separately copies the current coordinate into the +coordinate and countdown ports. The preceding width argument establishes +the producer's complete header domain. The private bank and output roles +are blank by the invariant, so the producer contract applies on the +original backing objects. + +The selected ROM contains exactly `2^h_i` row bits. At ROM position j, +until selection, the countdown equals `x_i-j`. A nonzero word is +decremented with ordinary borrow propagation; zero selects the current +row bit and disables further countdown changes. Since `x_i<2^h_i`, +selection occurs exactly once before the ROM end marker. Both heads +return, and countdown scratch is erased. XOR at the compiled target bit +therefore gives exactly this micro-row's output. There is no `x_i h=2 fixture at P=11 retains **9,086 bank cells** after its +second call. Charging only the last target's fresh requirement, 3,084, +omits 6,002 retained cells. The reverse order grows 3,084 -> 9,086. +At P=5,h=2 the exact bank is 1,476 cells. The checker verifies every role's +extent at every actual invocation, (1), (2), the disjoint storage partition +and these rejecting controls. The numerical Entry remains separately +charged. Arbitrary changing-precision numerical histories (JoyboyBrian's #5505) and +separately allocated later RowQuery instances are outside this lemma. + +## Independent finite oracle and controls + +No #5496 verifier, retained Caller oracle, `decode_group` or source Beneš +routine is executed. The finite CRT oracle enumerates k satisfying the +displayed congruences, and enumerates the unique permitted offset. For +each small permutation, the network oracle exhausts all binary color +tuples and takes the lexicographically least tuple satisfying both input +and output perfect matchings. Each component has two complementary +colorings, so this is exactly color zero at its least vertex, independently +of the source DFS's order. Recursing on the two matched children therefore +reconstructs the canonical layers by a separate code path. All small +oracle layers are also composed directly and checked against the rotation. + +Read-only observers decode actual producer headers and inspect its actual +outputs before disposal. They check complete layers, selected row, header +preservation, returned heads, private blanking, identical backing objects, +and historical tails. They never provide a successful execution's values, +tables or branches. Input serialization belongs to the test harness and +is not billed as a new machine implementation. + +The actual cases cover two active targets, growing and shrinking widths, +an idle axis before/after an active one, invalid left padding, current +padded targets, all-idle behavior, and a nonroot node at `W=h+3` equality. +Seven execution mutations distinguish stale offsets, wrong row, suppressed +padded queries, missing full-layer disposal, missing result retirement, +skipping an idle offset record and replacement backing. Two algebraic +discriminators separate current-child semantics and the full right prefix; +two storage controls reject last-width-only and omitted-spool bills; +one receipt control separates JSON booleans from integers. + +The exact values and counts are frozen in RESULT.json. No h=4 pipeline, +uninterrupted whole level, production-size geometry, raw compact S, +three-epoch key, binary numerical compiler, full E(p,ell) tariff, native +supplier, outer theorem or formal-kernel check is established here. + +## Credit + +The theorem being audited and the joined implementation are JoyboyBrian's +#5496. Ali Romman supplies #5353's RowEntry. JoyboyBrian supplies #5092's +ROM producer and #5053/#5219's numerical producer/entry. Hiroki KUMAZAKI +supplies the current-state CRT contract (#4716) and the #4169/#4174 audits; +ToikY supplies the explicit-width mixed caller (#4195) and the arena +refinement (#4192); Cinna Davis supplies #4100's CRT/Beneš construction. +The retained physical/repair lineage includes Tekalign, Jose Manuel, +Ryanson Jonathan, unpaidmoon, Douglas Colkitt and John-Michael Smith. + +Prepared for commdata2338 (@commdata2338), with substantial OpenAI Codex +assistance. Apache-2.0. No independent human or formal-kernel review is claimed. diff --git a/research/crt-multitarget-row-audit/README.md b/research/crt-multitarget-row-audit/README.md new file mode 100644 index 0000000000..fd052021bd --- /dev/null +++ b/research/crt-multitarget-row-audit/README.md @@ -0,0 +1,153 @@ +# Independent audit of the multi-target CRT row join + +**Scoped positive proof audit with finite exact corroboration; no new κ.** +PR #5496's current-row join composes across multiple right targets, including +mixed active/idle axes and a producer bank reused at growing or shrinking +widths, conditional on its inherited numerical Entry and ROM-producer +contracts. No defect was found in that implication. This is a separate +AI-assisted audit, not independent human or formal-kernel acceptance. + +The audited source is JoyboyBrian's [PR #5496](https://github.com/CrocSwap/integer-mult-bounds/pull/5496) +at `a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5`. Its published complete +joined fixtures have one active target at a time, and its h=4 four-axis +attempt did not complete. This audit adds the explicit target-loop +invariant, an exact retained-bank footprint, and executed multi-target +coverage. It does not redo the construction or present a larger parameter +sample as a universal proof. + +[PROOF.md](PROOF.md) derives the all-admitted-parameter composition from +the two named source contracts. An idle target still consumes its entire +numerical record; the next active target therefore receives its own +offset. Every producer call returns to the same bank, with all old tails +blank, before the next target starts. Current padded coordinates are +queried, and the numerical whole-rotation field is never substituted for +one micro-row. The scope is one successful row invocation and its retirement. + +For the unchanged producer's 52-role bank, including all four headers, +let P be the node's guide width and H its largest active target width. +The exact retained count is + +```text +B(P,H) = 5 P 2^H (H^2+3H+1) + 2^H(4H-1) + 48P + 2H + 104. +``` + +Every role's extent is nondecreasing in h at fixed P; that proved property +allows a widest-target bound for this specific bank. The h=3 -> h=2 case +at P=11 still retains 9,086 cells; billing just the final target would count +3,084 and omit 6,002. The three other joined ports are counted separately +and exactly in the proof. These are finite-symbol tape cells, excluding +the numerical Entry and interpreter metadata. No program or recursive +invoice is changed. + +## Evidence + +[verify.py](verify.py) executes the unchanged join and unchanged numerical +and encoded-ROM producers. Its independent oracle searches the small CRT +congruences and exhausts the two-matching color constraints to reconstruct +canonical Beneš layers. It imports neither #5496's verifier nor the +retained Caller/CRT/Beneš reference implementations. Read-only observers +check the actual headers, every produced layer, selected ROM, bank identity, +heads, private work and historical tails before the caller disposes of them. + +The frozen [RESULT.json](RESULT.json) contains nine actual caller cases and +13 complete producer invocations. Representative root-node results are: + +| Case | Moduli; declared widths | Current state; global row | Right output | +|---|---|---|---| +| Two distinct offsets | `(5,7,3,2); (3,3,2,2)` | `(3,2,1,1); 4` | `(1,0)` | +| Shrinking bank | `(2,5,7,3); (2,3,3,2)` | `(1,4,7,3); 4` | `(6,3)` | +| Growing bank | `(2,5,3,7); (2,3,2,3)` | `(1,4,3,7); 4` | `(3,6)` | +| Leading idle target | `(2,5,3,7); (2,3,2,3)` | `(1,4,3,7); 2` | `(3,7)` | +| Trailing idle target | `(2,5,7,3); (2,3,3,2)` | `(1,4,7,3); 2` | `(3,3)` | + +Other cases cover invalid left padding, an all-idle row with zero tape +work, and a nonroot node at the minimum guide `W=P=h+3=5`. All 63 +numerical owned ports retire. The finite oracle independently checks 32 +networks at all 236 input addresses. Seven execution mutations, two +algebraic discriminators, two storage controls and one typed-receipt control +pass. They detect stale offsets, wrong row selection, suppressed padded queries, omitted +layer/result disposal, skipped idle records, replacement backing, omitted +right prefixes, original/current-coordinate confusion, and boolean/integer +receipt confusion. The storage controls reject a last-target-only bill +and omission of the retained spool. + +The adapter's tape actions are measured separately from the expensive +Entry and ROM calls and remain within the inherited `4096F` allowance. +This does not independently certify its full control-instruction constant +or the inherited arithmetic bill. Distinct backing identities and an +independent bank-plus-three-extras partition prevent alias double counting +and omitted producer storage. + +## Reproduce + +Python 3.12, standard library only, from the repository root: + +```sh +python3 -B scripts/research_package.py --package research/crt-multitarget-row-audit --check-only +python3 -B scripts/research_package.py --package research/crt-multitarget-row-audit +``` + +The registered replay runs normal and optimized Python serially, with a +300-second limit for each. Each concludes: + +```text +PASS_CRT_MULTITARGET_ROW_AUDIT cases=9 producer_calls=13 controls=12 no_new_kappa=true +``` + +The normal replay compares the existing receipt and writes no evidence. +`--write-result` explicitly regenerates it. `--case growing_bank` selects +one diagnostic without claiming the complete package pass. + +The audited pending source is vendored byte-for-byte, with its original +credit, paths, commit, Git blobs and hashes in [VENDORED.json](VENDORED.json). +The twelve scientific main-branch inputs are pinned in [SOURCES.json](SOURCES.json) +and declared in [VERIFY.json](VERIFY.json). The export also retains the +repository license and three original source notices. No pending Git object +or live GitHub access is required for direct replay. Generic provenance validation +still requires the package's main-branch Git history. + +## Scope and remaining obligations + +The base is `32890bc5de034ab8fc93ac88ead7279a6a416d04`, priority revision 7; +the task is `uniform-transfer-audit`, refined to this actual CRT caller. +[TASK.json](TASK.json) records selection and overlap. Coordination is in +[Discussion #4709](https://github.com/CrocSwap/integer-mult-bounds/discussions/4709), +following #5496's comment 19173182. JoyboyBrian's #5505 (cross-session +numerical bank reuse) and #5486 (fixed repair binary lowering) are +separate work. + +The numerical and producer theorems, initial encoded input production, +uninterrupted whole-level updates, three-epoch key transport, production +geometry, binary numerical compilation, complete E(p,ell), native/outer +admission and the full multiplication theorem are not independently +validated here. No h=4 joined replay, Lean build or selected replay is run. +The selected record and all frozen predecessor files are unchanged. + +## Open next questions + +1. Connect this returned coordinate stream to a paid update of the actual + axis-record source, then invoke the next row without host serialization. + This would test the next physical caller boundary. Start with the + five-row mixed h=3/h=2 example; the source ownership/update contract is + the missing premise. PR5496 already identifies this task; it remains open. +2. Join one complete three-epoch exceptional key to these actual current-row + inputs. Start with PR4716's two stale-offset discriminators and explicitly + price each source-coordinate conversion and restoration. A proved + single-row loop does not supply those changing-left-state descriptors. + +The family decision is to stop after this audit; neither a larger ROM +sample nor a complete ordinary/outer run is justified by this result alone. + +## Credit + +Prepared for commdata2338 (@commdata2338), with substantial OpenAI Codex assistance. + +JoyboyBrian supplies #5496's join, #5092's ROM producer and #5053/#5219's +numerical components. Ali Romman supplies #5353's actual RowEntry. +Hiroki KUMAZAKI supplies the current-state CRT contract (#4716) and the +#4169/#4174 repair and mixed-width reservoir audits; Cinna Davis supplies +#4100's construction; ToikY supplies the explicit-width mixed caller +(#4195) and the Beneš arena refinement (#4192). Tekalign, Jose Manuel, Ryanson Jonathan, unpaidmoon, Douglas +Colkitt, John-Michael Smith and the retained source notices preserve the +physical/repair lineage. [vendor/NOTICE.md](vendor/NOTICE.md) identifies +the copied material. Apache-2.0. No independent human review is claimed. diff --git a/research/crt-multitarget-row-audit/RESULT.json b/research/crt-multitarget-row-audit/RESULT.json new file mode 100644 index 0000000000..ed91a218b6 --- /dev/null +++ b/research/crt-multitarget-row-audit/RESULT.json @@ -0,0 +1,1835 @@ +{ + "status": "PASS_CRT_MULTITARGET_ROW_AUDIT", + "sources": { + "research/crt-encoded-benes-rom-producer/PROOF.md": "93bd340ac9b77f8f781926aeb7327325789b331863b3088fed1809eefb789bd2", + "research/crt-encoded-benes-rom-producer/microcode.py": "d4af5350854a87b67484840800b94e1e53cff82c78ec0f2a91753fed9ea70af7", + "research/crt-mixed-row-entry/PROOF.md": "8a529ece497c62d5225261cdacebfd88979322b3a8886d1a31eb6295f1989e4b", + "research/crt-mixed-row-entry/bridge.py": "89c38638c0d66da731566c903c32e7fa1ad31088d29cfd2634fce823dd07c1f9", + "research/crt-mixed-width-caller/verify.py": "5e62787f3c4a8f1175ca7dea6c6b8ceff7863a3f879abd6245faf6aeb272fd45", + "research/encoded-crt-entry-lifecycle/PROOF.md": "a619be48c8c85749ea5411929aa6ff3986443b467133d32d19d543250b0054b0", + "research/encoded-crt-entry-lifecycle/entry.py": "0537ec98f306270c8ff6a424841886cf53f675d9947029347090c7dc779616d7", + "research/encoded-current-crt/PROOF.md": "7da614e737414a373c8716158f2c02a52666620ea1f114fac7ca09b3b38489bc", + "research/encoded-current-crt/producer.py": "88dab4ca02a92164a67826db361214fa1405e4b4a588f8c4279a21bcee95ab76", + "research/r437-preparation-composition/predecessor4025/source/records.py": "0c9c4b23e998597fb877bb1a29da69ac869b68262abe635b162b4dba9c69b372", + "research/r437-preparation-composition/predecessor4025/source/words.py": "5c37f57708ba3131bdcb03139f9dbc29886bee44569c09cbba51b68f75acd7f9", + "research/unconditional-batched-crt/CRT.md": "02c3a1e38cbee25aefe2640cc72676da62ba10eb7519fbcb9adb9d48b74eff2b", + "vendor/pr5496-join.py": "11c9ac1175a45edae80869b22c041e31a1b5cc75f4389ec2e073de37e547bf35", + "vendor/pr5496-PROOF.md": "6aaa6253bf5f64f07cbfbf0a98a7c464e5a78cfa05c398f7eb41a27f03a7379c", + "vendor/pr5496-README.md": "41a14eb0d72c1ecce16a791b8f32d84f8c0b4e089c5e66a19067218e56d48db0" + }, + "oracle": { + "networks": 32, + "addresses": 236 + }, + "cases": [ + { + "name": "two_short_first", + "idle": false, + "lower": 11, + "precision": 11, + "offsets": [ + 1, + 1 + ], + "output": [ + 3, + 1 + ], + "calls": [ + { + "axis": 2, + "headers": { + "h": 2, + "modulus": 3, + "selected_layer": 0, + "offsets": 1 + }, + "instructions": 4841091, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "dde2ad20159724d288bd6145d77bd8e8bec7db9a36ceb42ebc2c6d3c045d46b1" + }, + { + "axis": 3, + "headers": { + "h": 2, + "modulus": 2, + "selected_layer": 0, + "offsets": 1 + }, + "instructions": 4840616, + "before_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "93e452c83710ef6b736c4defcb57da7a2d7c46f9c143051960441230c2bccba4" + } + ], + "adapter_tape_actions": 2421, + "adapter_bound": 749568, + "owned_retained_cells": 4052, + "numerical_owned_roles": 63, + "producer_retained_cells": 3084, + "extra_retained_cells": 16, + "expected_query_coordinates": [ + 2, + 1 + ] + }, + { + "name": "two_short_distinct_offsets", + "idle": false, + "lower": 3, + "precision": 11, + "offsets": [ + 0, + 1 + ], + "output": [ + 1, + 0 + ], + "calls": [ + { + "axis": 2, + "headers": { + "h": 2, + "modulus": 3, + "selected_layer": 2, + "offsets": 0 + }, + "instructions": 4840097, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "93e452c83710ef6b736c4defcb57da7a2d7c46f9c143051960441230c2bccba4" + }, + { + "axis": 3, + "headers": { + "h": 2, + "modulus": 2, + "selected_layer": 2, + "offsets": 1 + }, + "instructions": 4840617, + "before_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "5017425c34a54778a5b1aad8170a2c8f8ef83f00aa88b1e49c00774e5fe73e33" + } + ], + "adapter_tape_actions": 2394, + "adapter_bound": 749568, + "owned_retained_cells": 4051, + "numerical_owned_roles": 63, + "producer_retained_cells": 3084, + "extra_retained_cells": 16, + "expected_query_coordinates": [ + 1, + 1 + ] + }, + { + "name": "shrinking_bank", + "idle": false, + "lower": 3, + "precision": 11, + "offsets": [ + 1, + 0 + ], + "output": [ + 6, + 3 + ], + "calls": [ + { + "axis": 2, + "headers": { + "h": 3, + "modulus": 7, + "selected_layer": 4, + "offsets": 1 + }, + "instructions": 64964341, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 8362, + "spool": 42, + "layers": 47, + "rom": 10, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "09fd8e4e5c2c1c30bdd3d930b7874ec4c272a610da1058565b4c8e3d228b6865" + }, + { + "axis": 3, + "headers": { + "h": 2, + "modulus": 3, + "selected_layer": 2, + "offsets": 0 + }, + "instructions": 4840097, + "before_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 8362, + "spool": 42, + "layers": 47, + "rom": 10, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 8362, + "spool": 42, + "layers": 47, + "rom": 10, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "37631d3c52ba6f3c5bd563f6018a099d730314a2dcb08d1403d9ad92fc68ec00" + } + ], + "adapter_tape_actions": 2847, + "adapter_bound": 958464, + "owned_retained_cells": 10059, + "numerical_owned_roles": 63, + "producer_retained_cells": 9086, + "extra_retained_cells": 19, + "expected_query_coordinates": [ + 7, + 3 + ] + }, + { + "name": "growing_bank", + "idle": false, + "lower": 3, + "precision": 11, + "offsets": [ + 0, + 5 + ], + "output": [ + 3, + 6 + ], + "calls": [ + { + "axis": 2, + "headers": { + "h": 2, + "modulus": 3, + "selected_layer": 2, + "offsets": 0 + }, + "instructions": 4840097, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "93e452c83710ef6b736c4defcb57da7a2d7c46f9c143051960441230c2bccba4" + }, + { + "axis": 3, + "headers": { + "h": 3, + "modulus": 7, + "selected_layer": 4, + "offsets": 5 + }, + "instructions": 64975266, + "before_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 8362, + "spool": 42, + "layers": 47, + "rom": 10, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "f03d7eaeeab75bb49b3652cdf9353617e0b7f27d7e4c24dcdb91985803687417" + } + ], + "adapter_tape_actions": 2847, + "adapter_bound": 958464, + "owned_retained_cells": 10059, + "numerical_owned_roles": 63, + "producer_retained_cells": 9086, + "extra_retained_cells": 19, + "expected_query_coordinates": [ + 3, + 7 + ] + }, + { + "name": "leading_idle", + "idle": false, + "lower": 3, + "precision": 11, + "offsets": [ + 0, + 5 + ], + "output": [ + 3, + 7 + ], + "calls": [ + { + "axis": 3, + "headers": { + "h": 3, + "modulus": 7, + "selected_layer": 2, + "offsets": 5 + }, + "instructions": 64975266, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 8362, + "spool": 42, + "layers": 47, + "rom": 10, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "83d33e46490d16971097885c682fa255bbd966a99e738744fdc000718af3e8bb" + } + ], + "adapter_tape_actions": 1987, + "adapter_bound": 815104, + "owned_retained_cells": 10059, + "numerical_owned_roles": 63, + "producer_retained_cells": 9086, + "extra_retained_cells": 19, + "expected_query_coordinates": [ + 7 + ] + }, + { + "name": "trailing_idle", + "idle": false, + "lower": 3, + "precision": 11, + "offsets": [ + 1, + 0 + ], + "output": [ + 3, + 3 + ], + "calls": [ + { + "axis": 2, + "headers": { + "h": 3, + "modulus": 7, + "selected_layer": 2, + "offsets": 1 + }, + "instructions": 64964341, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 8362, + "spool": 42, + "layers": 47, + "rom": 10, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "0679f9b24e701db7288294c7921ca619aa90e1e22aabf1dfd2c29b01d4892b60" + } + ], + "adapter_tape_actions": 1987, + "adapter_bound": 815104, + "owned_retained_cells": 10059, + "numerical_owned_roles": 63, + "producer_retained_cells": 9086, + "extra_retained_cells": 19, + "expected_query_coordinates": [ + 7 + ] + }, + { + "name": "invalid_left", + "idle": false, + "lower": 0, + "precision": 11, + "offsets": [ + 0, + 0 + ], + "output": [ + 3, + 1 + ], + "calls": [ + { + "axis": 2, + "headers": { + "h": 2, + "modulus": 3, + "selected_layer": 2, + "offsets": 0 + }, + "instructions": 4840097, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "93e452c83710ef6b736c4defcb57da7a2d7c46f9c143051960441230c2bccba4" + }, + { + "axis": 3, + "headers": { + "h": 2, + "modulus": 2, + "selected_layer": 2, + "offsets": 0 + }, + "instructions": 4839788, + "before_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "after_extents": { + "zero": 13, + "one": 13, + "two": 13, + "root": 13, + "n": 13, + "remaining": 13, + "depth": 13, + "height": 13, + "low": 13, + "high": 13, + "size": 13, + "cur_node": 13, + "init_kind": 13, + "init_layer": 13, + "init_index": 13, + "init_value": 13, + "limit": 13, + "xloop": 13, + "yloop": 13, + "px": 13, + "py": 13, + "node": 13, + "kind": 13, + "layer": 13, + "index": 13, + "value": 13, + "x": 13, + "other": 13, + "opposite": 13, + "color": 13, + "initial": 13, + "top": 13, + "off": 13, + "permuted": 13, + "addition": 13, + "child": 13, + "child_index": 13, + "inverse": 13, + "last": 13, + "outlayer": 13, + "layloop": 13, + "layers_count": 13, + "column": 13, + "check": 13, + "arena": 2422, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 13, + "modulus": 13, + "selected_layer": 13, + "offsets": 14 + }, + "rom_sha256": "93e452c83710ef6b736c4defcb57da7a2d7c46f9c143051960441230c2bccba4" + } + ], + "adapter_tape_actions": 2442, + "adapter_bound": 749568, + "owned_retained_cells": 4054, + "numerical_owned_roles": 63, + "producer_retained_cells": 3084, + "extra_retained_cells": 16, + "expected_query_coordinates": [ + 3, + 1 + ] + }, + { + "name": "all_idle", + "idle": true, + "calls": [], + "lower": 11 + }, + { + "name": "nonroot_minimum_guide", + "idle": false, + "lower": 1, + "precision": 5, + "offsets": [ + 1 + ], + "output": [ + 0 + ], + "calls": [ + { + "axis": 3, + "headers": { + "h": 2, + "modulus": 2, + "selected_layer": 2, + "offsets": 1 + }, + "instructions": 2363817, + "before_extents": { + "zero": 1, + "one": 1, + "two": 1, + "root": 1, + "n": 1, + "remaining": 1, + "depth": 1, + "height": 1, + "low": 1, + "high": 1, + "size": 1, + "cur_node": 1, + "init_kind": 1, + "init_layer": 1, + "init_index": 1, + "init_value": 1, + "limit": 1, + "xloop": 1, + "yloop": 1, + "px": 1, + "py": 1, + "node": 1, + "kind": 1, + "layer": 1, + "index": 1, + "value": 1, + "x": 1, + "other": 1, + "opposite": 1, + "color": 1, + "initial": 1, + "top": 1, + "off": 1, + "permuted": 1, + "addition": 1, + "child": 1, + "child_index": 1, + "inverse": 1, + "last": 1, + "outlayer": 1, + "layloop": 1, + "layers_count": 1, + "column": 1, + "check": 1, + "arena": 1, + "spool": 1, + "layers": 1, + "rom": 1, + "h": 7, + "modulus": 7, + "selected_layer": 7, + "offsets": 8 + }, + "after_extents": { + "zero": 7, + "one": 7, + "two": 7, + "root": 7, + "n": 7, + "remaining": 7, + "depth": 7, + "height": 7, + "low": 7, + "high": 7, + "size": 7, + "cur_node": 7, + "init_kind": 7, + "init_layer": 7, + "init_index": 7, + "init_value": 7, + "limit": 7, + "xloop": 7, + "yloop": 7, + "px": 7, + "py": 7, + "node": 7, + "kind": 7, + "layer": 7, + "index": 7, + "value": 7, + "x": 7, + "other": 7, + "opposite": 7, + "color": 7, + "initial": 7, + "top": 7, + "off": 7, + "permuted": 7, + "addition": 7, + "child": 7, + "child_index": 7, + "inverse": 7, + "last": 7, + "outlayer": 7, + "layloop": 7, + "layers_count": 7, + "column": 7, + "check": 7, + "arena": 1102, + "spool": 14, + "layers": 17, + "rom": 6, + "h": 7, + "modulus": 7, + "selected_layer": 7, + "offsets": 8 + }, + "rom_sha256": "5017425c34a54778a5b1aad8170a2c8f8ef83f00aa88b1e49c00774e5fe73e33" + } + ], + "adapter_tape_actions": 916, + "adapter_bound": 425984, + "owned_retained_cells": 1960, + "numerical_owned_roles": 63, + "producer_retained_cells": 1476, + "extra_retained_cells": 13, + "expected_query_coordinates": [ + 1 + ] + } + ], + "controls": [ + { + "name": "stale_zero_offset", + "rejected_by": "current target header correspondence" + }, + { + "name": "wrong_local_row", + "rejected_by": "current target header correspondence" + }, + { + "name": "suppress_padded_query", + "rejected_by": "independent micro-row endpoint" + }, + { + "name": "omit_layers_disposal", + "rejected_by": "blank producer reentry including old tails" + }, + { + "name": "omit_result_retirement", + "rejected_by": "joined retirement including result" + }, + { + "name": "skip_idle_offset_record", + "rejected_by": "offset record end" + }, + { + "name": "replace_bank_between_targets", + "rejected_by": "same producer bank at next target" + }, + { + "name": "omit_preceding_right_modulus", + "correct": 5, + "wrong": 1 + }, + { + "name": "treat_current_as_original_digits", + "correct": 11, + "wrong": 26 + }, + { + "name": "bill_only_final_smaller_target", + "rejected_by": "exact shared-bank footprint" + }, + { + "name": "omit_retained_spool", + "rejected_by": "complete bank includes spool" + }, + { + "name": "boolean_integer_receipt_collision", + "rejected": true + } + ], + "producer_calls": 13 +} diff --git a/research/crt-multitarget-row-audit/SOURCES.json b/research/crt-multitarget-row-audit/SOURCES.json new file mode 100644 index 0000000000..3c998361ff --- /dev/null +++ b/research/crt-multitarget-row-audit/SOURCES.json @@ -0,0 +1,114 @@ +{ + "schema_version": 1, + "base_commit": "32890bc5de034ab8fc93ac88ead7279a6a416d04", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "fc3d4ba105e1f097d0d7d051a308281e86ab1446", + "sha256": "66974efdced4083c00025f97d95d83909a226cdf801edb9301c195c6641f6903" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "f126dd2e2dad2b669e75d1d0d0bd05c600725602", + "sha256": "f7a48bfa2659b88378282a8eee7d9fe52cdf505594124c4d1686b58510fffd72" + }, + { + "path": "research/crt-encoded-benes-rom-producer/PROOF.md", + "usage": "input", + "git_blob": "cdd530c668254558bb1ef8a6c6af9a5660f8f9c2", + "sha256": "93bd340ac9b77f8f781926aeb7327325789b331863b3088fed1809eefb789bd2" + }, + { + "path": "research/crt-encoded-benes-rom-producer/microcode.py", + "usage": "input", + "git_blob": "052b01a83bc910c176b83a012b9f46f0e9525b9d", + "sha256": "d4af5350854a87b67484840800b94e1e53cff82c78ec0f2a91753fed9ea70af7" + }, + { + "path": "research/crt-mixed-row-entry/PROOF.md", + "usage": "input", + "git_blob": "76e75e002b5c5860a43b2fe6313ba4339efcc3ff", + "sha256": "8a529ece497c62d5225261cdacebfd88979322b3a8886d1a31eb6295f1989e4b" + }, + { + "path": "research/crt-mixed-row-entry/bridge.py", + "usage": "input", + "git_blob": "57f6853e262a6136bc616f1e47a31d0ace28495c", + "sha256": "89c38638c0d66da731566c903c32e7fa1ad31088d29cfd2634fce823dd07c1f9" + }, + { + "path": "research/crt-mixed-width-caller/verify.py", + "usage": "input", + "git_blob": "7980582b86e8d20269ae32252ad03896eff1131b", + "sha256": "5e62787f3c4a8f1175ca7dea6c6b8ceff7863a3f879abd6245faf6aeb272fd45" + }, + { + "path": "research/encoded-crt-entry-lifecycle/PROOF.md", + "usage": "input", + "git_blob": "8c9d971a3d3e5a75637e3279ed8f7f89b0c6a566", + "sha256": "a619be48c8c85749ea5411929aa6ff3986443b467133d32d19d543250b0054b0" + }, + { + "path": "research/encoded-crt-entry-lifecycle/entry.py", + "usage": "input", + "git_blob": "1fa2b0cb88320d4f5b623554bb0fc6de332b773c", + "sha256": "0537ec98f306270c8ff6a424841886cf53f675d9947029347090c7dc779616d7" + }, + { + "path": "research/encoded-current-crt/PROOF.md", + "usage": "input", + "git_blob": "286ab05ba7ab500e5b86268384545dcec8862d1c", + "sha256": "7da614e737414a373c8716158f2c02a52666620ea1f114fac7ca09b3b38489bc" + }, + { + "path": "research/encoded-current-crt/producer.py", + "usage": "input", + "git_blob": "a327b0161eca57a1cc44ec2aa8e3defed2167ddc", + "sha256": "88dab4ca02a92164a67826db361214fa1405e4b4a588f8c4279a21bcee95ab76" + }, + { + "path": "research/r437-preparation-composition/predecessor4025/source/records.py", + "usage": "input", + "git_blob": "4f00467a0ff580954ad2fd0c7380240c753ddef3", + "sha256": "0c9c4b23e998597fb877bb1a29da69ac869b68262abe635b162b4dba9c69b372" + }, + { + "path": "research/r437-preparation-composition/predecessor4025/source/words.py", + "usage": "input", + "git_blob": "8d4ba37e2778acb35b34e0719df2caf138fbeb50", + "sha256": "5c37f57708ba3131bdcb03139f9dbc29886bee44569c09cbba51b68f75acd7f9" + }, + { + "path": "research/unconditional-batched-crt/CRT.md", + "usage": "input", + "git_blob": "d98dd8e368431cac33d5fc1c8c336696663641d6", + "sha256": "02c3a1e38cbee25aefe2640cc72676da62ba10eb7519fbcb9adb9d48b74eff2b" + }, + { + "path": "LICENSE", + "usage": "provenance", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "research/unconditional-batched-crt/NOTICE.md", + "usage": "provenance", + "git_blob": "886a8fdee275f01b459cbd68ae2815dc9269502f", + "sha256": "924109837e71c52392191710d49c9deb42780878d1094f0b01e8690dbe799461" + }, + { + "path": "research/r437-preparation-composition/predecessor4025/source/NOTICE.md", + "usage": "provenance", + "git_blob": "ef9f81510db86eaf2f0a7191d85e92a6db30ddc0", + "sha256": "c446b32b8a621844fb2fbe654810c8122035bdd43fed2132f1137d98cb6f9943" + }, + { + "path": "research/crt-encoded-benes-rom-producer/vendor/pr4192-NOTICE.md", + "usage": "provenance", + "git_blob": "6ca47019de7e58edf93c4278a6a8251625d37477", + "sha256": "b886589be7c8b87bcf12b14ce4db6827299b7cec93836ed22cff81aed37623dc" + } + ] +} diff --git a/research/crt-multitarget-row-audit/TASK.json b/research/crt-multitarget-row-audit/TASK.json new file mode 100644 index 0000000000..8442871d9e --- /dev/null +++ b/research/crt-multitarget-row-audit/TASK.json @@ -0,0 +1,139 @@ +{ + "schema_version": 1, + "task_id": "uniform-transfer-audit", + "priority_revision": 7, + "base_commit": "32890bc5de034ab8fc93ac88ead7279a6a416d04", + "original_card": { + "id": "uniform-transfer-audit", + "question": "Does one quantified step of the proposed #4100 all-size construction hold at its actual caller?", + "starting_points": [ + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "research/unconditional-batched-crt/README.md" + ], + "methods": [ + "Prove one missing implication with explicit quantified hypotheses.", + "Find an exact counterexample at the claimed interface boundary." + ], + "acceptance_gate": "Identify the proposition and what would change downstream; do not equate a finite replay with a universal proof.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read PROOF.md and AUDIT.md in #4100. Select one distinct obligation: CRT total repair, native/free-algebra lifting, precision/conditioning, or complete fixed-tape cost. This is an author-submitted proof, not an accepted unconditional theorem.", + "scope": "Source-binding orientation only; no scientific replay, theorem acceptance or supplier admission. Budget any heavy replay separately." + }, + "first_experiment": "Check live handoffs; name one proposition, its caller, quantified domain and dependency closure. Independently prove the implication or exhibit a precise gap/counterexample. Prioritize CRT.md total repair or COMPLEX.md free-algebra lift only if unclaimed. Stop at the chosen obligation; do not substitute finite samples or root arithmetic for an all-size proof, or launch the complete package by default.", + "bottleneck_link": "Finite supplier improvements are useful only under the retained transfer obligations.", + "allowed_variations": [ + "One CRT repair, native lift, precision/conditioning or tape-cost proposition, with its exact caller." + ], + "scope_change_triggers": [ + "Replacing a quantified obligation with another finite smoke test.", + "Treating archive intake, an author PASS receipt or a finite composed fixture as discharge of the universal hypotheses." + ], + "overlap_terms": [ + "uniform transfer", + "all-size", + "precision", + "4100", + "unconditional-batched-crt" + ], + "existing_checks": [ + { + "scope": "PR #4100: proposed unconditional construction and finite checks, without independent acceptance.", + "evidence": "research/unconditional-batched-crt/README.md", + "remaining": "Independent proof audit of one caller-bound all-size implication; all other premises remain explicit.", + "status": "author-checked", + "source_commit": "337d04939571a637aeab54a0f58f54fde811663a", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + } + ] + }, + "scope_status": "refined", + "actual_scope": "Independently audit PR5496 RowQuery multi-target stream consumption, mixed active/idle targets, physical ROM-bank reuse and successful retirement, under the retained numerical Entry and producer contracts. Derive the exact fixed-P singleton-ROM shared-bank footprint and its three disjoint extra ports.", + "scope_change_reason": "The revision-7 card names one actual caller-bound CRT implication. Successor PR5496 supplies the concrete join; its completed fixtures have one active target, so this audit derives the target-loop invariant and adds independently checked multi-target boundary executions. The same rolewise reuse audit sharpens the bank storage accounting without changing the implementation or recursive invoice.", + "bottleneck_link": "CRT total repair needs correct current-state physical queries. This audits one necessary composition implication without treating it as complete all-size transfer or supplier admission.", + "budget_minutes": 60, + "stop_rule": "Stop at a source-relative proof or exact counterexample for this one loop, with h<=3 producer executions and no full native, ordinary, outer or production-size replay.", + "outcome": "completed", + "evidence": "PROOF.md gives the quantified conditional audit; RESULT.json freezes nine caller cases, thirteen complete producer invocations, 32 independent oracle networks/236 addresses and twelve control groups. No defect found in the audited implication; inherited theorems remain hypotheses. The bank footprint B(P,H)=5P*2^H*(H^2+3H+1)+2^H*(4H-1)+48P+2H+104 follows from the literal arena/serialization loops and componentwise monotonicity at fixed P.", + "author": "commdata2338", + "ai_assistance": "Substantial OpenAI Codex (GPT-6 Astra) assistance in derivation, implementation, checking and writing. No independent human or formal-kernel review is claimed.", + "open_questions": [ + { + "question": "Update the actual encoded axis source with the returned coordinate stream and execute the next row without host serialization.", + "why_it_matters": "This is the next physical whole-level composition boundary after the audited single-row service.", + "first_step": "Use the five-row mixed h=3/h=2 example and price an in-place coordinate splice with input/ownership invariants.", + "blocked_by": "A caller update/ownership contract and its paid implementation; the row output itself is available." + }, + { + "question": "Compose the service at all three current-state epochs of an exceptional reverse key.", + "why_it_matters": "A current-row audit does not close CRT total repair or justify freezing the left-state offset.", + "first_step": "Bind actual encoded source descriptors at PR4716's two stale-offset discriminator states and retain all conversions/restorations.", + "blocked_by": "Physical current-state descriptor production and complete key/caller tariff." + } + ], + "scope_key": "ce7411fb7cf6f3460bfc", + "scope_refinement": "pr5496-multi-target-current-row-bank-invariant", + "selection": { + "seed": "44f05f574fc586d49962b167a149c6d8", + "track": "adversarial-audit", + "chosen_suggestion": 2, + "priority_revision": 7, + "alternatives": [ + { + "task": "census-pruning-audit", + "reason": "Earlier account PR3215 audits that family; the concrete CRT implication is a current central question." + }, + { + "task": "supplier-boundary-audit", + "reason": "Complete mixed admission exceeds this scoped session; current source-sensitive successor work is separate." + } + ], + "handoff": "https://github.com/CrocSwap/integer-mult-bounds/discussions/4709#discussioncomment-19173182", + "existing_checks": "PR4100 author construction; PR5496 complete single-active-target h=2 pipeline and four controls. Its h=4 four-axis attempt was incomplete. This audit does not reuse its verifier.", + "claim": "https://github.com/CrocSwap/integer-mult-bounds/discussions/4709#discussioncomment-19173680" + }, + "dependency_heads": { + "PR5496": "a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5", + "PR5353": "07a135eee3a8da9392c4a1e01d4b89db05b4ac03", + "main_input_pin": "32890bc5de034ab8fc93ac88ead7279a6a416d04", + "PR4100": "337d04939571a637aeab54a0f58f54fde811663a" + }, + "boundary": { + "inputs": "One sequential padded-axis source, eight protected numerical ports, compiled node/row/width topology and blank new owned backing.", + "output": "Ordered right-axis micro-row stream; idle targets unchanged; source and protected ports restored.", + "cleanup": "Full produced layers, selected ROM, headers, coordinate/countdown scratch and all numerical owned ports; caller retires returned stream with close.", + "inherited": "Numerical Entry and encoded ROM producer success theorems and their stated tariffs.", + "not_claimed": "Whole-level input update, three-epoch key, full E(p,ell), binary numerical compiler, supplier admission or new kappa.", + "storage": "Exact 52-role ROM-bank and three-extra-port cell counts for one fresh RowQuery, including retained old tails; numerical Entry and any external initial blank reserve remain separate." + }, + "family_decision": "Narrow and stop after this independent audit. All consumer/whole-key costs remain explicit; no larger dependent search.", + "overlap": { + "open_prs_fetched_at": "2026-10-25T05:11:23.081429+00:00", + "discussions_fetched_at": "2026-10-25T05:12:32.988336+00:00", + "local_head_records": 7402, + "nearest": [ + "PR5496 (construction and single-active-target tests; audited here)", + "PR5353 (numerical row entry; inherited)", + "PR5092 (ROM producer; inherited)", + "PR5505 (cross-session numerical bank history; distinct)", + "PR5486 (fixed repair binary lowering; distinct)" + ], + "limits": "Complete snapshot pagination and full local note inventory; arbitrary code diffs and unpublished work outside coverage. No novelty guarantee.", + "footprint_check": { + "open_prs_fetched_at": "2026-10-25T05:31:21.052548+00:00", + "discussions_fetched_at": "2026-10-25T05:33:05.370314+00:00", + "queries": [ + "ROM bank", + "producer footprint", + "48P" + ], + "distinction": "PR5505 concerns changing-precision numerical Entry histories, not the fixed-P singleton-ROM service bank. No matching exact bank formula found in the checked main notes and snapshot." + } + } +} diff --git a/research/crt-multitarget-row-audit/VENDORED.json b/research/crt-multitarget-row-audit/VENDORED.json new file mode 100644 index 0000000000..e836c8fa64 --- /dev/null +++ b/research/crt-multitarget-row-audit/VENDORED.json @@ -0,0 +1,27 @@ +{ + "source_pr": 5496, + "source_head": "a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5", + "files": [ + { + "path": "vendor/pr5496-join.py", + "source_path": "research/crt-current-row-query/join.py", + "source_commit": "a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5", + "git_blob": "676582b4a376db375237ec52df84a3ddaf231827", + "sha256": "11c9ac1175a45edae80869b22c041e31a1b5cc75f4389ec2e073de37e547bf35" + }, + { + "path": "vendor/pr5496-PROOF.md", + "source_path": "research/crt-current-row-query/PROOF.md", + "source_commit": "a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5", + "git_blob": "0449d47c5027b4b5a6b6b5b2a87219069d4ad91c", + "sha256": "6aaa6253bf5f64f07cbfbf0a98a7c464e5a78cfa05c398f7eb41a27f03a7379c" + }, + { + "path": "vendor/pr5496-README.md", + "source_path": "research/crt-current-row-query/README.md", + "source_commit": "a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5", + "git_blob": "f5c66d745aaabb0b7ac8becaf8fda1ccfc004856", + "sha256": "41a14eb0d72c1ecce16a791b8f32d84f8c0b4e089c5e66a19067218e56d48db0" + } + ] +} diff --git a/research/crt-multitarget-row-audit/VERIFY.json b/research/crt-multitarget-row-audit/VERIFY.json new file mode 100644 index 0000000000..25c3cc3067 --- /dev/null +++ b/research/crt-multitarget-row-audit/VERIFY.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "LICENSE", + "research/crt-encoded-benes-rom-producer/PROOF.md", + "research/crt-encoded-benes-rom-producer/microcode.py", + "research/crt-encoded-benes-rom-producer/vendor/pr4192-NOTICE.md", + "research/crt-mixed-row-entry/PROOF.md", + "research/crt-mixed-row-entry/bridge.py", + "research/crt-mixed-width-caller/verify.py", + "research/encoded-crt-entry-lifecycle/PROOF.md", + "research/encoded-crt-entry-lifecycle/entry.py", + "research/encoded-current-crt/PROOF.md", + "research/encoded-current-crt/producer.py", + "research/r437-preparation-composition/predecessor4025/source/NOTICE.md", + "research/r437-preparation-composition/predecessor4025/source/records.py", + "research/r437-preparation-composition/predecessor4025/source/words.py", + "research/unconditional-batched-crt/CRT.md", + "research/unconditional-batched-crt/NOTICE.md" + ], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 300, + "checks": "Independent multi-target current-row theorem corroboration: all actual producer tables, stream alignment, same-bank history, ownership, oracle calibration and twelve controls, exact rolewise extents and the sharp fixed-P bank footprint." + }, + { + "argv": [ + "{python}", + "-O", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 300, + "checks": "Same complete scientific checks with Python assertions disabled; typed receipt comparison and explicit failures remain active." + } + ] +} diff --git a/research/crt-multitarget-row-audit/vendor/NOTICE.md b/research/crt-multitarget-row-audit/vendor/NOTICE.md new file mode 100644 index 0000000000..34cf4b6135 --- /dev/null +++ b/research/crt-multitarget-row-audit/vendor/NOTICE.md @@ -0,0 +1,14 @@ +# Retained source credit + +`pr5496-join.py`, `pr5496-PROOF.md` and `pr5496-README.md` are byte-identical +copies from JoyboyBrian's PR #5496 at +`a99afd7e0024af8367d5a2f6f4d2da57a1d13dd5`, under the repository's +Apache-2.0 license. VENDORED.json records original paths, Git blobs and +SHA256. Their original authorship and AI-assistance notices are retained. +They are audited inputs, not new implementation by this package. + +The implementation's inherited credits include Ali Romman (#5353), +Hiroki KUMAZAKI, Cinna Davis (#4100), ToikY, Tekalign, Jose Manuel, +Ryanson Jonathan, unpaidmoon, Douglas Colkitt and John-Michael Smith. +Their algorithms and proofs are explicit premises of this scoped audit. +No pending Git object is needed for replay: the audited bytes are here. diff --git a/research/crt-multitarget-row-audit/vendor/pr5496-PROOF.md b/research/crt-multitarget-row-audit/vendor/pr5496-PROOF.md new file mode 100644 index 0000000000..0449d47c50 --- /dev/null +++ b/research/crt-multitarget-row-audit/vendor/pr5496-PROOF.md @@ -0,0 +1,226 @@ +# Current numerical offsets to a physical CRT micro-row + +JoyboyBrian, with substantial OpenAI Codex assistance. Apache-2.0. + +## The exact boundary + +Use the admitted `RowEntry` domain of Ali Romman's PR5353: a power-of-two +axis count d, declared h_i in {ell-1,ell}, ell>=2, pairwise coprime moduli +2<=s_i<2^h_i, arbitrary padded current coordinates 0<=x_i<2^h_i, one +compiled tree node [a,a+n) and one global row. The source is its literal +sequential padded-axis tape, not a host list of numeric values. Eight +distinct protected numerical words are supplied with the retained legal +heads. Fixed topology, input ownership and the source numerical-operation +model remain predecessor premises. + +Let b=a+n/2, P=1+sum_{i=a}^{a+n-1}h_i, and A be the non-idle right axes +of this global row. The result is an owned stream containing, in axis +order, the h_i bits of the **micro-row output** for every right axis +b<=i=h_i+3. A node has at least two +axes, and every modulus is at least two, hence every admitted h_j>=2. +Consequently P>=h_i+2+1=h_i+3. Taking W=P meets its width contract; its +modulus and singleton-offset guards follow from the numerical theorem. +The local row is g for a long axis, and g or g-2 on the two active pieces +of a short axis, with global rows ell-1 and ell idle. This is exactly the +pinned `local_row` function, and lies in [0,2h_i-2]. + +Thus the unchanged encoded producer emits the exact canonical Beneš +network for the rotation x->x+c_i mod s_i on x existing ROM -> physical row query. +JoyboyBrian, with substantial OpenAI Codex assistance. Apache-2.0. +Topology is compiled data; runtime numeric values are never decoded. +""" + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +class Tape: + def __init__(self, cells=None): + self.cells = ['_'] if cells is None else cells + self.head = 0 + self.actions = 0 + + def read(self): + self.actions += 1 + return self.cells[self.head] + + def write(self, value): + need(value in ('_', 'L', 'R', '|', '0', '1'), 'fixed symbol') + self.actions += 1 + self.cells[self.head] = value + + def step(self, direction): + need(direction in (-1, 1) and self.head+direction >= 0, 'unit move') + self.actions += 1 + self.head += direction + if self.head == len(self.cells): + self.cells.append('_') + + def emit(self, value): + self.write(value) + self.step(1) + + def rewind(self): + while self.read() != 'L': + self.step(-1) + + def erase(self): + self.rewind() + self.step(1) + while self.read() != 'R': + self.write('_'); self.step(1) + self.write('_'); self.rewind(); self.write('_') + + +def padded_constant(target, bits, guide, w): + target.emit('L') + for bit in bits: # A compile-time constant, never an encoded input integer. + need(guide.read() == w.ONE, 'constant fits encoded width') + target.emit('1' if bit else '0'); guide.step(1) + while guide.read() == w.ONE: + target.emit('0'); guide.step(1) + need(guide.read() == w.BLANK, 'guide terminator') + target.write('R'); target.rewind(); guide.rewind() + + +def copy_numeric_field(source, target, guide, w, delimiter, suffix='R'): + target.emit('L') + while guide.read() == w.ONE: + bit = source.read() + need(bit in (w.ZERO, w.ONE), 'numeric field bit') + target.emit('1' if bit == w.ONE else '0') + source.step(1); guide.step(1) + need(source.read() == delimiter and guide.read() == w.BLANK, 'exact P-bit field') + source.step(1); guide.rewind() + if suffix == '|': + target.emit('|') + target.write('R'); target.rewind() + + +def skip_numeric_field(source, guide, w, delimiter): + while guide.read() == w.ONE: + need(source.read() in (w.ZERO, w.ONE), 'skipped numeric bit') + source.step(1); guide.step(1) + need(source.read() == delimiter and guide.read() == w.BLANK, 'skipped exact width') + source.step(1); guide.rewind() + + +def select_row_bit(rom, countdown, fault=None): + """Scan the produced row; index is an encoded countdown, not a host cursor.""" + enabled, answer, seen = True, '0', False + rom.step(1) + while rom.read() != 'R': + value = rom.read(); need(value in ('0', '1'), 'ROM row bit') + if enabled: + zero = True + countdown.step(1) + while countdown.read() != 'R': + zero = zero and countdown.read() == '0' + countdown.step(1) + countdown.rewind() + if zero: + answer, seen, enabled = value, True, False + else: + countdown.step(1) + while countdown.read() == '0': + countdown.write('1'); countdown.step(1) + need(countdown.read() == '1', 'countdown underflow') + countdown.write('0'); countdown.rewind() + rom.step(1) + need(seen, 'current coordinate outside complete row') + rom.rewind(); countdown.erase() + return '0' if fault == 'suppress_query' else answer + + +class RowQuery: + def __init__(self, w, records, entry_module, numeric, row_module, rom_module, + program, source, dirty, widths, ell, level, start, row, fault=None): + self.w, self.records, self.source = w, records, source + self.fault = fault + self.entry = row_module.RowEntry(w, records, entry_module, numeric, + source, dirty, widths, ell, level, start, row) + self.output = None + self.ports = [] + self.service = None + self.producer_steps = 0 + self.invocations = 0 + self.closed = False + if not self.entry.active: + return + # All variable-width initialization is driven by the existing unary guide. + guide = self.entry.guide + names = ('h', 'modulus', 'selected_layer', 'offsets') + headers = {name: Tape() for name in names} + coordinate, countdown, output = Tape(), Tape(), Tape() + self.ports = [*headers.values(), coordinate, countdown, output] + self.output = output + output.emit('L') + self.program = program + self.service = {name: ['_'] for name in rom_module.REGS+('arena','spool','layers','rom')} + self.service.update({name: headers[name].cells for name in names}) + self.produced_rom = Tape(self.service['rom']) + self.produced_layers = Tape(self.service['layers']) + self.ports.extend((self.produced_rom, self.produced_layers)) + result = self.entry.result['stream'] + size = 1 << level + middle, stop = start+size//2, start+size + precision = 1 + sum(widths[start:stop]) # Compiled topology only. + for axis, h in enumerate(widths): + chosen = middle <= axis < stop + active = chosen and (h == ell or row not in (ell-1, ell)) + need(source.read() == records.ROOT, 'axis tag'); source.step(1) + for _ in range(h): + need(source.read() == w.ONE, 'compiled axis width'); source.step(1) + need(source.read() == records.WORD_END, 'width delimiter'); source.step(1) + if active: + headers['modulus'].emit('L') + for _ in range(h): + bit=source.read(); need(bit in (w.ZERO,w.ONE), 'modulus bit') + if active: + need(guide.read()==w.ONE,'modulus fits guide') + headers['modulus'].emit('1' if bit==w.ONE else '0');guide.step(1) + source.step(1) + if active: + while guide.read()==w.ONE: + headers['modulus'].emit('0');guide.step(1) + need(guide.read()==w.BLANK,'guide end');guide.rewind() + headers['modulus'].write('R');headers['modulus'].rewind() + need(source.read()==records.WORD_END,'modulus delimiter');source.step(1) + if chosen: + coordinate.emit('L') + if active:countdown.emit('L') + for _ in range(h): + bit=source.read();need(bit in (w.ZERO,w.ONE),'coordinate bit') + if chosen: + symbol='1' if bit==w.ONE else '0';coordinate.emit(symbol) + if active:countdown.emit(symbol) + source.step(1) + need(source.read()==records.RECORD_END,'axis end');source.step(1) + if not chosen: + continue + coordinate.write('R');coordinate.rewind() + need(result.read()==records.ROOT,'offset record');result.step(1) + if active: + countdown.write('R');countdown.rewind() + local=row if h==ell or row>j)&1 for j in range(h.bit_length())) + rowbits=tuple((selected>>j)&1 for j in range(max(1,selected.bit_length()))) + padded_constant(headers['h'],hbits,guide,w) + padded_constant(headers['selected_layer'],rowbits,guide,w) + copy_numeric_field(result,headers['offsets'],guide,w,records.WORD_END,'|') + if fault=='zero_offset': + tape=headers['offsets'];tape.step(1) + while tape.read()!='|':tape.write('0');tape.step(1) + tape.rewind() + # Proven producer bound, compiled from topology, not input values. + budget=2*10**6*precision**2*((1<= 2 and n & (n - 1) == 0, 'oracle dyadic size') + need(sorted(permutation) == list(range(n)), 'oracle permutation') + if n == 2: + return ((0, (permutation[0], permutation[0])),) + inv = tuple(permutation.index(y) for y in range(n)) + edges = [(x, x+1) for x in range(0,n,2)] + [(inv[y],inv[y+1]) for y in range(0,n,2)] + color = next((c for c in itertools.product((0,1), repeat=n) + if all(c[x] != c[y] for x,y in edges)), None) + need(color is not None, 'oracle bipartite matchings') + children = [] + for c in (0,1): + selected = [next(x for x in (2*j,2*j+1) if color[x] == c) for j in range(n//2)] + children.append(network(tuple(permutation[x]//2 for x in selected))) + layers = [(0,tuple(color[x] ^ (x%2) for x in range(n)))] + for k in range(len(children[0])): + layers.append((children[0][k][0]+1, + tuple(children[x%2][k][1][x//2] for x in range(n)))) + layers.append((0,tuple(color[inv[y]] ^ (y%2) for y in range(n)))) + return tuple(layers) + + +def rotation(h, modulus, offset): + return tuple((x+offset)%modulus if x=moduli[i] for i in range(start,middle)): + lower=0 + else: + candidates=[k for k in range(product) + if all((k-state[i]*math.prod(moduli[start:i]))%moduli[i]==0 + for i in range(start,middle))] + need(len(candidates)==1,'oracle unique current child') + lower=candidates[0] + rows=[] + for i in range(middle,stop): + h,s,g,ell=widths[i],moduli[i],case['row'],case['ell'] + offsets=[c for c in range(s) if (product*c-lower)%s==0] + need(len(offsets)==1,'oracle unique offset') + c=offsets[0];product*=s + active=h==ell or g not in (ell-1,ell) + local=g if h==ell or g>j)&1 for j in range(width)] + + +def snapshot(ports): + return [(bytes(p.cells),p.head) for p in ports] + + +def traffic(ports): + return sum(p.meter.reads+p.meter.writes+p.meter.moves for p in ports) + + +def read_header(cells,precision,offset=False): + ending=['|','R'] if offset else ['R'] + need(cells[:1]==['L'] and cells[precision+1:precision+1+len(ending)]==ending,'header delimiters') + need(all(x in ('0','1') for x in cells[1:precision+1]),'header binary width') + need(all(x=='_' for x in cells[precision+1+len(ending):]),'header blank tail') + return sum(int(x)<=self.previous_extents[k] for k in before),'retained backing never shrinks') + need(all(all(x=='_' for x in v) for k,v in tapes.items() if k not in self.headers), + 'blank producer reentry including old tails') + values={k:read_header(tapes[k],self.precision,k=='offsets') for k in self.headers} + wanted=dict(h=expected['h'],modulus=expected['modulus'], + selected_layer=expected['local'],offsets=expected['offset']) + need(values==wanted,'current target header correspondence') + header_bytes={k:tuple(tapes[k]) for k in self.headers} + result=self.execute_original(program,tapes,max_steps=max_steps) + need(result['status']=='accept','actual producer acceptance') + need(all(h==0 for h in result['heads'].values()),'actual producer heads') + need(all(tuple(tapes[k])==header_bytes[k] for k in self.headers),'producer borrowed headers') + need(all(all(x=='_' for x in v) for k,v in tapes.items() + if k not in self.headers+('rom','layers')),'producer private restoration') + table=expected['layers'][expected['local']][1] + body(tapes['rom'],['L',*map(str,table),'R']) + layers=['L'] + for _,table in expected['layers']:layers += [*map(str,table),'|'] + body(tapes['layers'],layers+['R']) + after={k:len(v) for k,v in tapes.items()} + fresh=fresh_extents(self.registers,self.precision,expected['h']) + need(set(before)==set(fresh),'complete bank role inventory') + need(after=={k:max(before[k],fresh[k]) for k in fresh},'exact rolewise retained extents') + self.previous_extents=after + self.calls.append(dict(axis=expected['axis'],headers=values,instructions=result['steps'], + before_extents=before,after_extents=after, + rom_sha256=sha256(''.join(tapes['rom']).encode()).hexdigest())) + return result + + +CASES=[ + dict(name='two_short_first',moduli=[5,7,3,2],widths=[3,3,2,2],state=[1,5,2,1],row=0), + dict(name='two_short_distinct_offsets',moduli=[5,7,3,2],widths=[3,3,2,2],state=[3,2,1,1],row=4), + dict(name='shrinking_bank',moduli=[2,5,7,3],widths=[2,3,3,2],state=[1,4,7,3],row=4), + dict(name='growing_bank',moduli=[2,5,3,7],widths=[2,3,2,3],state=[1,4,3,7],row=4), + dict(name='leading_idle',moduli=[2,5,3,7],widths=[2,3,2,3],state=[1,4,3,7],row=2), + dict(name='trailing_idle',moduli=[2,5,7,3],widths=[2,3,3,2],state=[1,4,7,3],row=2), + dict(name='invalid_left',moduli=[5,7,3,2],widths=[3,3,2,2],state=[5,5,3,1],row=4), + dict(name='all_idle',moduli=[5,7,3,2],widths=[3,3,2,2],state=[1,5,2,1],row=2), + dict(name='nonroot_minimum_guide',moduli=[5,7,3,2],widths=[3,3,2,2],state=[1,5,1,1],row=4,level=1,start=2), +] +for _case in CASES: + _case.setdefault('ell',3);_case.setdefault('level',2);_case.setdefault('start',0) + + +def run_case(mod,case,mutation=None,fault=None): + w,r,e,num,row,rom,program=mod + raw=(PACKAGE/'vendor/pr5496-join.py').read_bytes() + if mutation: + old,new=mutation;need(raw.count(old)==1,'unique source mutation');raw=raw.replace(old,new) + join=load('audited_join',PACKAGE/'vendor/pr5496-join.py',raw) + source_data=[] + for s,h,x in zip(case['moduli'],case['widths'],case['state']): + source_data += [r.ROOT]+[w.ONE]*h+[r.WORD_END]+bits(s,h)+[r.WORD_END]+bits(x,h)+[r.RECORD_END] + source=port(w,e,source_data+[w.RIGHT]) + n=1<