From 91afbb643f7f4ccf6f34b685ecd959eb790a0f94 Mon Sep 17 00:00:00 2001 From: Chris R Date: Mon, 19 Oct 2026 22:17:02 +1100 Subject: [PATCH] research: bind joint-child batching to the staged544 native rank interface --- .../PROOF.md | 119 +++ .../README.md | 49 ++ .../RESULT.json | 733 ++++++++++++++++++ .../SOURCES.json | 83 ++ .../TASK.json | 85 ++ .../VERIFY.json | 37 + .../check_controls.py | 24 + .../frozen/PR4031-verify.py | 335 ++++++++ .../frozen/SOURCE-CREDITS.md | 14 + .../frozen/WORD-base.json.gz | Bin 0 -> 74428 bytes .../frozen/WORD-extra.json.gz | Bin 0 -> 74425 bytes .../frozen/bw_adapters.py | 165 ++++ .../frozen/clifford_exact.py | 149 ++++ .../frozen/exact_phase.py | 154 ++++ .../verify.py | 129 +++ 15 files changed, 2076 insertions(+) create mode 100644 research/staged544-joint-child-rank-interface/PROOF.md create mode 100644 research/staged544-joint-child-rank-interface/README.md create mode 100644 research/staged544-joint-child-rank-interface/RESULT.json create mode 100644 research/staged544-joint-child-rank-interface/SOURCES.json create mode 100644 research/staged544-joint-child-rank-interface/TASK.json create mode 100644 research/staged544-joint-child-rank-interface/VERIFY.json create mode 100644 research/staged544-joint-child-rank-interface/check_controls.py create mode 100644 research/staged544-joint-child-rank-interface/frozen/PR4031-verify.py create mode 100644 research/staged544-joint-child-rank-interface/frozen/SOURCE-CREDITS.md create mode 100644 research/staged544-joint-child-rank-interface/frozen/WORD-base.json.gz create mode 100644 research/staged544-joint-child-rank-interface/frozen/WORD-extra.json.gz create mode 100644 research/staged544-joint-child-rank-interface/frozen/bw_adapters.py create mode 100644 research/staged544-joint-child-rank-interface/frozen/clifford_exact.py create mode 100644 research/staged544-joint-child-rank-interface/frozen/exact_phase.py create mode 100644 research/staged544-joint-child-rank-interface/verify.py diff --git a/research/staged544-joint-child-rank-interface/PROOF.md b/research/staged544-joint-child-rank-interface/PROOF.md new file mode 100644 index 0000000000..83e6007f81 --- /dev/null +++ b/research/staged544-joint-child-rank-interface/PROOF.md @@ -0,0 +1,119 @@ +# A source-bound rank interface discriminator + +Chris R / Clear1nsight with substantial OpenAI Codex assistance. Apache-2.0. + +## Actual group and the proposed transfer + +The two PR3945 providers at `91f81d131252db704f945891da1ea54e29d46b8b` +contain the same four frame climbs on helpers600,601,602,604 at zero-based +B936,B937,B938,B941. Each entrance is span(45), each destination is +span(409,80,40,5,2), and the charged dimension increase is4. +The source window includes native maps on564 and405 at936 and on565 at939. +They remain at their literal positions. The checker traces the complete A +prefix and the B prefix through941, including every intervening native frame +boundary. It also verifies that the future helper inputs are untouched in +this window. It does not emit a retimed provider or claim a full dirty replay. +The intervening cut is checked to write only target families; its centre +descents are temporary readouts under the retained BORROW-WORD contract and +do not change the persistent helper frames used by this trace. + +Gonzalo Mier's PR4031 at `87899f26ccceb36d32985eab59dbeb467d90825b` +checks an old selected gauge44 rank4 grouping and the valid matrix identity +diag(A1,...,A4)diag(B1,...,B4)=diag(A1B1,...,A4B4) for4-by4 matrices. +It explicitly waives physical layout, native interfaces, hosting and dirty +restoration. Its optimistic profile is a screen, not a physical supplier. +We test the additional implication needed to transfer that rank16 invoice +to the actual PR3945 group. This is not a rerun of its80-call census. + +## The inherited rank parameter counts Fourier axes + +The retained exact compiler `bw_adapters.py:S_of,wrapped_ok` identifies a +rank-r residual with L (C_[r] tensor I) R, for monomial L and R. Here +C_[r]=C tensor ... tensor C on r binary axes, where +C=((1+i)I+(1-i)X)/2. `clifford_exact.py:fourier,lower_child` implements this +precise convention. A rank4 child therefore has16 nonzero entries per row +and per column; it is not a4-by4 matrix-multiplication oracle. + +The actual residual S=T_U T_E^-1 for the named source frames acts on512 +complex coordinates. Using the credited PR3987 scalar Gaussian arithmetic, +the checker evaluates all512 basis columns exactly. Each row and column has +16 nonzero entries, all with squared magnitude1/16. This fresh local check +does not import or execute the original compiler. Its arithmetic engine is +reused and credited; the proof below is independent of an observed hash. + +## Monomial and arbitrary-dirty padding obstruction + +Let A be the direct sum of the four actual residuals. It acts on2048 +coordinates and every row has support16. The desired all-input contract, +with any additional borrowed coordinates restored, is A direct-sum I_D. +It has row-support multiset {16 repeated2048 times,1 repeated D times}. +An arbitrary invertible monomial matrix permutes coordinates and multiplies +them by nonzero scalars. Left and right multiplication by such matrices +preserves the multiset of row supports. This includes source native L/R, +arbitrary monomial routing and arbitrary placement of the dirty auxiliaries. +It does not matter whether those monomials are free or charged. + +A single inherited rank16 child C_[16] tensor I has65536 nonzero entries in +every active row. Even after enough dirty padding to match dimensions, its +row-support multiset cannot equal that of A direct-sum I_D. Thus no one-call +rank16 implementation of this group exists using only monomial pre/post +maps and auxiliary coordinates returned identically for every initial value. +The same argument excludes any rank r>4 in this one-call contract, including +rank12. Identity spectator coordinates within a child are different from +an identity direct-sum bank: C_[16] tensor I still has support65536 per row. + +The dimension obstruction already appears at the literal base instance: +four512-coordinate banks give2048 coordinates, whereas a rank16 child needs +at least65536. Adding63488 arbitrary dirty coordinates resolves only that +dimension mismatch; the support mismatch remains. Clean initialized +coordinates, projections, nonmonomial encoders, multiple child queries or +changed output contracts are outside this proof and need their own invoices. + +For a tensor-power lift f>=1 of the source convention, each bank has2^(9f) +coordinates and support2^(4f), while a purported rank16 child has support +2^(16f). Four banks add two selector bits, not twelve Fourier axes. Here f +means the number of tensor copies of each source axis, not linear spectator +multiplicity used in the separate finite-lattice implementation PR4017. +The executable verifies the source base instance f=1; the all-f statement +follows from tensor-product support multiplication, not sampled larger f. + +There is a valid free algebraic batching: I_4 tensor C_[4] tensor I_32, +with the inherited block-diagonal monomial wrappers. It processes four +banks with two spectator selector axes. Its active Fourier rank remains4. +Consequently rank16 pricing does not follow from that identity. + +## Exact optimistic allowance and the complete obligation ledger + +At the pinned PR3945 tariff endpoint kappa=1730663236534549309146/10^24, +write H_r=r^(1-kappa). Replacing four H4 by one H16 would save + + 0.038249447579079975271991 < 4 H4-H16 + < 0.038249447579079975271992. + +The executable encloses log2 by an atanh series with a rational remainder +and exp(-x) by odd/even Taylor truncations, using exact fractions throughout. +This is an allowance before every additional interface cost. With every +other bill and inventory fixed, one added positive-rank recursive child costs +at least H1=1, exceeding the allowance. This conditional budget does not +exclude compensating savings elsewhere, changed hosting, or a new model. + +| Obligation | Status in this result | +|---|---| +| Four source frame transitions and literal native ordering | Freshly checked on both immutable providers | +| Exact local native all-input maps |512 basis columns checked; source arithmetic credited | +| One rank16 child with monomial wrappers and arbitrary-dirty identity return |Proved impossible under the stated contract | +| Valid spectator batching |Algebraic identity; active rank remains4 | +| Optimistic4H4-H16 allowance |Exact rational enclosure, before extra charges | +| Physical gathering/routing and larger hosting |Unknown; not zero | +| Changed nonlinear/linear nonmonomial encoders and dirty compensation |Unknown; excluded from the obstruction | +| Supplier stock, precision, tape, complete owner realization and root |Inherited/unrun; no changed provider or kappa claimed | + +## Open next questions + +The useful changed premise is a genuine multi-query or nonmonomial encoding +that preserves the four arbitrary inputs, permits their actual consumers, +and restores every borrowed coordinate. Its first test should exhibit one +explicit map outside the row-support argument and explain how its complete +cost fits the0.03825 allowance or which separately credited cost disappears. +A larger zero-charge grouping or a matrix direct-sum identity alone cannot +answer that question. This route stops here; no larger census is justified. diff --git a/research/staged544-joint-child-rank-interface/README.md b/research/staged544-joint-child-rank-interface/README.md new file mode 100644 index 0000000000..34f04a6771 --- /dev/null +++ b/research/staged544-joint-child-rank-interface/README.md @@ -0,0 +1,49 @@ +# Joint-child rank interface on the staged544 source + +**Scoped obstruction and exact allowance; no new kappa.** + +Four actual PR3945 rank4 frame climbs share their entrance and destination. +Their direct sum has16 nonzero entries per row. A single inherited rank16 +child has65536, so arbitrary monomial gathering/wrappers and identically +returned arbitrary-dirty padding cannot turn one into the other. Rank counts +Fourier axes in this supplier; ordinary block-matrix multiplication uses a +different interface. Valid selector batching retains active rank4. + +This resolves one missing transfer boundary from Gonzalo Mier's explicitly +zero-charge PR4031 screen, without disputing its matrix identity or claiming +a general batching obstruction. At the pinned PR3945 endpoint the hypothetical +4H4-to-H16 saving is only0.038249447579079975271991–992 H1 units, before +all omitted costs. [PROOF.md](PROOF.md) states the contract, proof, cost-status +ledger and open next questions. [RESULT.json](RESULT.json) retains the source +group, native events, exact support and rational allowance. + +Run the read-only registered normal/optimized replay: + +```sh +python3 scripts/research_package.py --package research/staged544-joint-child-rank-interface +``` + +Direct `python3 -B research/staged544-joint-child-rank-interface/verify.py` +also works without Git. `--record` intentionally regenerates RESULT.json; +ordinary verification checks its equality without writes. Frozen input hashes +are authenticated before the scientific checks. Five positive/negative +mathematical controls distinguish spectator identity from active Fourier +axes and reject the rank12/rank16 padded substitutions. This is not a full +provider dirty-state or owner replay. + +## Open next questions + +Can a nonmonomial or multi-query encoding preserve all four actual inputs, +their consumers and arbitrary borrowed state within the complete allowance? +First exhibit the changed map and price each new operation and any offsetting +credit. Physical encoding and restoration remain unresolved. A larger +zero-charge census does not remove the support obstruction in this contract. + +Credit: Gonzalo Mier/PR4031 provides the motivating rank4 retimed screen; +Dugongue/PR3945 provides both staged544 words; PR3969 binds their owner-cost +interpretation; PR3987 supplies the retained exact Gaussian phase arithmetic +and native compiler snapshots. The native code credits DreamingOfClouds, +chafreaky/PR458, PR2226 and its retained source lineage. Preserve the source +notices in frozen files. New proof/checker: Chris R / Clear1nsight with +substantial OpenAI Codex assistance. Apache-2.0. No independent human or +proof-assistant verification is claimed. diff --git a/research/staged544-joint-child-rank-interface/RESULT.json b/research/staged544-joint-child-rank-interface/RESULT.json new file mode 100644 index 0000000000..e182e7ab82 --- /dev/null +++ b/research/staged544-joint-child-rank-interface/RESULT.json @@ -0,0 +1,733 @@ +{ + "budget": { + "allowance": "4 H4 - H16", + "definition": "H_r=r^(1-kappa)", + "denominator": 1000000000000000000000000, + "kappa": "865331618267274654573/500000000000000000000000", + "lower_numerator": 38249447579079975271991, + "one_extra_H1_exceeds_allowance": true, + "upper_numerator": 38249447579079975271992 + }, + "controls": [ + "spectator-direct-sum positive", + "rank16 monomial/dirty-padding negative", + "rank12 monomial/dirty-padding negative", + "two-axis exact tensor versus selector negative", + "actual source frame contraction negative" + ], + "native": { + "column_support": { + "16": 512 + }, + "columns": 512, + "raw_gaussian_digest": "cceea321d198e93bc236fd1d3d95a0a98f52e27617ade2596ef4fe8557a19214", + "row_support": { + "16": 512 + } + }, + "new_kappa": false, + "providers": { + "base": { + "calls": [ + { + "index": 936, + "new": [ + 0, + 2, + 5, + 7, + 40, + 42, + 45, + 47, + 80, + 82, + 85, + 87, + 120, + 122, + 125, + 127, + 409, + 411, + 412, + 414, + 433, + 435, + 436, + 438, + 457, + 459, + 460, + 462, + 481, + 483, + 484, + 486 + ], + "old": [ + 0, + 45 + ], + "rank": 4, + "register": 600 + }, + { + "index": 937, + "new": [ + 0, + 2, + 5, + 7, + 40, + 42, + 45, + 47, + 80, + 82, + 85, + 87, + 120, + 122, + 125, + 127, + 409, + 411, + 412, + 414, + 433, + 435, + 436, + 438, + 457, + 459, + 460, + 462, + 481, + 483, + 484, + 486 + ], + "old": [ + 0, + 45 + ], + "rank": 4, + "register": 601 + }, + { + "index": 938, + "new": [ + 0, + 2, + 5, + 7, + 40, + 42, + 45, + 47, + 80, + 82, + 85, + 87, + 120, + 122, + 125, + 127, + 409, + 411, + 412, + 414, + 433, + 435, + 436, + 438, + 457, + 459, + 460, + 462, + 481, + 483, + 484, + 486 + ], + "old": [ + 0, + 45 + ], + "rank": 4, + "register": 602 + }, + { + "index": 941, + "new": [ + 0, + 2, + 5, + 7, + 40, + 42, + 45, + 47, + 80, + 82, + 85, + 87, + 120, + 122, + 125, + 127, + 409, + 411, + 412, + 414, + 433, + 435, + 436, + 438, + 457, + 459, + 460, + 462, + 481, + 483, + 484, + 486 + ], + "old": [ + 0, + 45 + ], + "rank": 4, + "register": 604 + } + ], + "native_events_preserved": [ + { + "columns": [ + 2, + 1, + 8, + 16, + 128, + 29, + 160, + 81, + 408 + ], + "entrance": [ + 258, + 130, + 84, + 44, + 1 + ], + "index": 936, + "register": 564, + "terminal": [ + 409, + 80, + 40, + 5, + 2 + ] + }, + { + "columns": [ + 1, + 8, + 16, + 128, + 256, + 147, + 140, + 169, + 209 + ], + "entrance": [ + 265, + 137, + 75, + 45 + ], + "index": 936, + "register": 405, + "terminal": [ + 80, + 40, + 5, + 2 + ] + }, + { + "columns": [ + 1, + 8, + 16, + 128, + 155, + 148, + 160, + 88, + 401 + ], + "entrance": [ + 258, + 130, + 74, + 45, + 31 + ], + "index": 939, + "register": 565, + "terminal": [ + 409, + 80, + 40, + 5, + 2 + ] + } + ], + "scalar_window": [ + [ + "add", + 600, + 564, + -1, + 1, + [ + 409, + 80, + 40, + 5, + 2 + ] + ], + [ + "add", + 601, + 564, + -1, + 1, + [ + 409, + 80, + 40, + 5, + 2 + ] + ], + [ + "add", + 602, + 564, + 1, + 1, + [ + 409, + 80, + 40, + 5, + 2 + ] + ], + [ + "add", + 600, + 565, + 1, + 1, + [ + 409, + 80, + 40, + 5, + 2 + ] + ], + [ + "add", + 601, + 565, + -1, + 1, + [ + 409, + 80, + 40, + 5, + 2 + ] + ], + [ + "add", + 604, + 565, + -1, + 1, + [ + 409, + 80, + 40, + 5, + 2 + ] + ] + ], + "scope": "Source chronology and disjoint-future-input check; no provider rewrite" + }, + "extra": { + "calls": [ + { + "index": 936, + "new": [ + 0, + 2, + 5, + 7, + 40, + 42, + 45, + 47, + 80, + 82, + 85, + 87, + 120, + 122, + 125, + 127, + 409, + 411, + 412, + 414, + 433, + 435, + 436, + 438, + 457, + 459, + 460, + 462, + 481, + 483, + 484, + 486 + ], + "old": [ + 0, + 45 + ], + "rank": 4, + "register": 600 + }, + { + "index": 937, + "new": [ + 0, + 2, + 5, + 7, + 40, + 42, + 45, + 47, + 80, + 82, + 85, + 87, + 120, + 122, + 125, + 127, + 409, + 411, + 412, + 414, + 433, + 435, + 436, + 438, + 457, + 459, + 460, + 462, + 481, + 483, + 484, + 486 + ], + "old": [ + 0, + 45 + ], + "rank": 4, + "register": 601 + }, + { + "index": 938, + "new": [ + 0, + 2, + 5, + 7, + 40, + 42, + 45, + 47, + 80, + 82, + 85, + 87, + 120, + 122, + 125, + 127, + 409, + 411, + 412, + 414, + 433, + 435, + 436, + 438, + 457, + 459, + 460, + 462, + 481, + 483, + 484, + 486 + ], + "old": [ + 0, + 45 + ], + "rank": 4, + "register": 602 + }, + { + "index": 941, + "new": [ + 0, + 2, + 5, + 7, + 40, + 42, + 45, + 47, + 80, + 82, + 85, + 87, + 120, + 122, + 125, + 127, + 409, + 411, + 412, + 414, + 433, + 435, + 436, + 438, + 457, + 459, + 460, + 462, + 481, + 483, + 484, + 486 + ], + "old": [ + 0, + 45 + ], + "rank": 4, + "register": 604 + } + ], + "native_events_preserved": [ + { + "columns": [ + 2, + 1, + 8, + 16, + 128, + 29, + 160, + 81, + 408 + ], + "entrance": [ + 258, + 130, + 84, + 44, + 1 + ], + "index": 936, + "register": 564, + "terminal": [ + 409, + 80, + 40, + 5, + 2 + ] + }, + { + "columns": [ + 1, + 8, + 16, + 128, + 256, + 147, + 140, + 169, + 209 + ], + "entrance": [ + 265, + 137, + 75, + 45 + ], + "index": 936, + "register": 405, + "terminal": [ + 80, + 40, + 5, + 2 + ] + }, + { + "columns": [ + 1, + 8, + 16, + 128, + 155, + 148, + 160, + 88, + 401 + ], + "entrance": [ + 258, + 130, + 74, + 45, + 31 + ], + "index": 939, + "register": 565, + "terminal": [ + 409, + 80, + 40, + 5, + 2 + ] + } + ], + "scalar_window": [ + [ + "add", + 600, + 564, + -1, + 1, + [ + 409, + 80, + 40, + 5, + 2 + ] + ], + [ + "add", + 601, + 564, + -1, + 1, + [ + 409, + 80, + 40, + 5, + 2 + ] + ], + [ + "add", + 602, + 564, + 1, + 1, + [ + 409, + 80, + 40, + 5, + 2 + ] + ], + [ + "add", + 600, + 565, + 1, + 1, + [ + 409, + 80, + 40, + 5, + 2 + ] + ], + [ + "add", + 601, + 565, + -1, + 1, + [ + 409, + 80, + 40, + 5, + 2 + ] + ], + [ + "add", + 604, + 565, + -1, + 1, + [ + 409, + 80, + 40, + 5, + 2 + ] + ] + ], + "scope": "Source chronology and disjoint-future-input check; no provider rewrite" + } + }, + "status": "PASS_JOINT_CHILD_INTERFACE_DISCRIMINATOR", + "whole_provider_dirty_replay": false +} diff --git a/research/staged544-joint-child-rank-interface/SOURCES.json b/research/staged544-joint-child-rank-interface/SOURCES.json new file mode 100644 index 0000000000..42eede795a --- /dev/null +++ b/research/staged544-joint-child-rank-interface/SOURCES.json @@ -0,0 +1,83 @@ +{ + "schema_version": 1, + "base_commit": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "b1fea0c94436b236cc2b7d41a7be032811b94c81", + "sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "67f085acd86acd7d4e03922d9cf4b26bca66fed5", + "sha256": "47b42433f5a85809a3aadd29c2c339da2c6ed728e4f7762df6b88bccb7874cf0" + } + ], + "snapshots": [ + { + "local": "frozen/WORD-base.json.gz", + "source_repository": "CrocSwap/integer-mult-bounds", + "source_commit": "91f81d131252db704f945891da1ea54e29d46b8b", + "source_path": "research/staged544-terminal-gap-fill/owner/inputs/WORD-base.json.gz", + "bytes": 74428, + "sha256": "08e6c96fbe3dfec96cb8451b3867ef8c1a214109ecd1e5af7fcc28e0f05728d0", + "git_blob": "806784bf99d9d15004d2d227d06268556a0726c8" + }, + { + "local": "frozen/WORD-extra.json.gz", + "source_repository": "CrocSwap/integer-mult-bounds", + "source_commit": "91f81d131252db704f945891da1ea54e29d46b8b", + "source_path": "research/staged544-terminal-gap-fill/owner/inputs/WORD-extra.json.gz", + "bytes": 74425, + "sha256": "d83c2ec9cecc0ad092d34ea4080b28a4fd7199579356b6d5a8fc6cd53ff93299", + "git_blob": "c531be7383ad3ba941600c7ced14e5e10d6d1c67" + }, + { + "local": "frozen/exact_phase.py", + "source_path": "research/staged544-native-quadratic-audit/exact_phase.py", + "source_repository": "Clear1nsight/integer-mult-bounds", + "source_commit": "fc536202fdaa924158789a5ef59ac079bbe21922", + "bytes": 6557, + "sha256": "e3d76b3373ff40a83a4b212b3fe1c0b431b3cfdc807da601d6e7f273c02c6d30", + "git_blob": "4659b91e1b997a22e98a8631947aa79193fcf96f" + }, + { + "local": "frozen/bw_adapters.py", + "source_path": "research/staged544-native-quadratic-audit/vendor/bw_adapters.py", + "source_repository": "Clear1nsight/integer-mult-bounds", + "source_commit": "fc536202fdaa924158789a5ef59ac079bbe21922", + "bytes": 13755, + "sha256": "c5907050a9a7fa36d4fcba3ad4fe440d1bec2063360c095013891785ba65c3ce", + "git_blob": "82beaa9c1d13bcd5f79d0a5e10e8a10733eac347" + }, + { + "local": "frozen/clifford_exact.py", + "source_path": "research/staged544-native-quadratic-audit/vendor/clifford_exact.py", + "source_repository": "Clear1nsight/integer-mult-bounds", + "source_commit": "fc536202fdaa924158789a5ef59ac079bbe21922", + "bytes": 6824, + "sha256": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "git_blob": "166841a037f069249f6f7f6dedb89248812f59e2" + }, + { + "local": "frozen/PR4031-verify.py", + "source_path": "research/complex-rank4-retimed-blocks/verify.py", + "source_repository": "Gonzalo-Mier/integer-mult-bounds", + "source_commit": "87899f26ccceb36d32985eab59dbeb467d90825b", + "bytes": 14905, + "sha256": "db4b7c74f607ba4b97eb3fec0b7238449d0be3d2938f91916122ee676a720d35", + "git_blob": "9cc113d7df2f1c7dd3a9f3bc9c2e0871865aa2db" + }, + { + "local": "frozen/SOURCE-CREDITS.md", + "source_path": "research/staged544-native-quadratic-audit/SOURCE-CREDITS.md", + "source_repository": "Clear1nsight/integer-mult-bounds", + "source_commit": "fc536202fdaa924158789a5ef59ac079bbe21922", + "bytes": 2882, + "sha256": "d4a13d8b8ed9cdb594f00efb3d1a336e09d934423330f02a1514308a720c278b", + "git_blob": "c054fad87eeaa510865e682ee0c976c4cd728da2" + } + ] +} diff --git a/research/staged544-joint-child-rank-interface/TASK.json b/research/staged544-joint-child-rank-interface/TASK.json new file mode 100644 index 0000000000..9bf51afe8c --- /dev/null +++ b/research/staged544-joint-child-rank-interface/TASK.json @@ -0,0 +1,85 @@ +{ + "schema_version": 1, + "task_id": "complex-rank-shape-decoder", + "priority_revision": 6, + "base_commit": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "original_card": { + "id": "complex-rank-shape-decoder", + "question": "Can a decoder deliver the local paid mass in fewer, larger-rank children (block frame climbs instead of rank-1 to rank-3 steps)?", + "starting_points": [ + "docs/research/research-family-status.md", + "research/complex-local-word-ceiling/README.md", + "research/complex-decoder-field-extension-seed44/README.md", + "research/complex-frame-pair-decoders/README.md", + "research/selected-k8-unrestricted-ends/README.md", + "research/eisenstein-reduction-copy-floor/README.md" + ], + "methods": [ + "Find one exact small decoding identity whose frame path climbs in blocks, and price its complete per-call profile.", + "Bound the best effective child rank achievable for one fixed support alphabet, including copies, frames and restoration." + ], + "acceptance_gate": "A per-call local profile, with all copied information, frames and restoration counted, whose ceiling exceeds the selected word's by at least 5%; masked or overcomplete supports must change an assumption of the eight-term all-pairs bound. 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": "Before any synthesis, write the candidate per-call local profile (and centre charge / unpaid coordinates if changed) and screen it with ceiling.ceiling(); reject it if even the ideal ceiling does not beat the selected word's by your stated margin. Ideal budget: rank-16 delivery is 2.31x (levers.py).", + "bottleneck_link": "Rank-1 children are about half of recursive cost; the selected word's effective child rank is about 3.9. Larger-rank delivery lowers recursive cost per unit of paid mass.", + "allowed_variations": [ + "One masked, overcomplete or block decoder family with exact labels and supports.", + "A scoped lower bound on effective rank for one alphabet.", + "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": [ + "Repacking idle remainders of an unchanged word (covered by the packing ceiling).", + "Repeating the eight-term all-pairs search inside its proved scope.", + "Only changing helper terminal subspaces and monotone frames within the fixed scalar word, entrances and cleanup contract already covered by #1995/#2013.", + "Searching below C=40 in the #2017 Eisenstein binary scalar-rectangle or fixed-support block-linear additive pairing model; specify a changed premise instead. This bound does not cover every complex decoder.", + "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": [ + "rank shape", + "block climb", + "masked decoder", + "overcomplete", + "effective rank" + ] + }, + "scope_status": "refined", + "actual_scope": "One source-bound PR3945 rank4 group; discriminate rank16 direct-sum transfer under monomial wrappers and arbitrary-dirty identity return.", + "scope_change_reason": "Explicitly assigned current-source combination of PR4031 screen with PR3945 native contract; resolve missing physical rank interface before construction.", + "bottleneck_link": "Larger child pricing only applies when the actual inherited Fourier-axis interface is implemented.", + "budget_minutes": 45, + "stop_rule": "Stop at source-bound support discriminator and exact allowance; no larger census.", + "outcome": "completed", + "evidence": "PROOF.md and RESULT.json", + "author": "Chris R / Clear1nsight", + "ai_assistance": "Substantial OpenAI Codex assistance.", + "open_questions": [ + { + "question": "Can a nonmonomial or multi-query encoding meet the actual four-input, consumer and dirty-return contract within the full allowance?", + "why_it_matters": "Monomial one-child transfer is ruled out; arithmetic profile combination is insufficient.", + "first_step": "Exhibit one explicit nonmonomial map and every charged operation, including any compensating credit.", + "blocked_by": "Physical encoding, restoration and full invoice are unknown." + } + ], + "overlap": { + "root_cache": "research-round4-coordination/overlap-entry-cache.json", + "open_pr_bodies": 733, + "discussion_coverage": "Root partial live1166 read; not exhaustive", + "nearest": [ + "4031", + "3969", + "3987", + "4017" + ], + "novelty_claim": false + }, + "expansion_decision": "Narrow to one missing interface implication; stop without a supplier." +} diff --git a/research/staged544-joint-child-rank-interface/VERIFY.json b/research/staged544-joint-child-rank-interface/VERIFY.json new file mode 100644 index 0000000000..309abd26ca --- /dev/null +++ b/research/staged544-joint-child-rank-interface/VERIFY.json @@ -0,0 +1,37 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 90, + "checks": "Both source groups, exact all-column residual, support obstruction, rational budget and controls." + }, + { + "argv": [ + "{python}", + "-O", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 90, + "checks": "Same production verification with assertions disabled." + }, + { + "argv": [ + "{python}", + "-B", + "{package}/check_controls.py" + ], + "timeout_seconds": 90, + "checks": "Source corruption and stale retained rank reject through actual normal and optimized CLI." + } + ] +} diff --git a/research/staged544-joint-child-rank-interface/check_controls.py b/research/staged544-joint-child-rank-interface/check_controls.py new file mode 100644 index 0000000000..927f515171 --- /dev/null +++ b/research/staged544-joint-child-rank-interface/check_controls.py @@ -0,0 +1,24 @@ +"""Production-CLI rejecting controls, Apache-2.0, Chris R with OpenAI Codex.""" +from pathlib import Path +import tempfile,shutil,subprocess,sys,json +P=Path(__file__).resolve().parent + +def need(ok,why): + if not ok:raise ValueError(why) + +def main(): + for optimized in (False,True): + for mutation in ('source-byte','retained-rank'): + with tempfile.TemporaryDirectory(prefix='joint-child-control-') as tmp: + dst=Path(tmp)/'package';shutil.copytree(P,dst,ignore=shutil.ignore_patterns('__pycache__')) + if mutation=='source-byte': + f=dst/'frozen/WORD-base.json.gz';f.chmod(0o644);d=bytearray(f.read_bytes());d[-1]^=1;f.write_bytes(d) + expected='frozen source changed' + else: + f=dst/'RESULT.json';f.chmod(0o644);j=json.loads(f.read_text());j['providers']['base']['calls'][0]['rank']=16;f.write_text(json.dumps(j));expected='retained result differs' + argv=[sys.executable]+(['-O'] if optimized else [])+['-B',str(dst/'verify.py')] + p=subprocess.run(argv,capture_output=True,text=True,timeout=90) + need(p.returncode!=0 and expected in p.stderr,'production mutation accepted or wrong reason') + print('PASS_PRODUCTION_CLI_CONTROLS: source corruption and stale rank receipt reject in normal/optimized Python') + +if __name__=='__main__':main() diff --git a/research/staged544-joint-child-rank-interface/frozen/PR4031-verify.py b/research/staged544-joint-child-rank-interface/frozen/PR4031-verify.py new file mode 100644 index 0000000000..9cc113d7df --- /dev/null +++ b/research/staged544-joint-child-rank-interface/frozen/PR4031-verify.py @@ -0,0 +1,335 @@ +#!/usr/bin/env python3 +"""Verify a scoped rank-4 block-retiming screen on the pinned gauge44 trace.""" + +from collections import Counter, defaultdict +from decimal import Decimal, localcontext +from fractions import Fraction as Q +import gzip +import hashlib +import json +from pathlib import Path +import sys +import tarfile + + +ROOT = Path(__file__).resolve().parents[2] +PACKAGE = Path(__file__).resolve().parent +ARCHIVE = ROOT / "research/community-frontier1094-audit/selected-replay.tar.gz" +MEMBER = "candidate/strict/global/base/providers/gauge44/LOCAL-PROGRAMS.json.gz" +CANONICAL_MEMBER = "candidate/strict/global/base/providers/gauge44/CANONICAL-WORD.json.gz" +ARCHIVE_SHA256 = "f1da80610bf33c58527f18ad63b4350d0b864e1d4486141ee17ac9bed4d529d6" +PROGRAM_SHA256 = "241fde27d4e43f5a9cb6b128f9f76c5131a53d09f0371676163f914d0b0fef3a" +WORD_SHA256 = "16bc0ebb04b4be6c0ade74badc6a0c0cdba4215eda86e4ff9f13abf8ecebd219" +EXPECTED_PROFILE = {1: 2412, 2: 418, 3: 432, 4: 142, 5: 82, 8: 8} +EXPECTED_TARGETS = { + **{frame: 7 for frame in range(415, 423)}, + 431: 4, 432: 4, 433: 4, 434: 4, 436: 4, 437: 4, +} +MODEL = (73, 896, 9, 64) +GRID = Q(1, 10**13) + + +def require(condition, message): + if not condition: + raise AssertionError(message) + + +def read_json_gzip(raw): + return json.loads(gzip.decompress(raw)) + + +def lregisters(operation): + """Return the L-registers read or written by a local scalar macro.""" + require(operation[0] == "add", f"unexpected retimed scalar macro: {operation}") + require(operation[1][0] == "L" and operation[2][0] == "L", + f"rank-4 retiming is not confined to L registers: {operation}") + return {operation[1][1], operation[2][1]} + + +def linear_state(events): + """Symbolically execute child outputs and rational ADDs on arbitrary L state.""" + state = {} + + def get(reg): + return state.get(reg, {f"x{reg}": Q(1)}) + + def add_scaled(left, right, scale): + out = dict(left) + for symbol, coefficient in right.items(): + out[symbol] = out.get(symbol, Q(0)) + scale * coefficient + if out[symbol] == 0: + del out[symbol] + return out + + for position, event in enumerate(events): + if event[0] == "climb": + reg = event[2] + state[reg] = {f"q{id(event)}": Q(1)} + else: + require(event[0] == "scalar", f"unexpected event in block window: {event}") + operation = event[1] + lregisters(operation) + destination, source = operation[1][1], operation[2][1] + scale = Q(operation[3], operation[4]) + state[destination] = add_scaled(get(destination), get(source), scale) + return state + + +def verify_batch(events, call_indices, block_side): + """Check a zero-charge retiming and the linear context around a block.""" + calls = [events[index] for index in call_indices] + require(len(calls) in (3, 4), "a block must contain three or four rank-4 calls") + require(all(call[0] == "climb" and call[-1] == 4 for call in calls), + "a block contains a non-rank-4 child") + require(len({call[1] for call in calls}) == 1, "mixed operand phase in one block") + require(len({call[4] for call in calls}) == 1, "mixed target frame in one block") + registers = [call[2] for call in calls] + require(len(set(registers)) == len(registers), "block child outputs alias") + require(sum(call[-1] for call in calls) == block_side, "wrong direct-sum side") + + lo, hi = call_indices[0], call_indices[-1] + interval = events[lo:hi + 1] + interval_calls = [lo + j for j, event in enumerate(interval) if event[0] == "climb"] + require(interval_calls == call_indices, "another child occurs inside the proposed block") + for event in interval: + if event[0] == "scalar": + lregisters(event[1]) + else: + require(event[0] == "climb", f"non-scalar event inside block: {event}") + + # A scalar reference to a later child register would observe a different value + # after the calls are moved before the ADDs. Exclude every such hazard. + for position in range(lo, hi + 1): + event = events[position] + if event[0] != "scalar": + continue + future = {call[2] for call_index, call in zip(call_indices, calls) + if call_index > position} + require(not (lregisters(event[1]) & future), + f"retiming changes a future child's input at event {position}") + + original = interval + retimed = [events[index] for index in call_indices] + retimed.extend(event for event in interval if event[0] == "scalar") + require(linear_state(original) == linear_state(retimed), + "moving the ADDs after independent child calls changes the exact linear map") + return { + "target_frame": calls[0][4], + "phase": calls[0][1], + "source_frames": [call[3] for call in calls], + "output_registers": registers, + "event_interval": [lo, hi], + "retimed_scalar_events": sum(event[0] == "scalar" for event in interval), + "block_side": block_side, + } + + +def verify_direct_sum_identity(blocks): + """Exhaustively compare all entries in diag(A_i)diag(B_i).""" + side = 4 * blocks + + def matrix_entry(operand, row, column): + if row // 4 != column // 4: + return None + return f"{operand}{row // 4}_{row % 4}_{column % 4}" + + for row in range(side): + for column in range(side): + actual = Counter() + for inner in range(side): + left = matrix_entry("a", row, inner) + right = matrix_entry("b", inner, column) + if left is not None and right is not None: + actual[(left, right)] += 1 + expected = Counter() + if row // 4 == column // 4: + block = row // 4 + for inner in range(4): + expected[(f"a{block}_{row % 4}_{inner}", + f"b{block}_{inner}_{column % 4}")] += 1 + require(actual == expected, + f"block-diagonal multiplication identity failed at {(row, column)}") + + +def decimal(q): + with localcontext() as context: + context.prec = 30 + return str(Decimal(q.numerator) / Decimal(q.denominator)) + + +def as_profile(counter): + return {str(rank): counter[rank] for rank in sorted(counter) if counter[rank]} + + +def ceiling(profile): + sys.path.insert(0, str(ROOT / "research/complex-local-word-ceiling")) + import ceiling as engine + return engine.ceiling(profile, *MODEL, grid=GRID)[1] + + +def main(write=False): + archive_bytes = ARCHIVE.read_bytes() + require(hashlib.sha256(archive_bytes).hexdigest() == ARCHIVE_SHA256, + "selected replay archive SHA-256 mismatch") + with tarfile.open(ARCHIVE, "r:gz") as archive: + program_bytes = archive.extractfile(MEMBER).read() + word_bytes = archive.extractfile(CANONICAL_MEMBER).read() + require(hashlib.sha256(program_bytes).hexdigest() == PROGRAM_SHA256, + "local program member SHA-256 mismatch") + require(hashlib.sha256(word_bytes).hexdigest() == WORD_SHA256, + "canonical word member SHA-256 mismatch") + + programs = read_json_gzip(program_bytes) + canonical = read_json_gzip(word_bytes) + selected_profile = {int(rank): int(count) + for rank, count in canonical["local_profile"].items()} + require(selected_profile == EXPECTED_PROFILE, "canonical local profile changed") + require(sum(rank * count for rank, count in selected_profile.items()) == 5586, + "selected paid rank mass changed") + + orientation_results = {} + first_orientation_batches = None + for orientation in ("forward", "backward"): + events = programs[orientation] + profile = Counter(event[-1] for event in events + if event[0] == "climb" or event[0] == "center") + require(dict(profile) == EXPECTED_PROFILE, + f"{orientation} event profile differs from the pinned word") + + by_target = defaultdict(list) + for index, event in enumerate(events): + if event[0] == "climb" and event[-1] == 4: + by_target[event[4]].append(index) + eligible = {frame: indices for frame, indices in by_target.items() + if len(indices) >= 4} + require({frame: len(indices) for frame, indices in eligible.items()} == EXPECTED_TARGETS, + f"{orientation} rank-4 target-frame census changed") + + batches = [] + for frame in sorted(eligible): + indices = eligible[frame] + sizes = [4, 3] if len(indices) == 7 else [4] + offset = 0 + for size in sizes: + chunk = indices[offset:offset + size] + offset += size + batches.append(verify_batch(events, chunk, size * 4)) + require(offset == len(indices), "target-frame calls were not fully partitioned") + require(len(batches) == 22, "unexpected number of direct-sum blocks") + require(Counter(batch["block_side"] for batch in batches) == {12: 8, 16: 14}, + "unexpected block-side distribution") + if first_orientation_batches is None: + first_orientation_batches = batches + else: + require(batches == first_orientation_batches, + "forward and backward retiming schedules differ") + orientation_results[orientation] = { + "rank4_calls": profile[4], + "eligible_target_frames": {str(frame): len(indices) + for frame, indices in sorted(eligible.items())}, + "blocks": len(batches), + "grouped_calls": sum(len(batch["output_registers"]) for batch in batches), + "grouped_rank_mass": sum(batch["block_side"] for batch in batches), + "block_sides": {str(side): count for side, count in + sorted(Counter(batch["block_side"] for batch in batches).items())}, + "retimed_scalar_events": sum(batch["retimed_scalar_events"] for batch in batches), + } + + verify_direct_sum_identity(3) + verify_direct_sum_identity(4) + + candidate = dict(selected_profile) + candidate[4] -= 80 + candidate[12] = candidate.get(12, 0) + 8 + candidate[16] = candidate.get(16, 0) + 14 + require(candidate[4] == 62, "candidate rank-4 count mismatch") + require(sum(rank * count for rank, count in candidate.items()) == 5586, + "rank-4 fusion changed paid rank mass") + + mixed_result = json.loads((ROOT / "research/complex-mixed-rank-diagonal-seed8433/RESULT.json") + .read_text()) + mixed_profile = {int(rank): int(count) + for rank, count in mixed_result["selected_profile"].items()} + require(sum(rank * count for rank, count in mixed_profile.items()) == 5586, + "pinned rank-2/3 profile does not preserve selected mass") + require(mixed_profile.get(4, 0) >= 80, + "rank-2/3 comparison profile lacks disjoint rank-4 calls") + combined = dict(mixed_profile) + combined[4] -= 80 + combined[12] = combined.get(12, 0) + 8 + combined[16] = combined.get(16, 0) + 14 + require(sum(rank * count for rank, count in combined.items()) == 5586, + "composed zero-charge profile changes paid mass") + + baseline_hi = ceiling(selected_profile) + candidate_hi = ceiling(candidate) + mixed_hi = ceiling(mixed_profile) + combined_hi = ceiling(combined) + kappa = lambda alpha: alpha / (1 + alpha) + result = { + "status": "PASS_COMPLEX_RANK4_RETIMED_BLOCKS", + "source": { + "archive_sha256": ARCHIVE_SHA256, + "local_program_sha256": PROGRAM_SHA256, + "canonical_word_sha256": WORD_SHA256, + "selected_profile": as_profile(Counter(selected_profile)), + }, + "per_orientation": orientation_results, + "direct_sum_identity": { + "tested_block_counts": [3, 4], + "child_side_4_to_block_side": {"3": 12, "4": 16}, + "identity": "diag(A_1,...,A_t) diag(B_1,...,B_t) = diag(A_1 B_1,...,A_t B_t)", + }, + "rank4_candidate": { + "grouped_calls": 80, + "new_blocks": {"12": 8, "16": 14}, + "profile": as_profile(Counter(candidate)), + "rank_mass": 5586, + "charges_waived": [ + "physical input gathering and block-diagonal layout", + "output routing and storage", + "frame/interface conversion", + "hosting and precision", + "arbitrary-dirty restoration", + ], + "ceiling_a_hi": str(candidate_hi), + "kappa_cap_hi": str(kappa(candidate_hi)), + "ceiling_gain_percent_over_selected": decimal(100 * (candidate_hi / baseline_hi - 1)), + "five_percent_gate_passed_alone": candidate_hi >= baseline_hi * Q(105, 100), + }, + "joint_zero_charge_screen": { + "predecessor": "research/complex-mixed-rank-diagonal-seed8433/RESULT.json", + "predecessor_profile": as_profile(Counter(mixed_profile)), + "composed_profile": as_profile(Counter(combined)), + "composed_ceiling_a_hi": str(combined_hi), + "composed_kappa_cap_hi": str(kappa(combined_hi)), + "ceiling_gain_percent_over_selected": decimal(100 * (combined_hi / baseline_hi - 1)), + "five_percent_gate_passed_under_zero_charge_only": combined_hi >= baseline_hi * Q(105, 100), + "new_supplier_or_kappa": False, + }, + "baseline_ceiling_a_hi": str(baseline_hi), + "mixed_rank23_ceiling_a_hi": str(mixed_hi), + "scope_wall": "The frozen trace authenticates child ranks, target frames and scalar register context, but does not specify a physical block-input/output ownership contract or complete gathering, routing, hosting, precision and dirty-restoration bill for a fused rank-12/rank-16 call.", + } + + result_path = PACKAGE / "RESULT.json" + if write: + result_path.write_text(json.dumps(result, indent=2) + "\n", encoding="utf-8") + else: + recorded = json.loads(result_path.read_text(encoding="utf-8")) + require(recorded == result, "RESULT.json differs from the independently recomputed screen") + + print("PASS_COMPLEX_RANK4_RETIMED_BLOCKS") + print(json.dumps({ + "forward_backward_batches": len(first_orientation_batches), + "grouped_calls": 80, + "new_block_sides": {"12": 8, "16": 14}, + "candidate_ceiling_a_hi": str(candidate_hi), + "combined_zero_charge_ceiling_a_hi": str(combined_hi), + "combined_five_percent_gate": result["joint_zero_charge_screen"]["five_percent_gate_passed_under_zero_charge_only"], + "new_kappa": False, + }, sort_keys=True)) + + +if __name__ == "__main__": + main(write="--write" in sys.argv[1:]) diff --git a/research/staged544-joint-child-rank-interface/frozen/SOURCE-CREDITS.md b/research/staged544-joint-child-rank-interface/frozen/SOURCE-CREDITS.md new file mode 100644 index 0000000000..c054fad87e --- /dev/null +++ b/research/staged544-joint-child-rank-interface/frozen/SOURCE-CREDITS.md @@ -0,0 +1,14 @@ +# Source credit and independence + +New work: dataisfire with substantial OpenAI Codex assistance, Apache-2.0. No independent human review, fresh third-party AI review or proof-kernel verification is claimed. + +The construction extends [PR3682](https://github.com/CrocSwap/integer-mult-bounds/pull/3682), head431e6c6023ef352c41696469de7fb614cd4ded8c. Its retimed word, actual T360 source clock and immutable native/parent framework are retained. The complete new source/receipt snapshot is bound by REPLAY-INPUTS.json. The new ordinary source stage is an explicit pinned record applied after the unchanged predecessor reconstruction. + +- [PR3605](https://github.com/CrocSwap/integer-mult-bounds/pull/3605), Ross Richardson, supplies the staged-entrance mechanism, literal cleanup and exact Gaussian residual-check pattern. staged_pair.py is retained; the new544 shear and its proof are separate. +- [PR3638](https://github.com/CrocSwap/integer-mult-bounds/pull/3638), head d62e1acd7518a231440383f0d0dddf54d6edf8c1, supplies the T360 source-window clock, chronological aggregate model and integral-network/literal construction, with its retained PR3605 and earlier credits. The new inventory, integer incumbent and literal fill are recomputed. No predecessor owner receipt is used as proof of the new fill. +- [PR3687](https://github.com/CrocSwap/integer-mult-bounds/pull/3687) and [PR3693](https://github.com/CrocSwap/integer-mult-bounds/pull/3693), Sagar Thakrar and roger-sato with their credited AI assistance, supply audit_core.py and the whole-word semantics adapter audit_verify.py. These bytes are retained and reused. They are independent of the current constructor in the stated interpreter scope, not a newly written independent audit or new reviewer approval. +- The coupled-word source lineage includes PR3133, PR2979, Marius-Paul Dumitrean, dcharb78, Jeremy Kothe and the retained native/owner/block-norm/outer authors. All notices and scientific engines inside the source snapshot remain intact. + +owner_audit.py is a standalone standard-library adaptation of the source-window/family/prefix/invoice predicates in PR3638's independent_literal.py. It imports no producer, optimizer or retained owner checker. Its source template, plan and actual native canonical words are authenticated inputs. Three controls mutate actual literal roles and must fail for the intended reason. It shares the credited contract interpretation; it is not evidence of independent human agreement. + +The rational finite-price enclosure is retained from the PR3682 sources. New script adapters bind it to the actual finite histogram. Native forward/backward scalar replay, wrapper/phase lowering and all-column warp recipes were freshly run for both new words; unchanged native and parent ancestry is explicitly reused. The separate new544 span(414,51) residual check includes global Gaussian phase. diff --git a/research/staged544-joint-child-rank-interface/frozen/WORD-base.json.gz b/research/staged544-joint-child-rank-interface/frozen/WORD-base.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..806784bf99d9d15004d2d227d06268556a0726c8 GIT binary patch literal 74428 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±ve{cRKW+p~gSnVTb%BFZ)epEJ1I4*AP8ZrRXXU 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 JbW1Cn3jn$nQt1Ey literal 0 HcmV?d00001 diff --git a/research/staged544-joint-child-rank-interface/frozen/WORD-extra.json.gz b/research/staged544-joint-child-rank-interface/frozen/WORD-extra.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..c531be7383ad3ba941600c7ced14e5e10d6d1c67 GIT binary patch literal 74425 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 z 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 (y.bit_length() - 1) & 1: x ^= y + if x: return False + return True +def Kop(G_cols): + """BW: K_G = perm(G) then diag(Q), Q = I + G^-T G^-1: PR2226's monomial() and the conjugator inside clifford_exact.canonical_frame.""" + G = transpose(tuple(G_cols), n); gi = inv(G, n) + Q = tuple((1 << i) ^ sum(parity(gi_i & gi_j) << j for j, gi_j in enumerate(transpose(gi, n))) for i, gi_i in enumerate(transpose(gi, n))) + return perm(n, G).then(diag(n, Q)) +def numeric_K(G_cols): + import numpy as np + pv, ph = bw_gauss.monomial(list(G_cols), n) + N = 1 << n; re = np.zeros((N, N), dtype=np.int64); im = np.zeros((N, N), dtype=np.int64) + unit = [(1, 0), (0, 1), (-1, 0), (0, -1)] + for x in range(N): re[pv[x], x], im[pv[x], x] = unit[ph[x]] + return re, im, 0 +def warp_ok(G_cols, rec): + """BW: the serialized monomial equals PR2226's exact numpy K_G on all 512 columns (indep. decode) and its op decodes to K_G exactly.""" + m = bw_gauss.recipe_matrix(rec, n) + if not bw_gauss.equal_scaled(numeric_K(G_cols), m): return False + dec = monomial_op(rec); ref = Kop(G_cols) + return dec.tab == ref.tab and dec.zero_state() == ref.zero_state() + +def main(): + c = json.load(gzip.open(sys.argv[1])); frames = c['frames']; v = c['v'] + starts = sorted({c['start'][r] for r in range(2 * v, len(c['start'])) if c['start'][r] != 0 and c['final'][r] == 1}) + # HPE: (entrance, terminal) pairs of helpers ending at a proper subspace; key 'E:U'. Inherited words have none. + ends = sorted({(c['start'][r], c['final'][r]) for r in range(2 * v, len(c['start'])) if c['final'][r] != 1}) + # COLD-HPE: e == 0 (a cold helper, entrance = bottom, T_0 = I) is allowed: the (0, U) recipe is keyed '0:U' + assert all(len(frames[u]) < n and _contains(frames[u], frames[e]) for e, u in ends) + cold_ends = [(e, u) for e, u in ends if e == 0] + recipes = {} + for f in starts: + U = frames[f]; rec, compiled = lower_child(S_of(U)) + recipes[str(f)] = dict(frame=f, vectors=list(U), entrance_rank=len(U), rank=rec['rank'], left=rec['left'], right=rec['right']) + for e, u in ends: + E, U = frames[e], frames[u]; rec, compiled = lower_child(S_of(E, U)) + recipes['%d:%d' % (e, u)] = dict(frame=e, terminal=u, vectors=list(E), terminal_vectors=list(U), entrance_rank=len(E), + terminal_rank=len(U), rank=rec['rank'], left=rec['left'], right=rec['right']) + # BW: monomial recipes of the warps K_G (anticipatory dirty borrowing, PR2226): one per operator, serialized like a wrapper monomial + warp_recipes = {} + for w in c.get('warps', []): + _, rec_k = mono_of(Kop(w['G_columns'])) + warp_recipes[str(w['op'])] = dict(op=w['op'], from_frame=w['from_frame'], to_frame=w['to_frame'], G_columns=list(w['G_columns']), K=rec_k) + Path(sys.argv[2]).write_text(json.dumps(dict(status='RESIDUAL_ADAPTER_RECIPES', recipes=recipes, warps=warp_recipes), sort_keys=True, separators=(',', ':')) + '\n') + # ---- independent decode of the serialized file + data_all = json.loads(Path(sys.argv[2]).read_text()); data = data_all['recipes'] + dot = lambda a, b: bin(a & b).count('1') & 1 + detail = [] + for f in starts: + rec = data[str(f)]; U = frames[f] + assert wrapped_ok(U, rec), ('wrapper product is not C_[w] x I', f) + detail.append(dict(frame=f, entrance_rank=len(U), residual_width=n - len(U), vectors=list(U), all_even_weight=all(bin(x).count('1') % 2 == 0 for x in U), + totally_isotropic=all(dot(a, b) == 0 for a in U for b in U))) + hdetail = [] + for e, u in ends: # HPE: independent decode, residual width = dim U - dim E + rec = data['%d:%d' % (e, u)]; E, U = frames[e], frames[u] + assert wrapped_ok(E, rec, U), ('HPE wrapper product is not C_[w] x I', e, u) + hdetail.append(dict(frame=e, terminal=u, entrance_rank=len(E), terminal_rank=len(U), residual_width=len(U) - len(E))) + controls = [] + def reject(name, fn): + f = starts[0]; rec = copy.deepcopy(data[str(f)]); fn(rec) + if wrapped_ok(frames[f], rec): raise AssertionError('mutated wrapper accepted: ' + name) + controls.append(name) + reject('wrong global phase', lambda r: r['right'].__setitem__('phase', (r['right']['phase'] + 1) % 4)) + reject('wrong translation', lambda r: r['left'].__setitem__('offset', r['left']['offset'] ^ 1)) + reject('wrong quadratic form', lambda r: r['right'].__setitem__('quadratic_rows', [x ^ 2 if i == 0 else x for i, x in enumerate(r['right']['quadratic_rows'])]) if False else r['right']['linear_Z4'].__setitem__(0, (r['right']['linear_Z4'][0] + 2) % 4)) + reject('sides swapped', lambda r: (r.__setitem__('left', r['right']), r.__setitem__('right', r['left']))) + reject('wrong width', lambda r: r.__setitem__('rank', r['rank'] + 1)) + if ends: # HPE controls on the first (E, U) pair + e, u = next((p for p in ends if p[0] != 0), ends[0]); rec0 = data['%d:%d' % (e, u)] # COLD-HPE: an entering pair if any (= ends[0] without cold ends) + def hreject(name, ok): + if ok: raise AssertionError('HPE mutation accepted: ' + name) + controls.append(name) + hreject('hpe: U-wrapper decoded against a FULL ending', wrapped_ok(frames[e], rec0)) + hreject('hpe: width misreported as 9 - dim E', wrapped_ok(frames[e], dict(rec0, rank=n - len(frames[e])), frames[u])) + other = next(f for f in range(len(frames)) if f != u and len(frames[f]) == len(frames[u]) and _contains(frames[f], frames[e])) + hreject('hpe: wrong terminal hyperplane', wrapped_ok(frames[e], rec0, frames[other])) + fe = next(((e2, u2) for e2, u2 in ends if str(e2) in data), None) + if fe: # an entrance shared with FULL-ended helpers: R_{E,FULL} must not serve as R_{E,U} + r2 = data['%d:%d' % fe] + hreject('hpe: pre wrapper resolved to the FULL recipe R_{E,FULL}', wrapped_ok(frames[fe[0]], dict(r2, right=data[str(fe[0])]['right']), frames[fe[1]])) + hreject('hpe: wrong global phase', wrapped_ok(frames[e], dict(rec0, left=dict(rec0['left'], phase=(rec0['left']['phase'] + 1) % 4)), frames[u])) + if cold_ends: # COLD-HPE controls on the first cold pair (0, U): factor_iff_pre says only R_{0,U} itself may precede + e, u = cold_ends[0]; recc = data['%d:%d' % (e, u)]; E, U = frames[e], frames[u] + ID = dict(matrix_rows=[1 << i for i in range(n)], offset=0, quadratic_rows=[0] * n, linear_Z4=[0] * n, phase=0) + assert monomial_op(ID).tab == identity(n) # the control's wrapper really is the identity + def creject(name, ok): + if ok: raise AssertionError('cold HPE mutation accepted: ' + name) + controls.append(name) + creject('cold hpe: identity pre wrapper instead of R_{0,U}', wrapped_ok(E, dict(recc, right=ID), U)) + creject('cold hpe: identity post wrapper instead of L_{0,U}', wrapped_ok(E, dict(recc, left=ID), U)) + creject('cold hpe: no wrappers (cold FULL convention L = R = I)', wrapped_ok(E, dict(recc, left=ID, right=ID), U)) + creject('cold hpe: U-wrapper decoded against a FULL ending', wrapped_ok(E, recc)) + creject('cold hpe: width misreported as 9', wrapped_ok(E, dict(recc, rank=n), U)) + other = next(f for f in range(len(frames)) if f != u and len(frames[f]) == len(frames[u])) + creject('cold hpe: wrong terminal hyperplane', wrapped_ok(E, recc, frames[other])) + creject('cold hpe: wrong global phase', wrapped_ok(E, dict(recc, right=dict(recc['right'], phase=(recc['right']['phase'] + 1) % 4)), U)) + ent = next((p for p in ends if p[0] != 0 and p[1] == u), None) + same = lambda x, y: monomial_op(x).tab == monomial_op(y).tab and monomial_op(x).zero_state() == monomial_op(y).zero_state() + if ent and not same(data['%d:%d' % ent]['right'], recc['right']): # an entering helper ending at the same U: its R_{E,U} must not serve as R_{0,U} + creject('cold hpe: pre wrapper resolved to an entering recipe R_{E,U}', wrapped_ok(E, dict(recc, right=data['%d:%d' % ent]['right']), U)) + wdetail = [] + for w in c.get('warps', []): # BW: independent decode of every warp recipe, then mutation controls on the first warp + rec = data_all['warps'][str(w['op'])] + assert rec['G_columns'] == w['G_columns'] + assert warp_ok(w['G_columns'], rec['K']), ('warp recipe differs from the exact monomial K_G', w['op']) + wdetail.append(dict(op=w['op'], from_frame=w['from_frame'], to_frame=w['to_frame'], columns_checked=1 << n)) + if c.get('warps'): + w0 = c['warps'][0]; k0 = data_all['warps'][str(w0['op'])]['K'] + def wreject(name, ok): + if ok: raise AssertionError('warp mutation accepted: ' + name) + controls.append(name) + wreject('warp: wrong global phase', warp_ok(w0['G_columns'], dict(k0, phase=(k0['phase'] + 1) % 4))) + wreject('warp: wrong translation', warp_ok(w0['G_columns'], dict(k0, offset=k0['offset'] ^ 1))) + wreject('warp: wrong linear phase', warp_ok(w0['G_columns'], dict(k0, linear_Z4=[(k0['linear_Z4'][0] + 2) % 4] + k0['linear_Z4'][1:]))) + wreject('warp: wrong quadratic form', warp_ok(w0['G_columns'], dict(k0, quadratic_rows=[k0['quadratic_rows'][0] ^ 2, k0['quadratic_rows'][1] ^ 1] + k0['quadratic_rows'][2:]))) + wreject('warp: recipe of another operator', warp_ok(w0['G_columns'], data_all['warps'][str(c['warps'][1]['op'])]['K'])) + wreject('warp: inverse recipe used as the warp', warp_ok(w0['G_columns'], mono_of(Kop(w0['G_columns']).adjoint())[1])) + G2 = list(w0['G_columns']); G2[0] ^= G2[1] + wreject('warp: wrong G (frame-changed column)', warp_ok(G2, k0)) + sing = list(w0['G_columns']); sing[1] = sing[0] + try: Kop(sing); raise SystemExit('non-invertible G accepted') + except (AssertionError, StopIteration, ValueError): controls.append('warp: non-invertible G') + res = dict(status='PASS_RESIDUAL_WRAPPERS_ARE_EXACT', frames=len(detail), **({'hyperplane_end_pairs': hdetail} if ends else {}), **({'cold_hyperplane_end_pairs': len(cold_ends)} if cold_ends else {}), wrappers_reject=controls, all_even_weight=all(d['all_even_weight'] for d in detail), **({'warp_recipes_exact_on_all_512_columns': wdetail} if wdetail else {}), + all_totally_isotropic=all(d['totally_isotropic'] for d in detail), detail=detail) + Path(sys.argv[3]).write_text(json.dumps(res, indent=1) + '\n') + print('Lemma A (exact): L^-1 S_E R^-1 = C_[w] x I for', len(detail), 'entrance frames, global phase included;', len(controls), 'wrapper mutations rejected; all-even-weight:', res['all_even_weight']) +if __name__ == '__main__': main() diff --git a/research/staged544-joint-child-rank-interface/frozen/clifford_exact.py b/research/staged544-joint-child-rank-interface/frozen/clifford_exact.py new file mode 100644 index 0000000000..166841a037 --- /dev/null +++ b/research/staged544-joint-child-rank-interface/frozen/clifford_exact.py @@ -0,0 +1,149 @@ +"""Small exact Gaussian-dyadic Clifford compiler, independent of gx internals. +Paulis use i^p X^x Z^z. State vectors use integer Gaussian numerators / 2^d. +The tableau is supplemented by a literal circuit, so global phases are kept. +""" +from dataclasses import dataclass + +def parity(x):return x.bit_count()&1 +def rank(rows): + p={} + for x in rows: + while x: + b=x.bit_length()-1 + if b not in p:p[b]=x;break + x^=p[b] + return len(p) +def transpose(rows,n):return tuple(sum(((rows[j]>>i)&1)<>j&1);a[j],a[k]=a[k],a[j] + for i in range(n): + if i!=j and a[i]>>j&1:a[i]^=a[j] + assert [r&((1<>n for r in a) +def basis_extend(cols,n): + out=[] + for x in list(cols)+[1<len(out):out.append(x) + assert len(out)==n + return tuple(out) +def nullspace(rows,n): + a=list(rows);p=[];k=0 + for j in range(n): + t=next((i for i in range(k,len(a)) if a[i]>>j&1),None) + if t is None:continue + a[t],a[k]=a[k],a[t] + for i in range(len(a)): + if i!=k and a[i]>>j&1:a[i]^=a[k] + p.append(j);k+=1 + return tuple((1<>j)&1)<>i&1:out=pmul(out,T[i]) + for i in range(n): + if z>>i&1:out=pmul(out,T[n+i]) + return out +def compose(A,B):return tuple(apply(A,p) for p in B) +def inverse(T): + n=len(T)//2;cols=[x|(z<>n;u,v,p=apply(T,(x,z,0));assert (u,v)==identity(n)[j][:2];out.append((x,z,(-p)%4)) + return tuple(out) +def qvalue(Q,alpha,x,n): + return (sum(alpha[i] for i in range(n) if x>>i&1)+2*sum(parity((Q[i]>>(i+1))&(x>>(i+1))) for i in range(n) if x>>i&1))%4 +def mul_i(a,p): + x,y=a;p%=4 + return [(x,y),(-y,x),(-x,-y),(y,-x)][p] +@dataclass +class Op: + n:int + tab:tuple + circuit:list + def then(self,b): + assert self.n==b.n + return Op(self.n,compose(b.tab,self.tab),self.circuit+b.circuit) + def adjoint(self): + circ=[] + for e in reversed(self.circuit): + if e[0]=='P':circ.append(('P',inv(e[1],self.n))) + elif e[0]=='D':circ.append(('D',e[1],tuple((-x)%4 for x in e[2]))) + elif e[0]=='C':circ.append(('C',e[1],-e[2])) + elif e[0]=='phase':circ.append(('phase',(-e[1])%4)) + else:circ.append(e) + return Op(self.n,inverse(self.tab),circ) + def zero_state(self,basis=0): + N=1<>i)&1 for i in range(n)) + assert all(alpha[i]%2==(Q[i]>>i)&1 for i in range(n)) + return Op(n,tuple([(1<>i&1 else 0,1<>i&1 else 0) for i in range(n)]),[('C',q,sgn)]) +def xgate(n,b):return Op(n,tuple([(1<>i)&1)) for i in range(n)]),[('X',b)]) +def fourier(n,axes=None): + out=ident(n) + for i in range(n) if axes is None else axes:out=out.then(cgate(n,1<len(selected):picks.append(j);selected.append(x) + assert len(picks)==r and all(x>>r==0 for x in Bcols) + Br=transpose(selected,r);Bi=inv(Br,r);Dr=transpose([Dcols[j]&((1<>i&1] + q.append((sum(gram[i][i] for i in bits)+2*sum(gram[i][j]for i in bits for j in bits if i>j)&1)==((quad[j]>>i)&1)for i in range(N)for j in range(N)),'symmetric quadratic form') + need(all(alpha[i]%2==((quad[i]>>i)&1)for i in range(N)),'quadratic parity') + perm=[];phasev=[] + for x in range(SIZE): + perm.append(sum(((r&x).bit_count()%2)<>i&1] + phasev.append((phase+sum(alpha[i]for i in bits)+2*sum((quad[i]>>j)&1 for i in bits for j in bits if i0 else 2]+=1 + elif not r:phase_hist[1 if s>0 else 3]+=1 + digest.update(json.dumps([x,da,sorted(a.items())],separators=(',',':')).encode()) + return dict(columns=SIZE,nonzero_coefficients=support,gaussian_axis_phase_histogram=phase_hist,operator_sha256=digest.hexdigest()) + +def lift_cocycle(G,H): + """K_H K_G = K_(HG) Z_ell. Exact finite Z4 phase defect.""" + gp,gq=kernel(tuple(G));hp,hq=kernel(tuple(H)) + HG=tuple(lin(H,c)for c in G);cp,cq=kernel(HG) + defect=[(gq[x]+hq[gp[x]]-cq[x])%4 for x in range(SIZE)] + ell=sum((defect[1<0 and n&(n-1)==0,'not a subspace size') + return n.bit_length()-1 + +REGS=(600,601,602,604) +POSITIONS=(936,937,938,941) +ENTRANCE=(45,) +TERMINAL=(409,80,40,5,2) + +def trace_group(w): + """Trace source frame state through literal A/B ordering; never retime native maps.""" + current={r:span([w['ports'][r]]) if r<112 else span([]) for r in range(704) if r not in w['removed']} + for r,b in w['start_extra'].items():current[int(r)]=span(b) + calls=[] + def gate(g,section,index): + if g[0]=='warp': + need(current[g[1]]==span(g[3]),'A warp entrance');current[g[1]]=span(g[4]);return + need(g[0] in ('add','scale'),'scalar kind') + for r in g[1:3] if g[0]=='add' else g[1:2]: + target=span(g[-1]);need(current[r]<=target,'scalar containment') + if section=='B' and r in REGS and index in POSITIONS: + calls.append(dict(register=r,index=index,old=sorted(current[r]),new=sorted(target),rank=dim(target)-dim(current[r]))) + current[r]=target + for i,g in enumerate(w['A']):gate(g,'A',i) + # The middle cut only writes target families. Its centre descents are + # temporary readouts, not persistent helper-frame updates (BORROW-WORD). + need(all(g[0]=='add' and 112<=g[1]<224 and g[-1] is None for g in w['cut']),'target-only cut contract') + native=[] + for i in range(max(POSITIONS)+1): + for pos,r,cols,u,e in w['warps']: + if pos==i: + need(current[r]==span(u),'B warp entrance');current[r]=span(e) + if min(POSITIONS)<=i<=max(POSITIONS):native.append(dict(index=i,register=r,entrance=u,terminal=e,columns=cols)) + gate(w['B'][i],'B',i) + positive=[x for x in calls if x['rank']] + need([(x['register'],x['index'],x['rank']) for x in positive]==list(zip(REGS,POSITIONS,[4]*4)),'actual group ranks') + need(all(set(x['old'])==set(span(ENTRANCE)) and set(x['new'])==set(span(TERMINAL)) for x in positive),'actual group frames') + need([(x['index'],x['register']) for x in native]==[(936,564),(936,405),(939,565)],'native ordering') + # A local dependency check only. No whole-word rewrite or dirty-state replay is claimed. + for call in positive: + for j in range(min(POSITIONS),call['index']): + g=w['B'][j] + touched=g[1:3] if g[0]=='add' else g[1:2] + need(call['register'] not in touched,'future call is touched early') + need(all(x['register']!=call['register'] for x in native if x['index']<=call['index']),'native touches future call') + return dict(calls=positive,native_events_preserved=native,scalar_window=w['B'][936:942],scope='Source chronology and disjoint-future-input check; no provider rewrite') + +def native_support(): + """All 512 columns of actual T_U T_E^-1, with exact Gaussian arithmetic.""" + columns=Counter();rows=Counter();digest=hashlib.sha256() + for x in range(512): + v,d0=phase.frame({x:(1,0)},ENTRANCE,True) + v,d1=phase.frame(v,TERMINAL) + columns[len(v)]+=1 + for y in v:rows[y]+=1 + need(all(Q(a*a+b*b,1<<(2*(d0+d1)))==Q(1,16) for a,b in v.values()),'residual entry magnitude') + digest.update(json.dumps([x,d0+d1,sorted(v.items())],separators=(',',':')).encode()) + need(columns=={16:512} and Counter(rows.values())=={16:512},'actual residual support') + return dict(columns=512,column_support={str(k):v for k,v in columns.items()},row_support={str(k):v for k,v in Counter(rows.values()).items()},raw_gaussian_digest=digest.hexdigest()) + +def budget(): + k=Q(1730663236534549309146,10**24) + z=Q(1,3);loglo=2*sum((z**(2*j+1)/Q(2*j+1) for j in range(60)),Q(0)) + loghi=loglo+2*z**121/(121*(1-z*z)) + def power2(exponent): + a,b=k*exponent*loglo,k*exponent*loghi + def expm(x,n):return sum(((-x)**i/Q(math.factorial(i)) for i in range(n+1)),Q(0)) + need(0