From 3b4999572c2798e63ab20b7c1339a36cddc3bc09 Mon Sep 17 00:00:00 2001 From: ross Date: Mon, 19 Oct 2026 19:40:14 +1100 Subject: [PATCH 1/2] Verify five BIT terminals and their fixed-controller cost bound --- .../CONTENT-SHA256.json | 60 + .../INDEPENDENT-FIVE-TERMINALS.json | 79 + .../LOCAL-PROVENANCE.json | 17 + research/bit-five-rank4-terminals/PROOF.md | 106 + research/bit-five-rank4-terminals/README.md | 87 + .../bit-five-rank4-terminals/SOURCES.json | 24 + research/bit-five-rank4-terminals/TASK.json | 61 + research/bit-five-rank4-terminals/VERIFY.json | 32 + .../WORD-ADAPTATION.patch | 25 + .../bit-five-rank4-terminals/WORD.json.gz | Bin 0 -> 105171 bytes .../admission/ADAPTATION-CHECK.json | 21 + .../admission/ADAPTATION.patch | 57 + .../admission/ADMISSION-CHECK.json | 5699 +++++++++++++++++ .../admission/BUNDLE-MANIFEST.json | 119 + .../admission/INPUT-MANIFEST.json | 106 + .../admission/README.md | 95 + .../admission/VALIDATION.json | 35 + .../inputs/FIVE-TERMINALS-WORD.json.gz | Bin 0 -> 105171 bytes .../admission/inputs/TERMINAL-CHARTS.json | 551 ++ .../admission/inputs/bitE8-r865.json.gz | Bin 0 -> 33865 bytes .../admission/inputs/r438-t154.json.gz | Bin 0 -> 42305 bytes .../provenance/ADMISSION-CHECK.original.json | 5699 +++++++++++++++++ .../provenance/FROZEN-MANIFEST.original.json | 149 + .../provenance/OWNERSHIP.original.json | 23 + .../PR540-SOURCE-PINS.original.json | 18 + .../provenance/TRANSFER-AUTHENTICATION.json | 87 + .../TRANSFER-MANIFEST.original.json | 148 + .../verify_admission.original.py.txt | 342 + .../code/bit/checkers/columns_h.cpp | 48 + .../code/bit/checkers/columns_k.cpp | 62 + .../e8-r480-nine-stage/code/assemble9.py | 66 + .../code/global_k.py | 264 + .../pr589-five-helper-hosting/PROOF.md | 215 + .../admission/verify.py | 341 + .../moment/PORTABLE-VALIDATION.json | 87 + .../bit-five-rank4-terminals/moment/PROOF.md | 284 + .../bit-five-rank4-terminals/moment/README.md | 43 + .../moment/RESULT.json | 356 + .../moment/WINDOW-PROOF.md | 191 + .../moment/WINDOW-RESULT.json | 361 ++ .../moment/check_moment.py | 295 + .../moment/check_windows.py | 108 + .../WINDOW-INDEPENDENT-RESULT.json | 173 + .../WINDOW-INDEPENDENT-VALIDATION.json | 17 + .../WINDOW-REVIEW-CERTIFICATE.json | 45 + .../moment/independent/WINDOW-REVIEW.md | 203 + .../independent/check_window_independent.py | 167 + .../independent/source-context/global_k.py | 264 + .../validate_window_independent.py | 75 + .../moment/inputs/FIVE-TERMINALS.json | 364 ++ .../moment/inputs/R438-CERTIFICATE.json | 2122 ++++++ .../moment/inputs/SOURCES.json | 27 + .../moment/inputs/global_k.py | 264 + .../bit-five-rank4-terminals/moment/verify.py | 20 + .../predecessor/CANDIDATE.json | 364 ++ .../predecessor/OPERATOR-BOUNDARY.md | 104 + .../predecessor/verify_word.py | 145 + research/bit-five-rank4-terminals/verify.py | 18 + .../bit-five-rank4-terminals/verify_word.py | 145 + 59 files changed, 20878 insertions(+) create mode 100644 research/bit-five-rank4-terminals/CONTENT-SHA256.json create mode 100644 research/bit-five-rank4-terminals/INDEPENDENT-FIVE-TERMINALS.json create mode 100644 research/bit-five-rank4-terminals/LOCAL-PROVENANCE.json create mode 100644 research/bit-five-rank4-terminals/PROOF.md create mode 100644 research/bit-five-rank4-terminals/README.md create mode 100644 research/bit-five-rank4-terminals/SOURCES.json create mode 100644 research/bit-five-rank4-terminals/TASK.json create mode 100644 research/bit-five-rank4-terminals/VERIFY.json create mode 100644 research/bit-five-rank4-terminals/WORD-ADAPTATION.patch create mode 100644 research/bit-five-rank4-terminals/WORD.json.gz create mode 100644 research/bit-five-rank4-terminals/admission/ADAPTATION-CHECK.json create mode 100644 research/bit-five-rank4-terminals/admission/ADAPTATION.patch create mode 100644 research/bit-five-rank4-terminals/admission/ADMISSION-CHECK.json create mode 100644 research/bit-five-rank4-terminals/admission/BUNDLE-MANIFEST.json create mode 100644 research/bit-five-rank4-terminals/admission/INPUT-MANIFEST.json create mode 100644 research/bit-five-rank4-terminals/admission/README.md create mode 100644 research/bit-five-rank4-terminals/admission/VALIDATION.json create mode 100644 research/bit-five-rank4-terminals/admission/inputs/FIVE-TERMINALS-WORD.json.gz create mode 100644 research/bit-five-rank4-terminals/admission/inputs/TERMINAL-CHARTS.json create mode 100644 research/bit-five-rank4-terminals/admission/inputs/bitE8-r865.json.gz create mode 100644 research/bit-five-rank4-terminals/admission/inputs/r438-t154.json.gz create mode 100644 research/bit-five-rank4-terminals/admission/provenance/ADMISSION-CHECK.original.json create mode 100644 research/bit-five-rank4-terminals/admission/provenance/FROZEN-MANIFEST.original.json create mode 100644 research/bit-five-rank4-terminals/admission/provenance/OWNERSHIP.original.json create mode 100644 research/bit-five-rank4-terminals/admission/provenance/PR540-SOURCE-PINS.original.json create mode 100644 research/bit-five-rank4-terminals/admission/provenance/TRANSFER-AUTHENTICATION.json create mode 100644 research/bit-five-rank4-terminals/admission/provenance/TRANSFER-MANIFEST.original.json create mode 100644 research/bit-five-rank4-terminals/admission/provenance/verify_admission.original.py.txt create mode 100644 research/bit-five-rank4-terminals/admission/source-context/research/e8-bit-carrier-skeleton/code/bit/checkers/columns_h.cpp create mode 100644 research/bit-five-rank4-terminals/admission/source-context/research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp create mode 100644 research/bit-five-rank4-terminals/admission/source-context/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/code/assemble9.py create mode 100644 research/bit-five-rank4-terminals/admission/source-context/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py create mode 100644 research/bit-five-rank4-terminals/admission/source-context/research/pr589-five-helper-hosting/PROOF.md create mode 100644 research/bit-five-rank4-terminals/admission/verify.py create mode 100644 research/bit-five-rank4-terminals/moment/PORTABLE-VALIDATION.json create mode 100644 research/bit-five-rank4-terminals/moment/PROOF.md create mode 100644 research/bit-five-rank4-terminals/moment/README.md create mode 100644 research/bit-five-rank4-terminals/moment/RESULT.json create mode 100644 research/bit-five-rank4-terminals/moment/WINDOW-PROOF.md create mode 100644 research/bit-five-rank4-terminals/moment/WINDOW-RESULT.json create mode 100644 research/bit-five-rank4-terminals/moment/check_moment.py create mode 100644 research/bit-five-rank4-terminals/moment/check_windows.py create mode 100644 research/bit-five-rank4-terminals/moment/independent/WINDOW-INDEPENDENT-RESULT.json create mode 100644 research/bit-five-rank4-terminals/moment/independent/WINDOW-INDEPENDENT-VALIDATION.json create mode 100644 research/bit-five-rank4-terminals/moment/independent/WINDOW-REVIEW-CERTIFICATE.json create mode 100644 research/bit-five-rank4-terminals/moment/independent/WINDOW-REVIEW.md create mode 100644 research/bit-five-rank4-terminals/moment/independent/check_window_independent.py create mode 100644 research/bit-five-rank4-terminals/moment/independent/source-context/global_k.py create mode 100644 research/bit-five-rank4-terminals/moment/independent/validate_window_independent.py create mode 100644 research/bit-five-rank4-terminals/moment/inputs/FIVE-TERMINALS.json create mode 100644 research/bit-five-rank4-terminals/moment/inputs/R438-CERTIFICATE.json create mode 100644 research/bit-five-rank4-terminals/moment/inputs/SOURCES.json create mode 100644 research/bit-five-rank4-terminals/moment/inputs/global_k.py create mode 100644 research/bit-five-rank4-terminals/moment/verify.py create mode 100644 research/bit-five-rank4-terminals/predecessor/CANDIDATE.json create mode 100644 research/bit-five-rank4-terminals/predecessor/OPERATOR-BOUNDARY.md create mode 100644 research/bit-five-rank4-terminals/predecessor/verify_word.py create mode 100644 research/bit-five-rank4-terminals/verify.py create mode 100644 research/bit-five-rank4-terminals/verify_word.py diff --git a/research/bit-five-rank4-terminals/CONTENT-SHA256.json b/research/bit-five-rank4-terminals/CONTENT-SHA256.json new file mode 100644 index 0000000000..b0e88a5dbc --- /dev/null +++ b/research/bit-five-rank4-terminals/CONTENT-SHA256.json @@ -0,0 +1,60 @@ +{ + "INDEPENDENT-FIVE-TERMINALS.json": "033d935df3b07b8247bf82d7e88ebac739023e7f4598588c305ff6cd6ad55875", + "LOCAL-PROVENANCE.json": "8b7af087d2518f11684c1e3f4022505010655db4b833a566dcd6beb958d8813d", + "PROOF.md": "7f76d855f5cd8988249f43bfc7222387aac515b5db51a31f67e7603b2f0d3b12", + "README.md": "d664a28d0b37892e4c113144f7754c8441996a35347ffb192b163fc7e0c5315f", + "SOURCES.json": "18a0f28d1060d8d3b615746eea85ff709c89cb98c37d09b2d70cd11065302ac0", + "TASK.json": "4070557d709f41227b48b184e84b63e6ccf189f2cfa98626250c640a51e0c1df", + "VERIFY.json": "f838a300a4d5c65339e9a7553e2255face48a1d552f163fbbc5c4b8cf37ab676", + "WORD-ADAPTATION.patch": "a1bf54196fe2f6d51c314775b88f59eea4209660a7a59ca61fa4d8d35a2e49f8", + "WORD.json.gz": "c46ccd7d3eedabc6a7efbb1a91ec13f2928bad8ee0bac57c6e593a092d13d96c", + "admission/ADAPTATION-CHECK.json": "18f09c62864738cb39e8fbe52b3e811406afdbba85634f7be3f9aeb2cebc7c32", + "admission/ADAPTATION.patch": "88106c60dbc9563478351d213d3dfdd2a88d0d0d8734e4b16c41e75b72accb43", + "admission/ADMISSION-CHECK.json": "cb7e3c83d066a82fa2d458b2d8ac2cc04ae90bde2ad4f70e07fdc252888a87d0", + "admission/BUNDLE-MANIFEST.json": "82fef5ae03e7dbd738869f762437297adf57a717c360a7084ee2b50a58d0ba45", + "admission/INPUT-MANIFEST.json": "70b0515c54a63dd545d256ee3da17f2f8ce00e89d08580f7cdbcdc4bb72dac03", + "admission/README.md": "d9aacfb3c2bb7a3e3fbad8453409fba9e925bc833b399fa6e0bc94e13e2570b6", + "admission/VALIDATION.json": "2c4cb7e0e427dbc9ad4179a3423e3eaaaa8726701f8e50e26622a956b59d9cb4", + "admission/inputs/FIVE-TERMINALS-WORD.json.gz": "c46ccd7d3eedabc6a7efbb1a91ec13f2928bad8ee0bac57c6e593a092d13d96c", + "admission/inputs/TERMINAL-CHARTS.json": "489216ea25f47f061675ab7b7e4a17289a531bce6fe77cca166a13265bfcbb17", + "admission/inputs/bitE8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "admission/inputs/r438-t154.json.gz": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", + "admission/provenance/ADMISSION-CHECK.original.json": "914c4deecd9fa972f396e942c6d6bfbf13e6ef58f6a54ad8e8d4a125b0652519", + "admission/provenance/FROZEN-MANIFEST.original.json": "362ad0246d221584b35bfad2e850ed20b344a9f96a706c9988e3b3d2b7ff85a7", + "admission/provenance/OWNERSHIP.original.json": "ed5b67369aa95c80a5a4a958dc030cc216954d6a8b23d01252d2c84647758fbc", + "admission/provenance/PR540-SOURCE-PINS.original.json": "2963bc4edd609c542bad37f6021f251dbaa254495948d715dc3c704c8058b31d", + "admission/provenance/TRANSFER-AUTHENTICATION.json": "e6b71af938ed1457e163390a8f304dd18493d7b6937d431561e22895c2fd6597", + "admission/provenance/TRANSFER-MANIFEST.original.json": "7e13112436a72e1f646c9a3fdf417dbab8522730d720709b7059fd85d4c9f6eb", + "admission/provenance/verify_admission.original.py.txt": "c5b30e5a3422a61ba560459bf39f27d825d83154f95593672785b2f7ceaa5194", + "admission/source-context/research/e8-bit-carrier-skeleton/code/bit/checkers/columns_h.cpp": "d1297f9052be4f2496e1ff2a77e4db2c0cdbd7d460d489b4c03e50bf317238ce", + "admission/source-context/research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "admission/source-context/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/code/assemble9.py": "4bf6768224a3fac81ccda26df24f3763f9a4fbc35ad62bef2888595cdae519fe", + "admission/source-context/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8", + "admission/source-context/research/pr589-five-helper-hosting/PROOF.md": "59cae781bfbe1a01ed9e66a8efeeb5a2b995e5ecdf908586b23ecc39f2b8d647", + "admission/verify.py": "762357be4644da879251eca070a81dfd73ec3ef4991191cdd630896e7e9b44a3", + "moment/PORTABLE-VALIDATION.json": "b17d3fec1555249a387bd277f6325285dac8e07d0aa830267fa0dd1c17e37388", + "moment/PROOF.md": "e78080da8c475278ed0b9cba6043a2e2182f4d6c6bdc58b6e928fcba94c48972", + "moment/README.md": "85dcfafcd8931296297494e1abd5441ea5ac8f3b750cca169b78ab3fd50239cd", + "moment/RESULT.json": "face2ea5e286831ac29413f4e2d085998685d4faf332b5c224159f6b9fcdf42d", + "moment/WINDOW-PROOF.md": "4bac2a8826350061d8bd9eade8465f9a01989422d4027b5d2830506662fa016d", + "moment/WINDOW-RESULT.json": "a959fcac8aa0fed2ab63baf02492ce9c697d039be32fb375abfe7dc77b18e786", + "moment/check_moment.py": "f462d1299f23cb9d9df800a2e15af5c1f15d883b0aca90e0885a932b903071d4", + "moment/check_windows.py": "32dc8b5dcd219de70d4404ea49c31d653e7b75627d6c78e4eb84e5a4d8d4a931", + "moment/independent/WINDOW-INDEPENDENT-RESULT.json": "39ec4d42d20e3008b7564dcfac675aeff39f5dd6bcd9ae14a288bd1b6a3bc7bd", + "moment/independent/WINDOW-INDEPENDENT-VALIDATION.json": "20fce6cb4c1ee3e5f6f37b9857351aac16e3b99f71f1877cf402528688478552", + "moment/independent/WINDOW-REVIEW-CERTIFICATE.json": "0ecf81685eb703b5f9b665e9b470da946dc1b356f1595c19b0ae52814a44b782", + "moment/independent/WINDOW-REVIEW.md": "3089127abc9f7e28d2cb3e0aa2d13438a9d29986a80bf5bd5c23238ecffd8e94", + "moment/independent/check_window_independent.py": "f1284452ea9dc83424a11a86639a1ec7b9e83d765e8eea737b0c1f284343601a", + "moment/independent/source-context/global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8", + "moment/independent/validate_window_independent.py": "e7ff5629085d608ca5b464eafedfaf93ce8800a06f3c3ebe81efb31b7857fc9e", + "moment/inputs/FIVE-TERMINALS.json": "75e029f9bb6ca42540fa633b51bf2d8d62125c57a0ee184fbf3c94e08a8c7d58", + "moment/inputs/R438-CERTIFICATE.json": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c", + "moment/inputs/SOURCES.json": "2548662747a5ea2e00ebdf6cced3fd76b38c3a841526f3baf0acd0b7a0eb4ada", + "moment/inputs/global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8", + "moment/verify.py": "bb5487c78c835d2637ce84e289e969771a59e4cfeb90cc829d1b79c349ae76ac", + "predecessor/CANDIDATE.json": "75e029f9bb6ca42540fa633b51bf2d8d62125c57a0ee184fbf3c94e08a8c7d58", + "predecessor/OPERATOR-BOUNDARY.md": "b268114ee08a3cb0c6fb18928361528cc7385bd5f89b90bf247b2739a513dbac", + "predecessor/verify_word.py": "64f62ecdbc77518dd7705087f0aaa852412d607cf197ee3fa9b0a2a96683750b", + "verify.py": "171ea17a6ec5f5985ac611f9c3b5445c3e4ca95328685cff2a9105883be1b620", + "verify_word.py": "526fe4422f2d761b4eaee2f562e2b504eed2c17fa73307cafaeda7b1cd38fd75" +} diff --git a/research/bit-five-rank4-terminals/INDEPENDENT-FIVE-TERMINALS.json b/research/bit-five-rank4-terminals/INDEPENDENT-FIVE-TERMINALS.json new file mode 100644 index 0000000000..d35586041c --- /dev/null +++ b/research/bit-five-rank4-terminals/INDEPENDENT-FIVE-TERMINALS.json @@ -0,0 +1,79 @@ +{ + "checked_frames": 636, + "checked_nested_pairs": 2394, + "controls": [ + "Declaring the retired helper FULL fails actual endpoint check.", + "An even integer dirty error passes F2 and fails exact helper restoration." + ], + "forward": { + "ADDs": 36005, + "COPYs": 9, + "H": { + "1": 1322, + "2": 1342, + "3": 79, + "4": 39, + "5": 102, + "6": 11, + "7": 18 + }, + "mass": 5101, + "positive_envelope": 8402567, + "prefix_row_L1": 1302 + }, + "geometry_sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", + "helper_inventory": { + "4": 5, + "8": 433 + }, + "inherited_precision_diagnostics": { + "104_bit_expression": "15105050522746917552142185212669952", + "192_bit_expression": "1737850264432662463887984248694818736482648196425093483769888768", + "bit_length_104": 114, + "bit_length_192": 211, + "both_strict_caps_pass": false + }, + "inverse": { + "ADDs": 36005, + "COPYs": 9, + "H": { + "1": 1322, + "2": 1342, + "3": 79, + "4": 39, + "5": 102, + "6": 11, + "7": 18 + }, + "mass": 5101, + "positive_envelope": 630744, + "prefix_row_L1": 1446 + }, + "limits": [ + "Independent finite word, dyadic projector and legal snapshot verification.", + "Generic exact-stream operator proof is separate from all-size physical owner/compiler admission.", + "Old H2/H4 syntax and 104/192-bit precision admission are not inherited; no outer exponent." + ], + "no_new_kappa": true, + "persistent_columns": 660, + "private_zero_slots": 1, + "roundtrip": { + "ADDs": 36005, + "COPYs": 9, + "H": { + "1": 1322, + "2": 1342, + "3": 79, + "4": 39, + "5": 102, + "6": 11, + "7": 18 + }, + "mass": 5101, + "positive_envelope": 630744, + "prefix_row_L1": 1253 + }, + "source_sha256": "526fe4422f2d761b4eaee2f562e2b504eed2c17fa73307cafaeda7b1cd38fd75", + "status": "PASS_INDEPENDENT_FIVE_TERMINAL_WORD_WITH_PRECISION_CAP_FAILURE", + "word_sha256": "3bca74a2a8427eb18e86566baa19de597f10d0bc40c30b7443febd499ee2189a" +} diff --git a/research/bit-five-rank4-terminals/LOCAL-PROVENANCE.json b/research/bit-five-rank4-terminals/LOCAL-PROVENANCE.json new file mode 100644 index 0000000000..b9df0d9aa2 --- /dev/null +++ b/research/bit-five-rank4-terminals/LOCAL-PROVENANCE.json @@ -0,0 +1,17 @@ +{ + "scope": "Only file discovery, metadata loading, and receipt source binding changed; mathematical checks retained. Historical originals preserved.", + "non_main_ast_identical": true, + "source_files": [ + { + "original_path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/root-bit-audit/OPERATOR-BOUNDARY.md", + "retained_path": "predecessor/OPERATOR-BOUNDARY.md", + "sha256": "b268114ee08a3cb0c6fb18928361528cc7385bd5f89b90bf247b2739a513dbac" + }, + { + "original_path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/root-bit-audit/verify_word.py", + "retained_path": "predecessor/verify_word.py", + "sha256": "64f62ecdbc77518dd7705087f0aaa852412d607cf197ee3fa9b0a2a96683750b" + } + ], + "candidate_word_sha256": "c46ccd7d3eedabc6a7efbb1a91ec13f2928bad8ee0bac57c6e593a092d13d96c" +} diff --git a/research/bit-five-rank4-terminals/PROOF.md b/research/bit-five-rank4-terminals/PROOF.md new file mode 100644 index 0000000000..c3ed8e5cff --- /dev/null +++ b/research/bit-five-rank4-terminals/PROOF.md @@ -0,0 +1,106 @@ +# Five rank-four terminals: exact stream boundary and remaining admission + +The independent finite audit passes for the word with uncompressed SHA256 +`3bca74a2a8427eb18e86566baa19de597f10d0bc40c30b7443febd499ee2189a` and geometry +SHA256 `a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022`. +This is a local mixed-terminal operator under the exact stream operations +below. It is not an improved conditional kappa or a completed supplier admission. + +## Predecessors and changed interface + +The source is the pinned R438 transported word. The generic frame simulation +argument is credited to PR540 FramedReplay/OwnerTransport and its source-bound +PR589 extension in `research/pr589-five-helper-hosting/PROOF.md`, at canonical +20ecf2891d80b5acf18d980b2164fb44ea7faa90. The new construction moves helper +preconditioning to ZERO and replaces the old FULL literal A/B cleanup by an +early SOURCE cleanup plus a different signed tail. It therefore must not claim +that the old syntactic H4 checker passed unchanged. + +PR1194 (2e39c98238f543d988f9efc1b076590a4b780dca) and PR1311 +(a2875c1834b9c9ef42a84eda4890d5462cc98fa5) are relevant semantic-prefix +predecessors. Their stated substitution preserves H4; they do not directly +admit these changed terminal frames and cleanup. The contribution here is the explicit source-bound word. Elementary +preconditioning and the generic simulation lemma are prior mechanisms. PR1256 +(`research/bit-early-retirement-cut`) already lowers helper470 from width8 +to7 and prices returned idle progress; its fixed-prefix exclusions have different +premises from the ZERO preconditioning used here. No broad novelty claim is made. Existing complex-side heterogeneous restoration in +`research/e8-prefix-restoration` is also prior art for that general mechanism. + +## Exact stream interpretation + +For a frame projector P on K^8 define the address involution + + D_P(x,y)=((I-P)x+Py, Px+(I-P)y). + +Here K is any field of characteristic other than two. The independent checker +constructs all636 actual rational projectors by Gram-Schmidt, verifies their +dyadic entries and basis identities, and checks all2394 nested pairs used by +the word in either orientation. Idempotence and symmetry follow directly from +the orthogonal-basis formula. If P<=Q, their relative operation D_P D_Q is the +partial swap D_(Q-P), with rank dim(Q)-dim(P). Its exact rank survives odd +characteristic specialization: the dyadic characteristic polynomial of each +idempotent is t^(8-r)(t-1)^r. This supplies exact address operations, not their +physical compiler or tape implementation. + +Take660 arbitrary Boolean-valued input functions, one for every persistent +source, target and helper. The one private function starts zero. For each row +i let Gamma_i=D_Pi at its current frame and let the decoded function be +c_i=f_i composed with Gamma_i, where f_i is the physical payload. These are +bookkeeping bijections; no input is reset or assumed independent in value. + +A MOVE from Gamma_a to Gamma_b transports the physical payload by +Gamma_a Gamma_b^-1, so it preserves c_i. An ADD at a common frame changes the +decoded destination by the decoded source. Signed integer ADDs give the stated +integer lift; their reductions are XOR for Boolean values. A fresh COPY +transports the source into the private frame and copies its decoded function. +Every ERASE in the candidate sees precisely that unchanged decoded source and +the corresponding private snapshot; bijectivity yields the physical equality +needed for erasure. The private row is zero before its next reuse. + +Induction over every literal event therefore gives the decoded matrix checked +by `verify_word.py`. That independent implementation imports no producer or +predecessor checker. It tests all660 independent persistent input columns, +the PRIVATEZERO contract, exact integer source/helper restoration, the Boolean +public shear, and both signed forward/inverse roundtrips. The statement is for +all input functions, including arbitrarily correlated dirty helper contents. + +## Endpoint + +The source/target entrance and exit frames equal the old CLEAN R438 frames, +and the decoded Boolean endpoint is x'=x, y'=y+x. Thus their physical public +operator is unchanged. For helpers462,463,464,467,470 the decoded value is +exactly its original arbitrary helper value, but its physical residual is +D_E for the explicit terminal rank-four frame E. The other433 helpers retain +the old rank-eight residual. No dirty output is discarded, and no initial +native query is hidden in the1765 ZERO helper ADDs. + +In a reflected embedding, replace the local gauge by D_(I-P) times the shared +exterior factor. The relative endpoint from frame0 to E is still D_E, since +D_I D_(I-E)=D_E. The same induction and signed inverse apply. An actual owner +must map each E residual into its assigned pending coordinates; rank alone +does not construct the required orthogonal chart or chronological placement. + +The complete local histogram is + + H={1:1322,2:1342,3:79,4:39,5:102,6:11,7:18}. + +Its rank mass5101 equals111*14+433*8+5*4+63. All36005 ADDs and nine rank-seven +COPY calls remain paid. The lost20 helper ranks exactly equal the removed +query mass; they are not an extra unearned deficit. + +## Gates still open + +The conservative forward/reverse positive envelopes are8402567 and630744. +The inherited expressions64 F^3 R^2 and2^18 F^5 R^4 require114 and211 bits, +respectively, and fail the old104/192-bit caps. Exact signed prefix row norms +1302 and1446 are recorded diagnostics, not an automatic replacement for the +old defect and COPY/ERASE error analysis. + +This proof closes the arbitrary-input endpoint in the stated exact stream +model. The finite residual isometries and coordinate words are now supplied by +`admission/README.md`. Whole-owner chronological hosting, physical scalar/address routes, rounded-child errors, precision charges, +all-size dispatch, storage/tape costs and joint outer assembly remain separate. +The checker is finite exact evidence; this document is a written induction, +not a formal-kernel certificate. No new kappa is claimed. + +Apache-2.0; substantial OpenAI Codex assistance. diff --git a/research/bit-five-rank4-terminals/README.md b/research/bit-five-rank4-terminals/README.md new file mode 100644 index 0000000000..ecf4606713 --- /dev/null +++ b/research/bit-five-rank4-terminals/README.md @@ -0,0 +1,87 @@ +# Five rank-four BIT terminals and their complete cost boundary + +This package retains an explicit local BIT word with 433 width-eight and five +width-four dirty helpers. Its exact stream operator restores every source and +helper over the integers and gives the required public shear modulo two. The +complete local histogram is H={1:1322,2:1342,3:79,4:39,5:102,6:11,7:18}: 2913 +children, rank mass5101, 36005 scalar ADDs, nine rank-seven COPYs and one private +zero field. No native supplier or improved multiplication exponent is claimed. + +The five terminal helpers are462,463,464,467,470. Their ZERO preconditioning +changes the old H4 cleanup syntax. `PROOF.md` supplies the exact arbitrary-function +stream interpretation; `verify_word.py` independently checks all660 persistent +input columns, integer source/helper restoration, public Boolean action, both +inverse orders, private cleanup, 636 actual rational projectors and2394 nesting +pairs. The integer lift may retain even dirty coefficients in public targets; +its real/complex endpoint is not asserted to be a clean shear. + +`admission/README.md` adds explicit reversible coordinate words for all three +terminal charts. Their Q/Q^-1 lengths are24,70,70; the complete D_E lengths +are100,284,284. These use arbitrary input coordinates, no scratch, and only +unit signed ADD, NEGATE, HALF, DOUBLE and SWAP over Z[1/2] and every odd field. +They are address-coordinate counts, not native payload or tape costs. The same +supplement gives exact dyadic prefix bounds and a defect-sensitive error model +with a counterexample to inferring exact private erasure from finite accuracy. + +The changed word requires114/211bits in the historical five-/nine-stage +prefix expressions, exceeding the inherited104/192-bit acceptance caps. +The historical arbitrary-precision implementation does not overflow: revised +64-bit charges would be128/256. Conditional invoice headroom is proved, but +no new physical invoice or rounded-child cleanup is supplied. + +`moment/PROOF.md` and its independent review state the complete cost screen. +The lost20 local query ranks equal the lost20 helper progress ranks. In the +fixed nine-stage m=64 geometry the ideal idle mass is1178, the raw deficit is +107/3 per invocation, and even arbitrary ideal rank45 idle packing has a root +below .001962938841611 (below .001962938839481 with the inherited fallback). +The stronger +`moment/WINDOW-PROOF.md` uses the pinned public intervals: their maximum rank +at nine stages is42. It proves failure for every odd stage count and every +recursion depth at b>=.002, granting fractional owners, arbitrary additional +full-progress helper stock and free omitted costs. At nine stages the ideal +rank42 root with fallback is below .001954220766880. The all-odd conclusion +is a written recipe argument; it does not assert that the historical CLI emits +all arities. The requested .002, .003 and .005 targets fail within this fixed +coverage and chronology model. These lower bounds grant free omitted costs; they are rejection +certificates, never positive compiler admission. + +## Reproduce + +Use Python3.12 and the standard library, from the repository root: + +```sh +python3.12 scripts/research_package.py --package research/bit-five-rank4-terminals +``` + +`VERIFY.json` runs the package in normal and optimized Python. The checker +resolves inputs relative to the files, so a Git-free export works from any +working directory. `SOURCES.json` pins the one external geometry input and +upstream orientation. `LOCAL-PROVENANCE.json`, `WORD-ADAPTATION.patch` and the +supplements retain authenticated local originals, transfer manifests and exact +relocation adaptations. Absolute historical paths in provenance are not runtime +dependencies. SHA256 integrity does not establish authorship or mathematical truth. + +## Open next questions + +A changed public chronology, paid fusion across old intervals, or a useful +partial-progress auxiliary contract could change the cost bound's premises. +First specify the exact arbitrary-input operator and complete tariff for one +such change. A favorable relaxation still needs integral owners, legal native +routes, exact cleanup, a full physical invoice and a compatible complex caller. + +## Scope and attribution + +This is finite exact computation, written all-input stream reasoning, and a +written cost bound with rational endpoint checks. It is not a Lean kernel proof, +chronological physical owner realization, all-size compiler, rounded supplier, +complete storage/tape invoice, or compatible joint outer construction. + +Credit Ali Romman's R438/PR1043 construction, Sagar Thakrar's transported R438 +and hosting lineage, cheesegrader's PR540 frame/owner framework, PR589 hosting, +and the frozen five-terminal construction authors. PR1256 already studies +helper470 early retirement and returned idle accounting. PR1194/1311 and +E8 prefix restoration are relevant semantic-prefix/heterogeneous precedents; +their hypotheses are retained. No exhaustive novelty claim is made. + +Apache-2.0; substantial OpenAI Codex assistance, including independent AI +mathematical review. No new kappa. diff --git a/research/bit-five-rank4-terminals/SOURCES.json b/research/bit-five-rank4-terminals/SOURCES.json new file mode 100644 index 0000000000..9441965655 --- /dev/null +++ b/research/bit-five-rank4-terminals/SOURCES.json @@ -0,0 +1,24 @@ +{ + "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" + }, + { + "path": "research/bit-r438-transport-rehost/words/r438-t154.json.gz", + "usage": "input", + "git_blob": "e12a566658a4b2c8b6ae0ecc34fd41290f68f5e8", + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + } + ] +} diff --git a/research/bit-five-rank4-terminals/TASK.json b/research/bit-five-rank4-terminals/TASK.json new file mode 100644 index 0000000000..3f10da2927 --- /dev/null +++ b/research/bit-five-rank4-terminals/TASK.json @@ -0,0 +1,61 @@ +{ + "schema_version": 1, + "task_id": "bit-helper-contract", + "priority_revision": 6, + "base_commit": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "original_card": { + "id": "bit-helper-contract", + "question": "Can one precisely specified helper-mixing word satisfy a replacement for the inherited H2/K interface?", + "starting_points": [ + "docs/research/research-family-status.md", + "research/r439-bsection-stars-seed01/README.md", + "research/r439-copy-path-sharing-barrier/README.md" + ], + "methods": [ + "Derive a replacement interface lemma and price its implementation.", + "Seek an exact dirty-input or chronological-cut counterexample to the proposed replacement." + ], + "acceptance_gate": "A full boundary contract and paid profile; unchanged scalar counts alone are insufficient. 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/r439-bsection-stars-seed01/verify.py" + ], + "expected": "PASS_R439_BSECTION_STARS", + "inspect": "Compare the two false H2/K flags with the unchanged paid profile in its README.", + "scope": "Positive control / source-bound orientation only; this is not a new construction or full cold replay." + }, + "first_experiment": "Write one replacement H2/K implication for a single helper-star operation, then try to falsify it on dirty inputs.", + "bottleneck_link": "A legitimate replacement could admit a cheaper bit circuit; scalar savings alone do not alter the selected moment.", + "allowed_variations": [ + "Choose one helper-star or quartet instance; narrow to one boundary implication." + ], + "scope_change_triggers": [ + "Changing only source count or scalar addition count without an interface argument." + ], + "overlap_terms": [ + "H2_D_frame0_targets_from_helpers", + "K_equals_D", + "helper-star" + ] + }, + "scope_status": "changed", + "actual_scope": "Audit an explicit five-terminal BIT word, construct its finite residual charts and price its complete inherited global coverage model.", + "scope_change_reason": "User assigned the authenticated five-helper early-retirement candidate and local packaging of completed results; this changes the original single helper-star experiment.", + "bottleneck_link": "Five width-eight to width-four retirements remove twenty local ranks and twenty hosted progress ranks together. Complete idle pricing decides whether these local savings can support the requested exponent.", + "budget_minutes": 240, + "stop_rule": "Preserve an exact finite construction and a decisive scoped cost screen; do not build a native compiler once the unchanged coverage model fails the target.", + "outcome": "completed", + "evidence": "PROOF.md, INDEPENDENT-FIVE-TERMINALS.json, admission/README.md and moment/PROOF.md", + "author": "Ross Richardson", + "ai_assistance": "Substantial OpenAI Codex assistance, including separate exact circuit and moment reviewers. No human or formal-kernel review.", + "open_questions": [ + { + "question": "Can a changed coverage/controller law improve the full moment with these terminals?", + "why_it_matters": "The inherited coverage model does not attain the requested .002 target.", + "first_step": "Specify a different source-window or coverage law and a complete charged invoice before further search.", + "blocked_by": "No native chronological owner allocation, exact rounded cleanup, physical tape/storage compiler or compatible admitted joint caller." + } + ] +} diff --git a/research/bit-five-rank4-terminals/VERIFY.json b/research/bit-five-rank4-terminals/VERIFY.json new file mode 100644 index 0000000000..ef4cfaa43c --- /dev/null +++ b/research/bit-five-rank4-terminals/VERIFY.json @@ -0,0 +1,32 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/bit-r438-transport-rehost/words/r438-t154.json.gz" + ], + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 240, + "checks": "All660 dirty columns, both inverses, private return, exact charts, signed/defect bounds, strict moment enclosure and independent controls." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 240, + "checks": "Same complete checks with Python optimization; explicit fail-closed predicates remain active." + } + ] +} diff --git a/research/bit-five-rank4-terminals/WORD-ADAPTATION.patch b/research/bit-five-rank4-terminals/WORD-ADAPTATION.patch new file mode 100644 index 0000000000..c6a43b266e --- /dev/null +++ b/research/bit-five-rank4-terminals/WORD-ADAPTATION.patch @@ -0,0 +1,25 @@ +--- predecessor/verify_word.py ++++ verify_word.py +@@ -10,7 +10,8 @@ + from pathlib import Path + import argparse, gzip, json + HERE=Path(__file__).resolve().parent +-LANE=HERE.parent/'bit-boundaries' ++# Relocation-only adaptation; frozen source is retained under predecessor/. ++GEOMETRY=HERE.parent/'bit-r438-transport-rehost/words/r438-t154.json.gz' + EXPECTED_WORD='3bca74a2a8427eb18e86566baa19de597f10d0bc40c30b7443febd499ee2189a' + EXPECTED_GEOMETRY='a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022' + N=660 +@@ -91,10 +92,9 @@ + + def main(): + ap=argparse.ArgumentParser();ap.add_argument('--write',action='store_true');a=ap.parse_args() +- receipt=json.loads((LANE/'FIVE-TERMINALS.json').read_text()) +- blob=gzip.decompress((LANE/'FIVE-TERMINALS-WORD.json.gz').read_bytes()) ++ blob=gzip.decompress((HERE/'WORD.json.gz').read_bytes()) + need(sha256(blob).hexdigest()==EXPECTED_WORD,'independent frozen candidate word') +- source=Path(next(iter(receipt['source'])));rawbytes=source.read_bytes() ++ source=GEOMETRY;rawbytes=source.read_bytes() + need(sha256(rawbytes).hexdigest()==EXPECTED_GEOMETRY,'independent frozen geometry') + raw=json.loads(gzip.decompress(rawbytes));word=json.loads(blob);frames=Frames(raw) + rows,forward=replay(word,frames) diff --git a/research/bit-five-rank4-terminals/WORD.json.gz b/research/bit-five-rank4-terminals/WORD.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..aa9ec3c341ad87d7513b9ea6934d5253035b8d30 GIT binary patch literal 105171 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 H`HlYziN5}> literal 0 HcmV?d00001 diff --git a/research/bit-five-rank4-terminals/admission/inputs/TERMINAL-CHARTS.json b/research/bit-five-rank4-terminals/admission/inputs/TERMINAL-CHARTS.json new file mode 100644 index 0000000000..832e64f726 --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/inputs/TERMINAL-CHARTS.json @@ -0,0 +1,551 @@ +{ + "charts": [ + { + "Q_columns": [ + [ + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0" + ], + [ + "0", + "1/2", + "1/2", + "0", + "1/2", + "0", + "0", + "-1/2" + ], + [ + "0", + "1/2", + "1/2", + "0", + "-1/2", + "0", + "0", + "1/2" + ], + [ + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0" + ], + [ + "0", + "1/2", + "-1/2", + "0", + "1/2", + "0", + "0", + "1/2" + ], + [ + "0", + "1/2", + "-1/2", + "0", + "-1/2", + "0", + "0", + "-1/2" + ] + ], + "cold_full_root_labels": [ + 0, + 3, + 12, + 15 + ], + "determinant_unit_over_every_odd_field": true, + "inside_full_root_labels": [ + 5, + 6, + 9, + 10 + ], + "projector": [ + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "1/2", + "1/2", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "1/2", + "1/2", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "1/2", + "0", + "0", + "-1/2" + ], + [ + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0" + ], + [ + "0", + "0", + "0", + "0", + "-1/2", + "0", + "0", + "1/2" + ] + ], + "terminal_frame": 506 + }, + { + "Q_columns": [ + [ + "1/2", + "0", + "-1/2", + "0", + "1/2", + "0", + "-1/2", + "0" + ], + [ + "1/2", + "-1/2", + "0", + "0", + "0", + "0", + "1/2", + "-1/2" + ], + [ + "0", + "0", + "1/2", + "1/2", + "1/2", + "-1/2", + "0", + "0" + ], + [ + "0", + "1/2", + "0", + "1/2", + "0", + "1/2", + "0", + "-1/2" + ], + [ + "1/2", + "0", + "1/2", + "0", + "-1/2", + "0", + "-1/2", + "0" + ], + [ + "1/2", + "1/2", + "0", + "0", + "0", + "0", + "1/2", + "1/2" + ], + [ + "0", + "0", + "1/2", + "-1/2", + "1/2", + "1/2", + "0", + "0" + ], + [ + "0", + "1/2", + "0", + "-1/2", + "0", + "-1/2", + "0", + "-1/2" + ] + ], + "cold_full_root_labels": [ + 19, + 24, + 100, + 111 + ], + "determinant_unit_over_every_odd_field": true, + "inside_full_root_labels": [ + 21, + 29, + 97, + 105 + ], + "projector": [ + [ + "1/2", + "-1/4", + "-1/4", + "0", + "1/4", + "0", + "0", + "-1/4" + ], + [ + "-1/4", + "1/2", + "0", + "1/4", + "0", + "1/4", + "-1/4", + "0" + ], + [ + "-1/4", + "0", + "1/2", + "1/4", + "0", + "-1/4", + "1/4", + "0" + ], + [ + "0", + "1/4", + "1/4", + "1/2", + "1/4", + "0", + "0", + "-1/4" + ], + [ + "1/4", + "0", + "0", + "1/4", + "1/2", + "-1/4", + "-1/4", + "0" + ], + [ + "0", + "1/4", + "-1/4", + "0", + "-1/4", + "1/2", + "0", + "-1/4" + ], + [ + "0", + "-1/4", + "1/4", + "0", + "-1/4", + "0", + "1/2", + "-1/4" + ], + [ + "-1/4", + "0", + "0", + "-1/4", + "0", + "-1/4", + "-1/4", + "1/2" + ] + ], + "terminal_frame": 508 + }, + { + "Q_columns": [ + [ + "1/2", + "0", + "1/2", + "0", + "-1/2", + "0", + "-1/2", + "0" + ], + [ + "1/2", + "1/2", + "0", + "0", + "0", + "0", + "1/2", + "1/2" + ], + [ + "0", + "0", + "1/2", + "-1/2", + "1/2", + "1/2", + "0", + "0" + ], + [ + "0", + "1/2", + "0", + "-1/2", + "0", + "-1/2", + "0", + "-1/2" + ], + [ + "1/2", + "0", + "-1/2", + "0", + "1/2", + "0", + "-1/2", + "0" + ], + [ + "1/2", + "-1/2", + "0", + "0", + "0", + "0", + "1/2", + "-1/2" + ], + [ + "0", + "0", + "1/2", + "1/2", + "1/2", + "-1/2", + "0", + "0" + ], + [ + "0", + "1/2", + "0", + "1/2", + "0", + "1/2", + "0", + "-1/2" + ] + ], + "cold_full_root_labels": [ + 21, + 29, + 97, + 105 + ], + "determinant_unit_over_every_odd_field": true, + "inside_full_root_labels": [ + 19, + 24, + 100, + 111 + ], + "projector": [ + [ + "1/2", + "1/4", + "1/4", + "0", + "-1/4", + "0", + "0", + "1/4" + ], + [ + "1/4", + "1/2", + "0", + "-1/4", + "0", + "-1/4", + "1/4", + "0" + ], + [ + "1/4", + "0", + "1/2", + "-1/4", + "0", + "1/4", + "-1/4", + "0" + ], + [ + "0", + "-1/4", + "-1/4", + "1/2", + "-1/4", + "0", + "0", + "1/4" + ], + [ + "-1/4", + "0", + "0", + "-1/4", + "1/2", + "1/4", + "1/4", + "0" + ], + [ + "0", + "-1/4", + "1/4", + "0", + "1/4", + "1/2", + "0", + "1/4" + ], + [ + "0", + "1/4", + "-1/4", + "0", + "1/4", + "0", + "1/2", + "1/4" + ], + [ + "1/4", + "0", + "0", + "1/4", + "0", + "1/4", + "1/4", + "1/2" + ] + ], + "terminal_frame": 509 + } + ], + "identity": "D_E=diag(Q,Q) D_coordinate4 diag(Q^T,Q^T); Q^T Q=I over Z[1/2], hence over every odd field.", + "no_new_kappa": true, + "scope": "This gives actual coordinate-width4 residual charts. Chronological whole-owner availability, paid ADDRESS adapter execution and source/tape costs are separate obligations.", + "source": { + "/Users/ross/git/math/integer-mult-bounds/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55" + }, + "status": "PASS_THREE_DYADIC_ORTHOGONAL_RANK4_TERMINAL_CHARTS" +} diff --git a/research/bit-five-rank4-terminals/admission/inputs/bitE8-r865.json.gz b/research/bit-five-rank4-terminals/admission/inputs/bitE8-r865.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..8bec1751f7e33c3a1e4673ef5dbc34d6f205321e GIT binary patch literal 33865 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 F0sxs54@Cd~ literal 0 HcmV?d00001 diff --git a/research/bit-five-rank4-terminals/admission/inputs/r438-t154.json.gz b/research/bit-five-rank4-terminals/admission/inputs/r438-t154.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..e12a566658a4b2c8b6ae0ecc34fd41290f68f5e8 GIT binary patch literal 42305 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%0D#o{m4v0S^lXMc!B^5s|rQj}G= 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 literal 0 HcmV?d00001 diff --git a/research/bit-five-rank4-terminals/admission/provenance/ADMISSION-CHECK.original.json b/research/bit-five-rank4-terminals/admission/provenance/ADMISSION-CHECK.original.json new file mode 100644 index 0000000000..4282d3e2da --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/provenance/ADMISSION-CHECK.original.json @@ -0,0 +1,5699 @@ +{ + "authenticated_unique_files": 27, + "controls": [ + "nonorthogonal chart rejected", + "wrong actual terminal span rejected", + "COPY defect survives inverse source shear at 256 bits" + ], + "forward": { + "opcode_counts": { + "0": 2904, + "1": 36005, + "2": 9, + "3": 9 + }, + "positive_envelope_exact_erase_only": 8402567, + "private_bounds_after_each_erase": [ + 290, + 586, + 906, + 1330, + 1892, + 2222, + 2528, + 2994, + 3762 + ], + "unit_defect_all_prefix_bound": 662069, + "unit_defect_persistent_endpoint_bound": 662069, + "unit_defect_private_endpoint_bound": 3762 + }, + "independent_charts": [ + { + "address_basis_columns": 16, + "coordinate_program": { + "elementary_factors": 17, + "forward_max_prefix_denominator": 2, + "forward_max_prefix_row_l1": "4", + "inverse": [ + [ + "swap", + 5, + 0 + ], + [ + "swap", + 6, + 1 + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 6, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 7, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 3, + "-1" + ], + [ + "add", + 2, + 3, + "-1" + ], + [ + "add", + 7, + 3, + "-1" + ], + [ + "swap", + 5, + 4 + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "scale", + 7, + "1/2" + ], + [ + "scale", + 7, + "-1" + ], + [ + "add", + 2, + 7, + "1" + ], + [ + "add", + 3, + 7, + "-1" + ], + [ + "add", + 6, + 7, + "-1" + ] + ], + "inverse_max_prefix_denominator": 2, + "inverse_max_prefix_row_l1": "4", + "missing_final_gate_rejected": true, + "primitive_count": 24, + "primitive_histogram": { + "add": 10, + "scale:-1": 2, + "scale:1/2": 4, + "scale:2": 4, + "swap": 4 + }, + "program": [ + [ + "add", + 6, + 7, + "1" + ], + [ + "add", + 3, + 7, + "1" + ], + [ + "add", + 2, + 7, + "-1" + ], + [ + "scale", + 7, + "-1" + ], + [ + "scale", + 7, + "2" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "swap", + 5, + 4 + ], + [ + "add", + 7, + 3, + "1" + ], + [ + "add", + 2, + 3, + "1" + ], + [ + "scale", + 3, + "-1" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 7, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 6, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "swap", + 6, + 1 + ], + [ + "swap", + 5, + 0 + ] + ], + "residual_16_coordinate_primitive_count": 100, + "residual_16_coordinate_program": [ + [ + "swap", + 5, + 0 + ], + [ + "swap", + 6, + 1 + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 6, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 7, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 3, + "-1" + ], + [ + "add", + 2, + 3, + "-1" + ], + [ + "add", + 7, + 3, + "-1" + ], + [ + "swap", + 5, + 4 + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "scale", + 7, + "1/2" + ], + [ + "scale", + 7, + "-1" + ], + [ + "add", + 2, + 7, + "1" + ], + [ + "add", + 3, + 7, + "-1" + ], + [ + "add", + 6, + 7, + "-1" + ], + [ + "swap", + 13, + 8 + ], + [ + "swap", + 14, + 9 + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 12, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 14, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 15, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "swap", + 12, + 11 + ], + [ + "scale", + 11, + "-1" + ], + [ + "add", + 10, + 11, + "-1" + ], + [ + "add", + 15, + 11, + "-1" + ], + [ + "swap", + 13, + 12 + ], + [ + "add", + 11, + 14, + "1" + ], + [ + "add", + 15, + 14, + "-1" + ], + [ + "scale", + 15, + "1/2" + ], + [ + "scale", + 15, + "-1" + ], + [ + "add", + 10, + 15, + "1" + ], + [ + "add", + 11, + 15, + "-1" + ], + [ + "add", + 14, + 15, + "-1" + ], + [ + "swap", + 0, + 8 + ], + [ + "swap", + 1, + 9 + ], + [ + "swap", + 2, + 10 + ], + [ + "swap", + 3, + 11 + ], + [ + "add", + 6, + 7, + "1" + ], + [ + "add", + 3, + 7, + "1" + ], + [ + "add", + 2, + 7, + "-1" + ], + [ + "scale", + 7, + "-1" + ], + [ + "scale", + 7, + "2" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "swap", + 5, + 4 + ], + [ + "add", + 7, + 3, + "1" + ], + [ + "add", + 2, + 3, + "1" + ], + [ + "scale", + 3, + "-1" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 7, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 6, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "swap", + 6, + 1 + ], + [ + "swap", + 5, + 0 + ], + [ + "add", + 14, + 15, + "1" + ], + [ + "add", + 11, + 15, + "1" + ], + [ + "add", + 10, + 15, + "-1" + ], + [ + "scale", + 15, + "-1" + ], + [ + "scale", + 15, + "2" + ], + [ + "add", + 15, + 14, + "1" + ], + [ + "add", + 11, + 14, + "-1" + ], + [ + "swap", + 13, + 12 + ], + [ + "add", + 15, + 11, + "1" + ], + [ + "add", + 10, + 11, + "1" + ], + [ + "scale", + 11, + "-1" + ], + [ + "swap", + 12, + 11 + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 15, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 14, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 12, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "swap", + 14, + 9 + ], + [ + "swap", + 13, + 8 + ] + ], + "residual_max_prefix_denominator": 2, + "residual_max_prefix_row_l1": "4", + "scratch_field_elements": 0 + }, + "frame": 506, + "max_denominator": 2, + "rank": 4 + }, + { + "address_basis_columns": 16, + "coordinate_program": { + "elementary_factors": 44, + "forward_max_prefix_denominator": 2, + "forward_max_prefix_row_l1": "8", + "inverse": [ + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "-1" + ], + [ + "add", + 0, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 3, + "-1" + ], + [ + "add", + 0, + 3, + "-1" + ], + [ + "add", + 1, + 3, + "1" + ], + [ + "add", + 2, + 3, + "-1" + ], + [ + "add", + 5, + 3, + "-1" + ], + [ + "add", + 6, + 3, + "-1" + ], + [ + "add", + 7, + 3, + "1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 0, + 4, + "1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 5, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "swap", + 6, + 5 + ], + [ + "scale", + 5, + "1/2" + ], + [ + "add", + 0, + 5, + "-1" + ], + [ + "add", + 1, + 5, + "1" + ], + [ + "add", + 4, + 5, + "-1" + ], + [ + "scale", + 6, + "1/2" + ], + [ + "add", + 1, + 6, + "1" + ], + [ + "add", + 2, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 5, + 6, + "-1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "scale", + 7, + "1/2" + ], + [ + "scale", + 7, + "-1" + ], + [ + "add", + 1, + 7, + "1" + ], + [ + "add", + 3, + 7, + "1" + ], + [ + "add", + 5, + 7, + "-1" + ] + ], + "inverse_max_prefix_denominator": 2, + "inverse_max_prefix_row_l1": "8", + "missing_final_gate_rejected": true, + "primitive_count": 70, + "primitive_histogram": { + "add": 40, + "scale:-1": 4, + "scale:1/2": 12, + "scale:2": 12, + "swap": 2 + }, + "program": [ + [ + "add", + 5, + 7, + "1" + ], + [ + "add", + 3, + 7, + "-1" + ], + [ + "add", + 1, + 7, + "-1" + ], + [ + "scale", + 7, + "-1" + ], + [ + "scale", + 7, + "2" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 5, + 6, + "1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 2, + 6, + "1" + ], + [ + "add", + 1, + 6, + "-1" + ], + [ + "scale", + 6, + "2" + ], + [ + "add", + 4, + 5, + "1" + ], + [ + "add", + 1, + 5, + "-1" + ], + [ + "add", + 0, + 5, + "1" + ], + [ + "scale", + 5, + "2" + ], + [ + "swap", + 6, + 5 + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 5, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 0, + 4, + "-1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 7, + 3, + "-1" + ], + [ + "add", + 6, + 3, + "1" + ], + [ + "add", + 5, + 3, + "1" + ], + [ + "add", + 2, + 3, + "1" + ], + [ + "add", + 1, + 3, + "-1" + ], + [ + "add", + 0, + 3, + "1" + ], + [ + "scale", + 3, + "-1" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 0, + 1, + "1" + ], + [ + "scale", + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ] + ], + "residual_16_coordinate_primitive_count": 284, + "residual_16_coordinate_program": [ + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "-1" + ], + [ + "add", + 0, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 3, + "-1" + ], + [ + "add", + 0, + 3, + "-1" + ], + [ + "add", + 1, + 3, + "1" + ], + [ + "add", + 2, + 3, + "-1" + ], + [ + "add", + 5, + 3, + "-1" + ], + [ + "add", + 6, + 3, + "-1" + ], + [ + "add", + 7, + 3, + "1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 0, + 4, + "1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 5, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "swap", + 6, + 5 + ], + [ + "scale", + 5, + "1/2" + ], + [ + "add", + 0, + 5, + "-1" + ], + [ + "add", + 1, + 5, + "1" + ], + [ + "add", + 4, + 5, + "-1" + ], + [ + "scale", + 6, + "1/2" + ], + [ + "add", + 1, + 6, + "1" + ], + [ + "add", + 2, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 5, + 6, + "-1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "scale", + 7, + "1/2" + ], + [ + "scale", + 7, + "-1" + ], + [ + "add", + 1, + 7, + "1" + ], + [ + "add", + 3, + 7, + "1" + ], + [ + "add", + 5, + 7, + "-1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 10, + 8, + "1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 12, + 8, + "-1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 14, + 8, + "1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 9, + "2" + ], + [ + "scale", + 9, + "-1" + ], + [ + "add", + 8, + 9, + "-1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 10, + 9, + "-1" + ], + [ + "scale", + 9, + "2" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 12, + 9, + "1" + ], + [ + "scale", + 9, + "2" + ], + [ + "add", + 14, + 9, + "-1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 15, + 9, + "1" + ], + [ + "scale", + 9, + "2" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 11, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 12, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 13, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "swap", + 12, + 11 + ], + [ + "scale", + 11, + "-1" + ], + [ + "add", + 8, + 11, + "-1" + ], + [ + "add", + 9, + 11, + "1" + ], + [ + "add", + 10, + 11, + "-1" + ], + [ + "add", + 13, + 11, + "-1" + ], + [ + "add", + 14, + 11, + "-1" + ], + [ + "add", + 15, + 11, + "1" + ], + [ + "scale", + 12, + "-1" + ], + [ + "add", + 8, + 12, + "1" + ], + [ + "add", + 9, + 12, + "-1" + ], + [ + "add", + 9, + 12, + "-1" + ], + [ + "add", + 11, + 12, + "-1" + ], + [ + "add", + 11, + 12, + "-1" + ], + [ + "add", + 13, + 12, + "1" + ], + [ + "add", + 14, + 12, + "1" + ], + [ + "add", + 14, + 12, + "1" + ], + [ + "add", + 15, + 12, + "-1" + ], + [ + "add", + 15, + 12, + "-1" + ], + [ + "swap", + 14, + 13 + ], + [ + "scale", + 13, + "1/2" + ], + [ + "add", + 8, + 13, + "-1" + ], + [ + "add", + 9, + 13, + "1" + ], + [ + "add", + 12, + 13, + "-1" + ], + [ + "scale", + 14, + "1/2" + ], + [ + "add", + 9, + 14, + "1" + ], + [ + "add", + 10, + 14, + "-1" + ], + [ + "add", + 11, + 14, + "1" + ], + [ + "add", + 11, + 14, + "1" + ], + [ + "add", + 13, + 14, + "-1" + ], + [ + "add", + 15, + 14, + "1" + ], + [ + "add", + 15, + 14, + "1" + ], + [ + "scale", + 15, + "1/2" + ], + [ + "scale", + 15, + "-1" + ], + [ + "add", + 9, + 15, + "1" + ], + [ + "add", + 11, + 15, + "1" + ], + [ + "add", + 13, + 15, + "-1" + ], + [ + "swap", + 0, + 8 + ], + [ + "swap", + 1, + 9 + ], + [ + "swap", + 2, + 10 + ], + [ + "swap", + 3, + 11 + ], + [ + "add", + 5, + 7, + "1" + ], + [ + "add", + 3, + 7, + "-1" + ], + [ + "add", + 1, + 7, + "-1" + ], + [ + "scale", + 7, + "-1" + ], + [ + "scale", + 7, + "2" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 5, + 6, + "1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 2, + 6, + "1" + ], + [ + "add", + 1, + 6, + "-1" + ], + [ + "scale", + 6, + "2" + ], + [ + "add", + 4, + 5, + "1" + ], + [ + "add", + 1, + 5, + "-1" + ], + [ + "add", + 0, + 5, + "1" + ], + [ + "scale", + 5, + "2" + ], + [ + "swap", + 6, + 5 + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 5, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 0, + 4, + "-1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 7, + 3, + "-1" + ], + [ + "add", + 6, + 3, + "1" + ], + [ + "add", + 5, + 3, + "1" + ], + [ + "add", + 2, + 3, + "1" + ], + [ + "add", + 1, + 3, + "-1" + ], + [ + "add", + 0, + 3, + "1" + ], + [ + "scale", + 3, + "-1" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 0, + 1, + "1" + ], + [ + "scale", + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 13, + 15, + "1" + ], + [ + "add", + 11, + 15, + "-1" + ], + [ + "add", + 9, + 15, + "-1" + ], + [ + "scale", + 15, + "-1" + ], + [ + "scale", + 15, + "2" + ], + [ + "add", + 15, + 14, + "-1" + ], + [ + "add", + 15, + 14, + "-1" + ], + [ + "add", + 13, + 14, + "1" + ], + [ + "add", + 11, + 14, + "-1" + ], + [ + "add", + 11, + 14, + "-1" + ], + [ + "add", + 10, + 14, + "1" + ], + [ + "add", + 9, + 14, + "-1" + ], + [ + "scale", + 14, + "2" + ], + [ + "add", + 12, + 13, + "1" + ], + [ + "add", + 9, + 13, + "-1" + ], + [ + "add", + 8, + 13, + "1" + ], + [ + "scale", + 13, + "2" + ], + [ + "swap", + 14, + 13 + ], + [ + "add", + 15, + 12, + "1" + ], + [ + "add", + 15, + 12, + "1" + ], + [ + "add", + 14, + 12, + "-1" + ], + [ + "add", + 14, + 12, + "-1" + ], + [ + "add", + 13, + 12, + "-1" + ], + [ + "add", + 11, + 12, + "1" + ], + [ + "add", + 11, + 12, + "1" + ], + [ + "add", + 9, + 12, + "1" + ], + [ + "add", + 9, + 12, + "1" + ], + [ + "add", + 8, + 12, + "-1" + ], + [ + "scale", + 12, + "-1" + ], + [ + "add", + 15, + 11, + "-1" + ], + [ + "add", + 14, + 11, + "1" + ], + [ + "add", + 13, + 11, + "1" + ], + [ + "add", + 10, + 11, + "1" + ], + [ + "add", + 9, + 11, + "-1" + ], + [ + "add", + 8, + 11, + "1" + ], + [ + "scale", + 11, + "-1" + ], + [ + "swap", + 12, + 11 + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 13, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 12, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 11, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 15, + 9, + "-1" + ], + [ + "scale", + 9, + "2" + ], + [ + "add", + 14, + 9, + "1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 12, + 9, + "-1" + ], + [ + "scale", + 9, + "2" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 10, + 9, + "1" + ], + [ + "scale", + 9, + "2" + ], + [ + "add", + 8, + 9, + "1" + ], + [ + "scale", + 9, + "-1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 14, + 8, + "-1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 12, + 8, + "1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 10, + 8, + "-1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ] + ], + "residual_max_prefix_denominator": 4, + "residual_max_prefix_row_l1": "10", + "scratch_field_elements": 0 + }, + "frame": 508, + "max_denominator": 2, + "rank": 4 + }, + { + "address_basis_columns": 16, + "coordinate_program": { + "elementary_factors": 44, + "forward_max_prefix_denominator": 2, + "forward_max_prefix_row_l1": "8", + "inverse": [ + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 0, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 3, + "-1" + ], + [ + "add", + 0, + 3, + "1" + ], + [ + "add", + 1, + 3, + "-1" + ], + [ + "add", + 2, + 3, + "-1" + ], + [ + "add", + 5, + 3, + "1" + ], + [ + "add", + 6, + 3, + "1" + ], + [ + "add", + 7, + 3, + "1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 0, + 4, + "1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 5, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "swap", + 6, + 5 + ], + [ + "scale", + 5, + "1/2" + ], + [ + "add", + 0, + 5, + "-1" + ], + [ + "add", + 1, + 5, + "1" + ], + [ + "add", + 4, + 5, + "-1" + ], + [ + "scale", + 6, + "1/2" + ], + [ + "scale", + 6, + "-1" + ], + [ + "add", + 1, + 6, + "-1" + ], + [ + "add", + 2, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 5, + 6, + "1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "scale", + 7, + "1/2" + ], + [ + "scale", + 7, + "-1" + ], + [ + "add", + 1, + 7, + "-1" + ], + [ + "add", + 3, + 7, + "1" + ], + [ + "add", + 5, + 7, + "1" + ] + ], + "inverse_max_prefix_denominator": 2, + "inverse_max_prefix_row_l1": "8", + "missing_final_gate_rejected": true, + "primitive_count": 70, + "primitive_histogram": { + "add": 40, + "scale:-1": 4, + "scale:1/2": 12, + "scale:2": 12, + "swap": 2 + }, + "program": [ + [ + "add", + 5, + 7, + "-1" + ], + [ + "add", + 3, + 7, + "-1" + ], + [ + "add", + 1, + 7, + "1" + ], + [ + "scale", + 7, + "-1" + ], + [ + "scale", + 7, + "2" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 5, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 2, + 6, + "1" + ], + [ + "add", + 1, + 6, + "1" + ], + [ + "scale", + 6, + "-1" + ], + [ + "scale", + 6, + "2" + ], + [ + "add", + 4, + 5, + "1" + ], + [ + "add", + 1, + 5, + "-1" + ], + [ + "add", + 0, + 5, + "1" + ], + [ + "scale", + 5, + "2" + ], + [ + "swap", + 6, + 5 + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 5, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 0, + 4, + "-1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 7, + 3, + "-1" + ], + [ + "add", + 6, + 3, + "-1" + ], + [ + "add", + 5, + 3, + "-1" + ], + [ + "add", + 2, + 3, + "1" + ], + [ + "add", + 1, + 3, + "1" + ], + [ + "add", + 0, + 3, + "-1" + ], + [ + "scale", + 3, + "-1" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 0, + 1, + "1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ] + ], + "residual_16_coordinate_primitive_count": 284, + "residual_16_coordinate_program": [ + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 0, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 3, + "-1" + ], + [ + "add", + 0, + 3, + "1" + ], + [ + "add", + 1, + 3, + "-1" + ], + [ + "add", + 2, + 3, + "-1" + ], + [ + "add", + 5, + 3, + "1" + ], + [ + "add", + 6, + 3, + "1" + ], + [ + "add", + 7, + 3, + "1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 0, + 4, + "1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 5, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "swap", + 6, + 5 + ], + [ + "scale", + 5, + "1/2" + ], + [ + "add", + 0, + 5, + "-1" + ], + [ + "add", + 1, + 5, + "1" + ], + [ + "add", + 4, + 5, + "-1" + ], + [ + "scale", + 6, + "1/2" + ], + [ + "scale", + 6, + "-1" + ], + [ + "add", + 1, + 6, + "-1" + ], + [ + "add", + 2, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 5, + 6, + "1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "scale", + 7, + "1/2" + ], + [ + "scale", + 7, + "-1" + ], + [ + "add", + 1, + 7, + "-1" + ], + [ + "add", + 3, + 7, + "1" + ], + [ + "add", + 5, + 7, + "1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 10, + 8, + "-1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 12, + 8, + "1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 14, + 8, + "1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 9, + "2" + ], + [ + "add", + 8, + 9, + "-1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 10, + 9, + "1" + ], + [ + "scale", + 9, + "2" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 12, + 9, + "-1" + ], + [ + "scale", + 9, + "2" + ], + [ + "add", + 14, + 9, + "-1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 15, + 9, + "-1" + ], + [ + "scale", + 9, + "2" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 11, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 12, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 13, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "swap", + 12, + 11 + ], + [ + "scale", + 11, + "-1" + ], + [ + "add", + 8, + 11, + "1" + ], + [ + "add", + 9, + 11, + "-1" + ], + [ + "add", + 10, + 11, + "-1" + ], + [ + "add", + 13, + 11, + "1" + ], + [ + "add", + 14, + 11, + "1" + ], + [ + "add", + 15, + 11, + "1" + ], + [ + "scale", + 12, + "-1" + ], + [ + "add", + 8, + 12, + "1" + ], + [ + "add", + 9, + 12, + "-1" + ], + [ + "add", + 9, + 12, + "-1" + ], + [ + "add", + 11, + 12, + "1" + ], + [ + "add", + 11, + 12, + "1" + ], + [ + "add", + 13, + 12, + "1" + ], + [ + "add", + 14, + 12, + "1" + ], + [ + "add", + 14, + 12, + "1" + ], + [ + "add", + 15, + 12, + "1" + ], + [ + "add", + 15, + 12, + "1" + ], + [ + "swap", + 14, + 13 + ], + [ + "scale", + 13, + "1/2" + ], + [ + "add", + 8, + 13, + "-1" + ], + [ + "add", + 9, + 13, + "1" + ], + [ + "add", + 12, + 13, + "-1" + ], + [ + "scale", + 14, + "1/2" + ], + [ + "scale", + 14, + "-1" + ], + [ + "add", + 9, + 14, + "-1" + ], + [ + "add", + 10, + 14, + "-1" + ], + [ + "add", + 11, + 14, + "1" + ], + [ + "add", + 11, + 14, + "1" + ], + [ + "add", + 13, + 14, + "1" + ], + [ + "add", + 15, + 14, + "1" + ], + [ + "add", + 15, + 14, + "1" + ], + [ + "scale", + 15, + "1/2" + ], + [ + "scale", + 15, + "-1" + ], + [ + "add", + 9, + 15, + "-1" + ], + [ + "add", + 11, + 15, + "1" + ], + [ + "add", + 13, + 15, + "1" + ], + [ + "swap", + 0, + 8 + ], + [ + "swap", + 1, + 9 + ], + [ + "swap", + 2, + 10 + ], + [ + "swap", + 3, + 11 + ], + [ + "add", + 5, + 7, + "-1" + ], + [ + "add", + 3, + 7, + "-1" + ], + [ + "add", + 1, + 7, + "1" + ], + [ + "scale", + 7, + "-1" + ], + [ + "scale", + 7, + "2" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 5, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 2, + 6, + "1" + ], + [ + "add", + 1, + 6, + "1" + ], + [ + "scale", + 6, + "-1" + ], + [ + "scale", + 6, + "2" + ], + [ + "add", + 4, + 5, + "1" + ], + [ + "add", + 1, + 5, + "-1" + ], + [ + "add", + 0, + 5, + "1" + ], + [ + "scale", + 5, + "2" + ], + [ + "swap", + 6, + 5 + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 5, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 0, + 4, + "-1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 7, + 3, + "-1" + ], + [ + "add", + 6, + 3, + "-1" + ], + [ + "add", + 5, + 3, + "-1" + ], + [ + "add", + 2, + 3, + "1" + ], + [ + "add", + 1, + 3, + "1" + ], + [ + "add", + 0, + 3, + "-1" + ], + [ + "scale", + 3, + "-1" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 0, + 1, + "1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 13, + 15, + "-1" + ], + [ + "add", + 11, + 15, + "-1" + ], + [ + "add", + 9, + 15, + "1" + ], + [ + "scale", + 15, + "-1" + ], + [ + "scale", + 15, + "2" + ], + [ + "add", + 15, + 14, + "-1" + ], + [ + "add", + 15, + 14, + "-1" + ], + [ + "add", + 13, + 14, + "-1" + ], + [ + "add", + 11, + 14, + "-1" + ], + [ + "add", + 11, + 14, + "-1" + ], + [ + "add", + 10, + 14, + "1" + ], + [ + "add", + 9, + 14, + "1" + ], + [ + "scale", + 14, + "-1" + ], + [ + "scale", + 14, + "2" + ], + [ + "add", + 12, + 13, + "1" + ], + [ + "add", + 9, + 13, + "-1" + ], + [ + "add", + 8, + 13, + "1" + ], + [ + "scale", + 13, + "2" + ], + [ + "swap", + 14, + 13 + ], + [ + "add", + 15, + 12, + "-1" + ], + [ + "add", + 15, + 12, + "-1" + ], + [ + "add", + 14, + 12, + "-1" + ], + [ + "add", + 14, + 12, + "-1" + ], + [ + "add", + 13, + 12, + "-1" + ], + [ + "add", + 11, + 12, + "-1" + ], + [ + "add", + 11, + 12, + "-1" + ], + [ + "add", + 9, + 12, + "1" + ], + [ + "add", + 9, + 12, + "1" + ], + [ + "add", + 8, + 12, + "-1" + ], + [ + "scale", + 12, + "-1" + ], + [ + "add", + 15, + 11, + "-1" + ], + [ + "add", + 14, + 11, + "-1" + ], + [ + "add", + 13, + 11, + "-1" + ], + [ + "add", + 10, + 11, + "1" + ], + [ + "add", + 9, + 11, + "1" + ], + [ + "add", + 8, + 11, + "-1" + ], + [ + "scale", + 11, + "-1" + ], + [ + "swap", + 12, + 11 + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 13, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 12, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 11, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 15, + 9, + "1" + ], + [ + "scale", + 9, + "2" + ], + [ + "add", + 14, + 9, + "1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 12, + 9, + "1" + ], + [ + "scale", + 9, + "2" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 10, + 9, + "-1" + ], + [ + "scale", + 9, + "2" + ], + [ + "add", + 8, + 9, + "1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 14, + 8, + "-1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 12, + 8, + "-1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 10, + 8, + "1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ] + ], + "residual_max_prefix_denominator": 4, + "residual_max_prefix_row_l1": "10", + "scratch_field_elements": 0 + }, + "frame": 509, + "max_denominator": 2, + "rank": 4 + } + ], + "inverse": { + "opcode_counts": { + "0": 2904, + "1": 36005, + "2": 9, + "3": 9 + }, + "positive_envelope_exact_erase_only": 630744, + "private_bounds_after_each_erase": [ + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32, + 36 + ], + "unit_defect_all_prefix_bound": 47917, + "unit_defect_persistent_endpoint_bound": 47917, + "unit_defect_private_endpoint_bound": 36 + }, + "limits": "No exact rounded-child cleanup, chronological owners, paid native routes, all-size compiler, tape or outer admission.", + "no_new_kappa": true, + "precision": { + "conditional_depth_two": { + "charged_bits": 512, + "child_count_max": 1048575, + "extra_invoice_max": "1645504557321206042154969182557350504982735865633579863348609023", + "scope": "Sufficient conditional arithmetic only; no compiler or owner invoice is supplied.", + "upper_bound_bits": 463 + }, + "five_stage_bits": 114, + "five_stage_integer_bound": "15105050522746917552142185212669952", + "five_stage_multiple_of_64": 128, + "nine_stage_bits": 211, + "nine_stage_integer_bound": "1737850264432662463887984248694818736482648196425093483769888768", + "nine_stage_multiple_of_64": 256 + }, + "script_sha256": "c5b30e5a3422a61ba560459bf39f27d825d83154f95593672785b2f7ceaa5194", + "source_sha256": { + "research/e8-bit-carrier-skeleton/code/bit/checkers/columns_h.cpp": "d1297f9052be4f2496e1ff2a77e4db2c0cdbd7d460d489b4c03e50bf317238ce", + "research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/code/assemble9.py": "4bf6768224a3fac81ccda26df24f3763f9a4fbc35ad62bef2888595cdae519fe", + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8", + "research/pr589-five-helper-hosting/PROOF.md": "59cae781bfbe1a01ed9e66a8efeeb5a2b995e5ecdf908586b23ecc39f2b8d647" + }, + "status": "PASS_FINITE_ADMISSION_DIAGNOSTICS_NOT_NATIVE_SUPPLIER", + "word_sha256": "3bca74a2a8427eb18e86566baa19de597f10d0bc40c30b7443febd499ee2189a" +} diff --git a/research/bit-five-rank4-terminals/admission/provenance/FROZEN-MANIFEST.original.json b/research/bit-five-rank4-terminals/admission/provenance/FROZEN-MANIFEST.original.json new file mode 100644 index 0000000000..7f45ffc27e --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/provenance/FROZEN-MANIFEST.original.json @@ -0,0 +1,149 @@ +{ + "continuation": "Use a new owned directory. Never run write-mode producers in this frozen directory. Parent audit files are snapshot pins owned and separately frozen by parent.", + "frozen_at_utc": "2026-10-19T08:11:56.552443+00:00", + "generic_proof_source": [ + { + "bytes": 12438, + "path": "/Users/ross/git/math/integer-mult-bounds/research/pr589-five-helper-hosting/PROOF.md", + "sha256": "59cae781bfbe1a01ed9e66a8efeeb5a2b995e5ecdf908586b23ecc39f2b8d647" + } + ], + "no_new_kappa": true, + "owned_directory": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries", + "owned_files": [ + { + "bytes": 105274, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/A-TERMINAL-CONES-WORD.json.gz", + "sha256": "29e2a3bba12ec1342741b7c74df0c4ccb4ce771c32b76d13420d0d6ba8460c58" + }, + { + "bytes": 7692, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/A-TERMINAL-CONES.json", + "sha256": "1d92c8eadeba566b0e54523e26a8944f93e6f972d911f994fe4ce4579e30e200" + }, + { + "bytes": 105171, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/FIVE-TERMINALS-WORD.json.gz", + "sha256": "c46ccd7d3eedabc6a7efbb1a91ec13f2928bad8ee0bac57c6e593a092d13d96c" + }, + { + "bytes": 9579, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/FIVE-TERMINALS.json", + "sha256": "75e029f9bb6ca42540fa633b51bf2d8d62125c57a0ee184fbf3c94e08a8c7d58" + }, + { + "bytes": 10529, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/HANDOFF.md", + "sha256": "39660a7edd09e8d638efff6d0beccdb3ac2e5e964b89ed5c3faf29a94b3da2ec" + }, + { + "bytes": 2232, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/PAIRED-TERMINAL-PROBE.json", + "sha256": "3333d562ec6c35411b6bb3891f10b3eed263e115df66d155bcd096b6675cb4e6" + }, + { + "bytes": 8718, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/TERMINAL-CHARTS.json", + "sha256": "489216ea25f47f061675ab7b7e4a17289a531bce6fe77cca166a13265bfcbb17" + }, + { + "bytes": 9834, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/a_terminal_cones.py", + "sha256": "05543e41aca4eddef96399a68ee863a969a925931e64f76ae061bf1b1ac61ca0" + }, + { + "bytes": 2315, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/boundary_model.py", + "sha256": "0f9c8ed604980a8df04a53d4fbde1df43f198ca2230bff3e2ba758c59d1e78cf" + }, + { + "bytes": 9356, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/five_terminals.py", + "sha256": "51ba9eaa47e5c5eeda085f16d02996e55f3ec0dfa60c5393080e2c865c62473b" + }, + { + "bytes": 10115, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/paired_terminal_probe.py", + "sha256": "9a12e29c86c3bf95e07996287cae54ea82b50592c4a84991efab89f73b0b10b5" + }, + { + "bytes": 2973, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/terminal_charts.py", + "sha256": "97168bdd294f12dcb5dd569226546320c606ec48230bd88078cd372142f905af" + } + ], + "parent_audit_checkpoint_snapshots": [ + { + "bytes": 8521, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/root-bit-audit/verify_word.py", + "sha256": "64f62ecdbc77518dd7705087f0aaa852412d607cf197ee3fa9b0a2a96683750b" + }, + { + "bytes": 2078, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/root-bit-audit/INDEPENDENT-FIVE-TERMINALS.json", + "sha256": "628139c3ab4d55ee2cafec1ba7353ddc78c5fec3f741ebf59e5c998bc94f948a" + }, + { + "bytes": 5818, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/root-bit-audit/OPERATOR-BOUNDARY.md", + "sha256": "b268114ee08a3cb0c6fb18928361528cc7385bd5f89b90bf247b2739a513dbac" + } + ], + "python_version": "3.14.6 (main, Jun 10 2026, 10:03:53) [Clang 21.0.0 (clang-2100.0.123.102)]", + "read_only_runtime_data": [ + { + "bytes": 42305, + "path": "/Users/ross/git/math/integer-mult-bounds/research/bit-r438-transport-rehost/words/r438-t154.json.gz", + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + { + "bytes": 33865, + "path": "/Users/ross/git/math/integer-mult-bounds/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz", + "sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55" + } + ], + "read_only_runtime_modules": [ + { + "bytes": 13065, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-changed-endpoints-20261019T0153Z/bit-native-caller/old_kernel_boost.py", + "sha256": "71070cceb72b089d745f080e642dce26c1404508411288265b6bf3f4a004ea20" + }, + { + "bytes": 15496, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-changed-endpoints-20261019T0153Z/bit-native-caller/global_kernel_boost.py", + "sha256": "22773bd9f955130ca3c1fe2fa2c047ee7d831759df08567e2a6c987349b18272" + }, + { + "bytes": 7405, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-changed-endpoints-20261019T0153Z/bit-native-caller/helper_tail_retime.py", + "sha256": "815f20725a20ea05064695064f4b34c4e4e6e6feaa7e42dfceb1e7031d4fed1d" + }, + { + "bytes": 12976, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-changed-endpoints-20261019T0153Z/bit-native-caller/physical_code.py", + "sha256": "1188b1884a1d8b6873ea118d39f17f939f9e78ca778fa2a821d8a8fe2fd3d043" + }, + { + "bytes": 7569, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-changed-endpoints-20261019T0153Z/bit-native-caller/cold_cosets.py", + "sha256": "b266d71551ea82a767029727bf2ce6b594d0f5b4d49719a146abbe6348a7d050" + }, + { + "bytes": 10050, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-changed-endpoints-20261019T0153Z/bit-native-caller/kernel_entrances.py", + "sha256": "921f18dc02df3a799a4fae60aa861b1f7e908957b01b81dd395f5cd8dac222cc" + } + ], + "scientific_pin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "status": "FROZEN_HANDOFF_DO_NOT_MUTATE", + "validation": { + "A_terminal_cones_independent": false, + "A_terminal_cones_normal": true, + "A_terminal_cones_optimized": false, + "five_terminal_normal": true, + "five_terminal_optimized": true, + "independent_parent_word_normal_and_optimized_reported_and_saved": true, + "terminal_charts_normal": true, + "terminal_charts_optimized": true + } +} diff --git a/research/bit-five-rank4-terminals/admission/provenance/OWNERSHIP.original.json b/research/bit-five-rank4-terminals/admission/provenance/OWNERSHIP.original.json new file mode 100644 index 0000000000..0308c61201 --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/provenance/OWNERSHIP.original.json @@ -0,0 +1,23 @@ +{ + "status": "ACCEPTED_OWNERSHIP", + "accepted_at_utc": "2026-10-19T08:13:51.114018+00:00", + "thread_id": "01a15338-c1ea-73e1-9773-2b43ef4058c2", + "run_directory": "/Users/ross/git/math/.research-automation/runs/bit-five-helper-owned-20261019T0813Z", + "input_manifest_path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/BIT-TRANSFER-MANIFEST.json", + "input_manifest_sha256": "7e13112436a72e1f646c9a3fdf417dbab8522730d720709b7059fd85d4c9f6eb", + "frozen_manifest_path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/FROZEN-MANIFEST.json", + "frozen_manifest_sha256": "362ad0246d221584b35bfad2e850ed20b344a9f96a706c9988e3b3d2b7ff85a7", + "decompressed_word_sha256": "3bca74a2a8427eb18e86566baa19de597f10d0bc40c30b7443febd499ee2189a", + "verified_entries": 51, + "frozen_source_paths": [ + "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries", + "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/root-bit-audit" + ], + "scope": [ + "five-helper BIT feasibility and fully charged compatible joint moment assessment", + "unpublished findings inventory and local reviewable packaging" + ], + "publication_policy": "local only; no push, PR, workflow dispatch, or scientific post without direct user approval", + "parent_clock_untouched": true, + "no_new_kappa": true +} diff --git a/research/bit-five-rank4-terminals/admission/provenance/PR540-SOURCE-PINS.original.json b/research/bit-five-rank4-terminals/admission/provenance/PR540-SOURCE-PINS.original.json new file mode 100644 index 0000000000..328927e679 --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/provenance/PR540-SOURCE-PINS.original.json @@ -0,0 +1,18 @@ +{ + "source_repository": "CrocSwap/integer-mult-bounds", + "files": [ + { + "commit": "acc1917034d10f464271ab115fda314fd4eee7a3", + "path": "research/lean-multi-host-source/FramedReplay.lean", + "sha256": "d051b68253e9ffea22d09c644796ab64dd66ae4393bd592dc5c0aa6e80bbb122", + "local_path": "source-snapshots/FramedReplay.lean" + }, + { + "commit": "acc1917034d10f464271ab115fda314fd4eee7a3", + "path": "research/lean-multi-host-source/OwnerTransport.lean", + "sha256": "cdc9374538c716c85a3dfed949395a92d738f2bf6cba108d1a9f0ea2270ffc5c", + "local_path": "source-snapshots/OwnerTransport.lean" + } + ], + "scope": "Read-only source snapshots; Lean kernel not executed." +} diff --git a/research/bit-five-rank4-terminals/admission/provenance/TRANSFER-AUTHENTICATION.json b/research/bit-five-rank4-terminals/admission/provenance/TRANSFER-AUTHENTICATION.json new file mode 100644 index 0000000000..e55d94f1ca --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/provenance/TRANSFER-AUTHENTICATION.json @@ -0,0 +1,87 @@ +{ + "authenticated_unique_transfer_files": 27, + "copied_files": [ + { + "local_path": "inputs/FIVE-TERMINALS-WORD.json.gz", + "sha256": "c46ccd7d3eedabc6a7efbb1a91ec13f2928bad8ee0bac57c6e593a092d13d96c", + "source": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/FIVE-TERMINALS-WORD.json.gz" + }, + { + "local_path": "inputs/TERMINAL-CHARTS.json", + "sha256": "489216ea25f47f061675ab7b7e4a17289a531bce6fe77cca166a13265bfcbb17", + "source": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/TERMINAL-CHARTS.json" + }, + { + "local_path": "inputs/r438-t154.json.gz", + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022", + "source": "/Users/ross/git/math/integer-mult-bounds/research/bit-r438-transport-rehost/words/r438-t154.json.gz" + }, + { + "local_path": "inputs/bitE8-r865.json.gz", + "sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "source": "/Users/ross/git/math/integer-mult-bounds/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz" + }, + { + "local_path": "provenance/verify_admission.original.py.txt", + "sha256": "c5b30e5a3422a61ba560459bf39f27d825d83154f95593672785b2f7ceaa5194", + "source": "/Users/ross/git/math/.research-automation/runs/bit-five-helper-owned-20261019T0813Z/admission/verify_admission.py" + }, + { + "local_path": "provenance/ADMISSION-CHECK.original.json", + "sha256": "914c4deecd9fa972f396e942c6d6bfbf13e6ef58f6a54ad8e8d4a125b0652519", + "source": "/Users/ross/git/math/.research-automation/runs/bit-five-helper-owned-20261019T0813Z/admission/ADMISSION-CHECK.json" + }, + { + "local_path": "provenance/OWNERSHIP.original.json", + "sha256": "ed5b67369aa95c80a5a4a958dc030cc216954d6a8b23d01252d2c84647758fbc", + "source": "/Users/ross/git/math/.research-automation/runs/bit-five-helper-owned-20261019T0813Z/OWNERSHIP.json" + }, + { + "local_path": "provenance/TRANSFER-MANIFEST.original.json", + "sha256": "7e13112436a72e1f646c9a3fdf417dbab8522730d720709b7059fd85d4c9f6eb", + "source": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/BIT-TRANSFER-MANIFEST.json" + }, + { + "local_path": "provenance/FROZEN-MANIFEST.original.json", + "sha256": "362ad0246d221584b35bfad2e850ed20b344a9f96a706c9988e3b3d2b7ff85a7", + "source": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/FROZEN-MANIFEST.json" + }, + { + "local_path": "provenance/PR540-SOURCE-PINS.original.json", + "sha256": "2963bc4edd609c542bad37f6021f251dbaa254495948d715dc3c704c8058b31d", + "source": "/Users/ross/git/math/.research-automation/runs/bit-five-helper-owned-20261019T0813Z/admission/PR540-SOURCE-PINS.json" + }, + { + "local_path": "source-context/research/e8-bit-carrier-skeleton/code/bit/checkers/columns_h.cpp", + "sha256": "d1297f9052be4f2496e1ff2a77e4db2c0cdbd7d460d489b4c03e50bf317238ce", + "source": "/Users/ross/git/math/integer-mult-bounds/research/e8-bit-carrier-skeleton/code/bit/checkers/columns_h.cpp" + }, + { + "local_path": "source-context/research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp", + "sha256": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "source": "/Users/ross/git/math/integer-mult-bounds/research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp" + }, + { + "local_path": "source-context/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/code/assemble9.py", + "sha256": "4bf6768224a3fac81ccda26df24f3763f9a4fbc35ad62bef2888595cdae519fe", + "source": "/Users/ross/git/math/integer-mult-bounds/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/code/assemble9.py" + }, + { + "local_path": "source-context/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py", + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8", + "source": "/Users/ross/git/math/integer-mult-bounds/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py" + }, + { + "local_path": "source-context/research/pr589-five-helper-hosting/PROOF.md", + "sha256": "59cae781bfbe1a01ed9e66a8efeeb5a2b995e5ecdf908586b23ecc39f2b8d647", + "source": "/Users/ross/git/math/integer-mult-bounds/research/pr589-five-helper-hosting/PROOF.md" + } + ], + "decompressed_word_sha256": "3bca74a2a8427eb18e86566baa19de597f10d0bc40c30b7443febd499ee2189a", + "frozen_manifest_sha256": "362ad0246d221584b35bfad2e850ed20b344a9f96a706c9988e3b3d2b7ff85a7", + "input_manifest_sha256": "7e13112436a72e1f646c9a3fdf417dbab8522730d720709b7059fd85d4c9f6eb", + "original_checker_sha256": "c5b30e5a3422a61ba560459bf39f27d825d83154f95593672785b2f7ceaa5194", + "original_scientific_pin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "scope": "Integrity linkage to authenticated local transfer; not a digital signature or proof of mathematical truth. Original paths are historical provenance, never runtime dependencies.", + "status": "AUTHENTICATED_BEFORE_PORTABLE_COPY" +} diff --git a/research/bit-five-rank4-terminals/admission/provenance/TRANSFER-MANIFEST.original.json b/research/bit-five-rank4-terminals/admission/provenance/TRANSFER-MANIFEST.original.json new file mode 100644 index 0000000000..8981491022 --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/provenance/TRANSFER-MANIFEST.original.json @@ -0,0 +1,148 @@ +{ + "checked_at_utc": "2026-10-19T08:13:04.721043+00:00", + "files": [ + { + "bytes": 105274, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/A-TERMINAL-CONES-WORD.json.gz", + "sha256": "29e2a3bba12ec1342741b7c74df0c4ccb4ce771c32b76d13420d0d6ba8460c58" + }, + { + "bytes": 7692, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/A-TERMINAL-CONES.json", + "sha256": "1d92c8eadeba566b0e54523e26a8944f93e6f972d911f994fe4ce4579e30e200" + }, + { + "bytes": 105171, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/FIVE-TERMINALS-WORD.json.gz", + "sha256": "c46ccd7d3eedabc6a7efbb1a91ec13f2928bad8ee0bac57c6e593a092d13d96c" + }, + { + "bytes": 9579, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/FIVE-TERMINALS.json", + "sha256": "75e029f9bb6ca42540fa633b51bf2d8d62125c57a0ee184fbf3c94e08a8c7d58" + }, + { + "bytes": 10529, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/HANDOFF.md", + "sha256": "39660a7edd09e8d638efff6d0beccdb3ac2e5e964b89ed5c3faf29a94b3da2ec" + }, + { + "bytes": 2232, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/PAIRED-TERMINAL-PROBE.json", + "sha256": "3333d562ec6c35411b6bb3891f10b3eed263e115df66d155bcd096b6675cb4e6" + }, + { + "bytes": 8718, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/TERMINAL-CHARTS.json", + "sha256": "489216ea25f47f061675ab7b7e4a17289a531bce6fe77cca166a13265bfcbb17" + }, + { + "bytes": 9834, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/a_terminal_cones.py", + "sha256": "05543e41aca4eddef96399a68ee863a969a925931e64f76ae061bf1b1ac61ca0" + }, + { + "bytes": 2315, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/boundary_model.py", + "sha256": "0f9c8ed604980a8df04a53d4fbde1df43f198ca2230bff3e2ba758c59d1e78cf" + }, + { + "bytes": 9356, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/five_terminals.py", + "sha256": "51ba9eaa47e5c5eeda085f16d02996e55f3ec0dfa60c5393080e2c865c62473b" + }, + { + "bytes": 10115, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/paired_terminal_probe.py", + "sha256": "9a12e29c86c3bf95e07996287cae54ea82b50592c4a84991efab89f73b0b10b5" + }, + { + "bytes": 2973, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/terminal_charts.py", + "sha256": "97168bdd294f12dcb5dd569226546320c606ec48230bd88078cd372142f905af" + }, + { + "bytes": 8521, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/root-bit-audit/verify_word.py", + "sha256": "64f62ecdbc77518dd7705087f0aaa852412d607cf197ee3fa9b0a2a96683750b" + }, + { + "bytes": 2078, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/root-bit-audit/INDEPENDENT-FIVE-TERMINALS.json", + "sha256": "628139c3ab4d55ee2cafec1ba7353ddc78c5fec3f741ebf59e5c998bc94f948a" + }, + { + "bytes": 5818, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/root-bit-audit/OPERATOR-BOUNDARY.md", + "sha256": "b268114ee08a3cb0c6fb18928361528cc7385bd5f89b90bf247b2739a513dbac" + }, + { + "bytes": 42305, + "path": "/Users/ross/git/math/integer-mult-bounds/research/bit-r438-transport-rehost/words/r438-t154.json.gz", + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + { + "bytes": 33865, + "path": "/Users/ross/git/math/integer-mult-bounds/research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz", + "sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55" + }, + { + "bytes": 13065, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-changed-endpoints-20261019T0153Z/bit-native-caller/old_kernel_boost.py", + "sha256": "71070cceb72b089d745f080e642dce26c1404508411288265b6bf3f4a004ea20" + }, + { + "bytes": 15496, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-changed-endpoints-20261019T0153Z/bit-native-caller/global_kernel_boost.py", + "sha256": "22773bd9f955130ca3c1fe2fa2c047ee7d831759df08567e2a6c987349b18272" + }, + { + "bytes": 7405, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-changed-endpoints-20261019T0153Z/bit-native-caller/helper_tail_retime.py", + "sha256": "815f20725a20ea05064695064f4b34c4e4e6e6feaa7e42dfceb1e7031d4fed1d" + }, + { + "bytes": 12976, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-changed-endpoints-20261019T0153Z/bit-native-caller/physical_code.py", + "sha256": "1188b1884a1d8b6873ea118d39f17f939f9e78ca778fa2a821d8a8fe2fd3d043" + }, + { + "bytes": 7569, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-changed-endpoints-20261019T0153Z/bit-native-caller/cold_cosets.py", + "sha256": "b266d71551ea82a767029727bf2ce6b594d0f5b4d49719a146abbe6348a7d050" + }, + { + "bytes": 10050, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-changed-endpoints-20261019T0153Z/bit-native-caller/kernel_entrances.py", + "sha256": "921f18dc02df3a799a4fae60aa861b1f7e908957b01b81dd395f5cd8dac222cc" + }, + { + "bytes": 12438, + "path": "/Users/ross/git/math/integer-mult-bounds/research/pr589-five-helper-hosting/PROOF.md", + "sha256": "59cae781bfbe1a01ed9e66a8efeeb5a2b995e5ecdf908586b23ecc39f2b8d647" + }, + { + "bytes": 7198, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/FROZEN-MANIFEST.json", + "sha256": "362ad0246d221584b35bfad2e850ed20b344a9f96a706c9988e3b3d2b7ff85a7" + }, + { + "bytes": 87, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries/FROZEN-MANIFEST.sha256", + "sha256": "7af1b111723c19e7c6b7910c8cde2379db97caa4a48fa3f0157ef7dfb1993953" + }, + { + "bytes": 7223, + "path": "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/BIT-TRANSFER.md", + "sha256": "664b0d69489e47c5009f31c7d4e044095d5e06def825b2aa83501a276272f31f" + } + ], + "frozen_directories": [ + "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/bit-boundaries", + "/Users/ross/git/math/.research-automation/runs/kappa-four-coordinate-20261019T0717Z/root-bit-audit" + ], + "no_new_kappa": true, + "policy": "Neither parent nor receiving task modifies frozen inputs. Receiving task works in own directory. No push or PR without direct user approval.", + "receiving_directory": "/Users/ross/git/math/.research-automation/runs/bit-five-helper-owned-20261019T0813Z", + "status": "FROZEN_INPUTS_VERIFIED_AWAITING_NEW_THREAD_OWNERSHIP" +} diff --git a/research/bit-five-rank4-terminals/admission/provenance/verify_admission.original.py.txt b/research/bit-five-rank4-terminals/admission/provenance/verify_admission.original.py.txt new file mode 100644 index 0000000000..352bed3005 --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/provenance/verify_admission.original.py.txt @@ -0,0 +1,342 @@ +#!/usr/bin/env python3 +"""Independent finite chart and coefficient audit; no supplier admission. + +Apache-2.0. Prepared with substantial OpenAI Codex assistance. +Imports only the standard library; writes only its own requested receipt. +""" +from collections import Counter +from copy import deepcopy +from fractions import Fraction as Q +from hashlib import sha256 +from pathlib import Path +import argparse +import gzip +import json + +HERE = Path(__file__).resolve().parent +RUN = HERE.parent +INPUT = RUN.parent / 'kappa-four-coordinate-20261019T0717Z' +REPO = Path('/Users/ross/git/math/integer-mult-bounds') + + +def need(p, msg): + if not p: + raise ValueError(msg) + + +def sha(p): + return sha256(Path(p).read_bytes()).hexdigest() + + +def matrix_product(a, b): + return [[sum((x * y for x, y in zip(row, col)), Q(0)) + for col in zip(*b)] for row in a] + + +def identity(n): + return [[Q(i == j) for j in range(n)] for i in range(n)] + + +def transpose(a): + return [list(x) for x in zip(*a)] + + +def rank(rows): + a = deepcopy(rows) + k = 0 + for j in range(len(a[0]) if a else 0): + p = next((i for i in range(k, len(a)) if a[i][j]), None) + if p is None: + continue + a[k], a[p] = a[p], a[k] + d = a[k][j] + a[k] = [x / d for x in a[k]] + for i in range(len(a)): + if i != k: + d = a[i][j] + a[i] = [x - d*y for x, y in zip(a[i], a[k])] + k += 1 + return k + + +def partial_swap(p): + n = len(p) + return [[(Q(i % n == j % n) - p[i % n][j % n]) + if i // n == j // n else p[i % n][j % n] + for j in range(2*n)] for i in range(2*n)] + + +def double(a): + return [[a[i % 8][j % 8] if i // 8 == j // 8 else Q(0) + for j in range(16)] for i in range(16)] + + +def apply_gate(a, gate): + op, i, j = gate[:3] + if op == 'swap': + a[i], a[j] = a[j], a[i] + elif op == 'scale': + a[i] = [Q(j)*x for x in a[i]] + elif op == 'add': + a[i] = [x+Q(gate[3])*y for x, y in zip(a[i], a[j])] + else: + raise ValueError('unknown chart gate') + + +def invert_gate(g): + if g[0] == 'swap': + return list(g) + if g[0] == 'scale': + return [g[0], g[1], str(1/Q(g[2]))] + return [g[0], g[1], g[2], str(-Q(g[3]))] + + +def chart_program(chart): + """In-place Q via exact unit ADD, NEGATE, DOUBLE/HALVE, SWAP. + + Reduction is nomination only; all emitted programs are independently + replayed as rational matrices, including every prefix denominator. + """ + a = deepcopy(chart) + reduction = [] + for j in range(8): + i = next(i for i in range(j, 8) if a[i][j]) + if i != j: + g = ['swap', i, j]; apply_gate(a, g); reduction.append(g) + if a[j][j] != 1: + g = ['scale', j, str(1/a[j][j])]; apply_gate(a, g); reduction.append(g) + for i in range(8): + if i != j and a[i][j]: + g = ['add', i, j, str(-a[i][j])]; apply_gate(a, g); reduction.append(g) + need(a == identity(8), 'chart reduction reaches identity') + factored = [invert_gate(g) for g in reversed(reduction)] + program = [] + for g in factored: + op, i, j = g[:3] + if op == 'swap': + program.append(g) + elif op == 'scale': + c = Q(j) + need(abs(c) in (Q(1), Q(2), Q(1, 2)), 'dyadic unit scale') + if c < 0: + program.append(['scale', i, '-1']) + if abs(c) != 1: + program.append(['scale', i, str(abs(c))]) + else: + c = Q(g[3]) + need(abs(c) in (Q(1), Q(2), Q(1, 2)), 'allowed dyadic shear') + unit = '1' if c > 0 else '-1' + if abs(c) == Q(1, 2): + program += [['scale', j, '1/2'], ['add', i, j, unit], ['scale', j, '2']] + else: + program += [['add', i, j, unit]] * int(abs(c)) + inverse = [invert_gate(g) for g in reversed(program)] + def replay(gs): + matrix = identity(8) + max_norm = Q(1); max_denominator = 1 + for g in gs: + apply_gate(matrix, g) + max_norm = max(max_norm, max(sum(map(abs, row)) for row in matrix)) + max_denominator = max(max_denominator, max(x.denominator for row in matrix for x in row)) + return matrix, str(max_norm), max_denominator + m, norm, den = replay(program) + mi, inorm, iden = replay(inverse) + need(m == chart and mi == transpose(chart), 'exact forward/inverse matrix') + need(matrix_product(mi, m) == identity(8), 'all-input inverse restoration') + need(replay(program[:-1])[0] != chart, 'missing-final-gate control') + def shifted(g, k): + out = list(g); out[1] += k + if out[0] in ('add', 'swap'): + out[2] += k + return out + residual = ([shifted(g, k) for k in (0, 8) for g in inverse] + + [['swap', i, i+8] for i in range(4)] + + [shifted(g, k) for k in (0, 8) for g in program]) + state = identity(16); rnorm = Q(1); rden = 1 + for g in residual: + apply_gate(state, g) + rnorm = max(rnorm, max(sum(map(abs, row)) for row in state)) + rden = max(rden, max(x.denominator for row in state for x in row)) + p = matrix_product([r[:4] for r in chart], transpose([r[:4] for r in chart])) + need(state == partial_swap(p), 'literal residual coordinate program') + invresidual = [invert_gate(g) for g in reversed(residual)] + for g in invresidual: + apply_gate(state, g) + need(state == identity(16), 'literal residual inverse restoration') + return {'elementary_factors': len(factored), 'program': program, 'inverse': inverse, + 'primitive_count': len(program), 'primitive_histogram': dict(Counter( + g[0] + (':'+g[2] if g[0] == 'scale' else '') for g in program)), + 'forward_max_prefix_row_l1': norm, 'inverse_max_prefix_row_l1': inorm, + 'forward_max_prefix_denominator': den, 'inverse_max_prefix_denominator': iden, + 'residual_16_coordinate_program': residual, + 'residual_16_coordinate_primitive_count': len(residual), + 'residual_max_prefix_row_l1': str(rnorm), 'residual_max_prefix_denominator': rden, + 'scratch_field_elements': 0, 'missing_final_gate_rejected': True} + + +def verify_chart(c, raw, full): + cols = [[Q(x) for x in r] for r in c['Q_columns']] + need(len(cols) == 8 and all(len(r) == 8 for r in cols), 'chart size') + need(matrix_product(cols, transpose(cols)) == identity(8), 'orthonormal columns') + labels = c['inside_full_root_labels'] + c['cold_full_root_labels'] + need(cols == [[Q(x, 2) for x in full['lines'][j]] for j in labels], 'root labels') + need(all(x.denominator in (1, 2) for r in cols for x in r), 'half integral chart') + e = [[Q(x) for x in raw['lines'][j]] for j in raw['frames'][c['terminal_frame']]] + need(rank(e) == 4 and rank(e + cols[:4]) == 4, 'actual rank four terminal span') + p = matrix_product(transpose(cols[:4]), cols[:4]) + need(p == [[Q(x) for x in r] for r in c['projector']], 'saved projector') + pc = [[Q(i == j and i < 4) for j in range(8)] for i in range(8)] + chart = transpose(cols) + need(matrix_product(matrix_product(double(chart), partial_swap(pc)), double(cols)) + == partial_swap(p), 'all sixteen address basis columns') + return {'frame': c['terminal_frame'], 'rank': 4, + 'address_basis_columns': 16, 'max_denominator': 2, + 'coordinate_program': chart_program(chart)} + + +def magnitude_and_defects(records, inverse=False): + """Exact-integer reset bound plus extended-shear no-reset defect bound. + + Scalar ADD is exact. MOVE, COPY and ERASE may each inject an arbitrary + additive defect of norm at most one in the single destination row. + COPY/ERASE are extended to +/- source shears, not zero assignments. + """ + mag = [1]*660 + [0] + error = [0]*661 + max_mag = 1 + max_error = 0 + opened = None + erased = [] + count = Counter() + for z in reversed(records) if inverse else records: + op, d, s, c, f, phase = z + count[str(op)] += 1 + if op == 0: + error[d] += 1 + elif op == 1: + mag[d] += abs(c)*mag[s] + error[d] += abs(c)*error[s] + elif op == (3 if inverse else 2): + need(opened is None, 'fresh episode') + opened = d + mag[660] = mag[d] + error[660] += error[d] + 1 + else: + need(op == (2 if inverse else 3) and opened == d, 'matching episode') + opened = None + mag[660] = 0 + error[660] += error[d] + 1 + erased.append(error[660]) + max_mag = max(max_mag, max(mag)) + max_error = max(max_error, max(error)) + need(opened is None, 'all episodes close') + return {'positive_envelope_exact_erase_only': max_mag, + 'unit_defect_all_prefix_bound': max_error, + 'unit_defect_persistent_endpoint_bound': max(error[:660]), + 'unit_defect_private_endpoint_bound': error[660], + 'private_bounds_after_each_erase': erased, 'opcode_counts': dict(count)} + + +def main(): + p = argparse.ArgumentParser() + p.add_argument('--write', action='store_true') + args = p.parse_args() + own = json.loads((RUN/'OWNERSHIP.json').read_text()) + for k in ('input_manifest', 'frozen_manifest'): + need(sha(own[k+'_path']) == own[k+'_sha256'], 'ownership manifest authentication') + seen = {} + def authenticate(x): + if isinstance(x, list): + for y in x: + authenticate(y) + elif isinstance(x, dict): + if 'path' in x and 'sha256' in x: + need(sha(x['path']) == x['sha256'], 'pinned file changed: '+x['path']) + seen[x['path']] = x['sha256'] + for y in x.values(): + if isinstance(y, (dict, list)): + authenticate(y) + authenticate(json.loads(Path(own['input_manifest_path']).read_text())) + authenticate(json.loads(Path(own['frozen_manifest_path']).read_text())) + wordfile = INPUT/'bit-boundaries/FIVE-TERMINALS-WORD.json.gz' + blob = gzip.decompress(wordfile.read_bytes()) + need(sha256(blob).hexdigest() == own['decompressed_word_sha256'], 'literal word hash') + word = json.loads(blob) + rawpath = REPO/'research/bit-r438-transport-rehost/words/r438-t154.json.gz' + fullpath = REPO/'research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz' + raw = json.loads(gzip.decompress(rawpath.read_bytes())) + full = json.loads(gzip.decompress(fullpath.read_bytes())) + charts = json.loads((INPUT/'bit-boundaries/TERMINAL-CHARTS.json').read_text())['charts'] + need([x['terminal_frame'] for x in charts] == [506, 508, 509], 'three exact frames') + checked = [verify_chart(c, raw, full) for c in charts] + controls = [] + bad = deepcopy(charts[0]); bad['Q_columns'][0][0] = '1' + try: + verify_chart(bad, raw, full) + except ValueError: + controls.append('nonorthogonal chart rejected') + else: + raise ValueError('chart mutation accepted') + bad = deepcopy(charts[0]); bad['terminal_frame'] = 0 + try: + verify_chart(bad, raw, full) + except ValueError: + controls.append('wrong actual terminal span rejected') + else: + raise ValueError('frame mutation accepted') + forward = magnitude_and_defects(word['records']) + reverse = magnitude_and_defects(word['records'], True) + F = forward['positive_envelope_exact_erase_only'] + R = reverse['positive_envelope_exact_erase_only'] + need((F, R) == (8402567, 630744), 'both positive bounds') + p5 = 64*F**3*R**2 + p9 = 2**18*F**5*R**4 + need((p5.bit_length(), p9.bit_length()) == (114, 211), 'exact precision thresholds') + # Exact signed scalar minimal witness: a nonzero COPY defect survives + # its exact inverse source shear, irrespective of how small it is. + epsilon = Q(1, 2**256) + source = Q(0); temporary = source + epsilon + temporary -= source + need(temporary == epsilon and temporary != 0, 'positive finite precision does not imply exact ERASE') + controls.append('COPY defect survives inverse source shear at 256 bits') + # Sufficient conditional finite-invoice budget for depth two. + # coefficient = prefix + B. This is NOT a bound on an unbuilt compiler. + Bcap = 2**210 - 1 + Ecap = 2**20 - 1 + two_cap = (p9+Bcap+1)**2*(Ecap+1)**2 + need(two_cap < 2**512, 'conditional two-level invoice fits inherited 512 bits') + sources = [ + 'research/e8-bit-carrier-skeleton/code/bit/checkers/columns_h.cpp', + 'research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp', + 'research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py', + 'research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/code/assemble9.py', + 'research/pr589-five-helper-hosting/PROOF.md', + ] + result = {'status': 'PASS_FINITE_ADMISSION_DIAGNOSTICS_NOT_NATIVE_SUPPLIER', + 'no_new_kappa': True, 'authenticated_unique_files': len(seen), + 'word_sha256': own['decompressed_word_sha256'], + 'independent_charts': checked, 'forward': forward, 'inverse': reverse, + 'precision': {'five_stage_integer_bound': str(p5), 'five_stage_bits': 114, + 'five_stage_multiple_of_64': 128, 'nine_stage_integer_bound': str(p9), + 'nine_stage_bits': 211, 'nine_stage_multiple_of_64': 256, + 'conditional_depth_two': {'extra_invoice_max': str(Bcap), + 'child_count_max': Ecap, 'upper_bound_bits': two_cap.bit_length(), + 'charged_bits': 512, + 'scope': 'Sufficient conditional arithmetic only; no compiler or owner invoice is supplied.'}}, + 'controls': controls, + 'source_sha256': {x: sha(REPO/x) for x in sources}, + 'script_sha256': sha(__file__), + 'limits': 'No exact rounded-child cleanup, chronological owners, paid native routes, all-size compiler, tape or outer admission.'} + outfile = HERE/'ADMISSION-CHECK.json' + if args.write: + outfile.write_text(json.dumps(result, indent=2, sort_keys=True)+'\n') + else: + need(json.loads(outfile.read_text()) == result, 'receipt matches independent recomputation') + print(result['status']) + print(json.dumps({'charts': len(checked), 'guards': [114,211], + 'defect_bounds': [forward['unit_defect_all_prefix_bound'],reverse['unit_defect_all_prefix_bound']], + 'conditional_two_level_bits': two_cap.bit_length()})) + + +if __name__ == '__main__': + main() diff --git a/research/bit-five-rank4-terminals/admission/source-context/research/e8-bit-carrier-skeleton/code/bit/checkers/columns_h.cpp b/research/bit-five-rank4-terminals/admission/source-context/research/e8-bit-carrier-skeleton/code/bit/checkers/columns_h.cpp new file mode 100644 index 0000000000..00c5a3a5d8 --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/source-context/research/e8-bit-carrier-skeleton/code/bit/checkers/columns_h.cpp @@ -0,0 +1,48 @@ +// Generalization (Dylan Crow, with Anthropic Claude assistance): the copied-centre count is the macro NCOPY, defaulting to +// HDIM, so the unmodified PR #346/#352 build (no -DNCOPY) is exactly the original checker. The E8 bit word has 9 +// retained totals at h = 8 (-DNCOPY=9). +#ifndef NCOPY +#define NCOPY HDIM +#endif +#include "json.hpp" +#include +#include +using boost::multiprecision::cpp_int; +#include +#include +#include +#include +#include +#include +#include +using J=nlohmann::json; +struct E{int kind,dst,src,c;}; +void need(bool x,const char*s){if(!x)throw std::runtime_error(s);} +int main(int argc,char**argv){try{ +need(argc==3,"usage RAW6_RECORDS OUTPUT");std::string pre=argv[1];int v=VPORTS,r=RHELP,loc=2*v+r,global=4*v+r,temp=global; +struct Raw{int op,a,b,c,f,z;};std::ifstream f(pre,std::ios::binary|std::ios::ate);size_t sz=f.tellg();need(sz%sizeof(Raw)==0,"stream alignment");std::vectorp(sz/sizeof(Raw));f.seekg(0);f.read((char*)p.data(),sz);std::vectore;std::mapH;for(auto q:p){if(q.op==0){if(q.f)H[q.f]++;}else if(q.op==1)e.push_back({0,q.a,q.b,q.c});else if(q.op==2){H[q.z]++;e.push_back({1,loc,q.a,0});}else if(q.op==3)e.push_back({2,loc,q.a,0});else need(false,"opcode");} +J prefix=J::array();cpp_int largestF=0,largestB=0;for(int rev=0;rev<2;rev++){std::vectornorms(loc+1,1);cpp_int maxrow=1;bool isopen=false;for(size_t z=0;zmaxrow)maxrow=norms[q.dst];}else if(k==1){need(!isopen,"boundcopy");norms[loc]=norms[q.src];isopen=true;}else {need(isopen,"bounderase");norms[loc]=0;isopen=false;}}need(!isopen,"prefix copy closure");if(rev)largestB=maxrow;else largestF=maxrow;prefix.push_back({{"reverse",bool(rev)},{"cancellation_free_signed_row_l1_upper",maxrow.convert_to()},{"bits",boost::multiprecision::msb(maxrow)+1}});} +cpp_int payload=64*largestF*largestF*largestF*largestB*largestB;need(payload<(cpp_int(1)<<104),"payloadfiniteprefix2^104"); +long long copies=0,adds=0,odd=0;bool open=false;int center=-1;long long reverseCopies=0; +for(auto q:e){need(q.kind>=0&&q.kind<=2,"kind");need(q.dst>=0&&q.dst<=loc,"local dst");if(q.kind==0){need(q.src>=0&&q.src<=loc&&q.dst!=q.src,"source distinct");need(q.dst!=loc,"copy immutable");need(q.src!=loc||open,"temp not open");if(open)need(q.dst!=center,"source changes inside copied-center block");adds++;odd+=q.c&1;} +else if(q.kind==1){need(!open&&q.dst==loc&&q.src>=0&&q.srca((size_t)(global+1)*words);auto row=[&](int i){return a.data()+(size_t)i*words;};for(int i=0;i=v&&i<2*v&&w==(size_t)(i-v)/64)want^=1ull<<((i-v)%64);need(x[w]==want,"local defining-decoder full formal column");}}} +if(stage==1||stage==2||stage==4){int b=stage==1?0:stage==2?1:2;for(auto q:bridges[b])for(int i=0;i(std::chrono::steady_clock::now()-t0).count()<<"s\n";} +for(int bank=0;bank<4;bank+=2)for(int i=0;i()},{"payload_prefix_bits",boost::multiprecision::msb(payload)+1},{"new_Q_categories",{28,29}},{"local_raw_H",H},{"negative_controls",controls},{"seconds",std::chrono::duration(std::chrono::steady_clock::now()-t0).count()}};std::ofstream(argv[2])< +#include +using boost::multiprecision::cpp_int; +#include +#include +#include +#include +#include +#include +#include +using J=nlohmann::json; +struct E{int kind,dst,src,c;}; +void need(bool x,const char*s){if(!x)throw std::runtime_error(s);} +int main(int argc,char**argv){try{ +need(argc==3,"usage RAW6_RECORDS OUTPUT");std::string pre=argv[1];int v=VPORTS,r=RHELP,loc=2*v+r,global=2*KPAIRS*v+r,temp=global;const int S=2*KPAIRS+1; +struct Raw{int op,a,b,c,f,z;};std::ifstream f(pre,std::ios::binary|std::ios::ate);size_t sz=f.tellg();need(sz%sizeof(Raw)==0,"stream alignment");std::vectorp(sz/sizeof(Raw));f.seekg(0);f.read((char*)p.data(),sz);std::vectore;std::mapH;for(auto q:p){if(q.op==0){if(q.f)H[q.f]++;}else if(q.op==1)e.push_back({0,q.a,q.b,q.c});else if(q.op==2){H[q.z]++;e.push_back({1,loc,q.a,0});}else if(q.op==3)e.push_back({2,loc,q.a,0});else need(false,"opcode");} +J prefix=J::array();cpp_int largestF=0,largestB=0;for(int rev=0;rev<2;rev++){std::vectornorms(loc+1,1);cpp_int maxrow=1;bool isopen=false;for(size_t z=0;zmaxrow)maxrow=norms[q.dst];}else if(k==1){need(!isopen,"boundcopy");norms[loc]=norms[q.src];isopen=true;}else {need(isopen,"bounderase");norms[loc]=0;isopen=false;}}need(!isopen,"prefix copy closure");if(rev)largestB=maxrow;else largestF=maxrow;prefix.push_back({{"reverse",bool(rev)},{"cancellation_free_signed_row_l1_upper",maxrow.convert_to()},{"bits",boost::multiprecision::msb(maxrow)+1}});} +cpp_int payload=64*largestF*largestF*largestF*largestB*largestB;need(payload<(cpp_int(1)<<104),"payloadfiniteprefix2^104"); +long long copies=0,adds=0,odd=0;bool open=false;int center=-1;long long reverseCopies=0; +for(auto q:e){need(q.kind>=0&&q.kind<=2,"kind");need(q.dst>=0&&q.dst<=loc,"local dst");if(q.kind==0){need(q.src>=0&&q.src<=loc&&q.dst!=q.src,"source distinct");need(q.dst!=loc,"copy immutable");need(q.src!=loc||open,"temp not open");if(open)need(q.dst!=center,"source changes inside copied-center block");adds++;odd+=q.c&1;} +else if(q.kind==1){need(!open&&q.dst==loc&&q.src>=0&&q.src>active;std::vectorbackward;std::vector>>after(S); +auto X=[](int p){return 2*(p-1);};auto Y=[](int p){return 2*(p-1)+1;}; +for(int t=0;t=3&&t%2==1);backward.push_back(b);active.push_back(b?std::array{Y(p),X(p)}:std::array{X(p),Y(p)});} +for(int q=2;q<=KPAIRS;q++){after[2*q-3].push_back({X(q-1),X(q),1});after[2*q-3].push_back({Y(q),Y(q-1),-1}); + after[2*q-2].push_back({Y(q),Y(q-1),1});after[2*q-2].push_back({X(q-1),X(q),-1});} +for(int p=KPAIRS;p>=2;p--){after[S-1].push_back({Y(p-1),Y(p),-1});after[S-1].push_back({X(p),X(p-1),1});} +int nbridges=0;for(auto&a:after)nbridges+=a.size();need(nbridges==6*(KPAIRS-1),"twin bridge count"); +size_t words=(global+63)/64;std::vectora((size_t)(global+1)*words);auto row=[&](int i){return a.data()+(size_t)i*words;};for(int i=0;i=v&&i<2*v&&w==(size_t)(i-v)/64)want^=1ull<<((i-v)%64);need(x[w]==want,"local defining-decoder full formal column");}}} +for(auto q:after[stage])for(int i=0;i(std::chrono::steady_clock::now()-t0).count()<<"s\n";} +for(int bank=0;bank<2*KPAIRS;bank+=2)for(int i=0;ib(2*KPAIRS);for(int z=0;z<2*KPAIRS;z++)b[z]=1u<()},{"payload_prefix_bits",boost::multiprecision::msb(payload)+1},{"new_Q_categories",{28,29}},{"local_raw_H",H},{"negative_controls",controls},{"seconds",std::chrono::duration(std::chrono::steady_clock::now()-t0).count()}};std::ofstream(argv[2])< 1 +res = dict(status='PASS_NINE_STAGE_WHOLE_HOSTED_BIT_PRICE_AND_CITED_ASSEMBLY', R=R, stages=L, replicas=T, bit_lower=str(c), bit_lower_decimal=root_['lower'], + next_grid_point_rejected=str(chi), bit=dict(live=W, physical=physical, maxchild=max(P), rank_mass=mass, hosted_residuals=audit['hosted_residuals'], + bank_assignments=audit.get('bank_assignments'), prefix_bits=prefix.bit_length(), charged_prefix_bits=charged_prefix, coefficient_bits=coefficient.bit_length(), + two_level_coefficient_bits=two.bit_length(), charged_two_level_coefficient_bits=charged_two, row_coefficient=row, halving_depth=DEPTH), + bit_profile={str(r): n for r, n in sorted(P.items())}, emitted_program_sha256=bg.get('emitted_program_sha256'), kappa={}) +def ceil(x): return -((-x.numerator) // x.denominator) +for name in names: + b = Q(cited[name]["b"]) + eta = beta = Q(1, 10 ** 18); grid = Q(1, 10 ** 18); s = min(c, (1 - beta) * b) - Q(1, 10 ** 24) + assert 0 < s < c and s < (1 - beta) * b + chain = [Q(384599, 10 ** 10)]; cutoffs = [] + for j in range(6): + old = chain[-1]; a = (1 - s) * s + s * old + gap = min(s - a, 1 - a - s, 1 - a - s * (1 - old), 1 - s); assert old < a < s < 1 - a and gap > 0 + cutoff = max(ceil(36 / gap ** 2), ceil(2 * (4 + charged_two) / gap)); assert cutoff * gap ** 2 >= 36 and cutoff * gap >= 2 * (4 + charged_two) + cutoffs.append(dict(gap=str(gap), cutoff_log2=str(cutoff))); chain.append(a) + q = chain[-1] * (1 - 2 * eta); margin = (1 - eta) * q / (1 + q); ticks = margin / grid; k = grid * ((ticks.numerator - 1) // ticks.denominator) + bridge = {'semantic': {'C0': {'base': 2, 'exponent': 210000}, 'strict_literal_gap': 1}, 'rows': {'degree_gap': Q(10 ** 6) - Q(51 * 20161, 25)}} + a = Outer.assembly(chain[-1], b, bridge, k, eta=eta, beta=beta) + assert len(a['strict_constraints']) == 47 and all(x > 0 for x in a['strict_constraints'].values()) + controls = [] + for cname, kk, ee, bb in [('next_grid', k + grid, eta, beta), ('zero_eta', k, Q(0), beta), ('zero_beta', k, eta, Q(0)), ('unit_beta', k, eta, Q(1))]: + try: Outer.assembly(chain[-1], b, bridge, kk, eta=ee, beta=bb) + except AssertionError: controls.append(cname) + else: raise AssertionError(cname) + res['kappa'][name] = dict(complex_lower=str(b), kappa=str(k), kappa_decimal=format(float(k), '.18f'), + binding_component='bit' if c < (1 - beta) * b else 'complex', strict_outer_constraints=47, outer_controls=controls) +outp.write_text(json.dumps(res, indent=1) + '\n') +print(' nine-stage bit c = %s = %s; profile %s; prefix %d bits, two-level %d bits (charged %d), row %d, depth %d' + % (c, root_['lower'], res['bit_profile'], prefix.bit_length(), two.bit_length(), charged_two, row, DEPTH)) +for name, x in res['kappa'].items(): print(' %s: b %s kappa %s (%s-bound) 47/47, controls %s' % (name, x['complex_lower'], x['kappa_decimal'], x['binding_component'], ','.join(x['outer_controls']))) diff --git a/research/bit-five-rank4-terminals/admission/source-context/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py b/research/bit-five-rank4-terminals/admission/source-context/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py new file mode 100644 index 0000000000..3df12bd632 --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/source-context/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py @@ -0,0 +1,264 @@ +# Generalised from PR #443's global_kernel.py to an arbitrary odd stage count S = 2K+1 (compressed window m = 1+7S) +# by DreamingOfClouds with Claude Opus 5.5 (Anthropic), via Claude Code. At the defaults (S = 9, 32 replicas) the emitted +# GLOBAL-TEMPLATE.json.gz and GLOBAL.json equal PR #443's (GLOBAL.json except wall-clock seconds). +# Kernel integration of PR436/PR386 by chafreaky, with OpenAI Codex assistance. +# Original copyright and attribution retained below. This variant uses explicit +# residual isometries and mixed-width banks; the original all-zero-start +# requirement is replaced by the verified kernel entrance contract. +"""Source-bound compressed S-stage (S = 2K+1 odd, default 9) bit template with independent replicas. +PR386 global identity and PR436 generalization by Zhihao Chen and eumemic, +with their disclosed OpenAI Codex and Anthropic Claude assistance, Apache-2.0. +PR439 explicit residual routes and this replication extension by chafreaky, +with OpenAI Codex assistance. All owner assignments and emitted calls are checked. +Historical PR386 regression is performed by the unchanged parent wrapper. +""" +import argparse, gzip, hashlib, json, struct, time +from collections import Counter +from pathlib import Path +import os, sys +sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), '../../e8-r740-replica32/code')) +from bank_routes_k import placement, validate_isometries +from config import REPLICAS + +H,L,K,T,M=8,9,4,REPLICAS,64 # overwritten in main() from --stages / --replicas +NAMES={5:'FIVE',7:'SEVEN',9:'NINE',11:'ELEVEN',13:'THIRTEEN'} +def sha(p): return hashlib.sha256(p.read_bytes()).hexdigest() +def write(p,x): p.write_text(json.dumps(x,indent=2)+'\n') + +def recipe(K): + out=[dict(kind='local',stage=0,pair=0,reverse=False)]; stage=1 + for j in range(K): + out.append(dict(kind='local',stage=stage,pair=j,reverse=True)); stage+=1 + if j=5 and a.stages%2==1; L=a.stages; K=(L-1)//2; T=a.replicas; M=1+7*L; NOBANK=a.no_banks + if L!=9: assert NOBANK, 'bank tiling is only emitted for the nine-stage layout; use --no-banks and host every residual' + DEFICIT=T*(2*K*120-9*H*L) + wp=a.word; w=json.loads(gzip.decompress(wp.read_bytes()) if wp.suffix=='.gz' else wp.read_bytes()) + V,R=w['v'],w['R']; LOCAL=2*V+R; DATA=2*K*V*T; LIVE=DATA+L*R + assert (w['h'],V,w['form'])==(8,120,'/2') + geo=json.loads((out/'GEOMETRY.json').read_text()) + assert geo['status']=='PASS_COMPRESSED_%s_BIT_GEOMETRY_AND_BANK_BLOCKS'%NAMES[L] and geo['stages']==L and geo['m']==M + # the port routes depend only on the labels: same 120 label vectors, in the same order + assert len(geo['ports'])==V and all(p['port']==t and p['q']==w['lines'][t] for t,p in enumerate(geo['ports'])) + rp=a.local_check/'records/249-records.bin'; raw=rp.read_bytes(); rec=list(struct.iter_unpack('<6i',raw)) + state=json.loads((a.local_check/'records/249-states.json').read_text()) + fs=json.loads((a.local_check/'records/frames.json').read_text())['frames'] + dims={int(f):z['dim'] for f,z in fs.items()} + lg=json.loads((a.local_check/'cout/legality.json').read_text()) + cc=json.loads((a.local_check/'cout/columns.json').read_text()) + assert lg['status'].startswith('PASS') and cc['status'].startswith('PASS') + assert (state['v'],state['n'])==(V,LOCAL) and lg['copies']==lg['erasures']==9 + ADDS=lg['common_frame_ADDs'] + assert cc['formal_columns_checked']==4*V+R and cc['local_scalar_additions']==ADDS + initial=[state['initial'][str(i)] for i in range(LOCAL)] + final=[state['final'][str(i)] for i in range(LOCAL)] + assert all(dims[final[i]]==H for i in range(2*V,LOCAL)) + widths=[H-dims[initial[i]] for i in range(2*V,LOCAL)] + ENT=sum(H-z for z in widths) + if NOBANK: place,NB=None,None; LIVE=DATA + else: + place,NB=placement(widths,T,M) + assert T%8==0 and T*(H*R-ENT)%M==0 and NB==T*(H*R-ENT)//M + LIVE=DATA+L*NB + isometries=json.loads(a.isometries.read_text()) + assert validate_isometries(isometries,w['frames'],w['lines'],dims)==set(initial[2*V:]) + streams={}; checks={}; localH=None + for reverse in (False,True): + cur=(final if reverse else initial)[:]+[-1]; val=[1<=0 + cur[x]=newf + if f: hist[f]+=1 + events.append([0,x,oldf,newf,f,int(reverse)]) + elif op==1: + assert cur[x]==cur[y]==f and x!=y and x=0 to b has axes 8+7a,...,7+7b. +This follows directly from the data levels: source levels are P_q at -1 and +I_8+E_a at a>=0; target levels are 0 at -1 and I_8-P_q+E_a at a>=0. +Here E_a is the first a exterior seven-blocks. The difference is the same +for both members. The source rho_s interchanges q-perpendicular directions +with exterior block s; its displayed block matrix gives these boundary +identities in both call orientations. + +For a descriptor (child, offset, 8), let S be the corresponding eight entries +in that ordered pending list. Define pi_S by mapping local axes 0,...,7 to +the ordered entries of S, then mapping the remaining axes to the unused +ambient axes in increasing order. Put sigma_S=A_q pi_S. This is an explicit +orthogonal matrix; it maps the full local residual projector to precisely S. + +For the common invocation d the helper owner is + + (F, g), g = d sigma_S^-1. + +For data use g=d rho_s,q and sigma=rho_s,q^-1. Consequently g sigma=d +for every role. The private temporary uses a separate reserved family and +class d. Within a call, different data roles have different families; hosted +families belong to inactive pairs; the private family is outside the live +data stock. Helpers sharing F have different actual pi_S, not merely different +text descriptors. The verifier checks the slot supports and their disjointness +even when one call uses several idle children of that same family. + +If two such helpers had the same physical class, canceling d and the common +A_q would give pi_S=pi_T. Applying them to a basis vector distinguishes them +over every K. Thus all 661 dirty roles and the private role have injective +physical owners at each fixed d. This does not assert disjointness across d. + +For stage 2, replica 0, pair 0, the helpers 232,...,236 in family 666 use child +4 and supports 1..8, 9..16, 17..24, 25..32, 33..40. The pending support is +1..42, leaving 41,42. The checker conjugates all five full local swaps by +their actual permutations and checks completion on all 128 address basis +columns. The five distinct streams can carry correlated values without aliasing. + +## 3. Whole-call simulation and the rank-seven issue + +Work at a fixed common invocation d. Pull each owned physical row back by +bar(d), obtaining a common-address row f_i. Give it a bookkeeping gauge +Gamma_i and decoded row c_i=f_i composed with Gamma_i. A gauge is a bijection, +not a data reset. At stage s use the partial swap on the frame projector plus +E_s; for a reflected call use I_8-P_frame plus E_s. + +MOVE from Gamma_a to Gamma_b changes the payload to +f_i composed with Gamma_a composed with Gamma_b^-1, so its decoded value is +unchanged. ADD between equal frames changes the decoded destination by the +decoded source. Fresh COPY uses the same transport into the private row, and +therefore copies its decoded value. If temporary and source decoded rows are +equal, bijectivity gives + + f_temp = f_source composed with Gamma_source composed with Gamma_temp^-1. + +This is precisely the physical ERASE guard. Zero decoded payload is equivalent +to zero physical payload, so no dirty private value is silently discarded. +Induction over the literal events proves simultaneous execution correctness. +Injective physical owners ensure each event leaves all other streams unchanged. +The equation g sigma=d means a chart-routed ADD is exactly a common native +address ADD, rather than an additional unpriced data-dependent routing rule. + +This is the generic simulation argument of PR540's FramedReplay and +OwnerTransport, instantiated here with PR589's word and owner construction. +The checker reconstructs every record directly from the pinned word and checks +equality with both template programs and their hashes. It propagates all 661 +input columns simultaneously, including dirty helper columns. MOVE labels, +common ADD frames, clean COPY destinations, centre immutability, every ERASE +guard, and the final private zero are checked in that same chronological run. +The final decoded map is x'=x, h'=h, y'=y+x, for both orientations in their +local role ordering. This identity of Boolean-linear maps also holds after +substituting arbitrary correlated input functions. + +PR540's concrete rank-eight COPY lemma cannot be reused unchanged. PR589 copies +sources 472,...,480 from frames 510,...,518 to frame 0. These frames have rank +seven. In the forward call, Gamma_510 Gamma_0^-1 = D_P510 on the local block; +the common E_s factor cancels. In the reflected call the relative map is +D_(I-P510) D_I = D_P510, again rank seven. The same calculation supplies +each matching ERASE transport. All nine frame pairs are checked exactly in +both orientations. The receipt includes distinguishing basis columns against +both a full rank-eight swap and a different rank-seven projector. + +For a helper, the difference between its entry and exit gauges is the full +local eight-dimensional swap in either orientation. Returning to the native +physical stream (F,g) turns this into D on g A_q S. Data output formulas use +only that call's input data, because no helper column remains in decoded data +outputs. They agree exactly with the unhosted call using the same data owners, +regardless of the distinct and evolving bank/helper contents in the comparison. + +## 4. Cover sweeps and chronological composition + +Apply the complete-call result before commuting anything. For a fixed helper +slot, d -> d sigma^-1 is a bijection of the full group G. Thus its cover sweep +applies its residual once to every class of its host family. Different d's +may revisit a stream through other slots. They use its **current** contents. +Since the complete-call result held for arbitrary dirty functions, this is +legal without a fresh-input or independence assumption. Active data families +are disjoint from hosted families throughout that sweep. Residuals on disjoint +axes commute within each fixed (family,g) stream. + +The checker independently walks the actual nine-stage schedule. Each local +stage enters its required level; every bridge has equal levels; idle children +have the actual source level; all pairs reach level eight before exchange. +For every host slot its stage lies after the last local/bridge touch of that +pair and strictly before its nominated idle child. Across those positions, +complete calls and bridges on other pairs have no endpoint dependence on this +family. Any intervening idle/host operations on this family use disjoint axes, +checked in the same fixed A_q chart. Consequently its residual can move to +its nominated child after complete calls have been reduced to their endpoints. + +For each (family,g,child), the moved residuals occupy disjoint subsets of the +pending projector, and the remainder is exactly the complement. The partial +swap product identity in section 1 therefore reconstructs the original idle +child. Repeat for every child. All data, inactive streams and the private zero +are retained throughout; no prior bank output or hosted output is reinitialized. +This proves the retained-data equality in the stated exact stream model. + +The count check yields the unchanged formal profile +{1:381024, 2:400416, 3:22752, 4:26880, 5:29376, 6:17376, 7:26784, 42:288}, +rank mass 1808352 and deficit 10272. These are recursive rank counts. They do +not establish a new routing invoice or justify changing the selected result. + +## Remaining obligations + +The Python certificates and this written induction have not been ported into +PR540's Lean source provider. Its proof of the older PR442 call is not a formal +proof of this newer call. A finite-group operator proof also does not implement +the all-size injective compiler, child algorithms, common grid, restored work, +tape, precision, row, exceptional-class or analytic transfer contracts. Full +native supplier replay and finite invoice admission are separate checks. + +Predecessors: DaysSky (PR442 hosting); Zhihao Chen, chafreaky and eumemic +(compressed geometry and retained supplier chain); DreamingOfClouds/eumemic +(PR545/555/589 punctured and tuned words); cheesegrader (PR540 formal framework); +commdata2338 (PR1307 ambient-axis census and PR1421 projector ledger); +1337isnot1337/CinnaDavis (PR1351/1371 physical-family operator checks). +Prepared with substantial OpenAI Codex assistance, Apache-2.0. diff --git a/research/bit-five-rank4-terminals/admission/verify.py b/research/bit-five-rank4-terminals/admission/verify.py new file mode 100644 index 0000000000..2fd5d76645 --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/verify.py @@ -0,0 +1,341 @@ +#!/usr/bin/env python3 +"""Independent finite chart and coefficient audit; no supplier admission. + +Apache-2.0. Prepared with substantial OpenAI Codex assistance. +Imports only the standard library; writes only its own requested receipt. +""" +from collections import Counter +from copy import deepcopy +from fractions import Fraction as Q +from hashlib import sha256 +from pathlib import Path +import argparse +import gzip +import json + +HERE = Path(__file__).resolve().parent +INPUT = HERE / 'inputs' +REPO = HERE / 'source-context' + + +def need(p, msg): + if not p: + raise ValueError(msg) + + +def sha(p): + return sha256(Path(p).read_bytes()).hexdigest() + + +def matrix_product(a, b): + return [[sum((x * y for x, y in zip(row, col)), Q(0)) + for col in zip(*b)] for row in a] + + +def identity(n): + return [[Q(i == j) for j in range(n)] for i in range(n)] + + +def transpose(a): + return [list(x) for x in zip(*a)] + + +def rank(rows): + a = deepcopy(rows) + k = 0 + for j in range(len(a[0]) if a else 0): + p = next((i for i in range(k, len(a)) if a[i][j]), None) + if p is None: + continue + a[k], a[p] = a[p], a[k] + d = a[k][j] + a[k] = [x / d for x in a[k]] + for i in range(len(a)): + if i != k: + d = a[i][j] + a[i] = [x - d*y for x, y in zip(a[i], a[k])] + k += 1 + return k + + +def partial_swap(p): + n = len(p) + return [[(Q(i % n == j % n) - p[i % n][j % n]) + if i // n == j // n else p[i % n][j % n] + for j in range(2*n)] for i in range(2*n)] + + +def double(a): + return [[a[i % 8][j % 8] if i // 8 == j // 8 else Q(0) + for j in range(16)] for i in range(16)] + + +def apply_gate(a, gate): + op, i, j = gate[:3] + if op == 'swap': + a[i], a[j] = a[j], a[i] + elif op == 'scale': + a[i] = [Q(j)*x for x in a[i]] + elif op == 'add': + a[i] = [x+Q(gate[3])*y for x, y in zip(a[i], a[j])] + else: + raise ValueError('unknown chart gate') + + +def invert_gate(g): + if g[0] == 'swap': + return list(g) + if g[0] == 'scale': + return [g[0], g[1], str(1/Q(g[2]))] + return [g[0], g[1], g[2], str(-Q(g[3]))] + + +def chart_program(chart): + """In-place Q via exact unit ADD, NEGATE, DOUBLE/HALVE, SWAP. + + Reduction is nomination only; all emitted programs are independently + replayed as rational matrices, including every prefix denominator. + """ + a = deepcopy(chart) + reduction = [] + for j in range(8): + i = next(i for i in range(j, 8) if a[i][j]) + if i != j: + g = ['swap', i, j]; apply_gate(a, g); reduction.append(g) + if a[j][j] != 1: + g = ['scale', j, str(1/a[j][j])]; apply_gate(a, g); reduction.append(g) + for i in range(8): + if i != j and a[i][j]: + g = ['add', i, j, str(-a[i][j])]; apply_gate(a, g); reduction.append(g) + need(a == identity(8), 'chart reduction reaches identity') + factored = [invert_gate(g) for g in reversed(reduction)] + program = [] + for g in factored: + op, i, j = g[:3] + if op == 'swap': + program.append(g) + elif op == 'scale': + c = Q(j) + need(abs(c) in (Q(1), Q(2), Q(1, 2)), 'dyadic unit scale') + if c < 0: + program.append(['scale', i, '-1']) + if abs(c) != 1: + program.append(['scale', i, str(abs(c))]) + else: + c = Q(g[3]) + need(abs(c) in (Q(1), Q(2), Q(1, 2)), 'allowed dyadic shear') + unit = '1' if c > 0 else '-1' + if abs(c) == Q(1, 2): + program += [['scale', j, '1/2'], ['add', i, j, unit], ['scale', j, '2']] + else: + program += [['add', i, j, unit]] * int(abs(c)) + inverse = [invert_gate(g) for g in reversed(program)] + def replay(gs): + matrix = identity(8) + max_norm = Q(1); max_denominator = 1 + for g in gs: + apply_gate(matrix, g) + max_norm = max(max_norm, max(sum(map(abs, row)) for row in matrix)) + max_denominator = max(max_denominator, max(x.denominator for row in matrix for x in row)) + return matrix, str(max_norm), max_denominator + m, norm, den = replay(program) + mi, inorm, iden = replay(inverse) + need(m == chart and mi == transpose(chart), 'exact forward/inverse matrix') + need(matrix_product(mi, m) == identity(8), 'all-input inverse restoration') + need(replay(program[:-1])[0] != chart, 'missing-final-gate control') + def shifted(g, k): + out = list(g); out[1] += k + if out[0] in ('add', 'swap'): + out[2] += k + return out + residual = ([shifted(g, k) for k in (0, 8) for g in inverse] + + [['swap', i, i+8] for i in range(4)] + + [shifted(g, k) for k in (0, 8) for g in program]) + state = identity(16); rnorm = Q(1); rden = 1 + for g in residual: + apply_gate(state, g) + rnorm = max(rnorm, max(sum(map(abs, row)) for row in state)) + rden = max(rden, max(x.denominator for row in state for x in row)) + p = matrix_product([r[:4] for r in chart], transpose([r[:4] for r in chart])) + need(state == partial_swap(p), 'literal residual coordinate program') + invresidual = [invert_gate(g) for g in reversed(residual)] + for g in invresidual: + apply_gate(state, g) + need(state == identity(16), 'literal residual inverse restoration') + return {'elementary_factors': len(factored), 'program': program, 'inverse': inverse, + 'primitive_count': len(program), 'primitive_histogram': dict(Counter( + g[0] + (':'+g[2] if g[0] == 'scale' else '') for g in program)), + 'forward_max_prefix_row_l1': norm, 'inverse_max_prefix_row_l1': inorm, + 'forward_max_prefix_denominator': den, 'inverse_max_prefix_denominator': iden, + 'residual_16_coordinate_program': residual, + 'residual_16_coordinate_primitive_count': len(residual), + 'residual_max_prefix_row_l1': str(rnorm), 'residual_max_prefix_denominator': rden, + 'scratch_field_elements': 0, 'missing_final_gate_rejected': True} + + +def verify_chart(c, raw, full): + cols = [[Q(x) for x in r] for r in c['Q_columns']] + need(len(cols) == 8 and all(len(r) == 8 for r in cols), 'chart size') + need(matrix_product(cols, transpose(cols)) == identity(8), 'orthonormal columns') + labels = c['inside_full_root_labels'] + c['cold_full_root_labels'] + need(cols == [[Q(x, 2) for x in full['lines'][j]] for j in labels], 'root labels') + need(all(x.denominator in (1, 2) for r in cols for x in r), 'half integral chart') + e = [[Q(x) for x in raw['lines'][j]] for j in raw['frames'][c['terminal_frame']]] + need(rank(e) == 4 and rank(e + cols[:4]) == 4, 'actual rank four terminal span') + p = matrix_product(transpose(cols[:4]), cols[:4]) + need(p == [[Q(x) for x in r] for r in c['projector']], 'saved projector') + pc = [[Q(i == j and i < 4) for j in range(8)] for i in range(8)] + chart = transpose(cols) + need(matrix_product(matrix_product(double(chart), partial_swap(pc)), double(cols)) + == partial_swap(p), 'all sixteen address basis columns') + return {'frame': c['terminal_frame'], 'rank': 4, + 'address_basis_columns': 16, 'max_denominator': 2, + 'coordinate_program': chart_program(chart)} + + +def magnitude_and_defects(records, inverse=False): + """Exact-integer reset bound plus extended-shear no-reset defect bound. + + Scalar ADD is exact. MOVE, COPY and ERASE may each inject an arbitrary + additive defect of norm at most one in the single destination row. + COPY/ERASE are extended to +/- source shears, not zero assignments. + """ + mag = [1]*660 + [0] + error = [0]*661 + max_mag = 1 + max_error = 0 + opened = None + erased = [] + count = Counter() + for z in reversed(records) if inverse else records: + op, d, s, c, f, phase = z + count[str(op)] += 1 + if op == 0: + error[d] += 1 + elif op == 1: + mag[d] += abs(c)*mag[s] + error[d] += abs(c)*error[s] + elif op == (3 if inverse else 2): + need(opened is None, 'fresh episode') + opened = d + mag[660] = mag[d] + error[660] += error[d] + 1 + else: + need(op == (2 if inverse else 3) and opened == d, 'matching episode') + opened = None + mag[660] = 0 + error[660] += error[d] + 1 + erased.append(error[660]) + max_mag = max(max_mag, max(mag)) + max_error = max(max_error, max(error)) + need(opened is None, 'all episodes close') + return {'positive_envelope_exact_erase_only': max_mag, + 'unit_defect_all_prefix_bound': max_error, + 'unit_defect_persistent_endpoint_bound': max(error[:660]), + 'unit_defect_private_endpoint_bound': error[660], + 'private_bounds_after_each_erase': erased, 'opcode_counts': dict(count)} + + +def main(): + p = argparse.ArgumentParser() + p.add_argument('--write', action='store_true') + args = p.parse_args() + bundle = json.loads((HERE/'INPUT-MANIFEST.json').read_text()) + own = {'decompressed_word_sha256': bundle['decompressed_word_sha256']} + seen = {} + def authenticate(x): + if isinstance(x, list): + for y in x: + authenticate(y) + elif isinstance(x, dict): + if 'path' in x and 'sha256' in x: + path = Path(x['path']) + need(not path.is_absolute() and '..' not in path.parts, 'bundle-relative input') + need(sha(HERE/path) == x['sha256'], 'pinned file changed: '+x['path']) + seen[x['path']] = x['sha256'] + for y in x.values(): + if isinstance(y, (dict, list)): + authenticate(y) + authenticate(bundle['files']) + wordfile = INPUT/'FIVE-TERMINALS-WORD.json.gz' + blob = gzip.decompress(wordfile.read_bytes()) + need(sha256(blob).hexdigest() == own['decompressed_word_sha256'], 'literal word hash') + word = json.loads(blob) + rawpath = INPUT/'r438-t154.json.gz' + fullpath = INPUT/'bitE8-r865.json.gz' + raw = json.loads(gzip.decompress(rawpath.read_bytes())) + full = json.loads(gzip.decompress(fullpath.read_bytes())) + charts = json.loads((INPUT/'TERMINAL-CHARTS.json').read_text())['charts'] + need([x['terminal_frame'] for x in charts] == [506, 508, 509], 'three exact frames') + checked = [verify_chart(c, raw, full) for c in charts] + controls = [] + bad = deepcopy(charts[0]); bad['Q_columns'][0][0] = '1' + try: + verify_chart(bad, raw, full) + except ValueError: + controls.append('nonorthogonal chart rejected') + else: + raise ValueError('chart mutation accepted') + bad = deepcopy(charts[0]); bad['terminal_frame'] = 0 + try: + verify_chart(bad, raw, full) + except ValueError: + controls.append('wrong actual terminal span rejected') + else: + raise ValueError('frame mutation accepted') + forward = magnitude_and_defects(word['records']) + reverse = magnitude_and_defects(word['records'], True) + F = forward['positive_envelope_exact_erase_only'] + R = reverse['positive_envelope_exact_erase_only'] + need((F, R) == (8402567, 630744), 'both positive bounds') + p5 = 64*F**3*R**2 + p9 = 2**18*F**5*R**4 + need((p5.bit_length(), p9.bit_length()) == (114, 211), 'exact precision thresholds') + # Exact signed scalar minimal witness: a nonzero COPY defect survives + # its exact inverse source shear, irrespective of how small it is. + epsilon = Q(1, 2**256) + source = Q(0); temporary = source + epsilon + temporary -= source + need(temporary == epsilon and temporary != 0, 'positive finite precision does not imply exact ERASE') + controls.append('COPY defect survives inverse source shear at 256 bits') + # Sufficient conditional finite-invoice budget for depth two. + # coefficient = prefix + B. This is NOT a bound on an unbuilt compiler. + Bcap = 2**210 - 1 + Ecap = 2**20 - 1 + two_cap = (p9+Bcap+1)**2*(Ecap+1)**2 + need(two_cap < 2**512, 'conditional two-level invoice fits inherited 512 bits') + sources = [ + 'research/e8-bit-carrier-skeleton/code/bit/checkers/columns_h.cpp', + 'research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp', + 'research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py', + 'research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/code/assemble9.py', + 'research/pr589-five-helper-hosting/PROOF.md', + ] + result = {'status': 'PASS_FINITE_ADMISSION_DIAGNOSTICS_NOT_NATIVE_SUPPLIER', + 'no_new_kappa': True, 'authenticated_unique_files': len(seen), + 'word_sha256': own['decompressed_word_sha256'], + 'independent_charts': checked, 'forward': forward, 'inverse': reverse, + 'precision': {'five_stage_integer_bound': str(p5), 'five_stage_bits': 114, + 'five_stage_multiple_of_64': 128, 'nine_stage_integer_bound': str(p9), + 'nine_stage_bits': 211, 'nine_stage_multiple_of_64': 256, + 'conditional_depth_two': {'extra_invoice_max': str(Bcap), + 'child_count_max': Ecap, 'upper_bound_bits': two_cap.bit_length(), + 'charged_bits': 512, + 'scope': 'Sufficient conditional arithmetic only; no compiler or owner invoice is supplied.'}}, + 'controls': controls, + 'source_sha256': {x: sha(REPO/x) for x in sources}, + 'script_sha256': sha(__file__), + 'limits': 'No exact rounded-child cleanup, chronological owners, paid native routes, all-size compiler, tape or outer admission.'} + outfile = HERE/'ADMISSION-CHECK.json' + if args.write: + outfile.write_text(json.dumps(result, indent=2, sort_keys=True)+'\n') + else: + need(json.loads(outfile.read_text()) == result, 'receipt matches independent recomputation') + print(result['status']) + print(json.dumps({'charts': len(checked), 'guards': [114,211], + 'defect_bounds': [forward['unit_defect_all_prefix_bound'],reverse['unit_defect_all_prefix_bound']], + 'conditional_two_level_bits': two_cap.bit_length()})) + + +if __name__ == '__main__': + main() diff --git a/research/bit-five-rank4-terminals/moment/PORTABLE-VALIDATION.json b/research/bit-five-rank4-terminals/moment/PORTABLE-VALIDATION.json new file mode 100644 index 0000000000..dba1ed7d85 --- /dev/null +++ b/research/bit-five-rank4-terminals/moment/PORTABLE-VALIDATION.json @@ -0,0 +1,87 @@ +{ + "status": "PASS_PORTABLE_READ_ONLY_RELOCATED_NORMAL_OPTIMIZED_AND_CORRUPTION_CONTROLS", + "checked_at_utc": "2026-10-19T08:37:10.158733+00:00", + "commands": [ + { + "location": "portable", + "argv": [ + "/opt/homebrew/opt/python@3.14/bin/python3.14", + "-B", + "verify.py" + ], + "exit_code": 0, + "stdout": "PASS_FIVE_TERMINAL_FULL_MOMENT_NECESSARY_SCREENS no_new_kappa\nnative optimistic root: 0.00196293884161 0.001962938841611\nfallback optimistic root: 0.00196293883948 0.001962938839481\nb=1/500 raw excess/call=0.675747514950634313488383535\nb=3/1000 raw excess/call=18.9419819069957543419643958\nb=1/200 raw excess/call=55.6656543107476896324751170\nall odd L>=3: b=.002 impossible at depth<=10; b=.002019323862 impossible even with idle rank m\ndepth11/rank60 unbuilt budget: 0.00231398661483780488008181456\nPASS_FIXED_CONTROLLER_ALL_DEPTH_BIT_TARGET_OBSTRUCTION no_new_kappa\nsource nine-stage public idle ranks:14,7,28,7,42,7,42,28,14,0\nall inherited odd arities, all depths, any full-progress extra stock: b>=.002 rejected\nrank42 inherited fallback root: 0.001954220766879 0.00195422076688\nb=.002 nine-stage excess: 0.838420449631868152277021036\nPASS_FIVE_TERMINAL_MOMENT_AND_FIXED_WINDOW_OBSTRUCTION no_new_kappa\n", + "stderr": "", + "read_only": true + }, + { + "location": "portable", + "argv": [ + "/opt/homebrew/opt/python@3.14/bin/python3.14", + "-O", + "-B", + "verify.py" + ], + "exit_code": 0, + "stdout": "PASS_FIVE_TERMINAL_FULL_MOMENT_NECESSARY_SCREENS no_new_kappa\nnative optimistic root: 0.00196293884161 0.001962938841611\nfallback optimistic root: 0.00196293883948 0.001962938839481\nb=1/500 raw excess/call=0.675747514950634313488383535\nb=3/1000 raw excess/call=18.9419819069957543419643958\nb=1/200 raw excess/call=55.6656543107476896324751170\nall odd L>=3: b=.002 impossible at depth<=10; b=.002019323862 impossible even with idle rank m\ndepth11/rank60 unbuilt budget: 0.00231398661483780488008181456\nPASS_FIXED_CONTROLLER_ALL_DEPTH_BIT_TARGET_OBSTRUCTION no_new_kappa\nsource nine-stage public idle ranks:14,7,28,7,42,7,42,28,14,0\nall inherited odd arities, all depths, any full-progress extra stock: b>=.002 rejected\nrank42 inherited fallback root: 0.001954220766879 0.00195422076688\nb=.002 nine-stage excess: 0.838420449631868152277021036\nPASS_FIVE_TERMINAL_MOMENT_AND_FIXED_WINDOW_OBSTRUCTION no_new_kappa\n", + "stderr": "", + "read_only": true + }, + { + "location": "relocation-check", + "argv": [ + "/opt/homebrew/opt/python@3.14/bin/python3.14", + "-B", + "verify.py" + ], + "exit_code": 0, + "stdout": "PASS_FIVE_TERMINAL_FULL_MOMENT_NECESSARY_SCREENS no_new_kappa\nnative optimistic root: 0.00196293884161 0.001962938841611\nfallback optimistic root: 0.00196293883948 0.001962938839481\nb=1/500 raw excess/call=0.675747514950634313488383535\nb=3/1000 raw excess/call=18.9419819069957543419643958\nb=1/200 raw excess/call=55.6656543107476896324751170\nall odd L>=3: b=.002 impossible at depth<=10; b=.002019323862 impossible even with idle rank m\ndepth11/rank60 unbuilt budget: 0.00231398661483780488008181456\nPASS_FIXED_CONTROLLER_ALL_DEPTH_BIT_TARGET_OBSTRUCTION no_new_kappa\nsource nine-stage public idle ranks:14,7,28,7,42,7,42,28,14,0\nall inherited odd arities, all depths, any full-progress extra stock: b>=.002 rejected\nrank42 inherited fallback root: 0.001954220766879 0.00195422076688\nb=.002 nine-stage excess: 0.838420449631868152277021036\nPASS_FIVE_TERMINAL_MOMENT_AND_FIXED_WINDOW_OBSTRUCTION no_new_kappa\n", + "stderr": "", + "read_only": true + }, + { + "location": "relocation-check", + "argv": [ + "/opt/homebrew/opt/python@3.14/bin/python3.14", + "-O", + "-B", + "verify.py" + ], + "exit_code": 0, + "stdout": "PASS_FIVE_TERMINAL_FULL_MOMENT_NECESSARY_SCREENS no_new_kappa\nnative optimistic root: 0.00196293884161 0.001962938841611\nfallback optimistic root: 0.00196293883948 0.001962938839481\nb=1/500 raw excess/call=0.675747514950634313488383535\nb=3/1000 raw excess/call=18.9419819069957543419643958\nb=1/200 raw excess/call=55.6656543107476896324751170\nall odd L>=3: b=.002 impossible at depth<=10; b=.002019323862 impossible even with idle rank m\ndepth11/rank60 unbuilt budget: 0.00231398661483780488008181456\nPASS_FIXED_CONTROLLER_ALL_DEPTH_BIT_TARGET_OBSTRUCTION no_new_kappa\nsource nine-stage public idle ranks:14,7,28,7,42,7,42,28,14,0\nall inherited odd arities, all depths, any full-progress extra stock: b>=.002 rejected\nrank42 inherited fallback root: 0.001954220766879 0.00195422076688\nb=.002 nine-stage excess: 0.838420449631868152277021036\nPASS_FIVE_TERMINAL_MOMENT_AND_FIXED_WINDOW_OBSTRUCTION no_new_kappa\n", + "stderr": "", + "read_only": true + } + ], + "negative_controls": [ + { + "mutated": "RESULT.json", + "rejected": true, + "exit_code": 1, + "reason": "ValueError: shipped mathematical result differs: RESULT.json" + }, + { + "mutated": "inputs/FIVE-TERMINALS.json", + "rejected": true, + "exit_code": 1, + "reason": "ValueError: input digest: /Users/ross/git/math/.research-automation/runs/bit-five-helper-owned-20261019T0813Z/moment/relocation-check/inputs/FIVE-TERMINALS.json" + } + ], + "portable_files": { + "WINDOW-RESULT.json": "a959fcac8aa0fed2ab63baf02492ce9c697d039be32fb375abfe7dc77b18e786", + "PROOF.md": "e78080da8c475278ed0b9cba6043a2e2182f4d6c6bdc58b6e928fcba94c48972", + "check_moment.py": "f462d1299f23cb9d9df800a2e15af5c1f15d883b0aca90e0885a932b903071d4", + "RESULT.json": "face2ea5e286831ac29413f4e2d085998685d4faf332b5c224159f6b9fcdf42d", + "check_windows.py": "32dc8b5dcd219de70d4404ea49c31d653e7b75627d6c78e4eb84e5a4d8d4a931", + "README.md": "85dcfafcd8931296297494e1abd5441ea5ac8f3b750cca169b78ab3fd50239cd", + "WINDOW-PROOF.md": "4bac2a8826350061d8bd9eade8465f9a01989422d4027b5d2830506662fa016d", + "verify.py": "bb5487c78c835d2637ce84e289e969771a59e4cfeb90cc829d1b79c349ae76ac", + "inputs/SOURCES.json": "2548662747a5ea2e00ebdf6cced3fd76b38c3a841526f3baf0acd0b7a0eb4ada", + "inputs/global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8", + "inputs/R438-CERTIFICATE.json": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c", + "inputs/FIVE-TERMINALS.json": "75e029f9bb6ca42540fa633b51bf2d8d62125c57a0ee184fbf3c94e08a8c7d58" + }, + "no_new_kappa": true, + "independent_review": "parent unary-review final review pending", + "relocation_removed": true +} diff --git a/research/bit-five-rank4-terminals/moment/PROOF.md b/research/bit-five-rank4-terminals/moment/PROOF.md new file mode 100644 index 0000000000..fe3d46560f --- /dev/null +++ b/research/bit-five-rank4-terminals/moment/PROOF.md @@ -0,0 +1,284 @@ +# Five-terminal BIT: complete-moment obstruction in the inherited coverage model + +The frozen five-terminal word cannot support a joint target κ ≥ .002 under +the inherited odd-stage geometry and two-level child contraction. This remains +true after granting fractional owners, the best possible remainder ranks, +arbitrary additional full-progress stock, zero adapter cost, and zero BIT +fallback charge. In fact, the same obstruction holds through depth ten. +This is a bound on a specified complete pricing model, not a general BIT +lower bound or a rejection of the finite word. + +The later `WINDOW-PROOF.md` strengthens this to every depth under the pinned +public controller chronology. The rank60 allowance below requires changing +that chronology and is unavailable in its actual public idle windows. + +The exact finite word, integer restoration, and public Boolean action are +inputs established by the frozen producer and independent checker. They are +not reproved by this moment checker. No physical source-to-native compiler, +chronological owner allocation, rounded-error theorem, or outer release is +claimed here. Everything stays local; no new κ. + +## Inputs and exact accounting + +The portable checker authenticates three bundled files by fixed SHA256: +the frozen `FIVE-TERMINALS.json` profile, the R438 certificate at scientific +Git pin `20ecf2891d80b5acf18d980b2164fb44ea7faa90`, and the controller source. +The full original handoff manifest and word were authenticated in the run +that produced this package. They are not runtime dependencies of this +arithmetic package. The actual literal word and independent operator audit +belong to the separately bound finite-word contribution; this package assumes +the authenticated local histogram and does not execute that operator check. +See `inputs/SOURCES.json` for hashes and provenance. No sources are modified. + +The paid local histogram is + +``` +H = {1:1322, 2:1342, 3:79, 4:39, 5:102, 6:11, 7:18}. +``` + +It has 2913 children and mass C=5101. All 36005 scalar ADDs, nine rank-seven +COPYs and one private field remain. In particular, + +``` +C = 111*14 + 433*8 + 5*4 + 9*7 = 5101. +``` + +The old R438 local histogram is H+5e4, of mass5121. The changed five helpers +contribute 3484 ranks of helper progress instead of3504. Exactly20 progress +ranks and exactly20 local query ranks disappear together. No extra20 units of +zero-exponent deficit result. + +For the original nine-stage, 32-replica public geometry, m=64, calls=288 and +live public stock W=28416. Write w=W/calls=296/3. The full coverage identity is + +``` +total rank mass/call = (m-1)w + 63 = 6279, +raw stock/call = mw = 18944/3, +deficit/call = w-63 = 107/3. +``` + +Consequently fully hosted old idle mass1158 becomes new idle mass1178. Holding +the old idle invoice fixed after deleting5e4 loses20 ranks of required global +progress. If instead a dedicated helper bank shrinks by its fractional +20/m units of stock, both its raw stock and its full progress bill shrink +by20; the zero-exponent deficit again does not gain20. Actual integral banks +and chronological restrictions can only make this favorable relaxation more +expensive. + +## Fixed nine-stage bound, including inherited fallback + +Use the raw moment convention + +``` +F(b) = sum_r Hglobal[r] * r * (m/r)^b, +F(b) < mW. +``` + +For every 00. +The inherited two-level strict contraction `m² > 2r²` gives R=45 at m=64. +Thus even arbitrary fractional packing of all1178 idle ranks has cost at least + +``` +Fideal(b) = A64(b) + 1178*(64/45)^b, +Am(b) = sum_r H[r]*r*(m/r)^b. +``` + +The inherited conservative BIT fallback is +`τ(m) m^b` per child, where `τ(m)=32m²/10^16`. The smallest possible +fractional child count in this relaxation is `2913+1178/45`. Adding that +charge still gives only a lower bound on the actual complete bill: additional +owner splits, padding, adapters, private transformations or controller +children have not been constructed and have deliberately been priced at zero. + +Exact rational enclosures give the following **positive excess** over raw +stock, per local invocation: + +| b | optimistic excess, inherited fallback included | +|---|---:| +| .002 | > .67574751495063431348 | +| .003 | > 18.9419819069957543419 | +| .005 | > 55.6656543107476896324 | + +Strict monotonicity gives unique optimistic roots. Adjacent exact endpoints +are certified on both sides, rather than inferring rejection from a failed +upper-bound test: + +``` +without fallback: .001962938841610 < root < .001962938841611, +with fallback: .001962938839480 < root < .001962938839481. +``` + +For comparison of the old and new *ideal* invoices, the maximum gain from +the five retirements is exactly + +``` +20*((64/4)^b-(64/45)^b) + + τ(64)*(5-20/45)*64^b. +``` + +At b=.002 this is only .09711782074669793524... raw units per call. It is +not a20-unit net saving. Improving old owners as well is already granted by +the new all-idle-at45 lower bound above. + +## All odd stage counts and arbitrary additional stock + +The following is an all-parameter written proof, with exact finite endpoint +checks. Its premises are the **unchanged one-unpaid-coordinate coverage law** +and the same local H. For an odd integer L≥3, set + +``` +m = 7L+1, +w = 111(L-1)/L, +T = (m-1)w+63 = 777L-714. +``` + +Allow any additional independent full-progress stock X≥0, measured per local +invocation. Its complete progress mass is mX. The nonnegative remaining idle +mass must be `I=T+mX-C`. Hence + +``` +X ≥ Xmin = max(0,(C-T)/m). +``` + +This relaxes integrality, arbitrary dirty-input physical ownership and all +chronological windows. It also grants freely usable ideal channels. At depth d, +the strict halving rule is `m^d>2r^d`, so the cost per idle rank is greater +than `c=2^(b/d)`. A favorable lower bound on excess is + +``` +E(L,b,d,X) = Am(b) + (T+mX-C)c - m(w+X). +``` + +Increasing X by ΔX increases this expression by `mΔX(c-1)≥0`. Therefore the +most favorable stock is Xmin. For L=3,5,7, this gives I=0. At b=.002, exact +checks yield excesses greater than13.5540428589,3.8049595866,.8340592145, +respectively, independently of d. + +For L≥9, Xmin=0 and I=777L-5815, giving + +``` +E(L,b,d) = Am(b) + (777L-5815)c - (777L-666-111/L). +``` + +Treat L as real. Since `Am(b)≥C` and `log(2)>2/3`, + +``` +dE/dL = 7b Am(b)/(7L+1) + 777(c-1) - 111/L² + ≥ 7bC/(7L+1) + 518b/d - 111/L². +``` + +The strict elementary inequality `log(2)>2/3` follows already from the first +positive term of `2 atanh(1/3)`. Multiplying the last lower bound by the +positive `L²(7L+1)` produces + +``` +P(L) = (518b/d)L²(7L+1) + 7bC L² - 111(7L+1). +``` + +At b=1/500,d=2, write L=9+x. The coefficients of P in ascending powers of x +are exactly + +``` +(682923, 699447, 84917, 1813)/500. +``` + +Every coefficient is positive. Thus E increases on every real L≥9. Its exact +value at L=9 is greater than .66243383606313119872, even after permitting +the nonintegral ideal idle rank64/sqrt(2). Together with L=3,5,7, this proves +failure at b=.002 for every odd L≥3. Each child's raw moment is increasing in +b, so the same statement holds for every b≥.002; in particular .003 and .005. + +The same proof strengthens the depth boundary. At d=10, write L=11+x. The +coefficients of P are exactly + +``` +(2402177, 2649087, 238623, 1813)/2500. +``` + +Again they are all positive. Exact lower bounds at L=9 and L=11 are +.00894020087916594600 and .01463184725423174600. Therefore all odd L≥3 fail +at b=.002 through depth10. Smaller d has larger c and cannot improve this. +These are global moment screens; they do not certify any depth's native +compiler or precision cost. + +## Limits if contraction or coverage is changed + +Granting even idle rank m, which is invalid as an actual recursive child, +sets c=1 and drops all idle pressure. With the same fixed H and coverage, +all odd L≥3 still fail at b=.002019323862. The checker verifies L=3,5,7,9,11,13 +exactly and proves positive derivative for every real L≥13 using the same +polynomial with `518b/d=0`. Its weakest tested arity L=11 has the cap-free +root strictly between .002019323861174 and .002019323861175. Thus .003/.005 +are excluded in this unchanged coverage model even without the depth guard. + +There is a narrowly passing *unbuilt* .002 screen outside the inherited +depth-two contract: at L=9 allow fractional idle rank60. The minimum halving +depth for rank60 is11, since `64^11>2*60^11` but `64^10≤2*60^10`. With the +inherited fallback it leaves only + +``` +raw allowance/call = .00231398661483780488008... +``` + +for every extra obligation combined. There is no rank60 owner schedule, +source-to-native compiler or depth11 precision/tape proof in this result. +This fractional invoice cannot be used as a supplier. Its existence also +prevents promoting the inherited-model .002 obstruction into a universal +claim about arbitrary changed depth or changed ownership geometry. + +New coverage with additional unpaid physical directions, fewer paid COPYs, +different public endpoints, higher-rank consolidation of local children, +changed local H, or useful partial progress across calls changes a premise. +Such proposals require a new complete operator and tariff and are not ruled +out here. A changed rounded precision envelope, by itself, does not change +the local H or coverage equations. The inherited104/192-bit cap failures are +not used as a mathematical obstruction: a valid dynamically charged128/256-bit +or other precision argument could repair precision without repairing the +moment failure. + +## Joint and outer consequences + +The previous modern planning transfer uses a common supplier exponent b and +produces K.002. The BIT lower-bound failure above is +already decisive for the inherited coverage/depth model, regardless of a +complex-side gain. The parent's current complex four-bank mass68/stock48 +invoice independently has no positive deficit; it must not be combined with +this BIT local saving as if either side had passed. + +No new joint parameter is claimed. If any changed supplier is eventually +constructed, the owner must bind its full histogram, fallback policy, precision +and row costs, integral whole-helper ownership and arbitrary-input hosting, +native ADDRESS and scalar interfaces, source access, physical storage, +halting/head return, all-size recurrence and every outer inequality at the +same b. The construction/owner and native/rounding specialists own those +separate obligations. This proof does not make any of them implicit. + +## Reproduction, arithmetic and scope of evidence + +Run from this directory: + +``` +python3 -B check_moment.py +python3 -O -B check_moment.py +``` + +The checker uses only Python's standard library, authenticates frozen sources, +and writes `RESULT.json` in this owned directory. Logs/exp use exact rational +atanh and positive Taylor series with explicit tails and outward rounding. +At every requested rational target, independent integer/rational-power tests +check each logarithmic enclosure by raising its rational endpoints to the +target denominator; no floating-point value decides a sign. Decimal strings +are display only. Five negative controls reject lost idle mass, inflated old +helper stock, rank46 at depth2, rank64 recursion and corrupted word identity. + +This consists of an all-parameter written inequality proof and reproducible +finite exact arithmetic. It is neither an exhaustive construction search nor +a formal-kernel proof. Historical source premises remain explicit. Credit the +R438 and PR589 geometry, hosting and native-interface predecessors and the +frozen five-terminal producer/auditor; the predecessor joint-frontier screen +supplied the modern raw-moment and fallback conventions. This worker adds +the exact retirement invoice and all-arity/depth obstruction. + +Apache-2.0; substantial OpenAI Codex assistance. diff --git a/research/bit-five-rank4-terminals/moment/README.md b/research/bit-five-rank4-terminals/moment/README.md new file mode 100644 index 0000000000..72394ec410 --- /dev/null +++ b/research/bit-five-rank4-terminals/moment/README.md @@ -0,0 +1,43 @@ +# Five-terminal BIT moment and fixed-window obstruction + +The frozen local word cannot reach a joint target κ≥.002 within the pinned +one-unpaid-coordinate controller family. The written argument covers every +odd arity of that recipe, every recursive depth, fractional public owners, +and arbitrary additional full-progress helper stock. At nine stages the +source's maximum public idle rank is42; even ideal remainder packing has +positive raw moment excess greater than .83842044963186815 per local call at +b=.002 before any fallback or adapter costs. + +Read [WINDOW-PROOF.md](WINDOW-PROOF.md) for the strongest result and exact +scope. [PROOF.md](PROOF.md) records the earlier broader fractional-idle +screens and the20-for20 helper-progress cancellation. Its rank60 arithmetic +allowance is unavailable in the pinned controller chronology. Changed public +chronology, useful partial-progress auxiliary contracts, changed local words, +coverage or COPY tariffs remain outside these obstructions. No new κ and no +native/all-size supplier admission are claimed. + +From this directory, run: + +``` +python3 -B verify.py +python3 -O -B verify.py +``` + +Default execution is read-only and compares every mathematical field with +the shipped results. It ignores only runtime timestamp/Python metadata. To +regenerate both result files explicitly, use `python3 -B verify.py --write`. +The standard-library scripts can run from any working directory and need no +Git checkout, network, or preceding research directory. + +The minimal source inputs are the three files listed in +[inputs/SOURCES.json](inputs/SOURCES.json): the frozen local profile report, +the pinned R438 certificate, and the literal caller source. Their SHA256 +values are fixed in the checker. Actual finite-word validation is a separate +source-bound contribution; this arithmetic package does not re-execute that +word or its native compiler. `check_moment.py` checks exact target powers by +rational exponentiation as well as explicit log/exp series; independent +nth-root and written reviews are supplied by the containing package. + +Retain the source authors and AI disclosures in `inputs/global_k.py` and the +predecessor references in the proofs. Apache-2.0; substantial OpenAI Codex +assistance. diff --git a/research/bit-five-rank4-terminals/moment/RESULT.json b/research/bit-five-rank4-terminals/moment/RESULT.json new file mode 100644 index 0000000000..aaea142a51 --- /dev/null +++ b/research/bit-five-rank4-terminals/moment/RESULT.json @@ -0,0 +1,356 @@ +{ + "all_odd_arity_obstructions": [ + { + "b": "1/500", + "depth": 2, + "finite_cases": [ + { + "L": 3, + "excess_per_call": { + "decimal_lower": "13.5540428589069553897486536", + "decimal_upper": "13.5540428589069553897486536", + "lower": "1355404285890695538974865362168956199469933442454473840276388748129/100000000000000000000000000000000000000000000000000000000000000000", + "upper": "135540428589069553897486536216895619946993344245447384027638905929/10000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "L": 5, + "excess_per_call": { + "decimal_lower": "3.80495958669732755520652890", + "decimal_upper": "3.80495958669732755520652890", + "lower": "190247979334866377760326445171440502573625930368439431206363883349/50000000000000000000000000000000000000000000000000000000000000000", + "upper": "380495958669732755520652890342881005147251860736878862412728077859/100000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "L": 7, + "excess_per_call": { + "decimal_lower": "0.834059214560461288736158167", + "decimal_upper": "0.834059214560461288736158167", + "lower": "116768290038464580423062143366102335181706534071326579090066056707/140000000000000000000000000000000000000000000000000000000000000000", + "upper": "291920725096161451057655358415255837954266335178316447725166230831/350000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "L": 9, + "excess_per_call": { + "decimal_lower": "0.662433836063131198722148958", + "decimal_upper": "0.662433836063131198722148958", + "lower": "198730150818939359616644687414183853308315804808537654988648813531/300000000000000000000000000000000000000000000000000000000000000000", + "upper": "49682537704734839904161171853545963327078951202134413747162490647/75000000000000000000000000000000000000000000000000000000000000000" + } + } + ], + "monotone_for_real_L_at_least": 9, + "positive_derivative_numerator_coefficients_in_L_minus_start": [ + "682923/500", + "699447/500", + "84917/500", + "1813/500" + ] + }, + { + "b": "1/500", + "depth": 10, + "finite_cases": [ + { + "L": 3, + "excess_per_call": { + "decimal_lower": "13.5540428589069553897486536", + "decimal_upper": "13.5540428589069553897486536", + "lower": "1355404285890695538974865362168956199469933442454473840276388748129/100000000000000000000000000000000000000000000000000000000000000000", + "upper": "135540428589069553897486536216895619946993344245447384027638905929/10000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "L": 5, + "excess_per_call": { + "decimal_lower": "3.80495958669732755520652890", + "decimal_upper": "3.80495958669732755520652890", + "lower": "190247979334866377760326445171440502573625930368439431206363883349/50000000000000000000000000000000000000000000000000000000000000000", + "upper": "380495958669732755520652890342881005147251860736878862412728077859/100000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "L": 7, + "excess_per_call": { + "decimal_lower": "0.834059214560461288736158167", + "decimal_upper": "0.834059214560461288736158167", + "lower": "116768290038464580423062143366102335181706534071326579090066056707/140000000000000000000000000000000000000000000000000000000000000000", + "upper": "291920725096161451057655358415255837954266335178316447725166230831/350000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "L": 9, + "excess_per_call": { + "decimal_lower": "0.00894020087916594600021095163", + "decimal_upper": "0.00894020087916594600021095163", + "lower": "2682060263749783800063285489531840781694231641250611706791904233/300000000000000000000000000000000000000000000000000000000000000000", + "upper": "268206026374978380006328548953184078169423164125061170679305329/30000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "L": 11, + "excess_per_call": { + "decimal_lower": "0.0146318472542317460016418738", + "decimal_upper": "0.0146318472542317460016418738", + "lower": "4023757994913730150451515291458595203950762264961834996455749141/275000000000000000000000000000000000000000000000000000000000000000", + "upper": "16095031979654920601806061165834380815803049059847339985828252507/1100000000000000000000000000000000000000000000000000000000000000000" + } + } + ], + "monotone_for_real_L_at_least": 11, + "positive_derivative_numerator_coefficients_in_L_minus_start": [ + "2402177/2500", + "2649087/2500", + "238623/2500", + "1813/2500" + ] + }, + { + "b": "1009661931/500000000000", + "depth": null, + "finite_cases": [ + { + "L": 3, + "excess_per_call": { + "decimal_lower": "13.7918864235035829990011890", + "decimal_upper": "13.7918864235035829990011890", + "lower": "275837728470071659980023780431237776207158008704810663340250626987/20000000000000000000000000000000000000000000000000000000000000000", + "upper": "86199290146897393743757431384761805064736877720253332293828340381/6250000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "L": 5, + "excess_per_call": { + "decimal_lower": "4.09186567594533237117606173", + "decimal_upper": "4.09186567594533237117606173", + "lower": "409186567594533237117606173440197451756862779132546662805275105311/100000000000000000000000000000000000000000000000000000000000000000", + "upper": "51148320949316654639700771680024681469607847391568332850659427059/12500000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "L": 7, + "excess_per_call": { + "decimal_lower": "1.15374610865503008964639060", + "decimal_upper": "1.15374610865503008964639060", + "lower": "20190556901463026568811835492221752885660612003036526872252109143/17500000000000000000000000000000000000000000000000000000000000000", + "upper": "807622276058521062752473419688870115426424480121461074890086543847/700000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "L": 9, + "excess_per_call": { + "decimal_lower": "0.189972411888440758902446561", + "decimal_upper": "0.189972411888440758902446561", + "lower": "56991723566532227670733968430458809410046027677433544622897018681/300000000000000000000000000000000000000000000000000000000000000000", + "upper": "14247930891633056917683492107614702352511506919358386155724488041/75000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "L": 11, + "excess_per_call": { + "decimal_lower": "1.55504144780130002381806746E-8", + "decimal_upper": "1.55504144780130002381806746E-8", + "lower": "427636398145357506549968550650696336043194365402113924661/27500000000000000000000000000000000000000000000000000000000000000", + "upper": "17105455925814300261998742026027853441727774616084560409211/1100000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "L": 13, + "excess_per_call": { + "decimal_lower": "0.160890685701019375218259819", + "decimal_upper": "0.160890685701019375218259819", + "lower": "209157891411325187783737764636262510202366067957424996596093218837/1300000000000000000000000000000000000000000000000000000000000000000", + "upper": "104578945705662593891868882318131255101183033978712498298048649411/650000000000000000000000000000000000000000000000000000000000000000" + } + } + ], + "monotone_for_real_L_at_least": 13, + "positive_derivative_numerator_coefficients_in_L_minus_start": [ + "986787758366673/500000000000", + "274425981412821/250000000000", + "36051998570217/500000000000", + "0" + ] + } + ], + "authentication": { + "operator_validation": "separate finite-word producer and independent audit; not executed here", + "source_mode": "portable pinned profile, R438 certificate and controller", + "word_decompressed_sha256_provenance": "3bca74a2a8427eb18e86566baa19de597f10d0bc40c30b7443febd499ee2189a" + }, + "cap_free_L11_root": { + "decimal_lower": "0.002019323861174", + "decimal_upper": "0.002019323861175", + "lower": "1009661930587/500000000000000", + "lower_excess": { + "decimal_lower": "-1.49158961766390399670844037E-11", + "decimal_upper": "-1.49158961766390399670844037E-11", + "lower": "-1640748579430294396379284403476789699227349124040899811/110000000000000000000000000000000000000000000000000000000000000000", + "upper": "-16407485794302943963792844034767896992273491240405575339/1100000000000000000000000000000000000000000000000000000000000000000" + }, + "upper": "80772954447/40000000000000", + "upper_excess": { + "decimal_lower": "3.92832945794400568879883355E-12", + "decimal_upper": "3.92832945794400568879883355E-12", + "lower": "1080290600934601564419679225364435168723442692886326661/275000000000000000000000000000000000000000000000000000000000000000", + "upper": "864232480747681251535743380291548134978754154309745883/220000000000000000000000000000000000000000000000000000000000000000" + } + }, + "checked_at_utc": "2026-10-19T08:35:17.007161+00:00", + "fixed_model": { + "deficit_per_call": "107/3", + "extra_adapters": 0, + "idle_mass_per_call": 1178, + "local_child_count": 2913, + "m": 64, + "meaning": "lower bound on actual bill; no owner realization", + "native_halving_rank_cap": 45, + "optimistic_fallback_call_count": "132263/45", + "stock_per_call": "296/3", + "total_mass_per_call": 6279 + }, + "inputs": { + "inputs/FIVE-TERMINALS.json": "75e029f9bb6ca42540fa633b51bf2d8d62125c57a0ee184fbf3c94e08a8c7d58", + "inputs/R438-CERTIFICATE.json": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c" + }, + "negative_controls": [ + "retirement_without_returned_idle", + "old_width8_stock_for_five_width4_terminals", + "rank46_under_two_level_guard", + "rank64_as_actual_recursive_child", + "corrupted_frozen_word_digest" + ], + "no_new_kappa": true, + "optimistic_roots": { + "conservative_fallback": { + "decimal_lower": "0.00196293883948", + "decimal_upper": "0.001962938839481", + "lower": "49073470987/25000000000000", + "lower_excess": { + "decimal_lower": "-7.55523835561338519793726536E-12", + "decimal_upper": "-7.55523835561338519793726536E-12", + "lower": "-69170273031128404522130725351458126356504407250530789822596919001/9155273437500000000000000000000000000000000000000000000000000000000000000000", + "upper": "-2593885238667315169579902200679679738368915271893589626968592214807/343322753906250000000000000000000000000000000000000000000000000000000000000000" + }, + "upper": "1962938839481/1000000000000000", + "upper_excess": { + "decimal_lower": "1.06768933259942253597592488E-11", + "decimal_upper": "1.06768933259942253597592488E-11", + "lower": "488749389312479798572963661816179608754710057178271227747285419151/45776367187500000000000000000000000000000000000000000000000000000000000000000", + "upper": "1832810209921799244648613731810673532830162714419175475214738906619/171661376953125000000000000000000000000000000000000000000000000000000000000000" + } + }, + "native_no_fallback": { + "decimal_lower": "0.00196293884161", + "decimal_upper": "0.001962938841611", + "lower": "196293884161/100000000000000", + "lower_excess": { + "decimal_lower": "-1.32919478098025826303150864E-11", + "decimal_upper": "-1.32919478098025826303150864E-11", + "lower": "-1993792171470387394547262955647744970326299827428949381/150000000000000000000000000000000000000000000000000000000000000000", + "upper": "-797516868588154957818905182259097988130519930971349941/60000000000000000000000000000000000000000000000000000000000000000" + }, + "upper": "1962938841611/1000000000000000", + "upper_excess": { + "decimal_lower": "4.94018387177857926517370731E-12", + "decimal_upper": "4.94018387177857926517370731E-12", + "lower": "1482055161533573779552112193127534173248509624472654089/300000000000000000000000000000000000000000000000000000000000000000", + "upper": "370513790383393444888028048281883543312127406118451169/75000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "python": "3.14.6 (main, Jun 10 2026, 10:03:53) [Clang 21.0.0 (clang-2100.0.123.102)]", + "scientific_pin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "scope": "All-parameter written proof plus exact rational endpoint checks; no native, precision, chronological owner or outer admission. Fixed H and unchanged one-unpaid-coordinate coverage. No new kappa.", + "status": "PASS_FIVE_TERMINAL_FULL_MOMENT_NECESSARY_SCREENS", + "targets": [ + { + "b": "1/500", + "complete_optimistic_excess_per_call": { + "decimal_lower": "0.675747514950634313488383535", + "decimal_upper": "0.675747514950634313488383535", + "lower": "463998995556313234054218430552007658287351674326678643553535475623894206572829/686645507812500000000000000000000000000000000000000000000000000000000000000000", + "upper": "15466633185210441135140614351733588609578389144222621451784603520221726368943/22888183593750000000000000000000000000000000000000000000000000000000000000000" + }, + "max_retirement_gain_per_call_vs_old_ideal": { + "decimal_lower": "0.0971178207466979352393869504", + "decimal_upper": "0.0971178207466979352393869504", + "lower": "22228505114753250558331363771341962512816173606086877078110158249189204224893/228881835937500000000000000000000000000000000000000000000000000000000000000000", + "upper": "66685515344259751674994091314025887538448520818260631234335734713082781690611/686645507812500000000000000000000000000000000000000000000000000000000000000000" + }, + "without_fallback_excess_per_call": { + "decimal_lower": "0.675747476104470106690107451", + "decimal_upper": "0.675747476104470106690107451", + "lower": "202724242831341032007032235432394284655358713543180599854355112843/300000000000000000000000000000000000000000000000000000000000000000", + "upper": "2027242428313410320070322354323942846553587135431805998543562619/3000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "b": "3/1000", + "complete_optimistic_excess_per_call": { + "decimal_lower": "18.9419819069957543419643958", + "decimal_upper": "18.9419819069957543419643958", + "lower": "1445158531722698542935516034704019185261814075280879084435110529900416063278769/76293945312500000000000000000000000000000000000000000000000000000000000000000", + "upper": "13006426785504286886419644312336172667356326677527911759915997400713852007520007/686645507812500000000000000000000000000000000000000000000000000000000000000000" + }, + "max_retirement_gain_per_call_vs_old_ideal": { + "decimal_lower": "0.145904693062107438627772367", + "decimal_upper": "0.145904693062107438627772367", + "lower": "6261550128741106737375027182473368227918698917865129429258652913032415347189/42915344238281250000000000000000000000000000000000000000000000000000000000000", + "upper": "5565822336658761544333357495531882869261065704769003937119094990485195644567/38146972656250000000000000000000000000000000000000000000000000000000000000000" + }, + "without_fallback_excess_per_call": { + "decimal_lower": "18.9419818679876970661660371", + "decimal_upper": "18.9419818679876970661660371", + "lower": "5682594560396309119849811121755345006795553601149937428689836479109/300000000000000000000000000000000000000000000000000000000000000000", + "upper": "5682594560396309119849811121755345006795553601149937428689837628877/300000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "b": "1/200", + "complete_optimistic_excess_per_call": { + "decimal_lower": "55.6656543107476896324751170", + "decimal_upper": "55.6656543107476896324751170", + "lower": "38222571471918427024252018208270504700419941250012992672094784596079363913309301/686645507812500000000000000000000000000000000000000000000000000000000000000000", + "upper": "6370428578653071170708669701378417450069990208335498778682464537677020249634127/114440917968750000000000000000000000000000000000000000000000000000000000000000" + }, + "max_retirement_gain_per_call_vs_old_ideal": { + "decimal_lower": "0.243936503451183236625790703", + "decimal_upper": "0.243936503451183236625790703", + "lower": "18610878254027041368544822895346677273242525385556899495879263111714742938911/76293945312500000000000000000000000000000000000000000000000000000000000000000", + "upper": "167497904286243372316903406058120095459182728470012095462918627970947855466131/686645507812500000000000000000000000000000000000000000000000000000000000000000" + }, + "without_fallback_excess_per_call": { + "decimal_lower": "55.6656542714138193177548744", + "decimal_upper": "55.6656542714138193177548744", + "lower": "16699696281424145795326462328640110889076196465040866008247669396779/300000000000000000000000000000000000000000000000000000000000000000", + "upper": "4174924070356036448831615582160027722269049116260216502061917636459/75000000000000000000000000000000000000000000000000000000000000000" + } + } + ], + "unbuilt_depth11_rank60_target_002_excess_per_call": { + "decimal_lower": "-0.00231398661483780488008181456", + "decimal_upper": "-0.00231398661483780488008181456", + "lower": "-529629504738877459735522742315153485489942820313131666008515319829120961059/228881835937500000000000000000000000000000000000000000000000000000000000000000", + "upper": "-105925900947775491947104548463030697097988564062626333201527731781985228243/45776367187500000000000000000000000000000000000000000000000000000000000000000" + }, + "word": { + "H": { + "1": 1322, + "2": 1342, + "3": 79, + "4": 39, + "5": 102, + "6": 11, + "7": 18 + }, + "adds": 36005, + "copies7": 9, + "helpers4": 5, + "helpers8": 433, + "mass": 5101, + "private_fields": 1 + } +} diff --git a/research/bit-five-rank4-terminals/moment/WINDOW-PROOF.md b/research/bit-five-rank4-terminals/moment/WINDOW-PROOF.md new file mode 100644 index 0000000000..f94e98a30d --- /dev/null +++ b/research/bit-five-rank4-terminals/moment/WINDOW-PROOF.md @@ -0,0 +1,191 @@ +# Fixed controller: all-depth obstruction for the five-terminal BIT word + +This strengthens `PROOF.md`: **with the pinned controller's public touch +chronology, the frozen five-terminal local histogram cannot reach b=.002 +at any halving depth or any permitted odd arity**, even after granting +fractional owners, arbitrary dedicated full-progress helper stock, zero +fallback/adapters, and full-rank idle work on that dedicated stock. +Consequently `.002/.003/.005` joint targets through an outer map K0 put `u=(m/R(L))^b>1`. Ignoring fallback and all adapters, the actual +raw excess is bounded below by + +``` +A_m(b) + (T-C+q)u + (mX-q) - m(w+X) + = A_m(b) + (T-C)u - mw + q(u-1). +``` + +The extra stock X cancels only because its idle work has been granted the +unrealistically favorable unit cost. The coefficient of q remains positive. +Hence the minimum is attained at qmin. For L=5,7 this minimum becomes +`A_m(b)-C-(w-63)`, as in the earlier proof. At the formal L=3 case there are +no public idle slots (R=0): all3484 helper-progress ranks must use dedicated +stock, giving the same expression directly, without dividing by R. +At L≥9, qmin=0; moving any +helpers to extra banks only increases this lower bound. This covers added +full-progress stock without incorrectly assuming its idle ranks obey the +public source-window cap. + +It does not cover auxiliary streams having a new useful partial-progress +endpoint instead of complete progress m; that is a changed recursive contract. + +## All arities, independently of depth + +At L≥9 define `I=T-C=777L-5815=111m-5926` and + +``` +E(L,b)=A_m(b)-C-(w-63) + J(m,b), +J(m,b)=I*((m/(m-22))^b-1). +``` + +Fix b=.002. For every 00` and `f(x)=(1+x)^b-1`. Then + +``` +J=2442*f(x)/x - 3484*f(x). +``` + +The function f is increasing and concave with f(0)=0, so f(x)/x is +nonincreasing in x. As m increases, x decreases: both displayed terms are +therefore nondecreasing, and the second is strictly increasing. In particular +`dJ/dL≥0`. Since `A_m(b)≥C`, + +``` +dE/dL ≥ 7bC/(7L+1)-111/L². +``` + +At b=1/500, multiply by the positive `L²(7L+1)` and write L=13+y. The +numerator becomes + +``` +(928483 + 539882*y + 35707*y²)/500, +``` + +whose coefficients are all positive. Hence E increases on every real L≥13. +Exact rational interval checks for the remaining odd starting cases give: + +| L | favorable excess per local invocation at b=.002 | +|---|---:| +|3| >13.5540428589069553897 | +|5| >3.8049595866973275552 | +|7| >.8340592145604612887 | +|9| >.8384204496318681522 | +|11| >1.4470054318573842990 | +|13| >2.1235527765277093862 | + +These signs and monotonicity prove failure for every odd L≥3 in the stated +source coverage/chronology model. Each fixed-L complete bill is increasing in +b, so every b≥.002 also fails. No halving guard was used. + +At fixed L=9, the ideal rank42 remainder root, with the inherited fallback, +lies strictly between `.001954220766879` and `.001954220766880`. This is a +lower-bound invoice's root, not an attained BIT exponent. Actual integral +owners, windows, extra children, precision and native execution can reduce +feasibility further. + +## Remaining boundary and reproduction + +This result leaves changed public chronology, legal fusion across old idle +intervals with a new paid operator, new useful partial-progress auxiliary +contracts, changed coverage/unpaid directions, changed local H, reduced COPY +work and complete caller redesign outside its scope. An adapter that changes +one of those premises must be constructed and fully charged. It cannot be +silently assigned the old source's stock or chronology. + +Dynamic precision128/256, or a different valid precision charge, does not by +itself invalidate this obstruction. Precision-cap failure is not used here. +The scalar word remains independently useful as a finite arbitrary-input +restored operator regardless of this failed joint-target screen. + +``` +python3 -B check_windows.py +python3 -O -B check_windows.py +``` + +`WINDOW-RESULT.json` binds source hashes, the complete nine-stage source +schedule, exact interval signs and the polynomial coefficients. Its arithmetic +engine is `check_moment.py`; the independent reviewer separately uses rational +nth-root bisection. These are written proofs and finite exact checks, not +formal-kernel certification or a full multiplication theorem. + +Apache-2.0; substantial OpenAI Codex assistance. No new κ. diff --git a/research/bit-five-rank4-terminals/moment/WINDOW-RESULT.json b/research/bit-five-rank4-terminals/moment/WINDOW-RESULT.json new file mode 100644 index 0000000000..8f8576781e --- /dev/null +++ b/research/bit-five-rank4-terminals/moment/WINDOW-RESULT.json @@ -0,0 +1,361 @@ +{ + "all_L_proof": "WINDOW-PROOF.md: source formula, dedicated-stock minimization, concavity and positive shifted polynomial", + "b": "1/500", + "cases": [ + { + "L": 3, + "excess_per_call": { + "decimal_lower": "13.5540428589069553897486536", + "decimal_upper": "13.5540428589069553897486536", + "lower": "1355404285890695538974865362168956199469933442454473840276388748129/100000000000000000000000000000000000000000000000000000000000000000", + "upper": "135540428589069553897486536216895619946993344245447384027638905929/10000000000000000000000000000000000000000000000000000000000000000" + }, + "max_unsplit_public_idle_rank": 0 + }, + { + "L": 5, + "excess_per_call": { + "decimal_lower": "3.80495958669732755520652890", + "decimal_upper": "3.80495958669732755520652890", + "lower": "190247979334866377760326445171440502573625930368439431206363883349/50000000000000000000000000000000000000000000000000000000000000000", + "upper": "380495958669732755520652890342881005147251860736878862412728077859/100000000000000000000000000000000000000000000000000000000000000000" + }, + "max_unsplit_public_idle_rank": 14 + }, + { + "L": 7, + "excess_per_call": { + "decimal_lower": "0.834059214560461288736158167", + "decimal_upper": "0.834059214560461288736158167", + "lower": "116768290038464580423062143366102335181706534071326579090066056707/140000000000000000000000000000000000000000000000000000000000000000", + "upper": "291920725096161451057655358415255837954266335178316447725166230831/350000000000000000000000000000000000000000000000000000000000000000" + }, + "max_unsplit_public_idle_rank": 28 + }, + { + "L": 9, + "excess_per_call": { + "decimal_lower": "0.838420449631868152277021036", + "decimal_upper": "0.838420449631868152277021036", + "lower": "10061045395582417827324252436231255941224141393051876628112685227/12000000000000000000000000000000000000000000000000000000000000000", + "upper": "62881533722390111420776577726445349632650883706574228925704569933/75000000000000000000000000000000000000000000000000000000000000000" + }, + "max_unsplit_public_idle_rank": 42 + }, + { + "L": 11, + "excess_per_call": { + "decimal_lower": "1.44700543185738429905999465", + "decimal_upper": "1.44700543185738429905999465", + "lower": "198963246880390341120749263998996741411267539845640285552013970809/137500000000000000000000000000000000000000000000000000000000000000", + "upper": "318341195008624545793198822398394786258028063753024456883223404483/220000000000000000000000000000000000000000000000000000000000000000" + }, + "max_unsplit_public_idle_rank": 56 + }, + { + "L": 13, + "excess_per_call": { + "decimal_lower": "2.12355277652770938628364660", + "decimal_upper": "2.12355277652770938628364660", + "lower": "1380309304743011101084370286988970873665052719437970647328278333109/650000000000000000000000000000000000000000000000000000000000000000", + "upper": "2760618609486022202168740573977941747330105438875941294656564116739/1300000000000000000000000000000000000000000000000000000000000000000" + }, + "max_unsplit_public_idle_rank": 70 + } + ], + "checked_at_utc": "2026-10-19T08:35:17.136115+00:00", + "controller_path": "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py", + "controller_sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8", + "derivative_polynomial_at_L13": [ + "928483/500", + "269941/250", + "35707/500", + "0" + ], + "extra_stock_relaxation": "public idle=T-C+q>=0, dedicated idle=mX-q>=0; grant dedicated rankm; excess base+q(u-1); minimize q=max(0,C-T)", + "finite_source_transcription_controls": [ + 3, + 5, + 7, + 9, + 11, + 13, + 15, + 17, + 19, + 21, + 23, + 25, + 27, + 29, + 31, + 33, + 35, + 37, + 39, + 41, + 43, + 45, + 47, + 49, + 51, + 53, + 55, + 57, + 59, + 61, + 63, + 65, + 67, + 69, + 71, + 73, + 75, + 77, + 79, + 81, + 83, + 85, + 87, + 89, + 91, + 93, + 95, + 97, + 99, + 101 + ], + "fixed_nine_stage_optimistic_roots": { + "inherited_fallback_lower_bound": { + "decimal_lower": "0.001954220766879", + "decimal_upper": "0.00195422076688", + "lower": "1954220766879/1000000000000000", + "lower_excess": { + "decimal_lower": "-1.55545843654284219243149246E-11", + "decimal_upper": "-1.55545843654284219243149246E-11", + "lower": "-830704426254264476548801212228980207445722527812332190442919804433/53405761718750000000000000000000000000000000000000000000000000000000000000000", + "upper": "-4984226557525586859292807273373881244674335166872765817370646057259/320434570312500000000000000000000000000000000000000000000000000000000000000000" + }, + "upper": "12213879793/6250000000000", + "upper_excess": { + "decimal_lower": "2.75839094521460309949840838E-12", + "decimal_upper": "2.75839094521460309949840838E-12", + "lower": "883883817283732072288003173414447790756456309767943651962768452731/320434570312500000000000000000000000000000000000000000000000000000000000000000", + "upper": "29462793909457735742933439113814926358548543658972365908321374069/10681152343750000000000000000000000000000000000000000000000000000000000000000" + } + }, + "native_no_fallback": { + "decimal_lower": "0.001954220769002", + "decimal_upper": "0.001954220769003", + "lower": "977110384501/500000000000000", + "lower_excess": { + "decimal_lower": "-5.85355073700600898500310841E-13", + "decimal_upper": "-5.85355073700600898500310841E-13", + "lower": "-87803261055090134775046626098385487554749714210434129/150000000000000000000000000000000000000000000000000000000000000000", + "upper": "-175606522110180269550093252196770975109499428419719201/300000000000000000000000000000000000000000000000000000000000000000" + }, + "upper": "1954220769003/1000000000000000", + "upper_excess": { + "decimal_lower": "1.77276202369155639837865848E-11", + "decimal_upper": "1.77276202369155639837865848E-11", + "lower": "5318286071074669195135975444981041087181411161144815929/300000000000000000000000000000000000000000000000000000000000000000", + "upper": "2659143035537334597567987722490520543590705580572982493/150000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "inputs": { + "inputs/FIVE-TERMINALS.json": "75e029f9bb6ca42540fa633b51bf2d8d62125c57a0ee184fbf3c94e08a8c7d58", + "inputs/R438-CERTIFICATE.json": "6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c", + "inputs/global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "maximum_unsplit_public_idle_rank": "7(L-3)=m-22", + "nine_stage_events": [ + { + "kind": "local", + "pair": 0, + "reverse": false, + "stage": 0 + }, + { + "kind": "local", + "pair": 0, + "reverse": true, + "stage": 1 + }, + { + "kind": "idle", + "pair": 1, + "rank": 14, + "source_level": -1, + "target_level": 1 + }, + { + "coefficient": 1, + "dst": 0, + "kind": "bridge", + "src": 1 + }, + { + "kind": "local", + "pair": 0, + "reverse": false, + "stage": 2 + }, + { + "kind": "idle", + "pair": 1, + "rank": 7, + "source_level": 1, + "target_level": 2 + }, + { + "coefficient": -1, + "dst": 0, + "kind": "bridge", + "src": 1 + }, + { + "kind": "local", + "pair": 1, + "reverse": true, + "stage": 3 + }, + { + "kind": "idle", + "pair": 2, + "rank": 28, + "source_level": -1, + "target_level": 3 + }, + { + "coefficient": 1, + "dst": 1, + "kind": "bridge", + "src": 2 + }, + { + "kind": "local", + "pair": 1, + "reverse": false, + "stage": 4 + }, + { + "kind": "idle", + "pair": 2, + "rank": 7, + "source_level": 3, + "target_level": 4 + }, + { + "coefficient": -1, + "dst": 1, + "kind": "bridge", + "src": 2 + }, + { + "kind": "local", + "pair": 2, + "reverse": true, + "stage": 5 + }, + { + "kind": "idle", + "pair": 3, + "rank": 42, + "source_level": -1, + "target_level": 5 + }, + { + "coefficient": 1, + "dst": 2, + "kind": "bridge", + "src": 3 + }, + { + "kind": "local", + "pair": 2, + "reverse": false, + "stage": 6 + }, + { + "kind": "idle", + "pair": 3, + "rank": 7, + "source_level": 5, + "target_level": 6 + }, + { + "coefficient": -1, + "dst": 2, + "kind": "bridge", + "src": 3 + }, + { + "kind": "local", + "pair": 3, + "reverse": true, + "stage": 7 + }, + { + "kind": "local", + "pair": 3, + "reverse": false, + "stage": 8 + }, + { + "kind": "idle", + "pair": 0, + "rank": 42, + "source_level": 2, + "target_level": 8 + }, + { + "kind": "idle", + "pair": 1, + "rank": 28, + "source_level": 4, + "target_level": 8 + }, + { + "kind": "idle", + "pair": 2, + "rank": 14, + "source_level": 6, + "target_level": 8 + }, + { + "kind": "idle", + "pair": 3, + "rank": 0, + "source_level": 8, + "target_level": 8 + }, + { + "coefficient": 1, + "dst": 3, + "kind": "bridge", + "src": 2 + }, + { + "coefficient": 1, + "dst": 2, + "kind": "bridge", + "src": 1 + }, + { + "coefficient": 1, + "dst": 1, + "kind": "bridge", + "src": 0 + }, + { + "kind": "exchange" + } + ], + "no_new_kappa": true, + "rank_formula": "two copies of14j for j=1..K-1; K-1 copies of7; L=2K+1", + "scientific_pin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "source_domain": "CLI guard is odd L>=5, but NAMES limits named emitted layouts to5,7,9,11,13; all-odd scope is the written recipe proof; formal L=3 is an auxiliary case", + "status": "PASS_FIXED_CONTROLLER_ALL_DEPTH_BIT_TARGET_OBSTRUCTION", + "supersedes": "depth11/rank60 is a favorable arithmetic screen requiring changed chronology; it is unavailable in the pinned public windows" +} diff --git a/research/bit-five-rank4-terminals/moment/check_moment.py b/research/bit-five-rank4-terminals/moment/check_moment.py new file mode 100644 index 0000000000..3e518cbf11 --- /dev/null +++ b/research/bit-five-rank4-terminals/moment/check_moment.py @@ -0,0 +1,295 @@ +#!/usr/bin/env python3 +"""Exact necessary screens for the frozen five-terminal BIT word. + +No floats decide signs. No producer/checker modules are imported. Frozen inputs +are authenticated and read only. This is not an operator or native admission. +Apache-2.0; substantial OpenAI Codex assistance. +""" +from collections import Counter +from datetime import datetime, timezone +from decimal import Decimal, localcontext +from fractions import Fraction as Q +from functools import lru_cache +from math import isqrt +from pathlib import Path +import gzip +import hashlib +import json +import subprocess +import sys + +HERE = Path(__file__).resolve().parent +PIN = '20ecf2891d80b5acf18d980b2164fb44ea7faa90' +SCALE = 10**65 +H = {1:1322, 2:1342, 3:79, 4:39, 5:102, 6:11, 7:18} +C = 5101 +PINS = {} + +def need(ok, msg): + if not ok: + raise ValueError(msg) + +def digest(raw): + return hashlib.sha256(raw).hexdigest() + +def read(path, expected=None): + raw = Path(path).read_bytes() + got = digest(raw) + need(expected is None or got == expected, 'input digest: '+str(path)) + PINS[str(Path(path).relative_to(HERE))] = got + return raw + +def pinned(path): + known = { + 'research/r438-native-rehost/CERTIFICATE.json': + ('R438-CERTIFICATE.json','6da8c593257c8440f0fe35488d941715d953d715e2e464ffdfffff7ed31eee9c'), + 'research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py': + ('global_k.py','6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8'), + } + need(path in known,'declared portable source') + name,expected=known[path] + return read(HERE/'inputs'/name,expected) + +def authenticate(): + candidate=json.loads(read(HERE/'inputs/FIVE-TERMINALS.json', + '75e029f9bb6ca42540fa633b51bf2d8d62125c57a0ee184fbf3c94e08a8c7d58')) + local=candidate['literal_roundtrip_profile'] + need({int(r):n for r,n in local['H'].items()}==H,'candidate histogram') + need((local['mass'],local['ADDs'],local['COPYs'],local['private_fields']) + ==(5101,36005,9,1),'complete local inventory') + old=json.loads(pinned('research/r438-native-rehost/CERTIFICATE.json')) + need(old['local']['candidate']['profile']=={str(r):n+(5 if r==4 else 0) for r,n in H.items()},'predecessor profile') + invoice=old['pipeline']['candidate']['hosted']['invoice'] + need(invoice['bit']['live']==28416 and invoice['replicas']==32 and invoice['stages']==9,'predecessor stock') + need(invoice['bit']['rank_mass']==1808352,'predecessor global mass') + need(sum(r*n for r,n in H.items())==C==111*14+433*8+5*4+63,'local mass identity') + return {'source_mode':'portable pinned profile, R438 certificate and controller', + 'operator_validation':'separate finite-word producer and independent audit; not executed here', + 'word_decompressed_sha256_provenance':'3bca74a2a8427eb18e86566baa19de597f10d0bc40c30b7443febd499ee2189a'} + +def emit_result(name,out): + import argparse + parser=argparse.ArgumentParser(description='Check shipped exact mathematical evidence; --write regenerates it.') + parser.add_argument('--write',action='store_true') + args=parser.parse_args() + path=HERE/name + if args.write: + path.write_text(json.dumps(out,indent=2,sort_keys=True)+'\n') + return + saved=json.loads(path.read_bytes()) + def mathematical(value): + value=json.loads(json.dumps(value)) + # Runtime provenance varies across environments; every source digest, + # arithmetic endpoint, scope field and control remains compared. + value.pop('checked_at_utc',None) + value.pop('python',None) + return value + need(mathematical(saved)==mathematical(out),'shipped mathematical result differs: '+name) + +def down(q): + return Q((q*SCALE).__floor__(),SCALE) + +def up(q): + return Q((q*SCALE).__ceil__(),SCALE) + +def plus(a,b): + return a[0]+b[0],a[1]+b[1] + +def minus(a,b): + return a[0]-b[1],a[1]-b[0] + +def times(a,c): + return (a[0]*c,a[1]*c) if c>=0 else (a[1]*c,a[0]*c) + +def decimal(q): + with localcontext() as ctx: + ctx.prec=27 + return str(Decimal(q.numerator)/Decimal(q.denominator)) + +def interval(a): + return {'lower':str(a[0]),'upper':str(a[1]),'decimal_lower':decimal(a[0]),'decimal_upper':decimal(a[1])} + +@lru_cache(None) +def log_interval(x): + need(x>=1, 'log domain') + k=0 + while x>2: + x/=2 + k+=1 + def unit(y): + z=(y-1)/(y+1) + z2=z*z + power=z + total=Q(0) + for j in range(110): + total+=2*power/(2*j+1) + power*=z2 + # The omitted positive series starts at exponent221. + tail=2*power/(221*(1-z2)) + return down(total),up(total+tail) + return plus(unit(x),times(unit(Q(2)),k)) + +def exp_point(x): + need(0<=x=0 and 01: + mid=(lo+hi)//2 + v=fun(Q(mid,den)) + if v[1]<0: + lo=mid + elif v[0]>0: + hi=mid + else: + raise ValueError('insufficient endpoint separation') + return {'lower':str(Q(lo,den)),'upper':str(Q(hi,den)), + 'decimal_lower':decimal(Q(lo,den)),'decimal_upper':decimal(Q(hi,den)), + 'lower_excess':interval(fun(Q(lo,den))),'upper_excess':interval(fun(Q(hi,den)))} + +def poly_after_shift(b,depth,start): + # E'(L) >= 7bC/(7L+1) + 518b/depth - 111/L^2, + # since A>=C and log(2)>2/3. Coefficients of its positive denominator + # numerator after L=start+x are returned in ascending x order. + a=Q(0) if depth is None else 518*b/depth + p=[Q(-111),Q(-777),a+7*b*C,7*a] + from math import comb + return [sum(p[j]*comb(j,k)*start**(j-k) for j in range(k,4)) for k in range(4)] + +def independent_power_check(x,b): + # Independent exact integer/rational-power calibration for requested + # rational target exponents, no log/exp identities are used here. + need(b.denominator<=1000, 'calibration denominator') + lo,hi=power(x,b) + target=Q(x)**b.numerator + need(lo**b.denominator<=target<=hi**b.denominator,'exact rational power calibration') + +def negative_controls(): + controls=[] + def rejects(name,fn): + try: + fn() + except ValueError: + controls.append(name) + else: + raise ValueError('negative control accepted: '+name) + rejects('retirement_without_returned_idle',lambda:need(C+1158==6279,'missing20 idle ranks')) + rejects('old_width8_stock_for_five_width4_terminals',lambda:need(C==111*14+438*8+63,'inflated stock')) + rejects('rank46_under_two_level_guard',lambda:need(64**2>2*46**2,'halving guard')) + rejects('rank64_as_actual_recursive_child',lambda:need(0<64<64,'proper rank')) + rejects('corrupted_frozen_word_digest',lambda:need(digest(b'corrupt')=='3bca74a2a8427eb18e86566baa19de597f10d0bc40c30b7443febd499ee2189a','source corruption')) + return controls + +def main(): + auth=authenticate() + targets=[Q('0.002'),Q('0.003'),Q('0.005')] + rows=[] + old=Counter(H) + old[4]+=5 + for b in targets: + v=fixed_excess(b) + need(v[0]>0,'favorable fixed model must fail requested target') + nofallback=fixed_excess(b,surcharge=False) + saving=minus(fixed_excess(b,hist=old),v) + # Exact independent target-power verification for every used base. + for x in [Q(64,r) for r in H]+[Q(64,45),Q(64),Q(2)]: + independent_power_check(x,b) + rows.append({'b':str(b),'complete_optimistic_excess_per_call':interval(v), + 'without_fallback_excess_per_call':interval(nofallback), + 'max_retirement_gain_per_call_vs_old_ideal':interval(saving)}) + roots={'native_no_fallback':root_bracket(lambda b:fixed_excess(b,surcharge=False)), + 'conservative_fallback':root_bracket(fixed_excess)} + allarity=[] + for depth,start,cutoff in [(2,9,Q('0.002')),(10,11,Q('0.002')), + (None,13,Q('0.002019323862'))]: + checked=[] + for L in range(3,start+1,2): + v=relaxed_excess(L,cutoff,depth) + need(v[0]>0,'all-arity finite starting cases') + checked.append({'L':L,'excess_per_call':interval(v)}) + poly=poly_after_shift(cutoff,depth,start) + need(all(x>=0 for x in poly) and poly[0]>0,'all-arity derivative polynomial') + allarity.append({'depth':depth,'b':str(cutoff),'monotone_for_real_L_at_least':start, + 'positive_derivative_numerator_coefficients_in_L_minus_start':list(map(str,poly)), + 'finite_cases':checked}) + # An explicitly unbuilt alternative illustrates the coverage boundary. + need(64**11>2*60**11 and 64**10<=2*60**10,'depth11 threshold for rank60') + deeper=fixed_excess(Q('0.002'),cap=60) + need(deeper[1]<0,'depth11 fractional packing allowance') + capfree11=root_bracket(lambda b:relaxed_excess(11,b,None)) + out={'status':'PASS_FIVE_TERMINAL_FULL_MOMENT_NECESSARY_SCREENS', + 'checked_at_utc':datetime.now(timezone.utc).isoformat(),'python':sys.version, + 'scientific_pin':PIN,'authentication':auth,'inputs':PINS, + 'word':{'H':H,'mass':C,'helpers8':433,'helpers4':5,'adds':36005,'copies7':9,'private_fields':1}, + 'fixed_model':{'m':64,'stock_per_call':'296/3','total_mass_per_call':6279, + 'idle_mass_per_call':1178,'native_halving_rank_cap':45, + 'deficit_per_call':'107/3','local_child_count':sum(H.values()), + 'optimistic_fallback_call_count':str(sum(H.values())+Q(1178,45)), + 'extra_adapters':0,'meaning':'lower bound on actual bill; no owner realization'}, + 'targets':rows,'optimistic_roots':roots,'all_odd_arity_obstructions':allarity, + 'cap_free_L11_root':capfree11, + 'unbuilt_depth11_rank60_target_002_excess_per_call':interval(deeper), + 'negative_controls':negative_controls(), + 'scope':'All-parameter written proof plus exact rational endpoint checks; no native, precision, chronological owner or outer admission. Fixed H and unchanged one-unpaid-coordinate coverage. No new kappa.', + 'no_new_kappa':True} + emit_result('RESULT.json',out) + print(out['status']+' no_new_kappa') + print('native optimistic root:',roots['native_no_fallback']['decimal_lower'],roots['native_no_fallback']['decimal_upper']) + print('fallback optimistic root:',roots['conservative_fallback']['decimal_lower'],roots['conservative_fallback']['decimal_upper']) + for row in rows: + print('b='+row['b'],'raw excess/call='+row['complete_optimistic_excess_per_call']['decimal_lower']) + print('all odd L>=3: b=.002 impossible at depth<=10; b=.002019323862 impossible even with idle rank m') + print('depth11/rank60 unbuilt budget:',deeper and decimal(-deeper[1])) + +if __name__=='__main__': + main() diff --git a/research/bit-five-rank4-terminals/moment/check_windows.py b/research/bit-five-rank4-terminals/moment/check_windows.py new file mode 100644 index 0000000000..ef308bd1d7 --- /dev/null +++ b/research/bit-five-rank4-terminals/moment/check_windows.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python3 +"""Source-bound idle-window cap and all-depth necessary moment screen. +Apache-2.0; substantial OpenAI Codex assistance. +""" +import ast +from collections import Counter +from datetime import datetime, timezone +from fractions import Fraction as Q +import json +from pathlib import Path +import check_moment as M + +SOURCE='research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py' +SHA='6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8' + +class ActiveAsserts(ast.NodeTransformer): + def visit_Assert(self,node): + return ast.copy_location(ast.Expr(value=ast.Call(func=ast.Name(id='need',ctx=ast.Load()), + args=[node.test,node.msg or ast.Constant('source assertion')],keywords=[])),node) + +def extracted_controller(raw): + tree=ast.parse(raw) + recipe=[n for n in tree.body if isinstance(n,ast.FunctionDef) and n.name=='recipe'] + rules=[n for n in ast.walk(tree) if isinstance(n,ast.If) and ast.unparse(n.test)=='s % 2 == 1 and s <= 2 * K - 3'] + M.need(len(recipe)==len(rules)==1,'unique source recipe and idle rule') + def code(nodes): + body=ActiveAsserts().visit(ast.Module(body=nodes,type_ignores=[])) + return compile(ast.fix_missing_locations(body),SOURCE,'exec') + ns={'need':M.need} + exec(code(recipe),ns) + return ns['recipe'],code(rules) + +def schedule(L,recipe,rule): + M.need(L>=3 and L%2==1,'odd recipe domain') + K=(L-1)//2 + levels=[-1]*K + events=[] + for e in recipe(K): + if e['kind']=='local': + s,p=e['stage'],e['pair'] + M.need(levels[p]==s-1,'source stage levels') + levels[p]=s + events.append(dict(e)) + exec(rule,{'s':s,'K':K,'levels':levels,'schedule':events,'need':M.need}) + elif e['kind']=='bridge': + M.need(levels[e['dst']]==levels[e['src']],'source bridge levels') + events.append(dict(e)) + else: + M.need(e['kind']=='exchange' and levels==[2*K]*K,'source exchange levels') + events.append(dict(e)) + ranks=Counter(e['rank'] for e in events if e['kind']=='idle' and e['rank']) + expected=Counter({7:K-1}) + for j in range(1,K): + expected[14*j]+=2 + expected=+expected + M.need(ranks==expected,'closed-form public idle multiset') + M.need(sum(r*n for r,n in ranks.items())*Q(222,L)==777*(L-3),'public idle rank stock') + M.need(max(ranks,default=0)==7*(L-3),'public maximum window') + return events + +def window_excess(L,b): + m,w,extra,idle=M.geometry(L) + q=max(Q(0),M.C-(777*L-714)) + if not idle: + # Grant every required dedicated idle rank cost one per rank. + return M.minus(M.local_bill(m,b),(m*w+q,)*2) + unit=M.power(Q(m,m-22),b) + return M.minus(M.plus(M.local_bill(m,b),M.times(unit,idle)),(m*w,)*2) + +def main(): + M.authenticate() + raw=M.pinned(SOURCE) + M.need(M.digest(raw)==SHA,'controller pin') + recipe,rule=extracted_controller(raw) + controls={L:schedule(L,recipe,rule) for L in range(3,102,2)} + cases=[] + b=Q('0.002') + for L in (3,5,7,9,11,13): + v=window_excess(L,b) + M.need(v[0]>0,'all-depth starting inequality') + cases.append({'L':L,'max_unsplit_public_idle_rank':7*(L-3),'excess_per_call':M.interval(v)}) + poly=M.poly_after_shift(b,None,13) + M.need(all(x>=0 for x in poly) and poly[0]>0,'all-L monotone local pressure') + roots={'native_no_fallback':M.root_bracket(lambda a:M.fixed_excess(a,cap=42,surcharge=False)), + 'inherited_fallback_lower_bound':M.root_bracket(lambda a:M.fixed_excess(a,cap=42))} + M.need(60>max(e['rank'] for e in controls[9] if e['kind']=='idle'),'rank60 impossible in source windows') + out={'status':'PASS_FIXED_CONTROLLER_ALL_DEPTH_BIT_TARGET_OBSTRUCTION','checked_at_utc':datetime.now(timezone.utc).isoformat(), + 'scientific_pin':M.PIN,'controller_path':SOURCE,'controller_sha256':SHA, + 'source_domain':'CLI guard is odd L>=5, but NAMES limits named emitted layouts to5,7,9,11,13; all-odd scope is the written recipe proof; formal L=3 is an auxiliary case', + 'nine_stage_events':controls[9],'rank_formula':'two copies of14j for j=1..K-1; K-1 copies of7; L=2K+1', + 'maximum_unsplit_public_idle_rank':'7(L-3)=m-22', + 'finite_source_transcription_controls':list(controls), + 'all_L_proof':'WINDOW-PROOF.md: source formula, dedicated-stock minimization, concavity and positive shifted polynomial', + 'b':str(b),'cases':cases,'derivative_polynomial_at_L13':list(map(str,poly)), + 'fixed_nine_stage_optimistic_roots':roots, + 'extra_stock_relaxation':'public idle=T-C+q>=0, dedicated idle=mX-q>=0; grant dedicated rankm; excess base+q(u-1); minimize q=max(0,C-T)', + 'supersedes':'depth11/rank60 is a favorable arithmetic screen requiring changed chronology; it is unavailable in the pinned public windows', + 'inputs':M.PINS,'no_new_kappa':True} + here=Path(__file__).resolve().parent + M.emit_result('WINDOW-RESULT.json',out) + print(out['status']+' no_new_kappa') + print('source nine-stage public idle ranks:14,7,28,7,42,7,42,28,14,0') + print('all inherited odd arities, all depths, any full-progress extra stock: b>=.002 rejected') + print('rank42 inherited fallback root:',roots['inherited_fallback_lower_bound']['decimal_lower'],roots['inherited_fallback_lower_bound']['decimal_upper']) + print('b=.002 nine-stage excess:',cases[3]['excess_per_call']['decimal_lower']) + +if __name__=='__main__': + main() diff --git a/research/bit-five-rank4-terminals/moment/independent/WINDOW-INDEPENDENT-RESULT.json b/research/bit-five-rank4-terminals/moment/independent/WINDOW-INDEPENDENT-RESULT.json new file mode 100644 index 0000000000..885bde2716 --- /dev/null +++ b/research/bit-five-rank4-terminals/moment/independent/WINDOW-INDEPENDENT-RESULT.json @@ -0,0 +1,173 @@ +{ + "H": { + "1": 1322, + "2": 1342, + "3": 79, + "4": 39, + "5": 102, + "6": 11, + "7": 18 + }, + "all_parameter_argument": "WINDOW-REVIEW.md: q minimization, concavity, polynomial derivative and monotonicity in b", + "arithmetic": "exact integer-power root bisection and Fraction; no floating decisions", + "b": "1/500", + "derivative_coefficients_L_minus_13": [ + "928483/500", + "269941/250", + "35707/500" + ], + "endpoint_cases": [ + { + "L": 3, + "excess": [ + "13554042858906953361/1000000000000000000", + "6777021429453479231/500000000000000000" + ], + "m": 22, + "max_public_idle_rank": 0, + "qmin": "3484", + "remaining_public_idle_mass": "0" + }, + { + "L": 5, + "excess": [ + "1902479793348662177/500000000000000000", + "760991917339465891/200000000000000000" + ], + "m": 36, + "max_public_idle_rank": 14, + "qmin": "1930", + "remaining_public_idle_mass": "0" + }, + { + "L": 7, + "excess": [ + "1459603625480805551/1750000000000000000", + "5838414501923257911/7000000000000000000" + ], + "m": 50, + "max_public_idle_rank": 28, + "qmin": "376", + "remaining_public_idle_mass": "0" + }, + { + "L": 9, + "excess": [ + "251526134889559363/300000000000000000", + "2515261348895612467/3000000000000000000" + ], + "m": 64, + "max_public_idle_rank": 42, + "qmin": "0", + "remaining_public_idle_mass": "1178" + }, + { + "L": 11, + "excess": [ + "15917059750431176261/11000000000000000000", + "1989632468803907803/1375000000000000000" + ], + "m": 78, + "max_public_idle_rank": 56, + "qmin": "0", + "remaining_public_idle_mass": "2732" + }, + { + "L": 13, + "excess": [ + "27606186094860150603/13000000000000000000", + "13803093047430136317/6500000000000000000" + ], + "m": 92, + "max_public_idle_rank": 70, + "qmin": "0", + "remaining_public_idle_mass": "4286" + } + ], + "finite_transcription_cases": [ + 3, + 5, + 7, + 9, + 11, + 13, + 15, + 17, + 19, + 21, + 23, + 25, + 27, + 29, + 31, + 33, + 35, + 37, + 39, + 41, + 43, + 45, + 47, + 49, + 51, + 53, + 55, + 57, + 59, + 61, + 63, + 65, + 67, + 69, + 71, + 73, + 75, + 77, + 79, + 81, + 83, + 85, + 87, + 89, + 91, + 93, + 95, + 97, + 99, + 101 + ], + "input_context": { + "all_odd_L_domain": "written mathematical recipe extension; not a claim that the old CLI emits every L", + "named_layouts": [ + 5, + 7, + 9, + 11, + 13 + ], + "repository_path": "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py", + "scientific_pin": "20ecf2891d80b5acf18d980b2164fb44ea7faa90", + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8", + "source_execution": false + }, + "local_mass": 5101, + "nine_stage_fallback_excess": [ + "1343294544872862137956079535053/1602172851562500000000000000000", + "179105939316382959733255274367/213623046875000000000000000000" + ], + "nine_stage_idle_multiset": { + "7": 3, + "14": 2, + "28": 2, + "42": 2 + }, + "nine_stage_native_excess": [ + "251526134889559363/300000000000000000", + "2515261348895612467/3000000000000000000" + ], + "no_formal_kernel_proof": true, + "no_new_kappa": true, + "rank60_public_window_rejected": true, + "scope": "fixed stage/idle chronology, unchanged H and one-unpaid-coordinate coverage, any independent full-progress extra stock; no native admission", + "status": "PASS_INDEPENDENT_FIXED_WINDOW_ALL_DEPTH_REVIEW" +} diff --git a/research/bit-five-rank4-terminals/moment/independent/WINDOW-INDEPENDENT-VALIDATION.json b/research/bit-five-rank4-terminals/moment/independent/WINDOW-INDEPENDENT-VALIDATION.json new file mode 100644 index 0000000000..36ce356b29 --- /dev/null +++ b/research/bit-five-rank4-terminals/moment/independent/WINDOW-INDEPENDENT-VALIDATION.json @@ -0,0 +1,17 @@ +{ + "absolute_run_or_git_runtime_dependency": false, + "checker_evidence": "finite exact rational identity/sign checks; all-parameter proof in WINDOW-REVIEW.md", + "corrupt_source_rejected_both_modes": true, + "explicit_failure_rejected_both_modes": true, + "inputs": { + "WINDOW-INDEPENDENT-RESULT.json": "39ec4d42d20e3008b7564dcfac675aeff39f5dd6bcd9ae14a288bd1b6a3bc7bd", + "check_window_independent.py": "f1284452ea9dc83424a11a86639a1ec7b9e83d765e8eea737b0c1f284343601a", + "global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "normal_optimized_identical": true, + "original_receipt_preserved": true, + "persistent_writes": false, + "relocated_two_file_check_passed": true, + "source_execution": false, + "status": "PASS_PORTABLE_INDEPENDENT_WINDOW_REVIEW" +} diff --git a/research/bit-five-rank4-terminals/moment/independent/WINDOW-REVIEW-CERTIFICATE.json b/research/bit-five-rank4-terminals/moment/independent/WINDOW-REVIEW-CERTIFICATE.json new file mode 100644 index 0000000000..9a98ebd5d4 --- /dev/null +++ b/research/bit-five-rank4-terminals/moment/independent/WINDOW-REVIEW-CERTIFICATE.json @@ -0,0 +1,45 @@ +{ + "all_parameter_argument": "source three-case idle formula; public/dedicated stock split with q minimization; concavity at b=1/500; positive derivative for all real L>=13; monotonicity in b", + "artifacts": { + "WINDOW-INDEPENDENT-RESULT.json": "39ec4d42d20e3008b7564dcfac675aeff39f5dd6bcd9ae14a288bd1b6a3bc7bd", + "WINDOW-INDEPENDENT-VALIDATION.json": "20fce6cb4c1ee3e5f6f37b9857351aac16e3b99f71f1877cf402528688478552", + "WINDOW-REVIEW.md": "3089127abc9f7e28d2cb3e0aa2d13438a9d29986a80bf5bd5c23238ecffd8e94", + "check_window_independent.py": "f1284452ea9dc83424a11a86639a1ec7b9e83d765e8eea737b0c1f284343601a", + "source-context/global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8", + "validate_window_independent.py": "e7ff5629085d608ca5b464eafedfaf93ce8800a06f3c3ebe81efb31b7857fc9e" + }, + "claim": "At every odd integer L>=3, fixed H and public idle chronology with R=7(L-3), arbitrary independent full-progress added stock: the relaxed complete moment fails every b>=1/500, independently of halving depth.", + "finite_computation": "exact 500th-root integer-power bisection, six endpoint signs, exact derivative coefficients and 50 finite event-family checks", + "formal_kernel_proof": false, + "independent_endpoint_enclosures_contain_all_six_producer_intervals": true, + "limitations": [ + "No independent native admission or candidate operator reproof", + "No unchanged-coverage proof for a new chronology", + "No useful partial-progress auxiliary endpoint", + "Fine producer root bracket not independently recomputed digit by digit", + "No general BIT impossibility or new kappa" + ], + "material_mathematical_gaps_found": [], + "no_new_kappa": true, + "portable_files": [ + "check_window_independent.py", + "source-context/global_k.py" + ], + "portable_verification_files": [ + "validate_window_independent.py", + "WINDOW-INDEPENDENT-RESULT.json" + ], + "read_only_checker_default": "stdout only; no absolute run directory, mutable Git, imported or executed producer module, or persistent output write", + "reviewed_at_utc": "2026-10-19T08:37:50.635784+00:00", + "reviewed_producer_sources": { + "/Users/ross/git/math/.research-automation/runs/bit-five-helper-owned-20261019T0813Z/moment/PROOF.md": "b5f16406b0ee9305a51843f43f8bd7c625358e1365c072762a4a6ddbf6e223d0", + "/Users/ross/git/math/.research-automation/runs/bit-five-helper-owned-20261019T0813Z/moment/RESULT.json": "bd4e5f4dc22a6a938775ddc77e17dbd9959e766747d38fb86a92ed8320b82a3d", + "/Users/ross/git/math/.research-automation/runs/bit-five-helper-owned-20261019T0813Z/moment/WINDOW-PROOF.md": "4bac2a8826350061d8bd9eade8465f9a01989422d4027b5d2830506662fa016d", + "/Users/ross/git/math/.research-automation/runs/bit-five-helper-owned-20261019T0813Z/moment/WINDOW-RESULT.json": "0124fc8acea3483fb4aad6a24ea89520c6fba002b78d40cb05061052f5ad6df4", + "/Users/ross/git/math/.research-automation/runs/bit-five-helper-owned-20261019T0813Z/moment/check_moment.py": "0c6464f1009208d9d2c5b709fe4acd1d7a693595d33f9988b1a89957c354363b", + "/Users/ross/git/math/.research-automation/runs/bit-five-helper-owned-20261019T0813Z/moment/check_windows.py": "cdb18d83752364de321d82b65291472e68789f2f61b6bf1faa0b8fbabe2b6989" + }, + "source_scope_correction": "Original producer names only L=5,7,9,11,13 despite odd>=5 CLI guard; all-odd statement comes from written recipe extension. Corrected in reviewed producer proof.", + "status": "ACCEPTED_INDEPENDENT_WRITTEN_FIXED_WINDOW_ALL_DEPTH_PROOF", + "written_proof": "WINDOW-REVIEW.md" +} diff --git a/research/bit-five-rank4-terminals/moment/independent/WINDOW-REVIEW.md b/research/bit-five-rank4-terminals/moment/independent/WINDOW-REVIEW.md new file mode 100644 index 0000000000..0c1164d128 --- /dev/null +++ b/research/bit-five-rank4-terminals/moment/independent/WINDOW-REVIEW.md @@ -0,0 +1,203 @@ +# Independent fixed-window all-depth moment review + +**Conclusion: the all-depth .002 obstruction is valid under the fixed +public-window model below. No material gap remains in the reviewed +`moment/WINDOW-PROOF.md`.** The earlier fractional rank60 screen requires a +changed public chronology or another changed premise. It is unavailable +in the pinned nine-stage public windows. + +This independent review credits the moment worker's `WINDOW-PROOF.md` and +`check_windows.py` for the proposed obstruction. It independently checks +the source rule, stock relaxation, concavity proof and decisive numerical +signs. The controller source is retained byte for byte, including its +authors, license and AI disclosures, in `source-context/global_k.py`. +That source credits DreamingOfClouds's odd-stage generalization, the +PR436/PR386 work of Zhihao Chen and eumemic, and chafreaky's integration and +routes, with their disclosed Claude/OpenAI assistance. The pending-axis +interpretation is inherited from the cited PR589 hosting contract. This +review is AI-assisted local mathematical work, with no publication or +upstream acceptance claim. + +## Portable inputs and read-only checker + +The independent checker needs only these two files, with their relative +layout preserved: + + check_window_independent.py + source-context/global_k.py + +Run `python3 -B check_window_independent.py`, or add `-O` for optimized +Python. It uses the Python standard library, writes its result to stdout, +and does not import or execute old producer modules, read an absolute run +directory, access Git, or overwrite any result file. Its historical source +identity is + + Git pin: 20ecf2891d80b5acf18d980b2164fb44ea7faa90 + path: research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/ + e8-r715-eleven-stage-whole/code/global_k.py + SHA256: 6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8 + +`WINDOW-INDEPENDENT-RESULT.json` preserves the original successful output. +`validate_window_independent.py` checks normal and optimized runs against +that receipt, explicit failures, and a relocated two-file copy. It writes +only stdout plus temporary files inside its own directory; the temporary +files are removed, and the preserved receipt is not updated. + +## Assumptions that carry the theorem + +Keep the exact five-terminal local histogram + + H={1:1322,2:1342,3:79,4:39,5:102,6:11,7:18}, C=5101, + +the one-unpaid-coordinate public coverage law, and the pinned ordering of +public touches, scalar bridges and idle intervals. For odd L>=3 set + + m=7L+1, w=111(L-1)/L, T=(m-1)w+63=777L-714. + +The local mass is 1554 public progress, 3484 helper progress, and63 COPY +mass. Public remainder children must lie within the original idle +intervals, including when helper hosting subdivides those intervals. +Additional independent stock is allowed but must perform full progress m +per field. No additional unpaid direction or useful partial-progress +auxiliary endpoint is granted. All omitted costs are nonnegative. + +The precise finite scalar word, its integer restoration, changed native +interface and physical admission are not re-proved here. The result is a +necessary moment bound conditional on this unchanged coverage/chronology +contract, not a universal theorem about all implementations of the word. + +## The source gives a depth-independent public rank cap + +Write L=2K+1. Inspection of all three branches of the pinned idle rule gives: + +1. Odd stages s=1,3,...,2K-3 advance an untouched pair from level -1 to s. + Their ranks are 7(s+1)=14,28,...,14(K-1). +2. Even stages s=2,4,...,2K-2 advance one level, producing K-1 ranks of7. +3. At final stage2K, pair j has level2j+2. Its terminal gap has rank + 7(2K-2j-2)=14(K-j-1), for j=0,...,K-1. + +The last terminal rank is zero. Thus each positive14j, 1<=j<=K-1, occurs +twice, and rank7 occurs K-1 times. Their maximum is + + R(L)=14(K-1)=m-22. + +The public idle mass per invocation is + + (222/L)[2 sum_(j=1)^(K-1)14j+7(K-1)]=777(L-3). + +Adding the local public and COPY progress gives T as above. For L=9, the +idle multiset is {7:3,14:2,28:2,42:2}; no original public interval has +rank60. A subspace left over after hosting in one interval cannot exceed +the dimension of that interval. A change in recursive depth does not +alter this dimensional fact. + +The source CLI asserts odd L>=5, but its NAMES table has only +{5,7,9,11,13}. The review reported this distinction, and the moment worker +corrected the source-scope statement. The mathematical three-case recipe +argument supplies the all-K extension. The formal L=3 recipe is included +as an additional favorable case, not a claimed named source emission. + +## Dedicated stock is relaxed separately and correctly + +Let q>=0 be helper progress moved out of public hosts into additional +full-progress stock X. Public leftover mass is T-C+q, and dedicated idle +mass is mX-q. Thus + + q>=qmin=max(0,C-T), mX>=q. + +It would be incorrect to impose the public cap R(L) on new dedicated +banks without a separate proof. Instead grant all dedicated idle work +price1 per rank, as if invalid rank-m recursive children were available. +This is a favorable lower bound at every depth. For L>=5 write +u=(m/(m-22))^b>1. The relaxed excess is + + A_m(b)+(T-C+q)u+(mX-q)-m(w+X) + =A_m(b)+(T-C)u-mw+q(u-1), + +where A_m(b)=sum H[r]r(m/r)^b. The variable X cancels only because its +idle work was assigned the favorable unit price. The positive q +coefficient makes qmin optimal. At L=5,7, qmin removes all public idle +mass and gives A_m-C-(w-63). At L=3, R=0 and every3484 helper-progress +rank must leave the public stock; the same expression follows directly, +without division by zero. At L>=9, qmin=0. All these qmin values lie in +the actual available helper-progress interval [0,3484]; relaxing that +upper bound would not improve the optimum anyway. + +This proves the extra-stock minimization uniformly for all X satisfying +the model, even before integral ownership or chronological restrictions +on dedicated banks are imposed. + +## All-odd-stage proof + +For L>=9 put I=T-C=111m-5926 and + + E(L,b)=A_m(b)-C-(w-63)+J(m,b), + J(m,b)=I[(m/(m-22))^b-1]. + +At fixed 0=0. The constants2442 and3484 are essential: this is the exact +rewriting of I, not a generic claim about arbitrary coverage models. + +At b0=1/500, A_m(b0)>=C and therefore + + E'(L,b0)>=7b0 C/(7L+1)-111/L^2. + +Multiplying by L^2(7L+1)>0 and writing L=13+y yields + + [928483+539882 y+35707 y^2]/500. + +Every coefficient is positive, so E increases for every real L>=13. +Exact positive endpoints at odd L=3,5,7,9,11,13 then cover all odd L>=3. +The concavity step is only needed at b0. For every fixed L the minimized +bill increases in b, because every nonzero priced rank has m/r>1; the +same qmin works for all b>0. Thus all b>=.002 fail, including .003 and +.005, without extending the concavity claim to b>=1. + +No halving-depth guard appears in this proof. It consequently covers all +depths within the fixed public chronology and full-progress-stock model. + +## Independent finite checks and exact domain + +`check_window_independent.py` checks the three source branches and the +actual NAMES dictionary under the exact source hash. It independently +enumerates the three event families for odd L=3,...,101 and verifies the +closed-form multiset, maximum and total mass. This is a finite +transcription check. The written three-branch argument, not those50 +instances, proves the formula for every K>=1. + +The independent numerical engine computes each needed x^(1/500) between +consecutive rationals with denominator10^18. Every branch is decided by +an exact integer500th-power comparison. No log, exp, floating point or +producer interval routine is used. It verifies all six positive base +cases and the derivative coefficients. Its nine-stage native lower bound +is greater than .8384204496318645 raw units per invocation. The slightly +wider independent enclosure contains the producer's finer result. The +checker also confirms a positive rank42 invoice with the stipulated +fallback, while detecting that rank60 exceeds every pinned public window. + +This review accepts the producer's precise root bracket as its own exact +interval result; it does not independently reproduce every root digit. +The decisive .002 signs and all-parameter inequalities are independently +checked here. There is no formal-kernel proof and no exhaustive +construction search. + +## Remaining boundaries + +This result does not cover changed public touch chronology, a constructed +and paid fusion across old intervals, additional unpaid dimensions, +partial-progress auxiliary contracts, changed local H or COPY bill, or +different public endpoints. It does not infer native execution or +precision from the scalar word. Replacing an invalid fixed precision cap +by a correct charged precision theorem does not alone change this +moment obstruction. + +The joint-kappa consequence is conditional on the separate outer transfer +requiring a common supplier exponent b strictly above the desired kappa. +That outer theorem is not re-proved here. No new kappa or general BIT +impossibility follows. diff --git a/research/bit-five-rank4-terminals/moment/independent/check_window_independent.py b/research/bit-five-rank4-terminals/moment/independent/check_window_independent.py new file mode 100644 index 0000000000..835d2c2e3c --- /dev/null +++ b/research/bit-five-rank4-terminals/moment/independent/check_window_independent.py @@ -0,0 +1,167 @@ +#!/usr/bin/env python3 +"""Portable independent check of fixed public-window moment obstruction. + +Only input fixture: source-context/global_k.py, exact historical source. +No producer module is imported or executed. Rational nth-root enclosures +use integer powers; no logarithms, exponentials or floating-point decisions. +The all-parameter proof is WINDOW-REVIEW.md, not this finite computation. +Apache-2.0; substantial OpenAI Codex assistance. +""" +import ast +from collections import Counter +from fractions import Fraction as Q +from functools import lru_cache +import hashlib +import json +from math import comb +from pathlib import Path +import sys + +HERE = Path(__file__).resolve().parent +SOURCE_SHA = '6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8' +PIN = '20ecf2891d80b5acf18d980b2164fb44ea7faa90' +SOURCE_PATH = 'research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py' +H = {1:1322, 2:1342, 3:79, 4:39, 5:102, 6:11, 7:18} +C = sum(r*n for r, n in H.items()) +SCALE = 10**18 + + +def need(ok, message): + if not ok: + raise RuntimeError(message) + + +@lru_cache(None) +def root500(x): + x = Q(x) + need(x >= 1, 'positive root domain') + target = x.numerator*pow(SCALE, 500) + lo, hi = SCALE, 2*SCALE + while pow(hi, 500)*x.denominator <= target: + hi *= 2 + while hi-lo > 1: + mid = (lo+hi)//2 + if pow(mid, 500)*x.denominator <= target: + lo = mid + else: + hi = mid + need(pow(lo, 500)*x.denominator <= target < pow(hi, 500)*x.denominator, + 'exact rational 500th root enclosure') + return Q(lo, SCALE), Q(hi, SCALE) + + +def add(a, b): + return a[0]+b[0], a[1]+b[1] + + +def scale(a, c): + return (a[0]*c, a[1]*c) if c >= 0 else (a[1]*c, a[0]*c) + + +def local(m): + out = Q(0), Q(0) + for r, n in H.items(): + out = add(out, scale(root500(Q(m, r)), r*n)) + return out + + +def encoded(x): + return list(map(str, x)) + + +def source_context(): + raw = (HERE/'source-context/global_k.py').read_bytes() + need(hashlib.sha256(raw).hexdigest() == SOURCE_SHA, 'frozen source SHA256') + tree = ast.parse(raw) + names = next(n for n in tree.body if isinstance(n, ast.Assign) and + any(isinstance(t, ast.Name) and t.id == 'NAMES' for t in n.targets)) + named_layouts = sorted(ast.literal_eval(names.value)) + need(named_layouts == [5, 7, 9, 11, 13], 'actual named producer layouts') + # No source execution. These checks bind the three branches reviewed in + # the all-K written argument to the pinned file, including elif tails. + rules = [n for n in ast.walk(tree) if isinstance(n, ast.If) and + ast.unparse(n.test) == 's % 2 == 1 and s <= 2 * K - 3'] + need(len(rules) == 1, 'unique public idle rule') + first = rules[0] + second = first.orelse[0] + third = second.orelse[0] + need(isinstance(second, ast.If) and + ast.unparse(second.test) == 's % 2 == 0 and 2 <= s <= 2 * K - 2', 'middle idle rule') + need(isinstance(third, ast.If) and ast.unparse(third.test) == 's == 2 * K', 'terminal idle rule') + return {'scientific_pin': PIN, 'repository_path': SOURCE_PATH, + 'sha256': SOURCE_SHA, 'named_layouts': named_layouts, + 'source_execution': False, + 'all_odd_L_domain': 'written mathematical recipe extension; not a claim that the old CLI emits every L'} + + +def windows(L): + K = (L-1)//2 + # Explicit enumeration of the three disjoint event families in the + # source rule: early gaps, one-step gaps, terminal completions. + early = [7*(s+1) for s in range(1, 2*K-2, 2)] + middle = [7 for s in range(2, 2*K-1, 2)] + terminal = [7*(2*K-(2*j+2)) for j in range(K)] + actual = Counter(r for r in early+middle+terminal if r) + expected = Counter({7: K-1}) + for j in range(1, K): + expected[14*j] += 2 + need(+actual == +expected, 'all event families match closed formula') + need(max(actual, default=0) == 7*(L-3), 'largest public idle rank') + need(sum(r*n for r, n in actual.items()) == 7*(K-1)*L, 'total source idle rank') + return dict(sorted(actual.items())) + + +def endpoint(L): + m = 7*L+1 + w = Q(111*(L-1), L) + t = 777*L-714 + qmin = max(Q(0), C-t) + idle = t-C+qmin + need(0 <= qmin <= 3484, 'required moved helper progress') + need(t == 1554+63+777*(L-3), 'coverage from public local, COPY and idle progress') + if idle == 0: + # Includes L=3: no public idle window exists, so never divide by R=0. + out = add(local(m), (-m*w-qmin,)*2) + else: + need(m > 22, 'positive public idle capacity') + out = add(local(m), scale(root500(Q(m, m-22)), idle)) + out = add(out, (-m*w,)*2) + need(out[0] > 0, 'fixed-window target failure') + return {'L':L, 'm':m, 'qmin':str(qmin), 'remaining_public_idle_mass':str(idle), + 'max_public_idle_rank':m-22, 'excess':encoded(out)} + + +def main(): + if '--force-failure' in sys.argv: + need(False, 'forced explicit window failure') + need(C == 5101 and C == 1554+3484+63, 'local progress accounting') + context = source_context() + controls = {L:windows(L) for L in range(3, 102, 2)} + cases = [endpoint(L) for L in (3,5,7,9,11,13)] + b = Q(1,500) + p = [-Q(111), -Q(777), 7*b*C] + shifted = [sum(p[j]*comb(j,k)*13**(j-k) for j in range(k,3)) for k in range(3)] + need(all(c > 0 for c in shifted), 'positive derivative for every real L>=13') + need(shifted == [Q(928483,500), Q(269941,250), Q(35707,500)], 'independent polynomial values') + native42 = add(local(64), scale(root500(Q(64,42)),1178)) + native42 = add(native42,(-Q(18944,3),)*2) + calls = sum(H.values())+Q(1178,42) + total42 = add(native42,scale(root500(Q(64)),Q(32*64**2,10**16)*calls)) + need(total42[0] > native42[0] > 0, 'rank42 native and fallback lower bounds') + need(60 > max(map(int, controls[9])), 'rank60 lies outside every old nine-stage public window') + out = {'status':'PASS_INDEPENDENT_FIXED_WINDOW_ALL_DEPTH_REVIEW', + 'input_context':context, 'b':'1/500', 'H':H, 'local_mass':C, + 'finite_transcription_cases':list(controls), 'nine_stage_idle_multiset':controls[9], + 'endpoint_cases':cases, 'derivative_coefficients_L_minus_13':list(map(str, shifted)), + 'nine_stage_native_excess':encoded(native42), + 'nine_stage_fallback_excess':encoded(total42), + 'rank60_public_window_rejected':True, + 'all_parameter_argument':'WINDOW-REVIEW.md: q minimization, concavity, polynomial derivative and monotonicity in b', + 'scope':'fixed stage/idle chronology, unchanged H and one-unpaid-coordinate coverage, any independent full-progress extra stock; no native admission', + 'arithmetic':'exact integer-power root bisection and Fraction; no floating decisions', + 'no_formal_kernel_proof':True, 'no_new_kappa':True} + print(json.dumps(out, indent=2, sort_keys=True)) + + +if __name__ == '__main__': + main() diff --git a/research/bit-five-rank4-terminals/moment/independent/source-context/global_k.py b/research/bit-five-rank4-terminals/moment/independent/source-context/global_k.py new file mode 100644 index 0000000000..3df12bd632 --- /dev/null +++ b/research/bit-five-rank4-terminals/moment/independent/source-context/global_k.py @@ -0,0 +1,264 @@ +# Generalised from PR #443's global_kernel.py to an arbitrary odd stage count S = 2K+1 (compressed window m = 1+7S) +# by DreamingOfClouds with Claude Opus 5.5 (Anthropic), via Claude Code. At the defaults (S = 9, 32 replicas) the emitted +# GLOBAL-TEMPLATE.json.gz and GLOBAL.json equal PR #443's (GLOBAL.json except wall-clock seconds). +# Kernel integration of PR436/PR386 by chafreaky, with OpenAI Codex assistance. +# Original copyright and attribution retained below. This variant uses explicit +# residual isometries and mixed-width banks; the original all-zero-start +# requirement is replaced by the verified kernel entrance contract. +"""Source-bound compressed S-stage (S = 2K+1 odd, default 9) bit template with independent replicas. +PR386 global identity and PR436 generalization by Zhihao Chen and eumemic, +with their disclosed OpenAI Codex and Anthropic Claude assistance, Apache-2.0. +PR439 explicit residual routes and this replication extension by chafreaky, +with OpenAI Codex assistance. All owner assignments and emitted calls are checked. +Historical PR386 regression is performed by the unchanged parent wrapper. +""" +import argparse, gzip, hashlib, json, struct, time +from collections import Counter +from pathlib import Path +import os, sys +sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), '../../e8-r740-replica32/code')) +from bank_routes_k import placement, validate_isometries +from config import REPLICAS + +H,L,K,T,M=8,9,4,REPLICAS,64 # overwritten in main() from --stages / --replicas +NAMES={5:'FIVE',7:'SEVEN',9:'NINE',11:'ELEVEN',13:'THIRTEEN'} +def sha(p): return hashlib.sha256(p.read_bytes()).hexdigest() +def write(p,x): p.write_text(json.dumps(x,indent=2)+'\n') + +def recipe(K): + out=[dict(kind='local',stage=0,pair=0,reverse=False)]; stage=1 + for j in range(K): + out.append(dict(kind='local',stage=stage,pair=j,reverse=True)); stage+=1 + if j=5 and a.stages%2==1; L=a.stages; K=(L-1)//2; T=a.replicas; M=1+7*L; NOBANK=a.no_banks + if L!=9: assert NOBANK, 'bank tiling is only emitted for the nine-stage layout; use --no-banks and host every residual' + DEFICIT=T*(2*K*120-9*H*L) + wp=a.word; w=json.loads(gzip.decompress(wp.read_bytes()) if wp.suffix=='.gz' else wp.read_bytes()) + V,R=w['v'],w['R']; LOCAL=2*V+R; DATA=2*K*V*T; LIVE=DATA+L*R + assert (w['h'],V,w['form'])==(8,120,'/2') + geo=json.loads((out/'GEOMETRY.json').read_text()) + assert geo['status']=='PASS_COMPRESSED_%s_BIT_GEOMETRY_AND_BANK_BLOCKS'%NAMES[L] and geo['stages']==L and geo['m']==M + # the port routes depend only on the labels: same 120 label vectors, in the same order + assert len(geo['ports'])==V and all(p['port']==t and p['q']==w['lines'][t] for t,p in enumerate(geo['ports'])) + rp=a.local_check/'records/249-records.bin'; raw=rp.read_bytes(); rec=list(struct.iter_unpack('<6i',raw)) + state=json.loads((a.local_check/'records/249-states.json').read_text()) + fs=json.loads((a.local_check/'records/frames.json').read_text())['frames'] + dims={int(f):z['dim'] for f,z in fs.items()} + lg=json.loads((a.local_check/'cout/legality.json').read_text()) + cc=json.loads((a.local_check/'cout/columns.json').read_text()) + assert lg['status'].startswith('PASS') and cc['status'].startswith('PASS') + assert (state['v'],state['n'])==(V,LOCAL) and lg['copies']==lg['erasures']==9 + ADDS=lg['common_frame_ADDs'] + assert cc['formal_columns_checked']==4*V+R and cc['local_scalar_additions']==ADDS + initial=[state['initial'][str(i)] for i in range(LOCAL)] + final=[state['final'][str(i)] for i in range(LOCAL)] + assert all(dims[final[i]]==H for i in range(2*V,LOCAL)) + widths=[H-dims[initial[i]] for i in range(2*V,LOCAL)] + ENT=sum(H-z for z in widths) + if NOBANK: place,NB=None,None; LIVE=DATA + else: + place,NB=placement(widths,T,M) + assert T%8==0 and T*(H*R-ENT)%M==0 and NB==T*(H*R-ENT)//M + LIVE=DATA+L*NB + isometries=json.loads(a.isometries.read_text()) + assert validate_isometries(isometries,w['frames'],w['lines'],dims)==set(initial[2*V:]) + streams={}; checks={}; localH=None + for reverse in (False,True): + cur=(final if reverse else initial)[:]+[-1]; val=[1<=0 + cur[x]=newf + if f: hist[f]+=1 + events.append([0,x,oldf,newf,f,int(reverse)]) + elif op==1: + assert cur[x]==cur[y]==f and x!=y and x

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 H`HlYziN5}> literal 0 HcmV?d00001 diff --git a/research/bit-five-rank4-terminals/admission/ADAPTATION-CHECK.json b/research/bit-five-rank4-terminals/admission/ADAPTATION-CHECK.json new file mode 100644 index 0000000000..4020c20acc --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/ADAPTATION-CHECK.json @@ -0,0 +1,21 @@ +{ + "unchanged_non_main_functions": [ + "apply_gate", + "chart_program", + "double", + "identity", + "invert_gate", + "magnitude_and_defects", + "matrix_product", + "need", + "partial_swap", + "rank", + "sha", + "transpose", + "verify_chart" + ], + "main_mathematical_checks_byte_identical": true, + "original_script_preserved_sha256": "c5b30e5a3422a61ba560459bf39f27d825d83154f95593672785b2f7ceaa5194", + "portable_script_sha256": "762357be4644da879251eca070a81dfd73ec3ef4991191cdd630896e7e9b44a3", + "exact_replacement_count": 8 +} diff --git a/research/bit-five-rank4-terminals/admission/ADAPTATION.patch b/research/bit-five-rank4-terminals/admission/ADAPTATION.patch new file mode 100644 index 0000000000..43b974f71e --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/ADAPTATION.patch @@ -0,0 +1,57 @@ +--- provenance/verify_admission.original.py.txt ++++ verify.py +@@ -14,9 +14,8 @@ + import json + + HERE = Path(__file__).resolve().parent +-RUN = HERE.parent +-INPUT = RUN.parent / 'kappa-four-coordinate-20261019T0717Z' +-REPO = Path('/Users/ross/git/math/integer-mult-bounds') ++INPUT = HERE / 'inputs' ++REPO = HERE / 'source-context' + + + def need(p, msg): +@@ -241,9 +240,8 @@ + p = argparse.ArgumentParser() + p.add_argument('--write', action='store_true') + args = p.parse_args() +- own = json.loads((RUN/'OWNERSHIP.json').read_text()) +- for k in ('input_manifest', 'frozen_manifest'): +- need(sha(own[k+'_path']) == own[k+'_sha256'], 'ownership manifest authentication') ++ bundle = json.loads((HERE/'INPUT-MANIFEST.json').read_text()) ++ own = {'decompressed_word_sha256': bundle['decompressed_word_sha256']} + seen = {} + def authenticate(x): + if isinstance(x, list): +@@ -251,22 +249,23 @@ + authenticate(y) + elif isinstance(x, dict): + if 'path' in x and 'sha256' in x: +- need(sha(x['path']) == x['sha256'], 'pinned file changed: '+x['path']) ++ path = Path(x['path']) ++ need(not path.is_absolute() and '..' not in path.parts, 'bundle-relative input') ++ need(sha(HERE/path) == x['sha256'], 'pinned file changed: '+x['path']) + seen[x['path']] = x['sha256'] + for y in x.values(): + if isinstance(y, (dict, list)): + authenticate(y) +- authenticate(json.loads(Path(own['input_manifest_path']).read_text())) +- authenticate(json.loads(Path(own['frozen_manifest_path']).read_text())) +- wordfile = INPUT/'bit-boundaries/FIVE-TERMINALS-WORD.json.gz' ++ authenticate(bundle['files']) ++ wordfile = INPUT/'FIVE-TERMINALS-WORD.json.gz' + blob = gzip.decompress(wordfile.read_bytes()) + need(sha256(blob).hexdigest() == own['decompressed_word_sha256'], 'literal word hash') + word = json.loads(blob) +- rawpath = REPO/'research/bit-r438-transport-rehost/words/r438-t154.json.gz' +- fullpath = REPO/'research/e8-bit-carrier-skeleton/data/bit/bitE8-r865.json.gz' ++ rawpath = INPUT/'r438-t154.json.gz' ++ fullpath = INPUT/'bitE8-r865.json.gz' + raw = json.loads(gzip.decompress(rawpath.read_bytes())) + full = json.loads(gzip.decompress(fullpath.read_bytes())) +- charts = json.loads((INPUT/'bit-boundaries/TERMINAL-CHARTS.json').read_text())['charts'] ++ charts = json.loads((INPUT/'TERMINAL-CHARTS.json').read_text())['charts'] + need([x['terminal_frame'] for x in charts] == [506, 508, 509], 'three exact frames') + checked = [verify_chart(c, raw, full) for c in charts] + controls = [] diff --git a/research/bit-five-rank4-terminals/admission/ADMISSION-CHECK.json b/research/bit-five-rank4-terminals/admission/ADMISSION-CHECK.json new file mode 100644 index 0000000000..29d075a455 --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/ADMISSION-CHECK.json @@ -0,0 +1,5699 @@ +{ + "authenticated_unique_files": 20, + "controls": [ + "nonorthogonal chart rejected", + "wrong actual terminal span rejected", + "COPY defect survives inverse source shear at 256 bits" + ], + "forward": { + "opcode_counts": { + "0": 2904, + "1": 36005, + "2": 9, + "3": 9 + }, + "positive_envelope_exact_erase_only": 8402567, + "private_bounds_after_each_erase": [ + 290, + 586, + 906, + 1330, + 1892, + 2222, + 2528, + 2994, + 3762 + ], + "unit_defect_all_prefix_bound": 662069, + "unit_defect_persistent_endpoint_bound": 662069, + "unit_defect_private_endpoint_bound": 3762 + }, + "independent_charts": [ + { + "address_basis_columns": 16, + "coordinate_program": { + "elementary_factors": 17, + "forward_max_prefix_denominator": 2, + "forward_max_prefix_row_l1": "4", + "inverse": [ + [ + "swap", + 5, + 0 + ], + [ + "swap", + 6, + 1 + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 6, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 7, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 3, + "-1" + ], + [ + "add", + 2, + 3, + "-1" + ], + [ + "add", + 7, + 3, + "-1" + ], + [ + "swap", + 5, + 4 + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "scale", + 7, + "1/2" + ], + [ + "scale", + 7, + "-1" + ], + [ + "add", + 2, + 7, + "1" + ], + [ + "add", + 3, + 7, + "-1" + ], + [ + "add", + 6, + 7, + "-1" + ] + ], + "inverse_max_prefix_denominator": 2, + "inverse_max_prefix_row_l1": "4", + "missing_final_gate_rejected": true, + "primitive_count": 24, + "primitive_histogram": { + "add": 10, + "scale:-1": 2, + "scale:1/2": 4, + "scale:2": 4, + "swap": 4 + }, + "program": [ + [ + "add", + 6, + 7, + "1" + ], + [ + "add", + 3, + 7, + "1" + ], + [ + "add", + 2, + 7, + "-1" + ], + [ + "scale", + 7, + "-1" + ], + [ + "scale", + 7, + "2" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "swap", + 5, + 4 + ], + [ + "add", + 7, + 3, + "1" + ], + [ + "add", + 2, + 3, + "1" + ], + [ + "scale", + 3, + "-1" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 7, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 6, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "swap", + 6, + 1 + ], + [ + "swap", + 5, + 0 + ] + ], + "residual_16_coordinate_primitive_count": 100, + "residual_16_coordinate_program": [ + [ + "swap", + 5, + 0 + ], + [ + "swap", + 6, + 1 + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 6, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 7, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 3, + "-1" + ], + [ + "add", + 2, + 3, + "-1" + ], + [ + "add", + 7, + 3, + "-1" + ], + [ + "swap", + 5, + 4 + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "scale", + 7, + "1/2" + ], + [ + "scale", + 7, + "-1" + ], + [ + "add", + 2, + 7, + "1" + ], + [ + "add", + 3, + 7, + "-1" + ], + [ + "add", + 6, + 7, + "-1" + ], + [ + "swap", + 13, + 8 + ], + [ + "swap", + 14, + 9 + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 12, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 14, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 15, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "swap", + 12, + 11 + ], + [ + "scale", + 11, + "-1" + ], + [ + "add", + 10, + 11, + "-1" + ], + [ + "add", + 15, + 11, + "-1" + ], + [ + "swap", + 13, + 12 + ], + [ + "add", + 11, + 14, + "1" + ], + [ + "add", + 15, + 14, + "-1" + ], + [ + "scale", + 15, + "1/2" + ], + [ + "scale", + 15, + "-1" + ], + [ + "add", + 10, + 15, + "1" + ], + [ + "add", + 11, + 15, + "-1" + ], + [ + "add", + 14, + 15, + "-1" + ], + [ + "swap", + 0, + 8 + ], + [ + "swap", + 1, + 9 + ], + [ + "swap", + 2, + 10 + ], + [ + "swap", + 3, + 11 + ], + [ + "add", + 6, + 7, + "1" + ], + [ + "add", + 3, + 7, + "1" + ], + [ + "add", + 2, + 7, + "-1" + ], + [ + "scale", + 7, + "-1" + ], + [ + "scale", + 7, + "2" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "swap", + 5, + 4 + ], + [ + "add", + 7, + 3, + "1" + ], + [ + "add", + 2, + 3, + "1" + ], + [ + "scale", + 3, + "-1" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 7, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 6, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "swap", + 6, + 1 + ], + [ + "swap", + 5, + 0 + ], + [ + "add", + 14, + 15, + "1" + ], + [ + "add", + 11, + 15, + "1" + ], + [ + "add", + 10, + 15, + "-1" + ], + [ + "scale", + 15, + "-1" + ], + [ + "scale", + 15, + "2" + ], + [ + "add", + 15, + 14, + "1" + ], + [ + "add", + 11, + 14, + "-1" + ], + [ + "swap", + 13, + 12 + ], + [ + "add", + 15, + 11, + "1" + ], + [ + "add", + 10, + 11, + "1" + ], + [ + "scale", + 11, + "-1" + ], + [ + "swap", + 12, + 11 + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 15, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 14, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 12, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "swap", + 14, + 9 + ], + [ + "swap", + 13, + 8 + ] + ], + "residual_max_prefix_denominator": 2, + "residual_max_prefix_row_l1": "4", + "scratch_field_elements": 0 + }, + "frame": 506, + "max_denominator": 2, + "rank": 4 + }, + { + "address_basis_columns": 16, + "coordinate_program": { + "elementary_factors": 44, + "forward_max_prefix_denominator": 2, + "forward_max_prefix_row_l1": "8", + "inverse": [ + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "-1" + ], + [ + "add", + 0, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 3, + "-1" + ], + [ + "add", + 0, + 3, + "-1" + ], + [ + "add", + 1, + 3, + "1" + ], + [ + "add", + 2, + 3, + "-1" + ], + [ + "add", + 5, + 3, + "-1" + ], + [ + "add", + 6, + 3, + "-1" + ], + [ + "add", + 7, + 3, + "1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 0, + 4, + "1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 5, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "swap", + 6, + 5 + ], + [ + "scale", + 5, + "1/2" + ], + [ + "add", + 0, + 5, + "-1" + ], + [ + "add", + 1, + 5, + "1" + ], + [ + "add", + 4, + 5, + "-1" + ], + [ + "scale", + 6, + "1/2" + ], + [ + "add", + 1, + 6, + "1" + ], + [ + "add", + 2, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 5, + 6, + "-1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "scale", + 7, + "1/2" + ], + [ + "scale", + 7, + "-1" + ], + [ + "add", + 1, + 7, + "1" + ], + [ + "add", + 3, + 7, + "1" + ], + [ + "add", + 5, + 7, + "-1" + ] + ], + "inverse_max_prefix_denominator": 2, + "inverse_max_prefix_row_l1": "8", + "missing_final_gate_rejected": true, + "primitive_count": 70, + "primitive_histogram": { + "add": 40, + "scale:-1": 4, + "scale:1/2": 12, + "scale:2": 12, + "swap": 2 + }, + "program": [ + [ + "add", + 5, + 7, + "1" + ], + [ + "add", + 3, + 7, + "-1" + ], + [ + "add", + 1, + 7, + "-1" + ], + [ + "scale", + 7, + "-1" + ], + [ + "scale", + 7, + "2" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 5, + 6, + "1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 2, + 6, + "1" + ], + [ + "add", + 1, + 6, + "-1" + ], + [ + "scale", + 6, + "2" + ], + [ + "add", + 4, + 5, + "1" + ], + [ + "add", + 1, + 5, + "-1" + ], + [ + "add", + 0, + 5, + "1" + ], + [ + "scale", + 5, + "2" + ], + [ + "swap", + 6, + 5 + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 5, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 0, + 4, + "-1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 7, + 3, + "-1" + ], + [ + "add", + 6, + 3, + "1" + ], + [ + "add", + 5, + 3, + "1" + ], + [ + "add", + 2, + 3, + "1" + ], + [ + "add", + 1, + 3, + "-1" + ], + [ + "add", + 0, + 3, + "1" + ], + [ + "scale", + 3, + "-1" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 0, + 1, + "1" + ], + [ + "scale", + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ] + ], + "residual_16_coordinate_primitive_count": 284, + "residual_16_coordinate_program": [ + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "-1" + ], + [ + "add", + 0, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 3, + "-1" + ], + [ + "add", + 0, + 3, + "-1" + ], + [ + "add", + 1, + 3, + "1" + ], + [ + "add", + 2, + 3, + "-1" + ], + [ + "add", + 5, + 3, + "-1" + ], + [ + "add", + 6, + 3, + "-1" + ], + [ + "add", + 7, + 3, + "1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 0, + 4, + "1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 5, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "swap", + 6, + 5 + ], + [ + "scale", + 5, + "1/2" + ], + [ + "add", + 0, + 5, + "-1" + ], + [ + "add", + 1, + 5, + "1" + ], + [ + "add", + 4, + 5, + "-1" + ], + [ + "scale", + 6, + "1/2" + ], + [ + "add", + 1, + 6, + "1" + ], + [ + "add", + 2, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 5, + 6, + "-1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "scale", + 7, + "1/2" + ], + [ + "scale", + 7, + "-1" + ], + [ + "add", + 1, + 7, + "1" + ], + [ + "add", + 3, + 7, + "1" + ], + [ + "add", + 5, + 7, + "-1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 10, + 8, + "1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 12, + 8, + "-1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 14, + 8, + "1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 9, + "2" + ], + [ + "scale", + 9, + "-1" + ], + [ + "add", + 8, + 9, + "-1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 10, + 9, + "-1" + ], + [ + "scale", + 9, + "2" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 12, + 9, + "1" + ], + [ + "scale", + 9, + "2" + ], + [ + "add", + 14, + 9, + "-1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 15, + 9, + "1" + ], + [ + "scale", + 9, + "2" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 11, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 12, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 13, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "swap", + 12, + 11 + ], + [ + "scale", + 11, + "-1" + ], + [ + "add", + 8, + 11, + "-1" + ], + [ + "add", + 9, + 11, + "1" + ], + [ + "add", + 10, + 11, + "-1" + ], + [ + "add", + 13, + 11, + "-1" + ], + [ + "add", + 14, + 11, + "-1" + ], + [ + "add", + 15, + 11, + "1" + ], + [ + "scale", + 12, + "-1" + ], + [ + "add", + 8, + 12, + "1" + ], + [ + "add", + 9, + 12, + "-1" + ], + [ + "add", + 9, + 12, + "-1" + ], + [ + "add", + 11, + 12, + "-1" + ], + [ + "add", + 11, + 12, + "-1" + ], + [ + "add", + 13, + 12, + "1" + ], + [ + "add", + 14, + 12, + "1" + ], + [ + "add", + 14, + 12, + "1" + ], + [ + "add", + 15, + 12, + "-1" + ], + [ + "add", + 15, + 12, + "-1" + ], + [ + "swap", + 14, + 13 + ], + [ + "scale", + 13, + "1/2" + ], + [ + "add", + 8, + 13, + "-1" + ], + [ + "add", + 9, + 13, + "1" + ], + [ + "add", + 12, + 13, + "-1" + ], + [ + "scale", + 14, + "1/2" + ], + [ + "add", + 9, + 14, + "1" + ], + [ + "add", + 10, + 14, + "-1" + ], + [ + "add", + 11, + 14, + "1" + ], + [ + "add", + 11, + 14, + "1" + ], + [ + "add", + 13, + 14, + "-1" + ], + [ + "add", + 15, + 14, + "1" + ], + [ + "add", + 15, + 14, + "1" + ], + [ + "scale", + 15, + "1/2" + ], + [ + "scale", + 15, + "-1" + ], + [ + "add", + 9, + 15, + "1" + ], + [ + "add", + 11, + 15, + "1" + ], + [ + "add", + 13, + 15, + "-1" + ], + [ + "swap", + 0, + 8 + ], + [ + "swap", + 1, + 9 + ], + [ + "swap", + 2, + 10 + ], + [ + "swap", + 3, + 11 + ], + [ + "add", + 5, + 7, + "1" + ], + [ + "add", + 3, + 7, + "-1" + ], + [ + "add", + 1, + 7, + "-1" + ], + [ + "scale", + 7, + "-1" + ], + [ + "scale", + 7, + "2" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 5, + 6, + "1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 2, + 6, + "1" + ], + [ + "add", + 1, + 6, + "-1" + ], + [ + "scale", + 6, + "2" + ], + [ + "add", + 4, + 5, + "1" + ], + [ + "add", + 1, + 5, + "-1" + ], + [ + "add", + 0, + 5, + "1" + ], + [ + "scale", + 5, + "2" + ], + [ + "swap", + 6, + 5 + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 5, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 0, + 4, + "-1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 7, + 3, + "-1" + ], + [ + "add", + 6, + 3, + "1" + ], + [ + "add", + 5, + 3, + "1" + ], + [ + "add", + 2, + 3, + "1" + ], + [ + "add", + 1, + 3, + "-1" + ], + [ + "add", + 0, + 3, + "1" + ], + [ + "scale", + 3, + "-1" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 0, + 1, + "1" + ], + [ + "scale", + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 13, + 15, + "1" + ], + [ + "add", + 11, + 15, + "-1" + ], + [ + "add", + 9, + 15, + "-1" + ], + [ + "scale", + 15, + "-1" + ], + [ + "scale", + 15, + "2" + ], + [ + "add", + 15, + 14, + "-1" + ], + [ + "add", + 15, + 14, + "-1" + ], + [ + "add", + 13, + 14, + "1" + ], + [ + "add", + 11, + 14, + "-1" + ], + [ + "add", + 11, + 14, + "-1" + ], + [ + "add", + 10, + 14, + "1" + ], + [ + "add", + 9, + 14, + "-1" + ], + [ + "scale", + 14, + "2" + ], + [ + "add", + 12, + 13, + "1" + ], + [ + "add", + 9, + 13, + "-1" + ], + [ + "add", + 8, + 13, + "1" + ], + [ + "scale", + 13, + "2" + ], + [ + "swap", + 14, + 13 + ], + [ + "add", + 15, + 12, + "1" + ], + [ + "add", + 15, + 12, + "1" + ], + [ + "add", + 14, + 12, + "-1" + ], + [ + "add", + 14, + 12, + "-1" + ], + [ + "add", + 13, + 12, + "-1" + ], + [ + "add", + 11, + 12, + "1" + ], + [ + "add", + 11, + 12, + "1" + ], + [ + "add", + 9, + 12, + "1" + ], + [ + "add", + 9, + 12, + "1" + ], + [ + "add", + 8, + 12, + "-1" + ], + [ + "scale", + 12, + "-1" + ], + [ + "add", + 15, + 11, + "-1" + ], + [ + "add", + 14, + 11, + "1" + ], + [ + "add", + 13, + 11, + "1" + ], + [ + "add", + 10, + 11, + "1" + ], + [ + "add", + 9, + 11, + "-1" + ], + [ + "add", + 8, + 11, + "1" + ], + [ + "scale", + 11, + "-1" + ], + [ + "swap", + 12, + 11 + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 13, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 12, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 11, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 15, + 9, + "-1" + ], + [ + "scale", + 9, + "2" + ], + [ + "add", + 14, + 9, + "1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 12, + 9, + "-1" + ], + [ + "scale", + 9, + "2" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 10, + 9, + "1" + ], + [ + "scale", + 9, + "2" + ], + [ + "add", + 8, + 9, + "1" + ], + [ + "scale", + 9, + "-1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 14, + 8, + "-1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 12, + 8, + "1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 10, + 8, + "-1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ] + ], + "residual_max_prefix_denominator": 4, + "residual_max_prefix_row_l1": "10", + "scratch_field_elements": 0 + }, + "frame": 508, + "max_denominator": 2, + "rank": 4 + }, + { + "address_basis_columns": 16, + "coordinate_program": { + "elementary_factors": 44, + "forward_max_prefix_denominator": 2, + "forward_max_prefix_row_l1": "8", + "inverse": [ + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 0, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 3, + "-1" + ], + [ + "add", + 0, + 3, + "1" + ], + [ + "add", + 1, + 3, + "-1" + ], + [ + "add", + 2, + 3, + "-1" + ], + [ + "add", + 5, + 3, + "1" + ], + [ + "add", + 6, + 3, + "1" + ], + [ + "add", + 7, + 3, + "1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 0, + 4, + "1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 5, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "swap", + 6, + 5 + ], + [ + "scale", + 5, + "1/2" + ], + [ + "add", + 0, + 5, + "-1" + ], + [ + "add", + 1, + 5, + "1" + ], + [ + "add", + 4, + 5, + "-1" + ], + [ + "scale", + 6, + "1/2" + ], + [ + "scale", + 6, + "-1" + ], + [ + "add", + 1, + 6, + "-1" + ], + [ + "add", + 2, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 5, + 6, + "1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "scale", + 7, + "1/2" + ], + [ + "scale", + 7, + "-1" + ], + [ + "add", + 1, + 7, + "-1" + ], + [ + "add", + 3, + 7, + "1" + ], + [ + "add", + 5, + 7, + "1" + ] + ], + "inverse_max_prefix_denominator": 2, + "inverse_max_prefix_row_l1": "8", + "missing_final_gate_rejected": true, + "primitive_count": 70, + "primitive_histogram": { + "add": 40, + "scale:-1": 4, + "scale:1/2": 12, + "scale:2": 12, + "swap": 2 + }, + "program": [ + [ + "add", + 5, + 7, + "-1" + ], + [ + "add", + 3, + 7, + "-1" + ], + [ + "add", + 1, + 7, + "1" + ], + [ + "scale", + 7, + "-1" + ], + [ + "scale", + 7, + "2" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 5, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 2, + 6, + "1" + ], + [ + "add", + 1, + 6, + "1" + ], + [ + "scale", + 6, + "-1" + ], + [ + "scale", + 6, + "2" + ], + [ + "add", + 4, + 5, + "1" + ], + [ + "add", + 1, + 5, + "-1" + ], + [ + "add", + 0, + 5, + "1" + ], + [ + "scale", + 5, + "2" + ], + [ + "swap", + 6, + 5 + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 5, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 0, + 4, + "-1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 7, + 3, + "-1" + ], + [ + "add", + 6, + 3, + "-1" + ], + [ + "add", + 5, + 3, + "-1" + ], + [ + "add", + 2, + 3, + "1" + ], + [ + "add", + 1, + 3, + "1" + ], + [ + "add", + 0, + 3, + "-1" + ], + [ + "scale", + 3, + "-1" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 0, + 1, + "1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ] + ], + "residual_16_coordinate_primitive_count": 284, + "residual_16_coordinate_program": [ + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 0, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "-1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 3, + "-1" + ], + [ + "add", + 0, + 3, + "1" + ], + [ + "add", + 1, + 3, + "-1" + ], + [ + "add", + 2, + 3, + "-1" + ], + [ + "add", + 5, + 3, + "1" + ], + [ + "add", + 6, + 3, + "1" + ], + [ + "add", + 7, + 3, + "1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 0, + 4, + "1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 1, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 3, + 4, + "1" + ], + [ + "add", + 5, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 6, + 4, + "1" + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "add", + 7, + 4, + "1" + ], + [ + "swap", + 6, + 5 + ], + [ + "scale", + 5, + "1/2" + ], + [ + "add", + 0, + 5, + "-1" + ], + [ + "add", + 1, + 5, + "1" + ], + [ + "add", + 4, + 5, + "-1" + ], + [ + "scale", + 6, + "1/2" + ], + [ + "scale", + 6, + "-1" + ], + [ + "add", + 1, + 6, + "-1" + ], + [ + "add", + 2, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 3, + 6, + "1" + ], + [ + "add", + 5, + 6, + "1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "add", + 7, + 6, + "1" + ], + [ + "scale", + 7, + "1/2" + ], + [ + "scale", + 7, + "-1" + ], + [ + "add", + 1, + 7, + "-1" + ], + [ + "add", + 3, + 7, + "1" + ], + [ + "add", + 5, + 7, + "1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 10, + 8, + "-1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 12, + 8, + "1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 14, + 8, + "1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 9, + "2" + ], + [ + "add", + 8, + 9, + "-1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 10, + 9, + "1" + ], + [ + "scale", + 9, + "2" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 12, + 9, + "-1" + ], + [ + "scale", + 9, + "2" + ], + [ + "add", + 14, + 9, + "-1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 15, + 9, + "-1" + ], + [ + "scale", + 9, + "2" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 11, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 12, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 13, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "swap", + 12, + 11 + ], + [ + "scale", + 11, + "-1" + ], + [ + "add", + 8, + 11, + "1" + ], + [ + "add", + 9, + 11, + "-1" + ], + [ + "add", + 10, + 11, + "-1" + ], + [ + "add", + 13, + 11, + "1" + ], + [ + "add", + 14, + 11, + "1" + ], + [ + "add", + 15, + 11, + "1" + ], + [ + "scale", + 12, + "-1" + ], + [ + "add", + 8, + 12, + "1" + ], + [ + "add", + 9, + 12, + "-1" + ], + [ + "add", + 9, + 12, + "-1" + ], + [ + "add", + 11, + 12, + "1" + ], + [ + "add", + 11, + 12, + "1" + ], + [ + "add", + 13, + 12, + "1" + ], + [ + "add", + 14, + 12, + "1" + ], + [ + "add", + 14, + 12, + "1" + ], + [ + "add", + 15, + 12, + "1" + ], + [ + "add", + 15, + 12, + "1" + ], + [ + "swap", + 14, + 13 + ], + [ + "scale", + 13, + "1/2" + ], + [ + "add", + 8, + 13, + "-1" + ], + [ + "add", + 9, + 13, + "1" + ], + [ + "add", + 12, + 13, + "-1" + ], + [ + "scale", + 14, + "1/2" + ], + [ + "scale", + 14, + "-1" + ], + [ + "add", + 9, + 14, + "-1" + ], + [ + "add", + 10, + 14, + "-1" + ], + [ + "add", + 11, + 14, + "1" + ], + [ + "add", + 11, + 14, + "1" + ], + [ + "add", + 13, + 14, + "1" + ], + [ + "add", + 15, + 14, + "1" + ], + [ + "add", + 15, + 14, + "1" + ], + [ + "scale", + 15, + "1/2" + ], + [ + "scale", + 15, + "-1" + ], + [ + "add", + 9, + 15, + "-1" + ], + [ + "add", + 11, + 15, + "1" + ], + [ + "add", + 13, + 15, + "1" + ], + [ + "swap", + 0, + 8 + ], + [ + "swap", + 1, + 9 + ], + [ + "swap", + 2, + 10 + ], + [ + "swap", + 3, + 11 + ], + [ + "add", + 5, + 7, + "-1" + ], + [ + "add", + 3, + 7, + "-1" + ], + [ + "add", + 1, + 7, + "1" + ], + [ + "scale", + 7, + "-1" + ], + [ + "scale", + 7, + "2" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 7, + 6, + "-1" + ], + [ + "add", + 5, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 3, + 6, + "-1" + ], + [ + "add", + 2, + 6, + "1" + ], + [ + "add", + 1, + 6, + "1" + ], + [ + "scale", + 6, + "-1" + ], + [ + "scale", + 6, + "2" + ], + [ + "add", + 4, + 5, + "1" + ], + [ + "add", + 1, + 5, + "-1" + ], + [ + "add", + 0, + 5, + "1" + ], + [ + "scale", + 5, + "2" + ], + [ + "swap", + 6, + 5 + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "add", + 7, + 4, + "-1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 6, + 4, + "-1" + ], + [ + "add", + 5, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 3, + 4, + "-1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 1, + 4, + "1" + ], + [ + "add", + 0, + 4, + "-1" + ], + [ + "scale", + 4, + "-1" + ], + [ + "add", + 7, + 3, + "-1" + ], + [ + "add", + 6, + 3, + "-1" + ], + [ + "add", + 5, + 3, + "-1" + ], + [ + "add", + 2, + 3, + "1" + ], + [ + "add", + 1, + 3, + "1" + ], + [ + "add", + 0, + 3, + "-1" + ], + [ + "scale", + 3, + "-1" + ], + [ + "swap", + 4, + 3 + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 5, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 4, + 2, + "1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "add", + 3, + 2, + "-1" + ], + [ + "scale", + 2, + "2" + ], + [ + "scale", + 2, + "1/2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 7, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 6, + 1, + "1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 4, + 1, + "1" + ], + [ + "scale", + 1, + "2" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "add", + 2, + 1, + "-1" + ], + [ + "scale", + 1, + "2" + ], + [ + "add", + 0, + 1, + "1" + ], + [ + "scale", + 1, + "1/2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 6, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 4, + 0, + "-1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 2, + 0, + "1" + ], + [ + "scale", + 0, + "2" + ], + [ + "scale", + 0, + "1/2" + ], + [ + "add", + 13, + 15, + "-1" + ], + [ + "add", + 11, + 15, + "-1" + ], + [ + "add", + 9, + 15, + "1" + ], + [ + "scale", + 15, + "-1" + ], + [ + "scale", + 15, + "2" + ], + [ + "add", + 15, + 14, + "-1" + ], + [ + "add", + 15, + 14, + "-1" + ], + [ + "add", + 13, + 14, + "-1" + ], + [ + "add", + 11, + 14, + "-1" + ], + [ + "add", + 11, + 14, + "-1" + ], + [ + "add", + 10, + 14, + "1" + ], + [ + "add", + 9, + 14, + "1" + ], + [ + "scale", + 14, + "-1" + ], + [ + "scale", + 14, + "2" + ], + [ + "add", + 12, + 13, + "1" + ], + [ + "add", + 9, + 13, + "-1" + ], + [ + "add", + 8, + 13, + "1" + ], + [ + "scale", + 13, + "2" + ], + [ + "swap", + 14, + 13 + ], + [ + "add", + 15, + 12, + "-1" + ], + [ + "add", + 15, + 12, + "-1" + ], + [ + "add", + 14, + 12, + "-1" + ], + [ + "add", + 14, + 12, + "-1" + ], + [ + "add", + 13, + 12, + "-1" + ], + [ + "add", + 11, + 12, + "-1" + ], + [ + "add", + 11, + 12, + "-1" + ], + [ + "add", + 9, + 12, + "1" + ], + [ + "add", + 9, + 12, + "1" + ], + [ + "add", + 8, + 12, + "-1" + ], + [ + "scale", + 12, + "-1" + ], + [ + "add", + 15, + 11, + "-1" + ], + [ + "add", + 14, + 11, + "-1" + ], + [ + "add", + 13, + 11, + "-1" + ], + [ + "add", + 10, + 11, + "1" + ], + [ + "add", + 9, + 11, + "1" + ], + [ + "add", + 8, + 11, + "-1" + ], + [ + "scale", + 11, + "-1" + ], + [ + "swap", + 12, + 11 + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 13, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 12, + 10, + "1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "add", + 11, + 10, + "-1" + ], + [ + "scale", + 10, + "2" + ], + [ + "scale", + 10, + "1/2" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 15, + 9, + "1" + ], + [ + "scale", + 9, + "2" + ], + [ + "add", + 14, + 9, + "1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 12, + 9, + "1" + ], + [ + "scale", + 9, + "2" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "add", + 10, + 9, + "-1" + ], + [ + "scale", + 9, + "2" + ], + [ + "add", + 8, + 9, + "1" + ], + [ + "scale", + 9, + "1/2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 14, + 8, + "-1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 12, + 8, + "-1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ], + [ + "add", + 10, + 8, + "1" + ], + [ + "scale", + 8, + "2" + ], + [ + "scale", + 8, + "1/2" + ] + ], + "residual_max_prefix_denominator": 4, + "residual_max_prefix_row_l1": "10", + "scratch_field_elements": 0 + }, + "frame": 509, + "max_denominator": 2, + "rank": 4 + } + ], + "inverse": { + "opcode_counts": { + "0": 2904, + "1": 36005, + "2": 9, + "3": 9 + }, + "positive_envelope_exact_erase_only": 630744, + "private_bounds_after_each_erase": [ + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32, + 36 + ], + "unit_defect_all_prefix_bound": 47917, + "unit_defect_persistent_endpoint_bound": 47917, + "unit_defect_private_endpoint_bound": 36 + }, + "limits": "No exact rounded-child cleanup, chronological owners, paid native routes, all-size compiler, tape or outer admission.", + "no_new_kappa": true, + "precision": { + "conditional_depth_two": { + "charged_bits": 512, + "child_count_max": 1048575, + "extra_invoice_max": "1645504557321206042154969182557350504982735865633579863348609023", + "scope": "Sufficient conditional arithmetic only; no compiler or owner invoice is supplied.", + "upper_bound_bits": 463 + }, + "five_stage_bits": 114, + "five_stage_integer_bound": "15105050522746917552142185212669952", + "five_stage_multiple_of_64": 128, + "nine_stage_bits": 211, + "nine_stage_integer_bound": "1737850264432662463887984248694818736482648196425093483769888768", + "nine_stage_multiple_of_64": 256 + }, + "script_sha256": "762357be4644da879251eca070a81dfd73ec3ef4991191cdd630896e7e9b44a3", + "source_sha256": { + "research/e8-bit-carrier-skeleton/code/bit/checkers/columns_h.cpp": "d1297f9052be4f2496e1ff2a77e4db2c0cdbd7d460d489b4c03e50bf317238ce", + "research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/code/assemble9.py": "4bf6768224a3fac81ccda26df24f3763f9a4fbc35ad62bef2888595cdae519fe", + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8", + "research/pr589-five-helper-hosting/PROOF.md": "59cae781bfbe1a01ed9e66a8efeeb5a2b995e5ecdf908586b23ecc39f2b8d647" + }, + "status": "PASS_FINITE_ADMISSION_DIAGNOSTICS_NOT_NATIVE_SUPPLIER", + "word_sha256": "3bca74a2a8427eb18e86566baa19de597f10d0bc40c30b7443febd499ee2189a" +} diff --git a/research/bit-five-rank4-terminals/admission/BUNDLE-MANIFEST.json b/research/bit-five-rank4-terminals/admission/BUNDLE-MANIFEST.json new file mode 100644 index 0000000000..f1bb3fba3c --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/BUNDLE-MANIFEST.json @@ -0,0 +1,119 @@ +{ + "files": [ + { + "bytes": 559, + "path": "ADAPTATION-CHECK.json", + "sha256": "18f09c62864738cb39e8fbe52b3e811406afdbba85634f7be3f9aeb2cebc7c32" + }, + { + "bytes": 2718, + "path": "ADAPTATION.patch", + "sha256": "88106c60dbc9563478351d213d3dfdd2a88d0d0d8734e4b16c41e75b72accb43" + }, + { + "bytes": 90205, + "path": "ADMISSION-CHECK.json", + "sha256": "cb7e3c83d066a82fa2d458b2d8ac2cc04ae90bde2ad4f70e07fdc252888a87d0" + }, + { + "bytes": 3717, + "path": "INPUT-MANIFEST.json", + "sha256": "70b0515c54a63dd545d256ee3da17f2f8ce00e89d08580f7cdbcdc4bb72dac03" + }, + { + "bytes": 5183, + "path": "README.md", + "sha256": "d9aacfb3c2bb7a3e3fbad8453409fba9e925bc833b399fa6e0bc94e13e2570b6" + }, + { + "bytes": 1209, + "path": "VALIDATION.json", + "sha256": "2c4cb7e0e427dbc9ad4179a3423e3eaaaa8726701f8e50e26622a956b59d9cb4" + }, + { + "bytes": 105171, + "path": "inputs/FIVE-TERMINALS-WORD.json.gz", + "sha256": "c46ccd7d3eedabc6a7efbb1a91ec13f2928bad8ee0bac57c6e593a092d13d96c" + }, + { + "bytes": 8718, + "path": "inputs/TERMINAL-CHARTS.json", + "sha256": "489216ea25f47f061675ab7b7e4a17289a531bce6fe77cca166a13265bfcbb17" + }, + { + "bytes": 33865, + "path": "inputs/bitE8-r865.json.gz", + "sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55" + }, + { + "bytes": 42305, + "path": "inputs/r438-t154.json.gz", + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + { + "bytes": 90205, + "path": "provenance/ADMISSION-CHECK.original.json", + "sha256": "914c4deecd9fa972f396e942c6d6bfbf13e6ef58f6a54ad8e8d4a125b0652519" + }, + { + "bytes": 7198, + "path": "provenance/FROZEN-MANIFEST.original.json", + "sha256": "362ad0246d221584b35bfad2e850ed20b344a9f96a706c9988e3b3d2b7ff85a7" + }, + { + "bytes": 1452, + "path": "provenance/OWNERSHIP.original.json", + "sha256": "ed5b67369aa95c80a5a4a958dc030cc216954d6a8b23d01252d2c84647758fbc" + }, + { + "bytes": 709, + "path": "provenance/PR540-SOURCE-PINS.original.json", + "sha256": "2963bc4edd609c542bad37f6021f251dbaa254495948d715dc3c704c8058b31d" + }, + { + "bytes": 5330, + "path": "provenance/TRANSFER-AUTHENTICATION.json", + "sha256": "e6b71af938ed1457e163390a8f304dd18493d7b6937d431561e22895c2fd6597" + }, + { + "bytes": 7489, + "path": "provenance/TRANSFER-MANIFEST.original.json", + "sha256": "7e13112436a72e1f646c9a3fdf417dbab8522730d720709b7059fd85d4c9f6eb" + }, + { + "bytes": 14647, + "path": "provenance/verify_admission.original.py.txt", + "sha256": "c5b30e5a3422a61ba560459bf39f27d825d83154f95593672785b2f7ceaa5194" + }, + { + "bytes": 7155, + "path": "source-context/research/e8-bit-carrier-skeleton/code/bit/checkers/columns_h.cpp", + "sha256": "d1297f9052be4f2496e1ff2a77e4db2c0cdbd7d460d489b4c03e50bf317238ce" + }, + { + "bytes": 8609, + "path": "source-context/research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp", + "sha256": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2" + }, + { + "bytes": 6048, + "path": "source-context/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/code/assemble9.py", + "sha256": "4bf6768224a3fac81ccda26df24f3763f9a4fbc35ad62bef2888595cdae519fe" + }, + { + "bytes": 16791, + "path": "source-context/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py", + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + { + "bytes": 12438, + "path": "source-context/research/pr589-five-helper-hosting/PROOF.md", + "sha256": "59cae781bfbe1a01ed9e66a8efeeb5a2b995e5ecdf908586b23ecc39f2b8d647" + }, + { + "bytes": 14417, + "path": "verify.py", + "sha256": "762357be4644da879251eca070a81dfd73ec3ef4991191cdd630896e7e9b44a3" + } + ] +} diff --git a/research/bit-five-rank4-terminals/admission/INPUT-MANIFEST.json b/research/bit-five-rank4-terminals/admission/INPUT-MANIFEST.json new file mode 100644 index 0000000000..f9316733da --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/INPUT-MANIFEST.json @@ -0,0 +1,106 @@ +{ + "decompressed_word_sha256": "3bca74a2a8427eb18e86566baa19de597f10d0bc40c30b7443febd499ee2189a", + "files": [ + { + "bytes": 559, + "path": "ADAPTATION-CHECK.json", + "sha256": "18f09c62864738cb39e8fbe52b3e811406afdbba85634f7be3f9aeb2cebc7c32" + }, + { + "bytes": 2718, + "path": "ADAPTATION.patch", + "sha256": "88106c60dbc9563478351d213d3dfdd2a88d0d0d8734e4b16c41e75b72accb43" + }, + { + "bytes": 5183, + "path": "README.md", + "sha256": "d9aacfb3c2bb7a3e3fbad8453409fba9e925bc833b399fa6e0bc94e13e2570b6" + }, + { + "bytes": 105171, + "path": "inputs/FIVE-TERMINALS-WORD.json.gz", + "sha256": "c46ccd7d3eedabc6a7efbb1a91ec13f2928bad8ee0bac57c6e593a092d13d96c" + }, + { + "bytes": 8718, + "path": "inputs/TERMINAL-CHARTS.json", + "sha256": "489216ea25f47f061675ab7b7e4a17289a531bce6fe77cca166a13265bfcbb17" + }, + { + "bytes": 33865, + "path": "inputs/bitE8-r865.json.gz", + "sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55" + }, + { + "bytes": 42305, + "path": "inputs/r438-t154.json.gz", + "sha256": "a353999bceac4ac957f540adfd3e5f8768297138b27132eeb83332e2ea4b1022" + }, + { + "bytes": 90205, + "path": "provenance/ADMISSION-CHECK.original.json", + "sha256": "914c4deecd9fa972f396e942c6d6bfbf13e6ef58f6a54ad8e8d4a125b0652519" + }, + { + "bytes": 7198, + "path": "provenance/FROZEN-MANIFEST.original.json", + "sha256": "362ad0246d221584b35bfad2e850ed20b344a9f96a706c9988e3b3d2b7ff85a7" + }, + { + "bytes": 1452, + "path": "provenance/OWNERSHIP.original.json", + "sha256": "ed5b67369aa95c80a5a4a958dc030cc216954d6a8b23d01252d2c84647758fbc" + }, + { + "bytes": 709, + "path": "provenance/PR540-SOURCE-PINS.original.json", + "sha256": "2963bc4edd609c542bad37f6021f251dbaa254495948d715dc3c704c8058b31d" + }, + { + "bytes": 5330, + "path": "provenance/TRANSFER-AUTHENTICATION.json", + "sha256": "e6b71af938ed1457e163390a8f304dd18493d7b6937d431561e22895c2fd6597" + }, + { + "bytes": 7489, + "path": "provenance/TRANSFER-MANIFEST.original.json", + "sha256": "7e13112436a72e1f646c9a3fdf417dbab8522730d720709b7059fd85d4c9f6eb" + }, + { + "bytes": 14647, + "path": "provenance/verify_admission.original.py.txt", + "sha256": "c5b30e5a3422a61ba560459bf39f27d825d83154f95593672785b2f7ceaa5194" + }, + { + "bytes": 7155, + "path": "source-context/research/e8-bit-carrier-skeleton/code/bit/checkers/columns_h.cpp", + "sha256": "d1297f9052be4f2496e1ff2a77e4db2c0cdbd7d460d489b4c03e50bf317238ce" + }, + { + "bytes": 8609, + "path": "source-context/research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp", + "sha256": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2" + }, + { + "bytes": 6048, + "path": "source-context/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/code/assemble9.py", + "sha256": "4bf6768224a3fac81ccda26df24f3763f9a4fbc35ad62bef2888595cdae519fe" + }, + { + "bytes": 16791, + "path": "source-context/research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py", + "sha256": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + { + "bytes": 12438, + "path": "source-context/research/pr589-five-helper-hosting/PROOF.md", + "sha256": "59cae781bfbe1a01ed9e66a8efeeb5a2b995e5ecdf908586b23ecc39f2b8d647" + }, + { + "bytes": 14417, + "path": "verify.py", + "sha256": "762357be4644da879251eca070a81dfd73ec3ef4991191cdd630896e7e9b44a3" + } + ], + "version": 1 +} diff --git a/research/bit-five-rank4-terminals/admission/README.md b/research/bit-five-rank4-terminals/admission/README.md new file mode 100644 index 0000000000..556ca3ac68 --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/README.md @@ -0,0 +1,95 @@ +# Portable five-terminal chart and arithmetic supplement + +Run with Python 3.11 or later and the standard library: + +```sh +python3 -I -B verify.py +python3 -I -O -B verify.py +``` + +The script resolves every input relative to itself. It needs no old run, +repository checkout, Git, generated bytecode, third-party modules, or network. +`--write` deliberately replaces the local result receipt; normal runs compare +the recomputation against the shipped receipt. Run from any working directory. + +The mathematical inputs are four files in `inputs/`: the five-terminal literal +word, its three terminal charts, the original R438 geometry, and the E8 root +skeleton. `source-context/` contains only five literal historical files used +to bind the envelope/invoice interpretation; they are hashed but never imported +or executed. Their dependency directories were not copied. + +The checker authenticates all files listed in `INPUT-MANIFEST.json`, replays +the three coordinate charts and their inverses, computes the signed-word +positive envelopes and additive-defect bounds in both orientations, checks +the precision inequalities and retains the original negative controls. It +does not duplicate the independent full 660-column BIT operator audit. + +## Mathematical result and domain + +Each saved Q is orthogonal over Z[1/2], and its first four columns span the +specified actual rank-four terminal frame E. The literal programs prove + + D_E = diag(Q,Q) D_coordinate4 diag(Q^T,Q^T). + +Q programs use 24,70,70 invertible coordinate primitives for frames506,508,509. +The complete 16-coordinate residual programs use 100,284,284 primitives. Their +alphabet is unit signed ADD, NEGATE, DOUBLE, HALF and SWAP. Every coordinate +input is arbitrary; no extra field element is used. The programs and their +exact inverses work over any Z[1/2]-module and hence every odd field. These are +coordinate-arithmetic costs, not recursive payload or physical tape tariffs. + +The chart programs have maximum prefix denominators2 and infinity norms4,8,8. +The complete residual programs have maximum prefix denominators2,4,4 and +infinity norms4,10,10. These exact matrix bounds give reachable dyadic-grid +statements when the input is dyadic; they do not license approximate rounding. + +The scalar word gives F=8402567, R=630744. The historical five-/nine-stage +expressions need114/211bits and fail104/192-bit caps. New multiples-of-64 charges +would be128/256. For the historical depth-two formula, writing C=P9+B and paid +child count E, the explicit sufficient premises B<2^210 and E<2^20 give a +two-level quantity with at most463bits, below512. No missing compiler invoice +is supplied by these sufficient bounds. + +For the defect calculation, gauges are exact isometries of bounded functions, +scalar ADDs are exact, and each MOVE/COPY/ERASE may introduce an independent +destination error of norm at most delta. COPY and ERASE are extended as source +shears; private errors are never reset. Starting from zero errors, propagate + + ADD d += c s: e_d <- e_d + |c| e_s + MOVE d: e_d <- e_d + 1 + COPY/ERASE: e_private <- e_private + e_source + 1. + +The triangle inequality proves the resulting bound by induction. Maximum +prefix errors are at most662069 delta forward and47917 delta inverse; private +endpoint errors are bounded by3762 delta and36 delta. This compares with the +signed integer lift, whose clean BIT public endpoint is obtained only modulo2. +It is not a rounded implementation of the Boolean supplier. A nonzero COPY +defect survives exact source subtraction, so finite accuracy alone cannot +prove an exact ERASE. Actual rounded-child cleanup remains open. + +## Provenance and adaptation + +`provenance/` retains the authenticated transfer manifests, ownership receipt, +original checker and result, source-context pins and the copy authentication +record. Their absolute paths are historical metadata only; no runtime path is +taken from them. This preserves the original run's provenance without requiring +live ownership files to rerun the mathematics. Hash integrity is not a digital +signature or a proof of mathematical truth. + +See `ADAPTATION.patch` for the complete eight exact text replacements and +`ADAPTATION-CHECK.json` for the source comparison. The original checker is +unchanged in `provenance/verify_admission.original.py.txt`. The 13 non-main +functions have identical ASTs; the main chart, defect, precision, invoice and +negative-control section is byte-identical. Only bundle-root discovery, +manifest authentication and four input locations changed. Provenance file count +and executing-script hash consequently differ from the old result; mathematical +result fields must agree exactly. + +This supplement establishes finite exact coordinate programs and bounded +arithmetic diagnostics. Chronological owners, native routes, exact rounded +cleanup, storage/tape accounting, all-size dispatch and compatible joint moments +remain separate. No new kappa, formal-kernel replay, or native supplier admission. + +Credit the R438/PR589 and E8 geometry lineage, the frozen five-terminal authors, +cheesegrader's PR540 framework and the PR589 hosting proof authors. Apache-2.0; +substantial OpenAI Codex assistance. diff --git a/research/bit-five-rank4-terminals/admission/VALIDATION.json b/research/bit-five-rank4-terminals/admission/VALIDATION.json new file mode 100644 index 0000000000..08420d22ad --- /dev/null +++ b/research/bit-five-rank4-terminals/admission/VALIDATION.json @@ -0,0 +1,35 @@ +{ + "excluded_metadata_only": [ + "authenticated_unique_files", + "script_sha256" + ], + "input_manifest_sha256": "70b0515c54a63dd545d256ee3da17f2f8ce00e89d08580f7cdbcdc4bb72dac03", + "mathematical_receipt_unchanged": true, + "no_bytecode_generated": true, + "no_new_kappa": true, + "python": "3.14.6 (main, Jun 10 2026, 10:03:53) [Clang 21.0.0 (clang-2100.0.123.102)]", + "relocated_results": [ + { + "cwd": "/", + "exit_code": 0, + "flags": [ + "-I", + "-B" + ], + "stdout": "PASS_FINITE_ADMISSION_DIAGNOSTICS_NOT_NATIVE_SUPPLIER\n{\"charts\": 3, \"guards\": [114, 211], \"defect_bounds\": [662069, 47917], \"conditional_two_level_bits\": 463}\n" + }, + { + "cwd": "/", + "exit_code": 0, + "flags": [ + "-I", + "-B", + "-O" + ], + "stdout": "PASS_FINITE_ADMISSION_DIAGNOSTICS_NOT_NATIVE_SUPPLIER\n{\"charts\": 3, \"guards\": [114, 211], \"defect_bounds\": [662069, 47917], \"conditional_two_level_bits\": 463}\n" + } + ], + "relocation_copy_removed": true, + "status": "PASS_PORTABLE_NORMAL_OPTIMIZED_AND_RELOCATED", + "unchanged_original_checker_sha256": "c5b30e5a3422a61ba560459bf39f27d825d83154f95593672785b2f7ceaa5194" +} diff --git a/research/bit-five-rank4-terminals/admission/inputs/FIVE-TERMINALS-WORD.json.gz b/research/bit-five-rank4-terminals/admission/inputs/FIVE-TERMINALS-WORD.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..aa9ec3c341ad87d7513b9ea6934d5253035b8d30 GIT binary patch literal 105171 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