From 1e9c43ee8dbeeb9aca0e8fdecbf9769db4f4a29e Mon Sep 17 00:00:00 2001 From: Gareth Davidson Date: Tue, 13 Oct 2026 14:06:27 +0100 Subject: [PATCH 1/2] research: compose guarded helper pairs with R439 target compensation --- .../CERTIFICATE.json | 1562 +++++++++ .../r439-two-sided-compensation/CLAIM.json | 57 + .../r439-two-sided-compensation/EXPECTED.json | 1762 ++++++++++ research/r439-two-sided-compensation/LICENSE | 201 ++ .../r439-two-sided-compensation/NOTICE.md | 65 + research/r439-two-sided-compensation/PROOF.md | 141 + .../r439-two-sided-compensation/README.md | 150 + .../r439-two-sided-compensation/SOURCES.json | 51 + .../r439-two-sided-compensation/VALIDATION.md | 74 + research/r439-two-sided-compensation/build.py | 124 + .../candidate.json.gz | Bin 0 -> 39065 bytes .../r439-two-sided-compensation/common.py | 69 + .../r439-two-sided-compensation/native.py | 111 + .../test_package.py | 100 + .../vendor/pr733/README.md | 191 ++ .../vendor/pr915/CERTIFICATE.json | 2775 +++++++++++++++ .../vendor/pr915/EXPECTED.json | 3004 +++++++++++++++++ .../vendor/pr915/LICENSE | 201 ++ .../vendor/pr915/NOTICE.md | 60 + .../vendor/pr915/PROOF.md | 130 + .../vendor/pr915/README.md | 144 + .../vendor/pr915/SOURCES.json | 38 + .../vendor/pr915/candidate.json.gz | Bin 0 -> 38950 bytes .../r439-two-sided-compensation/verify.py | 448 +++ 24 files changed, 11458 insertions(+) create mode 100644 research/r439-two-sided-compensation/CERTIFICATE.json create mode 100644 research/r439-two-sided-compensation/CLAIM.json create mode 100644 research/r439-two-sided-compensation/EXPECTED.json create mode 100644 research/r439-two-sided-compensation/LICENSE create mode 100644 research/r439-two-sided-compensation/NOTICE.md create mode 100644 research/r439-two-sided-compensation/PROOF.md create mode 100644 research/r439-two-sided-compensation/README.md create mode 100644 research/r439-two-sided-compensation/SOURCES.json create mode 100644 research/r439-two-sided-compensation/VALIDATION.md create mode 100644 research/r439-two-sided-compensation/build.py create mode 100644 research/r439-two-sided-compensation/candidate.json.gz create mode 100644 research/r439-two-sided-compensation/common.py create mode 100644 research/r439-two-sided-compensation/native.py create mode 100644 research/r439-two-sided-compensation/test_package.py create mode 100644 research/r439-two-sided-compensation/vendor/pr733/README.md create mode 100644 research/r439-two-sided-compensation/vendor/pr915/CERTIFICATE.json create mode 100644 research/r439-two-sided-compensation/vendor/pr915/EXPECTED.json create mode 100644 research/r439-two-sided-compensation/vendor/pr915/LICENSE create mode 100644 research/r439-two-sided-compensation/vendor/pr915/NOTICE.md create mode 100644 research/r439-two-sided-compensation/vendor/pr915/PROOF.md create mode 100644 research/r439-two-sided-compensation/vendor/pr915/README.md create mode 100644 research/r439-two-sided-compensation/vendor/pr915/SOURCES.json create mode 100644 research/r439-two-sided-compensation/vendor/pr915/candidate.json.gz create mode 100644 research/r439-two-sided-compensation/verify.py diff --git a/research/r439-two-sided-compensation/CERTIFICATE.json b/research/r439-two-sided-compensation/CERTIFICATE.json new file mode 100644 index 0000000000..bdbe161603 --- /dev/null +++ b/research/r439-two-sided-compensation/CERTIFICATE.json @@ -0,0 +1,1562 @@ +{ + "B": 10562318, + "D_adds": 5760, + "F": 71907, + "baseline_sha256": "5642fd0e35a1acc11acff8d0c08350c1617e95f310d4d35ad63a651f9eeeba0b", + "candidate_sha256": "fdb1a0dfafe5392e01fb87f5813737db0f15682c5cb98fc224d4d4cdbc806dd2", + "census_sha256": "0994d83fb946309c93f499b329cca99f7dfc0a8e3d2cd03b5b571e5ab74bb306", + "format": "r439-two-sided/1", + "guard_rejections": [], + "helper_pairs": 192, + "max_pair_gain": 19, + "middle_weight": 4764, + "native_ADDs": 11980, + "nine_stage_prefix_bits": 192, + "overlap_skips": 2106, + "pair_scores": 192282, + "parent_sha256": "6aec2c6f91c87a7440af10cdeb90b8814501224a86de14d4033ae3ffa00899da", + "payload_bits": 102, + "positive_pairs": 2298, + "saved_beyond_parent": 1228, + "seed": 5, + "steps": [ + { + "B": 9534616, + "F": 49743, + "a": 129, + "b": 155, + "gain": 19, + "middle_weight": 6355 + }, + { + "B": 9534616, + "F": 49743, + "a": 58, + "b": 38, + "gain": 19, + "middle_weight": 6334 + }, + { + "B": 9534616, + "F": 49743, + "a": 52, + "b": 62, + "gain": 17, + "middle_weight": 6315 + }, + { + "B": 9534616, + "F": 49939, + "a": 239, + "b": 229, + "gain": 15, + "middle_weight": 6298 + }, + { + "B": 9540838, + "F": 49939, + "a": 123, + "b": 158, + "gain": 15, + "middle_weight": 6281 + }, + { + "B": 9541828, + "F": 49971, + "a": 131, + "b": 149, + "gain": 14, + "middle_weight": 6265 + }, + { + "B": 9541828, + "F": 50067, + "a": 79, + "b": 189, + "gain": 14, + "middle_weight": 6249 + }, + { + "B": 9541828, + "F": 50083, + "a": 434, + "b": 374, + "gain": 14, + "middle_weight": 6233 + }, + { + "B": 9541828, + "F": 50143, + "a": 134, + "b": 98, + "gain": 13, + "middle_weight": 6218 + }, + { + "B": 9541828, + "F": 50143, + "a": 284, + "b": 152, + "gain": 13, + "middle_weight": 6203 + }, + { + "B": 9541828, + "F": 50175, + "a": 84, + "b": 160, + "gain": 13, + "middle_weight": 6188 + }, + { + "B": 9541828, + "F": 50183, + "a": 31, + "b": 7, + "gain": 13, + "middle_weight": 6173 + }, + { + "B": 9541828, + "F": 50279, + "a": 202, + "b": 37, + "gain": 13, + "middle_weight": 6158 + }, + { + "B": 9541828, + "F": 51467, + "a": 196, + "b": 32, + "gain": 13, + "middle_weight": 6143 + }, + { + "B": 9541828, + "F": 51467, + "a": 9, + "b": 237, + "gain": 12, + "middle_weight": 6129 + }, + { + "B": 9541828, + "F": 51599, + "a": 72, + "b": 68, + "gain": 12, + "middle_weight": 6115 + }, + { + "B": 9541828, + "F": 51995, + "a": 101, + "b": 144, + "gain": 12, + "middle_weight": 6101 + }, + { + "B": 9541828, + "F": 51995, + "a": 113, + "b": 142, + "gain": 12, + "middle_weight": 6087 + }, + { + "B": 9541828, + "F": 51995, + "a": 296, + "b": 332, + "gain": 12, + "middle_weight": 6073 + }, + { + "B": 9541828, + "F": 51995, + "a": 266, + "b": 96, + "gain": 12, + "middle_weight": 6059 + }, + { + "B": 9541828, + "F": 52083, + "a": 273, + "b": 126, + "gain": 12, + "middle_weight": 6045 + }, + { + "B": 9597692, + "F": 52171, + "a": 274, + "b": 114, + "gain": 12, + "middle_weight": 6031 + }, + { + "B": 9597692, + "F": 52219, + "a": 63, + "b": 214, + "gain": 11, + "middle_weight": 6018 + }, + { + "B": 9597692, + "F": 52235, + "a": 285, + "b": 133, + "gain": 11, + "middle_weight": 6005 + }, + { + "B": 9597692, + "F": 52295, + "a": 43, + "b": 39, + "gain": 11, + "middle_weight": 5992 + }, + { + "B": 9597692, + "F": 53483, + "a": 212, + "b": 55, + "gain": 11, + "middle_weight": 5979 + }, + { + "B": 9597692, + "F": 53483, + "a": 41, + "b": 192, + "gain": 11, + "middle_weight": 5966 + }, + { + "B": 9597692, + "F": 53483, + "a": 208, + "b": 35, + "gain": 11, + "middle_weight": 5953 + }, + { + "B": 9605606, + "F": 53615, + "a": 169, + "b": 191, + "gain": 11, + "middle_weight": 5940 + }, + { + "B": 9605606, + "F": 53639, + "a": 234, + "b": 15, + "gain": 11, + "middle_weight": 5927 + }, + { + "B": 9605606, + "F": 53639, + "a": 390, + "b": 403, + "gain": 11, + "middle_weight": 5914 + }, + { + "B": 9605606, + "F": 54827, + "a": 16, + "b": 26, + "gain": 11, + "middle_weight": 5901 + }, + { + "B": 9605606, + "F": 54895, + "a": 199, + "b": 50, + "gain": 10, + "middle_weight": 5889 + }, + { + "B": 9610476, + "F": 55023, + "a": 182, + "b": 73, + "gain": 10, + "middle_weight": 5877 + }, + { + "B": 9610476, + "F": 55023, + "a": 203, + "b": 36, + "gain": 10, + "middle_weight": 5865 + }, + { + "B": 9610476, + "F": 55023, + "a": 377, + "b": 437, + "gain": 10, + "middle_weight": 5853 + }, + { + "B": 9610476, + "F": 55023, + "a": 309, + "b": 346, + "gain": 10, + "middle_weight": 5841 + }, + { + "B": 9610476, + "F": 55119, + "a": 371, + "b": 409, + "gain": 10, + "middle_weight": 5829 + }, + { + "B": 9650838, + "F": 55179, + "a": 115, + "b": 151, + "gain": 10, + "middle_weight": 5817 + }, + { + "B": 9650838, + "F": 55223, + "a": 12, + "b": 30, + "gain": 10, + "middle_weight": 5805 + }, + { + "B": 9650838, + "F": 55271, + "a": 209, + "b": 51, + "gain": 10, + "middle_weight": 5793 + }, + { + "B": 9650838, + "F": 55271, + "a": 236, + "b": 5, + "gain": 10, + "middle_weight": 5781 + }, + { + "B": 9650838, + "F": 55279, + "a": 195, + "b": 211, + "gain": 9, + "middle_weight": 5770 + }, + { + "B": 9654018, + "F": 55279, + "a": 314, + "b": 42, + "gain": 9, + "middle_weight": 5759 + }, + { + "B": 9654018, + "F": 55279, + "a": 18, + "b": 1, + "gain": 9, + "middle_weight": 5748 + }, + { + "B": 9654018, + "F": 55295, + "a": 122, + "b": 103, + "gain": 9, + "middle_weight": 5737 + }, + { + "B": 9662752, + "F": 55295, + "a": 94, + "b": 171, + "gain": 9, + "middle_weight": 5726 + }, + { + "B": 9662752, + "F": 55295, + "a": 429, + "b": 381, + "gain": 9, + "middle_weight": 5715 + }, + { + "B": 9662752, + "F": 55363, + "a": 46, + "b": 205, + "gain": 9, + "middle_weight": 5704 + }, + { + "B": 9667326, + "F": 55543, + "a": 54, + "b": 217, + "gain": 9, + "middle_weight": 5693 + }, + { + "B": 9679936, + "F": 55567, + "a": 139, + "b": 99, + "gain": 9, + "middle_weight": 5682 + }, + { + "B": 9679936, + "F": 55567, + "a": 364, + "b": 327, + "gain": 9, + "middle_weight": 5671 + }, + { + "B": 9679936, + "F": 55567, + "a": 125, + "b": 146, + "gain": 9, + "middle_weight": 5660 + }, + { + "B": 9679936, + "F": 55903, + "a": 29, + "b": 69, + "gain": 8, + "middle_weight": 5650 + }, + { + "B": 9693366, + "F": 55947, + "a": 64, + "b": 87, + "gain": 8, + "middle_weight": 5640 + }, + { + "B": 9696008, + "F": 55947, + "a": 66, + "b": 82, + "gain": 8, + "middle_weight": 5630 + }, + { + "B": 9696008, + "F": 56171, + "a": 85, + "b": 170, + "gain": 8, + "middle_weight": 5620 + }, + { + "B": 9696008, + "F": 56171, + "a": 227, + "b": 28, + "gain": 8, + "middle_weight": 5610 + }, + { + "B": 9696008, + "F": 56231, + "a": 351, + "b": 315, + "gain": 8, + "middle_weight": 5600 + }, + { + "B": 9696008, + "F": 56363, + "a": 25, + "b": 21, + "gain": 8, + "middle_weight": 5590 + }, + { + "B": 9696008, + "F": 56543, + "a": 154, + "b": 105, + "gain": 8, + "middle_weight": 5580 + }, + { + "B": 9696008, + "F": 56543, + "a": 392, + "b": 416, + "gain": 8, + "middle_weight": 5570 + }, + { + "B": 9696008, + "F": 56543, + "a": 80, + "b": 74, + "gain": 8, + "middle_weight": 5560 + }, + { + "B": 9696008, + "F": 56543, + "a": 232, + "b": 23, + "gain": 8, + "middle_weight": 5550 + }, + { + "B": 9696008, + "F": 56543, + "a": 336, + "b": 295, + "gain": 8, + "middle_weight": 5540 + }, + { + "B": 9696008, + "F": 56591, + "a": 40, + "b": 193, + "gain": 8, + "middle_weight": 5530 + }, + { + "B": 9696008, + "F": 56607, + "a": 112, + "b": 124, + "gain": 8, + "middle_weight": 5520 + }, + { + "B": 9696008, + "F": 56607, + "a": 260, + "b": 281, + "gain": 8, + "middle_weight": 5510 + }, + { + "B": 9696008, + "F": 56703, + "a": 91, + "b": 70, + "gain": 8, + "middle_weight": 5500 + }, + { + "B": 9696008, + "F": 56771, + "a": 83, + "b": 172, + "gain": 8, + "middle_weight": 5490 + }, + { + "B": 9881228, + "F": 57167, + "a": 110, + "b": 120, + "gain": 8, + "middle_weight": 5480 + }, + { + "B": 9881228, + "F": 57191, + "a": 404, + "b": 389, + "gain": 7, + "middle_weight": 5471 + }, + { + "B": 9924566, + "F": 57191, + "a": 27, + "b": 17, + "gain": 7, + "middle_weight": 5462 + }, + { + "B": 9930372, + "F": 57287, + "a": 44, + "b": 197, + "gain": 7, + "middle_weight": 5453 + }, + { + "B": 9946174, + "F": 57683, + "a": 14, + "b": 235, + "gain": 7, + "middle_weight": 5444 + }, + { + "B": 9946174, + "F": 57695, + "a": 337, + "b": 306, + "gain": 7, + "middle_weight": 5435 + }, + { + "B": 9946174, + "F": 57695, + "a": 419, + "b": 395, + "gain": 7, + "middle_weight": 5426 + }, + { + "B": 9946174, + "F": 57695, + "a": 258, + "b": 316, + "gain": 7, + "middle_weight": 5417 + }, + { + "B": 9946174, + "F": 57695, + "a": 391, + "b": 420, + "gain": 7, + "middle_weight": 5408 + }, + { + "B": 9946174, + "F": 57695, + "a": 369, + "b": 415, + "gain": 7, + "middle_weight": 5399 + }, + { + "B": 9946174, + "F": 57779, + "a": 92, + "b": 180, + "gain": 7, + "middle_weight": 5390 + }, + { + "B": 9946174, + "F": 57779, + "a": 270, + "b": 119, + "gain": 7, + "middle_weight": 5381 + }, + { + "B": 9950752, + "F": 57779, + "a": 102, + "b": 132, + "gain": 7, + "middle_weight": 5372 + }, + { + "B": 9957362, + "F": 57875, + "a": 220, + "b": 34, + "gain": 7, + "middle_weight": 5363 + }, + { + "B": 9957362, + "F": 57939, + "a": 375, + "b": 435, + "gain": 7, + "middle_weight": 5354 + }, + { + "B": 9957362, + "F": 58051, + "a": 426, + "b": 367, + "gain": 6, + "middle_weight": 5346 + }, + { + "B": 9957362, + "F": 58867, + "a": 173, + "b": 89, + "gain": 6, + "middle_weight": 5338 + }, + { + "B": 9957362, + "F": 58935, + "a": 300, + "b": 430, + "gain": 6, + "middle_weight": 5330 + }, + { + "B": 9957362, + "F": 62103, + "a": 176, + "b": 67, + "gain": 6, + "middle_weight": 5322 + }, + { + "B": 9957362, + "F": 62131, + "a": 178, + "b": 75, + "gain": 6, + "middle_weight": 5314 + }, + { + "B": 9957362, + "F": 62607, + "a": 78, + "b": 188, + "gain": 6, + "middle_weight": 5306 + }, + { + "B": 9957362, + "F": 62607, + "a": 282, + "b": 0, + "gain": 6, + "middle_weight": 5298 + }, + { + "B": 9957362, + "F": 62703, + "a": 393, + "b": 417, + "gain": 6, + "middle_weight": 5290 + }, + { + "B": 9961796, + "F": 63099, + "a": 372, + "b": 421, + "gain": 6, + "middle_weight": 5282 + }, + { + "B": 9961796, + "F": 63099, + "a": 345, + "b": 310, + "gain": 6, + "middle_weight": 5274 + }, + { + "B": 9976818, + "F": 63219, + "a": 216, + "b": 45, + "gain": 6, + "middle_weight": 5266 + }, + { + "B": 9976818, + "F": 63615, + "a": 223, + "b": 49, + "gain": 6, + "middle_weight": 5258 + }, + { + "B": 9976818, + "F": 63631, + "a": 330, + "b": 361, + "gain": 6, + "middle_weight": 5250 + }, + { + "B": 9976818, + "F": 63663, + "a": 432, + "b": 379, + "gain": 6, + "middle_weight": 5242 + }, + { + "B": 9976818, + "F": 63663, + "a": 230, + "b": 2, + "gain": 6, + "middle_weight": 5234 + }, + { + "B": 9976818, + "F": 63663, + "a": 53, + "b": 219, + "gain": 6, + "middle_weight": 5226 + }, + { + "B": 9976818, + "F": 64011, + "a": 22, + "b": 233, + "gain": 6, + "middle_weight": 5218 + }, + { + "B": 9976818, + "F": 64011, + "a": 408, + "b": 385, + "gain": 6, + "middle_weight": 5210 + }, + { + "B": 9976818, + "F": 64011, + "a": 305, + "b": 341, + "gain": 5, + "middle_weight": 5203 + }, + { + "B": 9976818, + "F": 64043, + "a": 376, + "b": 436, + "gain": 5, + "middle_weight": 5196 + }, + { + "B": 9976818, + "F": 64043, + "a": 57, + "b": 47, + "gain": 5, + "middle_weight": 5189 + }, + { + "B": 9976818, + "F": 64171, + "a": 422, + "b": 402, + "gain": 5, + "middle_weight": 5182 + }, + { + "B": 9976818, + "F": 64171, + "a": 378, + "b": 433, + "gain": 5, + "middle_weight": 5175 + }, + { + "B": 9976818, + "F": 65359, + "a": 410, + "b": 398, + "gain": 5, + "middle_weight": 5168 + }, + { + "B": 9976818, + "F": 65359, + "a": 231, + "b": 3, + "gain": 5, + "middle_weight": 5161 + }, + { + "B": 9976818, + "F": 65403, + "a": 174, + "b": 77, + "gain": 5, + "middle_weight": 5154 + }, + { + "B": 9976818, + "F": 65651, + "a": 226, + "b": 238, + "gain": 5, + "middle_weight": 5147 + }, + { + "B": 9977636, + "F": 65667, + "a": 147, + "b": 143, + "gain": 5, + "middle_weight": 5140 + }, + { + "B": 9977636, + "F": 65667, + "a": 370, + "b": 423, + "gain": 5, + "middle_weight": 5133 + }, + { + "B": 9981136, + "F": 65667, + "a": 251, + "b": 118, + "gain": 5, + "middle_weight": 5126 + }, + { + "B": 9981136, + "F": 65667, + "a": 407, + "b": 386, + "gain": 5, + "middle_weight": 5119 + }, + { + "B": 9981136, + "F": 65675, + "a": 104, + "b": 308, + "gain": 5, + "middle_weight": 5112 + }, + { + "B": 9981136, + "F": 65807, + "a": 322, + "b": 90, + "gain": 5, + "middle_weight": 5105 + }, + { + "B": 9981136, + "F": 65831, + "a": 293, + "b": 347, + "gain": 5, + "middle_weight": 5098 + }, + { + "B": 9981136, + "F": 65831, + "a": 283, + "b": 224, + "gain": 5, + "middle_weight": 5091 + }, + { + "B": 9981136, + "F": 65831, + "a": 140, + "b": 111, + "gain": 5, + "middle_weight": 5084 + }, + { + "B": 9990620, + "F": 65855, + "a": 33, + "b": 206, + "gain": 5, + "middle_weight": 5077 + }, + { + "B": 9990620, + "F": 65939, + "a": 225, + "b": 4, + "gain": 5, + "middle_weight": 5070 + }, + { + "B": 10004594, + "F": 65975, + "a": 400, + "b": 181, + "gain": 4, + "middle_weight": 5064 + }, + { + "B": 10030054, + "F": 66195, + "a": 183, + "b": 179, + "gain": 4, + "middle_weight": 5058 + }, + { + "B": 10063010, + "F": 66207, + "a": 109, + "b": 107, + "gain": 4, + "middle_weight": 5052 + }, + { + "B": 10063010, + "F": 66279, + "a": 401, + "b": 413, + "gain": 4, + "middle_weight": 5046 + }, + { + "B": 10063010, + "F": 66279, + "a": 247, + "b": 257, + "gain": 4, + "middle_weight": 5040 + }, + { + "B": 10100554, + "F": 66279, + "a": 11, + "b": 20, + "gain": 4, + "middle_weight": 5034 + }, + { + "B": 10100554, + "F": 66279, + "a": 333, + "b": 297, + "gain": 4, + "middle_weight": 5028 + }, + { + "B": 10103474, + "F": 66287, + "a": 145, + "b": 100, + "gain": 4, + "middle_weight": 5022 + }, + { + "B": 10169470, + "F": 66467, + "a": 156, + "b": 141, + "gain": 4, + "middle_weight": 5016 + }, + { + "B": 10171312, + "F": 66647, + "a": 397, + "b": 414, + "gain": 4, + "middle_weight": 5010 + }, + { + "B": 10171312, + "F": 66647, + "a": 320, + "b": 162, + "gain": 4, + "middle_weight": 5004 + }, + { + "B": 10171312, + "F": 66647, + "a": 252, + "b": 287, + "gain": 4, + "middle_weight": 4998 + }, + { + "B": 10171312, + "F": 66731, + "a": 190, + "b": 71, + "gain": 4, + "middle_weight": 4992 + }, + { + "B": 10195316, + "F": 66819, + "a": 198, + "b": 24, + "gain": 4, + "middle_weight": 4986 + }, + { + "B": 10196346, + "F": 66879, + "a": 60, + "b": 213, + "gain": 4, + "middle_weight": 4980 + }, + { + "B": 10196346, + "F": 66879, + "a": 384, + "b": 427, + "gain": 4, + "middle_weight": 4974 + }, + { + "B": 10208598, + "F": 67023, + "a": 186, + "b": 161, + "gain": 3, + "middle_weight": 4969 + }, + { + "B": 10208598, + "F": 67023, + "a": 354, + "b": 313, + "gain": 3, + "middle_weight": 4964 + }, + { + "B": 10373362, + "F": 67055, + "a": 271, + "b": 128, + "gain": 3, + "middle_weight": 4959 + }, + { + "B": 10373362, + "F": 67123, + "a": 365, + "b": 326, + "gain": 3, + "middle_weight": 4954 + }, + { + "B": 10373362, + "F": 67147, + "a": 157, + "b": 116, + "gain": 3, + "middle_weight": 4949 + }, + { + "B": 10502550, + "F": 67543, + "a": 168, + "b": 61, + "gain": 3, + "middle_weight": 4944 + }, + { + "B": 10502550, + "F": 67551, + "a": 318, + "b": 349, + "gain": 3, + "middle_weight": 4939 + }, + { + "B": 10502550, + "F": 67551, + "a": 335, + "b": 200, + "gain": 3, + "middle_weight": 4934 + }, + { + "B": 10502550, + "F": 67551, + "a": 290, + "b": 76, + "gain": 3, + "middle_weight": 4929 + }, + { + "B": 10503806, + "F": 67551, + "a": 256, + "b": 242, + "gain": 3, + "middle_weight": 4924 + }, + { + "B": 10503806, + "F": 67551, + "a": 355, + "b": 324, + "gain": 3, + "middle_weight": 4919 + }, + { + "B": 10505666, + "F": 67551, + "a": 108, + "b": 130, + "gain": 3, + "middle_weight": 4914 + }, + { + "B": 10505666, + "F": 67583, + "a": 294, + "b": 276, + "gain": 3, + "middle_weight": 4909 + }, + { + "B": 10505666, + "F": 67611, + "a": 304, + "b": 321, + "gain": 3, + "middle_weight": 4904 + }, + { + "B": 10505666, + "F": 67655, + "a": 338, + "b": 302, + "gain": 3, + "middle_weight": 4899 + }, + { + "B": 10522288, + "F": 67655, + "a": 288, + "b": 153, + "gain": 3, + "middle_weight": 4894 + }, + { + "B": 10522288, + "F": 67655, + "a": 424, + "b": 298, + "gain": 3, + "middle_weight": 4889 + }, + { + "B": 10522288, + "F": 67679, + "a": 175, + "b": 86, + "gain": 2, + "middle_weight": 4885 + }, + { + "B": 10522288, + "F": 67679, + "a": 253, + "b": 246, + "gain": 2, + "middle_weight": 4881 + }, + { + "B": 10522288, + "F": 67679, + "a": 396, + "b": 350, + "gain": 2, + "middle_weight": 4877 + }, + { + "B": 10522288, + "F": 67687, + "a": 323, + "b": 106, + "gain": 2, + "middle_weight": 4873 + }, + { + "B": 10546868, + "F": 67703, + "a": 167, + "b": 88, + "gain": 2, + "middle_weight": 4869 + }, + { + "B": 10546868, + "F": 67731, + "a": 277, + "b": 262, + "gain": 2, + "middle_weight": 4865 + }, + { + "B": 10546868, + "F": 67731, + "a": 254, + "b": 245, + "gain": 2, + "middle_weight": 4861 + }, + { + "B": 10546868, + "F": 67731, + "a": 222, + "b": 248, + "gain": 2, + "middle_weight": 4857 + }, + { + "B": 10546868, + "F": 67731, + "a": 411, + "b": 399, + "gain": 2, + "middle_weight": 4853 + }, + { + "B": 10546868, + "F": 68127, + "a": 275, + "b": 127, + "gain": 2, + "middle_weight": 4849 + }, + { + "B": 10546868, + "F": 68247, + "a": 368, + "b": 221, + "gain": 2, + "middle_weight": 4845 + }, + { + "B": 10546868, + "F": 68319, + "a": 207, + "b": 268, + "gain": 2, + "middle_weight": 4841 + }, + { + "B": 10551326, + "F": 68343, + "a": 187, + "b": 95, + "gain": 2, + "middle_weight": 4837 + }, + { + "B": 10551326, + "F": 68391, + "a": 418, + "b": 394, + "gain": 2, + "middle_weight": 4833 + }, + { + "B": 10551326, + "F": 68391, + "a": 280, + "b": 261, + "gain": 2, + "middle_weight": 4829 + }, + { + "B": 10551326, + "F": 68399, + "a": 359, + "b": 81, + "gain": 2, + "middle_weight": 4825 + }, + { + "B": 10555848, + "F": 68399, + "a": 362, + "b": 329, + "gain": 2, + "middle_weight": 4821 + }, + { + "B": 10555848, + "F": 68399, + "a": 405, + "b": 159, + "gain": 1, + "middle_weight": 4818 + }, + { + "B": 10557070, + "F": 68415, + "a": 267, + "b": 6, + "gain": 1, + "middle_weight": 4815 + }, + { + "B": 10557070, + "F": 68547, + "a": 387, + "b": 406, + "gain": 1, + "middle_weight": 4812 + }, + { + "B": 10557070, + "F": 68723, + "a": 438, + "b": 373, + "gain": 1, + "middle_weight": 4809 + }, + { + "B": 10557070, + "F": 68723, + "a": 356, + "b": 163, + "gain": 1, + "middle_weight": 4806 + }, + { + "B": 10557070, + "F": 68859, + "a": 382, + "b": 331, + "gain": 1, + "middle_weight": 4803 + }, + { + "B": 10557070, + "F": 71235, + "a": 428, + "b": 380, + "gain": 1, + "middle_weight": 4800 + }, + { + "B": 10557070, + "F": 71235, + "a": 286, + "b": 150, + "gain": 1, + "middle_weight": 4797 + }, + { + "B": 10557070, + "F": 71267, + "a": 366, + "b": 325, + "gain": 1, + "middle_weight": 4794 + }, + { + "B": 10557070, + "F": 71295, + "a": 259, + "b": 250, + "gain": 1, + "middle_weight": 4791 + }, + { + "B": 10560744, + "F": 71295, + "a": 319, + "b": 360, + "gain": 1, + "middle_weight": 4788 + }, + { + "B": 10560744, + "F": 71339, + "a": 291, + "b": 19, + "gain": 1, + "middle_weight": 4785 + }, + { + "B": 10560744, + "F": 71339, + "a": 241, + "b": 240, + "gain": 1, + "middle_weight": 4782 + }, + { + "B": 10560744, + "F": 71347, + "a": 263, + "b": 264, + "gain": 1, + "middle_weight": 4779 + }, + { + "B": 10560744, + "F": 71479, + "a": 339, + "b": 303, + "gain": 1, + "middle_weight": 4776 + }, + { + "B": 10560744, + "F": 71479, + "a": 117, + "b": 121, + "gain": 1, + "middle_weight": 4773 + }, + { + "B": 10562318, + "F": 71511, + "a": 352, + "b": 48, + "gain": 1, + "middle_weight": 4770 + }, + { + "B": 10562318, + "F": 71511, + "a": 353, + "b": 317, + "gain": 1, + "middle_weight": 4767 + }, + { + "B": 10562318, + "F": 71907, + "a": 312, + "b": 348, + "gain": 1, + "middle_weight": 4764 + } + ], + "stopping_reason": "completed one sorted disjoint greedy pass on all positive ordered pairs", + "target_shears": 306 +} diff --git a/research/r439-two-sided-compensation/CLAIM.json b/research/r439-two-sided-compensation/CLAIM.json new file mode 100644 index 0000000000..513f2c3cb0 --- /dev/null +++ b/research/r439-two-sided-compensation/CLAIM.json @@ -0,0 +1,57 @@ +{ + "pass": 11, + "assignment_seed": 5, + "drawn_at_utc": "2026-10-13T12:26:24.184229+00:00", + "track": "bit supplier", + "source": "secrets.randbelow(100), OS randomness", + "base": "91a2094f2e022930069e8cfdc810a3ea1b81cd09", + "branch": "research/pass11-bit-seed05", + "status": "claimed", + "claimed_at_utc": "2026-10-13T12:36:24.399839+00:00", + "candidate_selection": "Seed 5 modulo 3 selects candidate 2; seed 5 fixes the helper-pair tie order.", + "candidates": [ + { + "object": "Reduce P111 copied rank below 63 with fixed label functionals", + "chosen": false, + "reason": "The fixed class is closed by PR757/761 and PR620." + }, + { + "object": "Append another strictly profitable target shear to PR915", + "chosen": false, + "reason": "PR915 exhausts the 12,210 final one-shear choices and finds maximum paid gain zero." + }, + { + "object": "Two-sided R439 compensation with disjoint helper pairs around the frozen PR915 target basis", + "chosen": true, + "method": "Score helper-column pairs on the actual transformed matrix. Select a deterministic disjoint set, paying both helper shears and admitting only complete positive bounds below the existing local and nine-stage prefix ceilings." + } + ], + "statement": "Keep PR915 target basis fixed and add disjoint restored helper-basis pairs. Form the actual two-sided middle matrix, preserve the complete arbitrary-input D boundary, and count every operation. Compare accepted PR589, pinned PR915 and the composition separately.", + "domain": "All 439*438 = 192,282 ordered helper pairs on the frozen 111-by-439 transformed compensation matrix. One sorted greedy disjoint pass with seed-5 tie order, at most 219 accepted pairs. No target-basis reselection, neutral detours or global matching optimality claim.", + "admission": "The complete word must satisfy 64*F^3*B^2 < 2^104 and 2^18*F^5*B^4 < 2^192. Both F and B are recomputed for the combined word; parent bounds or standalone savings are not added.", + "optimistic_complete_cost": "Starting from 13,208 native ADDs and 6,988 D ADDs: replace the 6,376 helper injections by the actual transformed matrix weight, and add two ADDs per helper pair. The 612 target-basis operations, other 6,220 ADDs, frame moves and nine copies are all retained.", + "stopping_rule": "Complete the ordered-pair census and one guarded disjoint greedy pass. Stop at its end. At most one evidence-driven pivot if the fully charged candidate does not improve its parent.", + "expected_finish": "Approximately 120 minutes, with the final quarter reserved for validation and handoff.", + "coordination": "No pinned sprint coordination issue was found. Current issues #650 and #913 concern Discussions and prose quality. The local claim is separate from the frozen 18-PR review batch.", + "predecessors": { + "915": { + "head": "e9daefe320a0043000bd9746664ed02c3287d056", + "mathematical_head": "7d5ef1dcf994d0542f2d302110b33780f5504ab7", + "use": "Exact frozen target basis and candidate; revalidate its boundary and native bill." + }, + "733": { + "head": "dfe84e09298abc5c5e0074afda59a821e10abfb4", + "author": "Scott Woolsey Biggart", + "use": "Prior two-sided F2 conjugation and mixed-term obligation on R420." + }, + "694": "Greer Guthrie, disjoint restored helper pairs", + "794": "commdata2338, guarded target-basis method", + "917": "Ross Richardson, concurrent two-sided CK compensation in another field/word; no executable or saving imported." + }, + "overlap": { + "open_count": 707, + "latest": 917, + "new_main": "91a2094f freezes an 18-PR follow-up review batch; selected PR799/PR589 result is unchanged. This contribution does not edit that batch or claim approval." + }, + "scope": "Finite construction with the semantic D-boundary contract already required by PR915. Integration still requires acceptance of that contract and a complete updated hosted reconstruction/invoice. No new kappa or measured runtime speedup." +} diff --git a/research/r439-two-sided-compensation/EXPECTED.json b/research/r439-two-sided-compensation/EXPECTED.json new file mode 100644 index 0000000000..eed21b81f5 --- /dev/null +++ b/research/r439-two-sided-compensation/EXPECTED.json @@ -0,0 +1,1762 @@ +{ + "baseline_sha256": "5642fd0e35a1acc11acff8d0c08350c1617e95f310d4d35ad63a651f9eeeba0b", + "bills": { + "baseline": { + "B": 1113070, + "D_adds": 18085, + "F": 49347, + "native_ADDs": 24305, + "nine_stage_prefix_bits": 177, + "payload_bits": 93 + }, + "candidate": { + "B": 10562318, + "D_adds": 5760, + "F": 71907, + "native_ADDs": 11980, + "nine_stage_prefix_bits": 192, + "payload_bits": 102 + }, + "parent": { + "B": 9534616, + "D_adds": 6988, + "F": 49347, + "native_ADDs": 13208, + "nine_stage_prefix_bits": 189, + "payload_bits": 100 + } + }, + "boundary_columns": 661, + "boundary_words_and_directions": 6, + "candidate_sha256": "fdb1a0dfafe5392e01fb87f5813737db0f15682c5cb98fc224d4d4cdbc806dd2", + "certificate_sha256": "fa9f0223ec67a7f6f448d33448814f455705a31a4bab19bb03d54e33d1b6829d", + "controls": { + "paid_neutral_helper_pair": 2, + "rejected": [ + "missing target preparation passes helper-only columns", + "missing helper preparation passes clean-helper inputs", + "missing helper restoration", + "missing target restoration", + "omitted mixed term", + "stale one-sided middle matrix", + "wrong direction of helper-column change", + "target restoration in forward order", + "nonzero D frame", + "D writes source", + "D reads source", + "helper reads target", + "unpaid helper restoration", + "inherited parent forward bound", + "local payload ceiling equality", + "nine-stage overrun below local cap", + "overlapping helper pairs", + "boolean helper index", + "unrelated cleanup change" + ] + }, + "matrix": { + "coefficients_checked": 48729, + "helper_only_D_cost_for_same_pairs": 14156, + "helper_only_middle_weight_for_same_pairs": 13772, + "mixed_term_nonzeros": 7031 + }, + "native": { + "baseline": { + "common_frame_ADDs": 24305, + "copies": 9, + "erasures": 9, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 27234, + "staged": { + "11": { + "bridge_additions": 2664, + "controls_rejected": 24, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 45, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 10 + } + ] + }, + "5": { + "bridge_additions": 666, + "controls_rejected": 6, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 18, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 4 + } + ] + }, + "9": { + "bridge_additions": 1998, + "controls_rejected": 18, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 36, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 8 + } + ] + } + } + }, + "candidate": { + "common_frame_ADDs": 11980, + "copies": 9, + "erasures": 9, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 14909, + "staged": { + "11": { + "bridge_additions": 2664, + "controls_rejected": 24, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 102, + "payload_prefix_upper": "2654678678257550221373682862848", + "reverse_fresh_center_copies": 45, + "signed_lift_prefix": [ + { + "bits": 17, + "cancellation_free_signed_row_l1_upper": "71907", + "reverse": false + }, + { + "bits": 24, + "cancellation_free_signed_row_l1_upper": "10562318", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": false, + "stage": 10 + } + ] + }, + "5": { + "bridge_additions": 666, + "controls_rejected": 6, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 102, + "payload_prefix_upper": "2654678678257550221373682862848", + "reverse_fresh_center_copies": 18, + "signed_lift_prefix": [ + { + "bits": 17, + "cancellation_free_signed_row_l1_upper": "71907", + "reverse": false + }, + { + "bits": 24, + "cancellation_free_signed_row_l1_upper": "10562318", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": false, + "stage": 4 + } + ] + }, + "9": { + "bridge_additions": 1998, + "controls_rejected": 18, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 102, + "payload_prefix_upper": "2654678678257550221373682862848", + "reverse_fresh_center_copies": 36, + "signed_lift_prefix": [ + { + "bits": 17, + "cancellation_free_signed_row_l1_upper": "71907", + "reverse": false + }, + { + "bits": 24, + "cancellation_free_signed_row_l1_upper": "10562318", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 11980, + "signed_inverse": false, + "stage": 8 + } + ] + } + } + }, + "parent": { + "common_frame_ADDs": 13208, + "copies": 9, + "erasures": 9, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 16137, + "staged": { + "11": { + "bridge_additions": 2664, + "controls_rejected": 24, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 100, + "payload_prefix_upper": "699147249763640764132165496832", + "reverse_fresh_center_copies": 45, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 24, + "cancellation_free_signed_row_l1_upper": "9534616", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 10 + } + ] + }, + "5": { + "bridge_additions": 666, + "controls_rejected": 6, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 100, + "payload_prefix_upper": "699147249763640764132165496832", + "reverse_fresh_center_copies": 18, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 24, + "cancellation_free_signed_row_l1_upper": "9534616", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 4 + } + ] + }, + "9": { + "bridge_additions": 1998, + "controls_rejected": 18, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 100, + "payload_prefix_upper": "699147249763640764132165496832", + "reverse_fresh_center_copies": 36, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 24, + "cancellation_free_signed_row_l1_upper": "9534616", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 8 + } + ] + } + } + } + }, + "nine_stage_prefix_bound": { + "baseline": { + "bits": 177, + "bound": "117742596540718658156527847560864213734191286190080000" + }, + "candidate": { + "bits": 192, + "bound": "6272385284143355252940491378432965655169900286360795742208" + }, + "formula": "2^18 * F^5 * B^4", + "parent": { + "bits": 189, + "bound": "633952218342189222305933054575935669674977721489175871488" + }, + "source_charge_bits": 192 + }, + "parent_sha256": "6aec2c6f91c87a7440af10cdeb90b8814501224a86de14d4033ae3ffa00899da", + "predecessor_files": { + "vendor/pr733/README.md": "af2d829749b369ef4bcda42a3fbaef20652121663a61f7242fb988e0f63e2d1c", + "vendor/pr915/CERTIFICATE.json": "a9958d9a933b57dcb9f7e5cf8e9694c0762f055a1cdab9f8ab42b2c6561fc4d7", + "vendor/pr915/EXPECTED.json": "5607287aab393ed6e95a76f69c1a2c02ef271a6ae901e2448ad7858a501884ba", + "vendor/pr915/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/pr915/NOTICE.md": "efbb1d2b2c85cbdbb7b048e2b7405e0654dfa40ddf6a1e94f11df313bdedb638", + "vendor/pr915/PROOF.md": "ddb5c3affbef52fa37af13b291bf089ca16f9dfe976e5a5590188b128b262425", + "vendor/pr915/README.md": "0c606598a6366bc0e6840d853c28237f8e5fe5866d89765d79815f973224f1fd", + "vendor/pr915/SOURCES.json": "abee8b99a79fce8a53ea7522ec490200ad0585093684b13883af1dec337158f0", + "vendor/pr915/candidate.json.gz": "ac30266144f8772ec8cd629153993aa9eb692fe745a9f95015a1b7fa88977a2e" + }, + "recipe": { + "guard_rejections": 0, + "helper_pairs": 192, + "literal_prefix_instructions_checked": 4760850, + "max_pair_gain": 19, + "middle_weight": 4764, + "overlap_skips": 2106, + "pair_scores": 192282, + "positive_pairs": 2298, + "saved_beyond_parent": 1228, + "target_shears": 306 + }, + "source_checks": { + "baseline": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": true, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 2075, + "B": 712, + "C": 2574, + "D": 111 + }, + "scatter_terms": 527, + "totals": [ + { + "frame": 510, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 472 + }, + { + "frame": 511, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + -1 + ], + "rank": 7, + "register": 473 + }, + { + "frame": 512, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + 0, + -1, + -1, + 0 + ], + "rank": 7, + "register": 474 + }, + { + "frame": 513, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + 0, + 1, + -1, + 0 + ], + "rank": 7, + "register": 475 + }, + { + "frame": 514, + "hyperplane_of_punctured_line": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "rank": 7, + "register": 476 + }, + { + "frame": 515, + "hyperplane_of_punctured_line": [ + 1, + 1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "rank": 7, + "register": 477 + }, + { + "frame": 516, + "hyperplane_of_punctured_line": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 478 + }, + { + "frame": 517, + "hyperplane_of_punctured_line": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + -1 + ], + "rank": 7, + "register": 479 + }, + { + "frame": 518, + "hyperplane_of_punctured_line": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + -1 + ], + "rank": 7, + "register": 480 + } + ] + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": true, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "info": { + "B_target_reads_of_registers_rewritten_earlier_in_B": 111, + "B_z_operand_kinds": { + "helper<-helper": 3, + "helper<-source": 13, + "source<-helper": 108, + "source<-source": 375 + }, + "B_z_operand_kinds_by_dim": { + "dim4:helper<-source": 13, + "dim4:source<-source": 375, + "dim6:helper<-helper": 3, + "dim6:source<-helper": 108 + }, + "B_z_write_frame_dims": { + "4": 388, + "6": 111 + }, + "B_z_writes_after_a_target_read_of_the_same_register": 454, + "cleanup_gates": 2574, + "helper_writes_B": 16, + "source_writes_A": 0, + "source_writes_B": 483, + "sources_rewritten_B": 108, + "target_reads_of_targets": 0, + "z_gates_A": 2075, + "z_gates_B": 499 + }, + "labels": { + "frames": 636, + "gram_det": 1, + "labels": 111, + "lattice_rank": 8, + "punctured": 9, + "root_lines": 120 + } + }, + "candidate": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": false, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 2075, + "B": 712, + "C": 2574, + "D": 1107 + }, + "scatter_terms": 527, + "totals": [ + { + "frame": 510, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 472 + }, + { + "frame": 511, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + -1 + ], + "rank": 7, + "register": 473 + }, + { + "frame": 512, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + 0, + -1, + -1, + 0 + ], + "rank": 7, + "register": 474 + }, + { + "frame": 513, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + 0, + 1, + -1, + 0 + ], + "rank": 7, + "register": 475 + }, + { + "frame": 514, + "hyperplane_of_punctured_line": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "rank": 7, + "register": 476 + }, + { + "frame": 515, + "hyperplane_of_punctured_line": [ + 1, + 1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "rank": 7, + "register": 477 + }, + { + "frame": 516, + "hyperplane_of_punctured_line": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 478 + }, + { + "frame": 517, + "hyperplane_of_punctured_line": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + -1 + ], + "rank": 7, + "register": 479 + }, + { + "frame": 518, + "hyperplane_of_punctured_line": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + -1 + ], + "rank": 7, + "register": 480 + } + ] + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": false, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "info": { + "B_target_reads_of_registers_rewritten_earlier_in_B": 111, + "B_z_operand_kinds": { + "helper<-helper": 3, + "helper<-source": 13, + "source<-helper": 108, + "source<-source": 375 + }, + "B_z_operand_kinds_by_dim": { + "dim4:helper<-source": 13, + "dim4:source<-source": 375, + "dim6:helper<-helper": 3, + "dim6:source<-helper": 108 + }, + "B_z_write_frame_dims": { + "4": 388, + "6": 111 + }, + "B_z_writes_after_a_target_read_of_the_same_register": 454, + "cleanup_gates": 2574, + "helper_writes_B": 16, + "source_writes_A": 0, + "source_writes_B": 483, + "sources_rewritten_B": 108, + "target_reads_of_targets": 0, + "z_gates_A": 2075, + "z_gates_B": 499 + }, + "labels": { + "frames": 636, + "gram_det": 1, + "labels": 111, + "lattice_rank": 8, + "punctured": 9, + "root_lines": 120 + } + }, + "parent": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": false, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 2075, + "B": 712, + "C": 2574, + "D": 723 + }, + "scatter_terms": 527, + "totals": [ + { + "frame": 510, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 472 + }, + { + "frame": 511, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + -1 + ], + "rank": 7, + "register": 473 + }, + { + "frame": 512, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + 0, + -1, + -1, + 0 + ], + "rank": 7, + "register": 474 + }, + { + "frame": 513, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + 0, + 1, + -1, + 0 + ], + "rank": 7, + "register": 475 + }, + { + "frame": 514, + "hyperplane_of_punctured_line": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "rank": 7, + "register": 476 + }, + { + "frame": 515, + "hyperplane_of_punctured_line": [ + 1, + 1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "rank": 7, + "register": 477 + }, + { + "frame": 516, + "hyperplane_of_punctured_line": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 478 + }, + { + "frame": 517, + "hyperplane_of_punctured_line": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + -1 + ], + "rank": 7, + "register": 479 + }, + { + "frame": 518, + "hyperplane_of_punctured_line": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + -1 + ], + "rank": 7, + "register": 480 + } + ] + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": false, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "info": { + "B_target_reads_of_registers_rewritten_earlier_in_B": 111, + "B_z_operand_kinds": { + "helper<-helper": 3, + "helper<-source": 13, + "source<-helper": 108, + "source<-source": 375 + }, + "B_z_operand_kinds_by_dim": { + "dim4:helper<-source": 13, + "dim4:source<-source": 375, + "dim6:helper<-helper": 3, + "dim6:source<-helper": 108 + }, + "B_z_write_frame_dims": { + "4": 388, + "6": 111 + }, + "B_z_writes_after_a_target_read_of_the_same_register": 454, + "cleanup_gates": 2574, + "helper_writes_B": 16, + "source_writes_A": 0, + "source_writes_B": 483, + "sources_rewritten_B": 108, + "target_reads_of_targets": 0, + "z_gates_A": 2075, + "z_gates_B": 499 + }, + "labels": { + "frames": 636, + "gram_det": 1, + "labels": 111, + "lattice_rank": 8, + "punctured": 9, + "root_lines": 120 + } + } + }, + "source_files": { + "research/e8-bit-carrier-skeleton/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "research/e8-bit-carrier-skeleton/NOTICE.md": "5f4b7fcbf99f572be28b6da612ce775363908cdfc7810f7aca167be01c86e49a", + "research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "research/e8-bit-carrier-skeleton/code/bit/checkers/json.hpp": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63", + "research/e8-bit-carrier-skeleton/code/bit/checkers/legality_h.cpp": "6c1ef2b24e57781d6951c172a1024fc4300e6fd392c9d6672079a7806ab663b3", + "research/e8-bit-carrier-skeleton/code/bit/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "research/e8-bit-carrier-skeleton/code/bit/regression/stage_cohort.py": "6c288f6f234b528c1a7c0a4adfb724e91e0fe6b18c8dffad96af3f973de1829a", + "research/e8-bit-carrier-skeleton/portable-include/bits/stdc++.h": "420094be2af295eed03a983dd66debbbe9cfb78d8252859f4498a615a0074b99", + "research/e8-bit-p111-tuned/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "research/e8-bit-p111-tuned/NOTICE.md": "5b88eb2b7de76aa2a3288ee3c7a08d18a5eadfa82f5e7a99e207d232aed71221", + "research/e8-bit-p111-tuned/code/xcheck_p.py": "af3decc877e27c00001cf56f50c6c09566e8e101297ab34c7860aed96a06d80e", + "research/e8-bit-p111-tuned/tune/EXPECTED.json": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "research/e8-bit-p111-tuned/tune/bitE8mut-p111-tuned.json.gz": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f", + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "status": "PASS_R439_TWO_SIDED_COMPENSATION" +} diff --git a/research/r439-two-sided-compensation/LICENSE b/research/r439-two-sided-compensation/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/r439-two-sided-compensation/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/r439-two-sided-compensation/NOTICE.md b/research/r439-two-sided-compensation/NOTICE.md new file mode 100644 index 0000000000..19b5b9f61e --- /dev/null +++ b/research/r439-two-sided-compensation/NOTICE.md @@ -0,0 +1,65 @@ +# Notice and attribution + +New code and documentation are Apache-2.0. Prepared for Gareth Davidson +(@bitplane), with substantial OpenAI Codex assistance in research, +implementation, proof, verification and packaging. One AI agent performed +the work. Algorithmic independence does not imply independent human review. + +**Scott Woolsey Biggart (@swbiggart), PR733**, at +`dfe84e09298abc5c5e0074afda59a821e10abfb4`, supplies the prior two-sided binary +basis composition and the explicit mixed-term verification obligation. Its +README is retained verbatim under `vendor/pr733/`, with SHA256 and Git-blob +pins in SOURCES.json. It discloses substantial OpenAI Codex assistance. No +PR733 executable or numerical saving is imported. This package changes the +selected R439 word around a fixed overlapping target basis and checks the +complete nine-stage prefix guard after every accepted helper pair. + +**PR915**, at `e9daefe320a0043000bd9746664ed02c3287d056`, is this contributor's +immediate target-basis parent. Its word, recipe, receipt, proof, README, +notice, source manifest and license are retained verbatim. I/O utilities, +package tests, native-runner structure and some verification routines are +adapted from that contribution. The native harness follows **Sagar Thakrar's +`research/r420-decoder-sharing/native.py`** validation pattern. This version +checks all three complete words and charges both increased positive bounds. +Relative links in archival vendored documents refer to their original +packages; the parent source manifest is preserved for provenance, not used +to claim that all of its historical dependencies are imported here. + +The original word derives from **DreamingOfClouds's PR589** +(`a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46`), tuning **eumemic's PR555/543**. +DreamingOfClouds disclosed Claude Opus 5.5 via Claude Code; eumemic's retained +notice discloses Anthropic Claude assistance. Transport precedents include +Dugongue's PR541/548 and rohanarun's PR542. The immutable in-tree notices and +licenses for the tuned word and carrier skeleton are pinned inputs. LICENSE +here is copied from that Apache-2.0 lineage. Only D changes in the candidate. + +Prior mechanisms and semantic-interface credit remain with: + +- **Mikhail R. Gadelha**, PR686: restored helper pairs and semantic D-boundary + substitution. +- **Greer Guthrie**, PR694: simultaneous disjoint helper-basis construction. +- **Scott Woolsey Biggart**, PR713, and **Sagar Thakrar**, PR716: target-basis + compensation, with OpenAI Codex assistance. +- **commdata2338**, PR794: guarded target-basis search and positive-vector + bounds, inherited through PR915; its incremental implementation is not + used by this new helper-pair search. +- **Dugongue**, PR476/478: reversible target-factoring precedent. +- **navinor**, PR848: the selected R439 sharing barrier under unchanged H2. + This package explicitly requires a semantic replacement for H2. +- **Ross Richardson**, concurrent PR917: a two-sided compensation example + for historical CK over another field. No code or saving is imported. + +The unmodified owning tools retain their cumulative notices: **eumemic** for +the punctured checker and carrier skeleton; **Dylan Crow / +utcorvusvolat-dotcom** (PR370) for exporter, staging and native checker +lineage; **DaysSky** (PR381) for bridged-stage checks; **Zhihao Chen / +jacklightChen** (PR386) for the portable header and common-label interface +lineage; **DreamingOfClouds** for nine-stage accounting and the global +template; **Chafik Boukhalfa** and other credited contributors for hosted +compilation, physical routes and audits. Their original AI disclosures +remain in the source notices. **Niels Lohmann and contributors** retain the +MIT header in `json.hpp`. **Jacob Sussman** introduced the E8 unit. + +No priority is claimed for basis factoring, the mixed-term identity or the +semantic-prefix contract. Source pins, the finite construction and remaining +integration obligations are recorded separately. diff --git a/research/r439-two-sided-compensation/PROOF.md b/research/r439-two-sided-compensation/PROOF.md new file mode 100644 index 0000000000..21952a5faf --- /dev/null +++ b/research/r439-two-sided-compensation/PROOF.md @@ -0,0 +1,141 @@ +# Exact two-sided prefix substitution and complete cost + +All endpoint matrices in this section act over F2. Integer positive prefix +bounds are checked separately; equality of the forward integer operators is +not claimed. Fix the input hashes in SOURCES.json and the 111 target rows and +439 helper columns of the selected PR589 compensation matrix K. Physical +targets are registers 111 through 221; helpers are 222 through 660. + +## Restored arbitrary-input boundary + +Let E be the product of PR915's 306 target transvections in their actual +execution order. If T1 is executed first, E = T306 ... T1. Let H be the +product of helper transvections `helper[a] ^= helper[b]` for the 192 disjoint +pairs in CERTIFICATE.json. Each transvection is its own inverse over F2. +Disjointness implies that the helper transvections commute and H inverse = H. +The target transvections need not commute; E inverse is executed by reversing +their order. + +The emitted D acts on arbitrary `(x, y, s)` as follows: + +1. Helpers become Hs. +2. Targets become Ey. +3. Targets become Ey + (E K H inverse)(Hs) = Ey + EKs. +4. Applying E inverse to targets gives y + Ks. +5. Applying H inverse to helpers restores s. + +Sources x are never read or written in D. All D operands start and remain at +frame zero. Every helper is restored before A, and targets have the same +value and frame as after the original D. All non-D fields are identical, so +the entire unchanged suffix receives the original boundary state. This is +the exact semantic substitution needed under the inherited realization +assumptions. + +The original H2 only permits helper-to-target additions. It is false for +both PR915 and this word. The original literal K extractor is also false. +We retain both predicates unchanged and require them to be reported false. +The replacement contract is the complete legal D boundary above. H1, H3, +H4 and H5, and all other source-checker conclusions, remain true. Acceptance +of the replacement contract is a maintainer review obligation. + +## Column orientation, mixed term and savings + +For a helper transvection a <- b, H has entry (a,b) in addition to I. Right +multiplication changes **column b by column a**. Thus its paid gain on the +current transformed matrix R = EK is + +```text +weight(R[:,b]) - weight(R[:,b] XOR R[:,a]) - 2. +``` + +The two charged ADDs prepare and restore the actual helper. Because accepted +pairs use disjoint helper indices, the columns of a later admissible pair +have not changed. Their initial pair score is therefore still exact. The +builder sorts all positive scores by `(-gain, tie, a, b)` and walks the list +once. A trial is admitted only after the complete combined word satisfies +both positive-bound ceilings. The independent verifier uses sets for pair +scores and explicit literal instructions for the full positive replay. + +Write A = E-I and B = H-I. Then + +```text +E K H = K + A K + K B + A K B. +``` + +For each row i and column j, the independent check computes these four +terms directly using E's row supports and the original K. Since helper +pairs are disjoint, column j of B has at most one nonzero entry. This checks +all 111 * 439 = 48,729 coefficients without using the builder's packed-column +updates. The mixed term AKB has 7,031 nonzero coefficients. Removing exactly +that term from the emitted middle produces a different full D operator. + +The exact middle weight decreases from 6,376 to 4,764, saving 1,612 helper +reads. Preparing and restoring 192 helpers costs 384 ADDs, leaving a net +gain of 1,228. The fixed target preparation and restoration cost 612. Hence + +```text +D = 192 + 306 + 4,764 + 306 + 192 = 5,760 ADDs. +complete word = 5,760 + 6,220 = 11,980 ADDs. +``` + +The same helper pairs used alone on K would have middle weight 13,772 and D +cost 14,156, saving 3,929 against the original D. Adding that standalone +saving to PR915's 11,097 would suggest 15,026, which is incorrect for this +composition. Its actual saving against PR589 is 12,325. This is why the +combined matrix and full bill are rebuilt. + +## Full-word positive bounds and resources + +Replace each signed scalar ADD by addition of nonnegative input bounds. +Copies inherit their source bound and erasures reset the copy slot. Record +the greatest coordinate at every prefix, separately for the forward word +and its reverse, interchanging copy and erasure roles. This triangle- +inequality calculation bounds signed execution; it does not use F2 +cancellation. Each instruction is counted and each temporary copy is paid. + +The builder computes whole-macro bounds, whose coordinate maxima occur at +their final positive addition because donors are distinct from destinations +and unchanged during a macro. The verifier lowers all individual additions, +copies and erasures. The unchanged C++ native checker gives a third replay. +All agree on F = 71,907 and B = 10,562,318 for the candidate. Both exceed +their parent values and are charged rather than inherited. + +Every accepted partial word obeys `64 F^3 B^2 < 2^104` and +`2^18 F^5 B^4 < 2^192`. These caps were declared before nomination. The local +bound is 102 bits, and the nine-stage bound is 192 bits. The latter is +strictly below 2^192 by +`4716451243325510895298044774700760932455158103238770688`. +Only about 0.075% of that numerical ceiling remains. verify.py binds the +nine-stage formula to the source's `2^nb F^(K+1) B^K`, at K = 4 and +nb = 6(K-1) = 18, and reproduces its baseline 177-bit receipt. + +There are 439 existing helpers and nine retained rank-seven totals. Every +register's MOVE path, the COPY/ERASE subsequence and the paid histogram +`{1:1323, 2:1342, 3:79, 4:44, 5:102, 6:11, 7:19}` remain unchanged; the rank +mass is 5,129. No source access, scratch register, frame change, recursive +child or copied total is added. At 5/9/11 stages the new ADD savings beyond +PR915 are 6,140 / 11,052 / 13,508. Against PR589 they are +61,625 / 110,925 / 135,575. Existing bridge costs are 666 / 1,998 / 2,664, +and fresh-copy counts are 45 / 81 / 99. + +## Coverage and remaining work + +The finite search completes all 192,282 ordered pairs and the single sorted +greedy pass. There are 2,298 positive pairs, 192 accepted pairs, 2,106 overlap +skips and no bound rejects. No neutral detours, matching optimum, target +reselection or general circuit optimality is asserted. + +Exact boundary tests cover every source, target and helper column in both +directions for the original, parent and candidate words. In particular, +omitting target preparation can pass helper-only columns but changes dirty +targets; omitting helper preparation can pass clean-helper inputs but changes +dirty inputs. Controls explicitly demonstrate both failures. Disjoint helper +undo order is immaterial, so the order-failure control concerns the +overlapping target basis. + +The finite native checks do not emit the whole hosted supplier or recompute +its complete invoice. Integration must accept the semantic D contract, +rebuild and audit that hosted supplier, recompute all finite costs and +precision allocations, and rerun the outer assembly. These are the remaining +obligations for using this candidate in a conditional bound. The inherited +common-label realization and analytic assumptions remain in force. diff --git a/research/r439-two-sided-compensation/README.md b/research/r439-two-sided-compensation/README.md new file mode 100644 index 0000000000..3b57242ade --- /dev/null +++ b/research/r439-two-sided-compensation/README.md @@ -0,0 +1,150 @@ +# Two-sided compensation for the selected R439 word + +**Finite bit-circuit construction.** Adding 192 disjoint helper pairs around +the frozen target basis from [PR915](https://github.com/CrocSwap/integer-mult-bounds/pull/915) +saves **1,228 further native ADDs**, including both preparation and restoration. +The complete word costs **11,980 ADDs**, compared with 13,208 in PR915 and +24,305 in the selected PR589 word. The saving against PR589 is 12,325 ADDs. + +| Quantity | Selected PR589 | Frozen PR915 | This composition | +|---|---:|---:|---:| +| D ADDs | 18,085 | 6,988 | 5,760 | +| Complete native ADDs | 24,305 | 13,208 | 11,980 | +| Exported records | 27,234 | 16,137 | 14,909 | +| Forward positive prefix F | 49,347 | 49,347 | 71,907 | +| Reverse positive prefix B | 1,113,070 | 9,534,616 | 10,562,318 | +| Local payload bound, bits | 93 | 100 | 102 | +| Nine-stage prefix bound, bits | 177 | 189 | 192 | +| Helpers / copied totals / rank mass | 439 / 9 / 5,129 | same | same | + +The complete D bill is **192 + 306 + 4,764 + 306 + 192 = 5,760**. Every +non-D field is identical to PR589. The native checks compare each register's +ordered MOVE path and all COPY/ERASE records; every paid resource is retained. +Helpers are temporarily changed during D and restored before A. The full D +boundary remains `(x, y, s) -> (x, y + K s, s)` for arbitrary targets and dirt. + +The original syntactic H2 and literal extraction of K remain **false**, as in +PR915. The old checker is unchanged. Integration requires acceptance of the +semantic D-boundary substitution and a complete updated hosted reconstruction +and invoice. All other H1/H3/H4/H5 predicates and decomposed conclusions pass. +This package does not change the selected frontier or claim a new exponent. + +## Reproduce + +Python 3.12 or later, C++17, and Boost headers are required. From the repository +root, run: + +```sh +python3 -I -B research/r439-two-sided-compensation/verify.py +python3 -I -B research/r439-two-sided-compensation/test_package.py +``` + +Set `BOOST_INCLUDE` to a nonstandard Boost include directory, and `CXX` to +the compiler if needed. The first command rebuilds the search certificate, +compares the entire canonical JSON word, performs independent mathematical +checks, compiles the unchanged native checkers, and compares every receipt +field with [EXPECTED.json](EXPECTED.json). Its final line is: + +```text +PASS_R439_TWO_SIDED_COMPENSATION: ADDs 24,305 -> 13,208 -> 11,980; 192 helper pairs; nine-stage prefix 192 bits; semantic D; no new kappa +``` + +Optional `--output NEW_DIRECTORY` retains all generated words, native records, +commands and logs. `--receipt NEW_FILE` saves the complete report. Existing +destinations are refused. `--source-root ROOT` accepts the minimal source +closure enumerated by [SOURCES.json](SOURCES.json). Normal and optimized +Python are supported: owning Python subprocesses run without optimization so +their existing assertions remain enabled. Regenerated gzip containers are +compared by canonical payload, not compression bytes. + +## Construction and distinct contribution + +Let K be the original 111 by 439 matrix, E the frozen product of PR915's 306 +target transvections, and H the new product of disjoint helper transvections. +The new middle is **E K H inverse**. The complete prefix applies H to helpers, +E to targets, the middle injections, E inverse to targets, and H inverse to +helpers. The helper pairs are disjoint, so H inverse equals H. E is generally +not an involution; its operations are restored in reverse order. + +This applies the two-sided method from **Scott Woolsey Biggart's +[PR733](https://github.com/CrocSwap/integer-mult-bounds/pull/733)** to the selected +R439 matrix with a fixed, overlapping target basis. It scores the actual +transformed matrix and checks the complete 192-bit nine-stage prefix ceiling +after each admitted pair. No PR733 executable or saving is imported. Its +verbatim [README](vendor/pr733/README.md) preserves the prior proof and credit. +The mixed term contains 7,031 nonzero coefficients; omitting it fails the D +operator. [PROOF.md](PROOF.md) gives the algebra and complete cost argument. + +The seed-5 assignment and the three considered tasks are in +[CLAIM.json](CLAIM.json). The completed search scores all **192,282 ordered +helper pairs** once on the frozen matrix. A seed-5 64-bit tie key is drawn for +every pair, including nonpositive ones. Of 2,298 positive pairs, the sorted +greedy pass accepts 192 and skips 2,106 for overlap; no bound rejects occur. +The maximum individual gain is 19 ADDs. Search stops at the end of that pass. +It makes no claim about optimal matchings, target-basis reselection, neutral +detours, or globally optimal circuits. + +## Evidence and precision cost + +The independent verifier uses set-valued supports instead of the builder's +packed columns. It recomputes every pair score and literally executes both +positive orientations of all 192 partial words: 4,760,850 ADD/COPY/ERASE +instructions. A separate coefficient calculation checks all 48,729 entries of +`K + (E-I)K + K(H-I) + (E-I)K(H-I)`. + +All three complete D words are checked on 661 distinct Boolean input columns +in both directions. The unmodified owning checker also checks full-word E8 +labels, geometry, frame legality, restoration and endpoint columns. Native +5/9/11-stage checks cover 883/1,327/1,549 formal columns per word and reject all +144 omitted-bridge controls. Nineteen local controls address preparation, +restoration, mixed terms, wrong column orientation, illegal access, stale +bounds and accounting; a cancelling helper pair is accepted and charged two +ADDs. Eight package tests cover source pins, strict/typed JSON, safe output +handling and gzip recompression. These are independent algorithms where +stated, with shared source data and retained owning tools; no separate human +review is claimed. + +Both larger positive bounds are charged explicitly: + +```text +64 F^3 B^2 = 2654678678257550221373682862848 < 2^104 +2^18 F^5 B^4 = 6272385284143355252940491378432965655169900286360795742208 < 2^192 +``` + +The nine-stage expression is bound to the pinned source formula and its +18-bridge relation. The baseline reproduces the source's 177-bit estimate and +192-bit charge. The candidate uses about **99.925% of that ceiling**, so the +remaining margin is small. A 192-bit result still satisfies the strict +inequality; the verifier compares integers directly. No other global invoice +allocation is inferred from this check. + +## Pins, scope and attribution + +Base: `91a2094f2e022930069e8cfdc810a3ea1b81cd09`. +Selected bit source: PR589, `a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46`. +Frozen parent: PR915, `e9daefe320a0043000bd9746664ed02c3287d056`. +Two-sided predecessor: PR733, `dfe84e09298abc5c5e0074afda59a821e10abfb4`. +The current selected assembly remains PR799. The new follow-up review batch +on this base is triage, and this package makes no claim of batch approval. + +PR915's word, recipe, complete receipt, proof, notice and source manifest are +retained verbatim. We reconstruct its target recipe, check its actual word and +native bill, and do not independently re-review its historical search coverage. +No API/network access is needed for reproduction. [NOTICE.md](NOTICE.md) +retains attribution to DreamingOfClouds, eumemic, commdata2338, Mikhail R. +Gadelha, Greer Guthrie, Scott Woolsey Biggart, Sagar Thakrar and the owning +verification lineage. Ross Richardson's concurrent PR917 provides a separate +two-sided complex-side example; no code or saving is imported from it. + +The remaining integration work is concrete: review the semantic interface; +emit and audit the changed whole hosted supplier; recompute its full finite +invoice and precision allocations; then rerun outer assembly against the +selected complex supplier. The unchanged frame/rank profile alone does not +establish those results. The common-label realization and analytic assumptions +remain those in the selected maintainer review. This finite construction is +not a formal proof of the full multiplication theorem or a measured runtime +speedup. + +Prepared for **Gareth Davidson (@bitplane)** with substantial **OpenAI Codex +assistance** in research, implementation, proof, verification and packaging. +Apache-2.0. diff --git a/research/r439-two-sided-compensation/SOURCES.json b/research/r439-two-sided-compensation/SOURCES.json new file mode 100644 index 0000000000..a616606b9e --- /dev/null +++ b/research/r439-two-sided-compensation/SOURCES.json @@ -0,0 +1,51 @@ +{ + "base_commit": "91a2094f2e022930069e8cfdc810a3ea1b81cd09", + "files": { + "research/e8-bit-carrier-skeleton/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "research/e8-bit-carrier-skeleton/NOTICE.md": "5f4b7fcbf99f572be28b6da612ce775363908cdfc7810f7aca167be01c86e49a", + "research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "research/e8-bit-carrier-skeleton/code/bit/checkers/json.hpp": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63", + "research/e8-bit-carrier-skeleton/code/bit/checkers/legality_h.cpp": "6c1ef2b24e57781d6951c172a1024fc4300e6fd392c9d6672079a7806ab663b3", + "research/e8-bit-carrier-skeleton/code/bit/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "research/e8-bit-carrier-skeleton/code/bit/regression/stage_cohort.py": "6c288f6f234b528c1a7c0a4adfb724e91e0fe6b18c8dffad96af3f973de1829a", + "research/e8-bit-carrier-skeleton/portable-include/bits/stdc++.h": "420094be2af295eed03a983dd66debbbe9cfb78d8252859f4498a615a0074b99", + "research/e8-bit-p111-tuned/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "research/e8-bit-p111-tuned/NOTICE.md": "5b88eb2b7de76aa2a3288ee3c7a08d18a5eadfa82f5e7a99e207d232aed71221", + "research/e8-bit-p111-tuned/code/xcheck_p.py": "af3decc877e27c00001cf56f50c6c09566e8e101297ab34c7860aed96a06d80e", + "research/e8-bit-p111-tuned/tune/EXPECTED.json": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "research/e8-bit-p111-tuned/tune/bitE8mut-p111-tuned.json.gz": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f", + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "harness_adaptation": { + "head": "e9daefe320a0043000bd9746664ed02c3287d056", + "notice": "I/O, package tests and native runner adapted from own previous contribution; native harness lineage includes Sagar Thakrar.", + "pr": 915 + }, + "local_files": { + "vendor/pr733/README.md": "af2d829749b369ef4bcda42a3fbaef20652121663a61f7242fb988e0f63e2d1c", + "vendor/pr915/CERTIFICATE.json": "a9958d9a933b57dcb9f7e5cf8e9694c0762f055a1cdab9f8ab42b2c6561fc4d7", + "vendor/pr915/EXPECTED.json": "5607287aab393ed6e95a76f69c1a2c02ef271a6ae901e2448ad7858a501884ba", + "vendor/pr915/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/pr915/NOTICE.md": "efbb1d2b2c85cbdbb7b048e2b7405e0654dfa40ddf6a1e94f11df313bdedb638", + "vendor/pr915/PROOF.md": "ddb5c3affbef52fa37af13b291bf089ca16f9dfe976e5a5590188b128b262425", + "vendor/pr915/README.md": "0c606598a6366bc0e6840d853c28237f8e5fe5866d89765d79815f973224f1fd", + "vendor/pr915/SOURCES.json": "abee8b99a79fce8a53ea7522ec490200ad0585093684b13883af1dec337158f0", + "vendor/pr915/candidate.json.gz": "ac30266144f8772ec8cd629153993aa9eb692fe745a9f95015a1b7fa88977a2e" + }, + "parent": { + "canonical_word_sha256": "6aec2c6f91c87a7440af10cdeb90b8814501224a86de14d4033ae3ffa00899da", + "head": "e9daefe320a0043000bd9746664ed02c3287d056", + "path": "research/r439-target-compensation/", + "pr": 915, + "scope": "Freeze and replay the actual target-basis word; do not infer or re-review its search claims." + }, + "predecessor": { + "author": "Scott Woolsey Biggart", + "git_blob": "e808135b923977318601cfbbb914507844ab0eed", + "head": "dfe84e09298abc5c5e0074afda59a821e10abfb4", + "pr": 733, + "use": "Two-sided binary conjugation and explicit mixed-term check. No executable imported." + }, + "selected_word_commit": "a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46", + "selected_word_pr": 589 +} diff --git a/research/r439-two-sided-compensation/VALIDATION.md b/research/r439-two-sided-compensation/VALIDATION.md new file mode 100644 index 0000000000..89dea40c4e --- /dev/null +++ b/research/r439-two-sided-compensation/VALIDATION.md @@ -0,0 +1,74 @@ +# Validation record + +Executed on Linux, 2026-10-13, with CPython 3.14.4 and CPython 3.12.3, +GCC C++ 15.2.0, C++17, and Boost 1.83 headers. Boost was extracted outside +the repository from Ubuntu `libboost1.83-dev_1.83.0-5ubuntu5_amd64.deb`, SHA256 +`c17abc5a40a074c3d959655191ebec1561fa25f14f4948f6788be49417d4b234`. + +## Completed checks + +The ordinary CPython 3.14.4 run of `verify.py` passed against the entire +committed EXPECTED.json receipt. An isolated `-I -O -B` CPython 3.12.3 run +also passed from an unrelated working directory. That second run used only +this package and the 14 source files in SOURCES.json, without Git metadata, +under a path containing spaces. All source files and directories were made +read-only before execution; output went to a separate temporary directory. +The canonical full receipts are identical, SHA256 +`5ea81356e925a7326390f17c378bdf3e2f04b58aad0d39a7f1857595a24f3c93`. + +Each full verifier run includes: + +- Regeneration of all 192,282 pair scores, all tie keys, the guarded disjoint + greedy pass, the complete recipe and the canonical word payload. +- Independent set-valued census and reconstruction. Literal forward/reverse + replay checks 4,760,850 positive instructions across all admitted partial + words; no guard rejection occurs. +- All 48,729 four-term matrix coefficients, including the 7,031 nonzero + mixed-term entries. The same helper pairs alone would cost 14,156 D ADDs; + their standalone saving is not added to the parent saving. +- All 661 distinct input columns for original, parent and candidate D words, + each in both directions. Full owning E8/frame/endpoint checks also pass. + The original H2 and literal K extraction remain explicitly false for the + two changed words; every other interface predicate passes. +- Fresh compilation of unchanged C++ legality and 5/9/11-stage checkers. + All three words pass on 883/1,327/1,549 formal columns. All 144 omitted + bridges are rejected. Every register's MOVE sequence and all COPY/ERASE + records agree, retaining rank mass 5,129. +- Nineteen local rejection controls and the paid endpoint-neutral helper + pair. Native and Python counts and both positive bounds agree. +- Binding the nine-stage prefix expression and bridge exponent to the + pinned source, reproducing the baseline invoice estimate, and checking + the strict 192-bit ceiling for all three words. + +All eight package tests passed on both interpreters, including the optimized +read-only run. They reject source drift, missing sources, duplicate/nonfinite +JSON, boolean/integer receipt confusion and overwrites; recompressed candidate +payloads compare equal. + +`make selected-record-check` passed after moving an exploratory Python bytecode +cache outside the selected package inventory. Its initial failure identified +only that untracked `.pyc` file; there were no missing or changed source files. +The scoped staged whitespace check passed. No source or frontier record was +changed to make either check pass. + +## Submission context and limits + +The final upstream fetch remained at +`91a2094f2e022930069e8cfdc810a3ea1b81cd09`. The instructions gist remained at +`4180bf0d4045ffdcd12d75bb1fec91c234420162`. A fresh 714-open-PR snapshot through +PR924 retained parent PR915 at `e9daefe320a0043000bd9746664ed02c3287d056` and +predecessor PR733 at `dfe84e09298abc5c5e0074afda59a821e10abfb4`. + +No new R439 two-sided D construction appeared in that refresh. PR917 is a +complex CK two-sided construction; PR923 changes the selected R439 phase-B +frame520 block and its cleanup. The latter credits PR904's overlap, but does +not change D. Their savings are not composed here. The frozen 18-PR review +batch on the base is not edited or treated as approval of this contribution. + +The executable claim is a finite circuit and explicit prefix bound. Remaining +integration work is acceptance of the semantic D interface, complete changed +hosted emission and audit, updated finite/precision invoices, and outer +assembly. The common-label realization and analytic assumptions remain +inherited. No full `make verify`, selected cold replay, formal multiplication +theorem, new exponent, measured runtime improvement or hosted CI success is +claimed by these local checks. diff --git a/research/r439-two-sided-compensation/build.py b/research/r439-two-sided-compensation/build.py new file mode 100644 index 0000000000..b9054ab836 --- /dev/null +++ b/research/r439-two-sided-compensation/build.py @@ -0,0 +1,124 @@ +#!/usr/bin/env python3 +"""One guarded disjoint helper-pair pass around the frozen PR915 target basis. + +Prepared for Gareth Davidson (@bitplane), with OpenAI Codex assistance. Apache-2.0. +""" +import argparse +import copy +import gzip +from pathlib import Path +import random +import runpy + +C = runpy.run_path(str(Path(__file__).resolve().with_name("common.py"))) +need = C["need"] + + +def assemble(parent, count, columns, pairs): + result = copy.deepcopy(parent) + v = parent["v"] + helpers = [[0, 2 * v + a, [2 * v + b]] for a, b in pairs] + middle = [[0, v + i, [2 * v + j for j, col in enumerate(columns) if (col >> i) & 1]] + for i in range(v)] + result["D"] = helpers + parent["D"][:count] + middle + parent["D"][count + v:] + helpers[::-1] + return result + + +def bounds(word, reverse=False): + """Direct macro interpreter; the verifier separately lowers literal instructions.""" + v, n = word["v"], 2 * word["v"] + word["R"] + values, peak = [1] * n, 1 + sections = ("C", "B", "scatter", "A", "D") if reverse else ("D", "A", "scatter", "B", "C") + for section in sections: + if section == "scatter": + centers = range(len(word["ret"]) - 1, -1, -1) if reverse else range(len(word["ret"])) + for j in centers: + copied = values[word["ret"][j]] + for i, row in enumerate(word["scatter"]): + if j in row: + values[v + i] += copied + peak = max(peak, values[v + i]) + else: + gates = reversed(word[section]) if reverse else word[section] + for _, destination, sources in gates: + values[destination] += sum(values[s] for s in sources) + peak = max(peak, values[destination]) + return peak + + +def admitted(forward, backward): + return (64 * forward ** 3 * backward ** 2 < 1 << 104 + and (1 << 18) * forward ** 5 * backward ** 4 < 1 << 192) + + +def run(root, output): + C["pins"](root) + output = Path(output) + output.mkdir(parents=True, exist_ok=False) + original = C["load"](Path(root) / C["WORD"]) + parent = C["load"](C["HERE"] / "vendor/pr915/candidate.json.gz") + parent_cert = C["load"](C["HERE"] / "vendor/pr915/CERTIFICATE.json") + m, v, helpers = len(parent_cert["steps"]), parent["v"], parent["R"] + need((v, helpers, m) == (111, 439, 306), "frozen parent dimensions") + columns = [0] * helpers + for frame, d, sources in parent["D"][m:m + v]: + need(frame == 0 and v <= d < 2 * v, "parent injection") + for source in sources: + need(2 * v <= source < 2 * v + helpers, "parent helper source") + columns[source - 2 * v] ^= 1 << (d - v) + rng, census, positive = random.Random(5), [], [] + for a in range(helpers): + for b in range(helpers): + if a == b: + continue + gain = columns[b].bit_count() - (columns[b] ^ columns[a]).bit_count() - 2 + tie = rng.getrandbits(64) + census.append([a, b, gain, tie]) + if gain > 0: + positive.append((-gain, tie, a, b)) + positive.sort() + used, accepted, history, skipped, rejected = set(), [], [], 0, [] + for neg_gain, tie, a, b in positive: + if a in used or b in used: + skipped += 1 + continue + trial_cols = list(columns) + trial_cols[b] ^= trial_cols[a] + trial_pairs = accepted + [(a, b)] + trial = assemble(parent, m, trial_cols, trial_pairs) + forward, backward = bounds(trial), bounds(trial, True) + if not admitted(forward, backward): + rejected.append(dict(a=a, b=b, gain=-neg_gain, F=forward, B=backward)) + continue + columns, accepted = trial_cols, trial_pairs + used.update((a, b)) + history.append(dict(a=a, b=b, gain=-neg_gain, F=forward, B=backward, + middle_weight=sum(x.bit_count() for x in columns))) + candidate = assemble(parent, m, columns, accepted) + forward, backward = bounds(candidate), bounds(candidate, True) + d_cost = sum(len(g[2]) for g in candidate["D"]) + total = sum(len(g[2]) for section in "DABC" for g in candidate[section]) + sum(map(len, candidate["scatter"])) + certificate = dict(format="r439-two-sided/1", seed=5, baseline_sha256=C["digest"](original), + parent_sha256=C["digest"](parent), candidate_sha256=C["digest"](candidate), + census_sha256=C["digest"](census), pair_scores=len(census), positive_pairs=len(positive), + max_pair_gain=max(-p[0] for p in positive), overlap_skips=skipped, + guard_rejections=rejected, steps=history, target_shears=m, + helper_pairs=len(accepted), middle_weight=sum(x.bit_count() for x in columns), + D_adds=d_cost, native_ADDs=total, saved_beyond_parent=13208 - total, + F=forward, B=backward, payload_bits=(64 * forward ** 3 * backward ** 2).bit_length(), + nine_stage_prefix_bits=((1 << 18) * forward ** 5 * backward ** 4).bit_length(), + stopping_reason="completed one sorted disjoint greedy pass on all positive ordered pairs") + C["write"](output / "CERTIFICATE.json", certificate) + with (output / "candidate.json.gz").open("xb") as stream: + stream.write(gzip.compress(C["canonical"](candidate), mtime=0)) + print("built", len(accepted), "helper pairs; D", d_cost, "total ADDs", total, + "F", forward, "B", backward, "nine-stage bits", certificate["nine_stage_prefix_bits"], flush=True) + return certificate + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--source-root", type=Path, default=C["ROOT"]) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + run(args.source_root, args.output) diff --git a/research/r439-two-sided-compensation/candidate.json.gz b/research/r439-two-sided-compensation/candidate.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..0a192829589d6cbcec0f32695a928d24e6c33549 GIT binary patch literal 39065 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 af9HSw-`m@NoYxTk_x}Kg11wnRb^-uG=9lXL literal 0 HcmV?d00001 diff --git a/research/r439-two-sided-compensation/common.py b/research/r439-two-sided-compensation/common.py new file mode 100644 index 0000000000..b4f4fbc803 --- /dev/null +++ b/research/r439-two-sided-compensation/common.py @@ -0,0 +1,69 @@ +"""Small I/O helpers; no circuit or verification logic. Apache-2.0.""" +import gzip +import hashlib +import importlib.util +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +WORD = "research/e8-bit-p111-tuned/tune/bitE8mut-p111-tuned.json.gz" +CHECKER = "research/e8-bit-p111-tuned/code/xcheck_p.py" +HUB = "research/e8-bit-carrier-skeleton" + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(",", ":"), allow_nan=False).encode() + + +def digest(value): + return hashlib.sha256(canonical(value)).hexdigest() + + +def pairs(items): + result = {} + for key, value in items: + need(key not in result, "duplicate JSON key: " + key) + result[key] = value + return result + + +def invalid_constant(value): + raise ValueError("invalid JSON constant: " + value) + + +def load(path): + path = Path(path) + data = path.read_bytes() + if path.suffix == ".gz": + data = gzip.decompress(data) + return json.loads(data, object_pairs_hook=pairs, parse_constant=invalid_constant) + + +def write(path, value): + with Path(path).open("x") as stream: + json.dump(value, stream, indent=2, sort_keys=True, allow_nan=False) + stream.write("\n") + + +def pins(root): + manifest = load(HERE / "SOURCES.json") + for name, sha in manifest["files"].items(): + need(hashlib.sha256((Path(root) / name).read_bytes()).hexdigest() == sha, + "source hash mismatch: " + name) + for name, sha in manifest["local_files"].items(): + need(hashlib.sha256((HERE / name).read_bytes()).hexdigest() == sha, + "predecessor proof hash mismatch: " + name) + return manifest + + +def module(name, path): + spec = importlib.util.spec_from_file_location(name, path) + result = importlib.util.module_from_spec(spec) + spec.loader.exec_module(result) + return result diff --git a/research/r439-two-sided-compensation/native.py b/research/r439-two-sided-compensation/native.py new file mode 100644 index 0000000000..399eb2deac --- /dev/null +++ b/research/r439-two-sided-compensation/native.py @@ -0,0 +1,111 @@ +#!/usr/bin/env python3 +"""Unmodified native legality and 5/9/11-stage checks, R439 compensation. + +Harness adapted from Sagar Thakrar's research/r420-decoder-sharing/native.py. +Prepared for Gareth Davidson (@bitplane), with OpenAI Codex assistance. Apache-2.0. +""" +import os +from pathlib import Path +import runpy +import shlex +import struct +import subprocess +import sys + +C = runpy.run_path(str(Path(__file__).resolve().with_name("common.py"))) +need = C["need"] + + +def run(root, baseline, parent, candidate, output): + C["pins"](root) + output = Path(output).resolve() + output.mkdir(parents=True, exist_ok=False) + hub = Path(root).resolve() / C["HUB"] + checker = hub / "code/bit/checkers" + compiler = shlex.split(os.environ.get("CXX", "c++")) + includes = ["-I" + str(hub / "portable-include"), "-I" + str(checker), + "-I" + os.environ.get("BOOST_INCLUDE", "/usr/include")] + commands = [] + + def execute(args, log): + args = [str(x) for x in args] + commands.append(args) + with log.open("x") as stream: + subprocess.run(args, stdout=stream, stderr=subprocess.STDOUT, check=True) + + common = compiler + ["-O2", "-std=c++17", "-DHDIM=8", "-DNCOPY=9"] + includes + execute(common + ["-o", output / "legality", checker / "legality_h.cpp"], + output / "compile-legality.log") + for k in (2, 4, 5): + execute(common + ["-DVPORTS=111", "-DRHELP=439", "-DKPAIRS=" + str(k), + "-o", output / ("columns-" + str(k)), checker / "columns_k.cpp"], + output / ("compile-columns-" + str(k) + ".log")) + python = [sys.executable, "-I", "-B"] + result, nonadd = {}, {} + for label, word in (("baseline", baseline), ("parent", parent), ("candidate", candidate)): + print("native", label, flush=True) + folder = output / label + folder.mkdir() + records, cin, cout = (folder / name for name in ("records", "cin", "cout")) + execute(python + [hub / "code/bit/export_records.py", Path(word).resolve(), records], + folder / "export.log") + execute(python + [hub / "code/bit/regression/stage_cohort.py", records, records, cin, cout], + folder / "stage.log") + execute([output / "legality", cin, cout, cout / "legality.json"], folder / "legality.log") + legality = C["load"](cout / "legality.json") + need(legality["status"] == "PASS_INDEPENDENT_COHORT_LEGALITY_SOURCE_OWNERS_AND_LIFECYCLE", + "native legality") + need(legality["copies"] == legality["erasures"] == 9, "native copy lifecycle") + # Per-register MOVE sequences, including ranks, and unchanged COPY/ERASE blocks. + record_rows = list(struct.iter_unpack("<6i", (records / "249-records.bin").read_bytes())) + movements = {} + for row in record_rows: + if row[0] == 0: + movements.setdefault(str(row[1]), []).append(list(row)) + nonadd[label] = {"moves": movements, "copy_erase": [list(x) for x in record_rows if x[0] in (2, 3)]} + columns_receipts = {} + for k in (2, 4, 5): + name = "columns-" + str(k) + execute([output / name, cout / "COHORT249-RECORDS.bin", cout / (name + ".json")], + folder / (name + ".log")) + columns = C["load"](cout / (name + ".json")) + expected_status = ("PASS_NEW_COHORT249_ALL_FIVE_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL" if k == 2 + else "PASS_NEW_COHORT249_ALL_BRIDGED_STAGE_FORMAL_COLUMNS_AND_PREFIX_BILL") + need(columns["status"] == expected_status, "native columns") + need(columns["formal_columns_checked"] == 2 * k * 111 + 439, "column coverage") + need(len(columns["stages"]) == 2 * k + 1, "stage coverage") + need(columns["bridge_additions"] == 6 * (k - 1) * 111, "bridge cost") + need(columns["fresh_center_copies"] == 9 * (2 * k + 1), "stage COPY cost") + need(columns["payload_prefix_bits"] <= 104, "inherited prefix cap") + controls = columns["negative_controls"] + need(len(controls) == 6 * (k - 1) and all(x["rejected"] is True for x in controls), + "omitted bridge controls") + need(legality["common_frame_ADDs"] == columns["local_scalar_additions"], "ADD agreement") + columns_receipts[str(2 * k + 1)] = {key: columns[key] for key in ( + "formal_columns_checked", "bridge_additions", "fresh_center_copies", "reverse_fresh_center_copies", + "signed_lift_prefix", "payload_prefix_bits", "payload_prefix_upper", "local_raw_H", "stages")} + columns_receipts[str(2 * k + 1)]["controls_rejected"] = len(controls) + result[label] = {key: legality[key] for key in ("records", "common_frame_ADDs", "rank_mass", "paid_histogram", + "copies", "erasures")} + result[label]["staged"] = columns_receipts + expected = {"baseline": (24305, 49347, 1113070, 177), + "parent": (13208, 49347, 9534616, 189), + "candidate": (11980, 71907, 10562318, 192)} + before = result["baseline"] + for label, (adds, forward, backward, nine_bits) in expected.items(): + after = result[label] + need(C["canonical"](nonadd["baseline"]) == C["canonical"](nonadd[label]), "frame paths changed") + need(after["common_frame_ADDs"] == adds, "native ADD cost") + need(before["records"] - after["records"] == 24305 - adds, "unexpected record changes") + for key in ("rank_mass", "paid_histogram", "copies", "erasures"): + need(before[key] == after[key], "paid resources changed: " + key) + for stage in ("5", "9", "11"): + old, new = before["staged"][stage], after["staged"][stage] + need(old["local_raw_H"] == new["local_raw_H"], "local raw ranks changed") + bounds = [int(x["cancellation_free_signed_row_l1_upper"]) for x in new["signed_lift_prefix"]] + need(bounds == [forward, backward], "literal/native positive bound agreement") + value = (1 << 18) * bounds[0] ** 5 * bounds[1] ** 4 + need(value.bit_length() == nine_bits and value < 1 << 192, "nine-stage prefix bound") + C["write"](output / "commands.json", commands) + C["write"](output / "native-report.json", result) + return result diff --git a/research/r439-two-sided-compensation/test_package.py b/research/r439-two-sided-compensation/test_package.py new file mode 100644 index 0000000000..305cbe8605 --- /dev/null +++ b/research/r439-two-sided-compensation/test_package.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python3 +"""Fast source/receipt/output controls, separate from mathematical replay. Apache-2.0.""" +import gzip +from pathlib import Path +import runpy +import shutil +import subprocess +import sys +import tempfile +import unittest + +C = runpy.run_path(str(Path(__file__).resolve().with_name("common.py"))) +V = runpy.run_path(str(C["HERE"] / "verify.py")) +B = runpy.run_path(str(C["HERE"] / "build.py")) + + +class PackageControls(unittest.TestCase): + def setUp(self): + self.temp = tempfile.TemporaryDirectory(prefix="r439 package controls ") + self.addCleanup(self.temp.cleanup) + self.path = Path(self.temp.name) + + def closure(self): + root = self.path / "source closure" + manifest = C["load"](C["HERE"] / "SOURCES.json") + for name in manifest["files"]: + target = root / name + target.parent.mkdir(parents=True, exist_ok=True) + shutil.copyfile(C["ROOT"] / name, target) + return root + + def rejected_cli(self, *args, reason): + result = subprocess.run([sys.executable, "-I", "-O", "-B", str(C["HERE"] / "verify.py"), + *map(str, args)], text=True, capture_output=True) + self.assertNotEqual(result.returncode, 0) + self.assertIn(reason, result.stderr) + + def test_typed_receipt(self): + with self.assertRaisesRegex(ValueError, "different"): + V["same"]({"value": 1}, {"value": True}, "different") + + def test_strict_json(self): + for i, text in enumerate(('{"x":0,"x":1}', '{"x":NaN}', '{"x":Infinity}')): + with self.subTest(text=text): + path = self.path / (str(i) + ".json") + path.write_text(text) + with self.assertRaises(ValueError): + C["load"](path) + + def test_changed_source(self): + root = self.closure() + word = root / C["WORD"] + word.write_bytes(word.read_bytes() + b"changed") + with self.assertRaisesRegex(ValueError, "source hash mismatch"): + C["pins"](root) + + def test_missing_source(self): + root = self.closure() + (root / C["CHECKER"]).unlink() + with self.assertRaises(FileNotFoundError): + C["pins"](root) + + def test_builder_output_preserved(self): + output = self.path / "existing output" + output.mkdir() + marker = output / "keep" + marker.write_text("unchanged") + with self.assertRaises(FileExistsError): + B["run"](C["ROOT"], output) + self.assertEqual(marker.read_text(), "unchanged") + self.assertEqual([p.name for p in output.iterdir()], ["keep"]) + + def test_verifier_output_preserved(self): + output = self.path / "existing output" + output.mkdir() + marker = output / "keep" + marker.write_text("unchanged") + self.rejected_cli("--output", output, reason="output already exists") + self.assertEqual(marker.read_text(), "unchanged") + + def test_verifier_receipt_preserved(self): + receipt = self.path / "existing receipt.json" + receipt.write_text("unchanged") + self.rejected_cli("--receipt", receipt, reason="receipt already exists") + self.assertEqual(receipt.read_text(), "unchanged") + + def test_recompression_preserves_every_field(self): + original = C["load"](C["HERE"] / "candidate.json.gz") + encoded = C["canonical"](original) + containers = [gzip.compress(encoded, compresslevel=level, mtime=mtime) + for level, mtime in ((1, 0), (9, 123456789))] + self.assertNotEqual(*containers) + for i, data in enumerate(containers): + path = self.path / (str(i) + ".json.gz") + path.write_bytes(data) + V["same"](original, C["load"](path), "payload changed") + + +if __name__ == "__main__": + unittest.main() diff --git a/research/r439-two-sided-compensation/vendor/pr733/README.md b/research/r439-two-sided-compensation/vendor/pr733/README.md new file mode 100644 index 0000000000..e808135b92 --- /dev/null +++ b/research/r439-two-sided-compensation/vendor/pr733/README.md @@ -0,0 +1,191 @@ +# Two-sided basis factoring of the R420 dirt correction + +**Finite bit-circuit construction and composition evidence; no new κ.** +This combines Greer Guthrie's PR694 helper-basis construction with a fresh +target matching on its transformed coefficient matrix. The result saves +**8,368 binary XORs** in PR543's complete native word: +**26,916 → 18,548**, including all preparation and restoration. It saves +**1,434 more ADDs than PR694**. The predecessor mechanisms are credited to +their authors; the contribution here is the checked two-sided construction. + +| Quantity | Original PR543 | Helper basis PR694 | Two-sided | +|---|---:|---:|---:| +| D additions | 19,922 | 12,988 | 11,554 | +| Complete native ADDs | 26,916 | 19,982 | 18,548 | +| Exported records | 29,874 | 22,940 | 21,506 | +| Forward positive prefix | 144,651 | 202,699 | 202,699 | +| Reverse positive prefix | 2,270,064 | 2,446,788 | 4,152,374 | +| Local payload allowance, bits | 100 | 102 | 103 | +| Helpers / copies / rank mass | 420 / 9 / 5,112 | same | same | + +All 201 helper pairs from PR694 are fixed. All 57 target pairs are nominated +on the resulting matrix `KQ`, using seed 2. The complete D cost is +**201 + 57 + 11,038 + 57 + 201 = 11,554 ADDs**. It uses the same registers, +no new source access, no additional scratch, no new frame movements, and +no additional copies or recursive children. All transformed helpers are +restored before A. + +The larger reverse prefix is fully charged: +`64 * 202699^3 * 4152374^2 = 9190258315617780048732559342336 < 2^104`. +This is a local cohort bound, not a rebuilt hosted-parent invoice. No old +global precision charge or bit exponent is inherited for the changed word. + +## Reproduce + +Python 3.9 or later, standard library only: + +```sh +python3 -B research/r420-two-sided-basis/verify.py +python3 -B -m unittest discover -s research/r420-two-sided-basis -p 'test_*.py' +``` + +Expected verifier output: + +```text +PASS_R420_TWO_SIDED_BASIS native_ADDs=26916->18548 saved=8368 beyond_PR694=1434 payload_bits=103 kappa=unchanged +``` + +For fresh, unchanged C++17 legality and five-/nine-/eleven-stage checks: + +```sh +python3 -B research/r420-two-sided-basis/native.py +``` + +Boost headers are required; set `BOOST_INCLUDE` to their containing directory +and `CXX` to the compiler if needed. Expected final line: + +```text +PASS_R420_TWO_SIDED_BASIS_NATIVE words=2 stages=5,9,11 columns=900,1380,1620 bridge_controls=96 missing_D_controls=6 +``` + +Both entry points compare the complete committed certificates. Explicit +`--write-certificate NEW_PATH` requires a new path and never overwrites a +file. Optimized Python is refused because the inherited exporter uses +assertions. The checker compares decompressed source bytes, so changing gzip +headers does not invalidate the mathematical input. + +## Exact construction and sufficient interface + +All matrices in this construction act over F2. Let the old D be +`(x,s,y) -> (x,s,y+Ks)`, for 420 arbitrary dirty helpers `s` and 120 arbitrary +targets `y`. Let `Q` be PR694's product of disjoint helper transvections, +and `P` the product of the new disjoint target transvections. Both satisfy +`P^2=I` and `Q^2=I`. The literal new D is: + +1. Execute Q on the helpers, obtaining `Qs` (201 ADDs). +2. Execute P on the targets, obtaining `Py` (57 ADDs). +3. Add `(PKQ)(Qs)` to `Py`, using exactly 11,038 helper reads. +4. Undo P (57 ADDs), then undo Q (201 ADDs). + +Thus the target output is `P(Py+PKQ Qs)=y+Ks`, and the helpers return to `s`. +Every gate touches only target/helper registers at frame zero. No source is +accessed in D. Every field outside D is required to equal the original word. +Substitution of this equal complete prefix preserves the original endpoint. + +The target matching must be scored on `KQ`, not K. For a proposed pair +`(a,b)`, its fully charged saving is +`weight((KQ)_b) - weight((KQ)_a XOR (KQ)_b) - 2`. +Adding the standalone predecessor savings (6,934 + 3,150 = 10,084) is not +the saving of this circuit. The exact result is 8,368. + +Writing `P=I+A` and `Q=I+B` gives +`PKQ = K + AK + KB + AKB`. The last term is necessary: a control that omits +only `AKB` fails the full D operator. The tests separately check all 50,400 +middle-matrix coefficients using this direct four-term formula rather than +the producer's sequential row changes. + +The original literal H2 and literal extraction of K reject the changed D +syntax. They remain unchanged. The sufficient semantic replacement is that +D is a legal zero-frame prefix implementing exactly `(x,s,y+Ks)` and +restoring every helper. The proof above and the complete 660-input operator +check establish that finite claim; all other original H1/H3/H4/H5 and +decomposed conclusions are checked. Acceptance of this semantic replacement +under the inherited common-label/mutable-basis interface remains a review +obligation. + +Every register has exactly its original ordered frame path. The entire +MOVE/COPY/ERASE subsequence is identical, so the paid histogram remains +`{1:1320, 2:1440, 4:60, 5:120, 8:9}` with rank mass 5,112. All retained +copies, their closing operations, helper restoration and recursive children +are counted. F2 endpoint equality is not asserted to be equality of the +two forward integer operators. Signed inverse shears and cancellation-free +integer prefix bounds are checked separately by the retained C++ tools. + +## Evidence, search coverage and independence + +The verifier reconstructs PR694 from its recipe using direct row updates, +checks its complete native record hash and both prefix bounds against that +author's certificate, then constructs and exports the new word. It checks +original, helper-only and two-sided words on all 660 arbitrary inputs in +both directions. E8 geometry and full scalar legality use eumemic's retained +checker. Record synthesis and set-valued replay reuse pinned PR713 utilities; +this is **not a wholly independent implementation** of those checks. + +The official exporter independently matches every literal instruction. +Fresh unchanged C++ checks cover original and combined words on +900/1,380/1,620 formal columns at five/nine/eleven stages. All 96 omitted +bridges and six omitted-D-end controls are rejected across the two words. +Ten local controls include both helper/target preparation and restoration, +a wrong coefficient, illegal frame, omitted cleanup, stale target pricing, +using PK instead of PKQ, and omitting only the cross term. Four additional +tests check the direct matrix formula, all pair scores, overlap and cost. + +The OS assignment seed is **2**. Candidate tasks were another phase-B block +synthesis (crowded by PR670/674/688), split target frames (closed in the +specified domain by PR718), and this two-sided composition (chosen). +Exactly 14,280 ordered target pairs on the fixed KQ matrix are scored. +Lexicographic pair enumeration with `random.Random(2)` tie keys and one +decreasing `(gain,tie,a,b)` greedy disjoint pass selects 57 pairs. Search +stops after that pass. There is no matching optimality or general circuit +optimality claim. `CLAIM.json` records the local claim because no pinned +coordination issue existed. The presubmission refresh covered open PRs through +#730 and found no two-sided composition. + +## Provenance, attribution and scope + +Exact base: `66849e1475c930fd7732b1a0067ffee7e1e95f60`. +Selected source: PR626 `660de893d27bb7abd1d5b01b1640207528a5c851`, +conditional κ `51110230636731/31250000000000000`, using eumemic's PR543 +`2065fe4f72a914d907f1046603f5a36f17018535` bit supplier. + +Direct predecessors: + +- **Greer Guthrie's [PR694](https://github.com/CrocSwap/integer-mult-bounds/pull/694)**, + `9732ac127dd4bef98a846aaa904c20b5a84e72c1`: all 201 helper pairs and the + helper-only construction. Its recipe, certificate, README and notice are + retained byte for byte. PR686 (Mikhail R. Gadelha) supplies the preceding + single-helper-pair mechanism and semantic prefix contract. +- **Scott Woolsey Biggart's [PR713](https://github.com/CrocSwap/integer-mult-bounds/pull/713)**, + `1a19af5c5ddb6de9797a6d085e5df0b90ed6d58b`: target-basis construction and + record/set verification utilities. Those utilities and its recipe/README + are retained byte for byte; the native harness is adapted with attribution. +- Sagar Thakrar's concurrent [PR716](https://github.com/CrocSwap/integer-mult-bounds/pull/716), + `c804e7d79ac524723aa8c2d0d6a59d5e662763b3`, independently corroborates the + target-pair construction. It is credited, not imported. Its attribution + points to Dugongue's earlier [PR476](https://github.com/CrocSwap/integer-mult-bounds/pull/476), + `e850569c33ad1d5771e2f8b1c6dfe7a445396167`, for reversible target factoring + in phase B, following PR450. No new elementary identity is claimed here. + +PR708's decoder sharing, PR710's cleanup conjugation and the phase-A/B block +improvements are not composed here. PR661/711/718 concern restricted frame +searches, which this changed circuit does not reopen. `SOURCES.json` pins +every consumed source and the exact commits/Git blobs of vendored inputs. +Original attribution and licenses are retained in the linked notices. + +The selected construction and `upstream/` are unchanged. The selected assembly +is complex-limited, and this identical recursive profile does not produce a +new exponent. Full hosted-parent emission, whole-owner allocation, revised +global precision/finite invoices and outer assembly are separate integration +work. All inherited compiler/common-label/mutable-basis/physical/hosting/ +residual/precision/tape/analytic assumptions remain. This is finite evidence, +not a formal proof of the full multiplication theorem or a measured runtime +improvement. + +Prepared by **Scott Woolsey Biggart (@swbiggart)** with substantial +**OpenAI Codex assistance** in research, implementation, proof, verification +and packaging. Apache-2.0; no independent human review claimed. Credit also +remains with eumemic, Dylan Crow, DaysSky, Zhihao Chen, DreamingOfClouds, +Chafik Boukhalfa, icekylinx, Rohan Arun and the cumulative lineage in the +unchanged [R420 notice](../e8-bit-r420/NOTICE.md), +[carrier notice](../e8-bit-carrier-skeleton/NOTICE.md) and +[PR694 notice](vendor/pr694-NOTICE.md). diff --git a/research/r439-two-sided-compensation/vendor/pr915/CERTIFICATE.json b/research/r439-two-sided-compensation/vendor/pr915/CERTIFICATE.json new file mode 100644 index 0000000000..880e461a02 --- /dev/null +++ b/research/r439-two-sided-compensation/vendor/pr915/CERTIFICATE.json @@ -0,0 +1,2775 @@ +{ + "B": 9534616, + "D_adds": 6988, + "F": 49347, + "baseline_sha256": "5642fd0e35a1acc11acff8d0c08350c1617e95f310d4d35ad63a651f9eeeba0b", + "candidate_sha256": "6aec2c6f91c87a7440af10cdeb90b8814501224a86de14d4033ae3ffa00899da", + "format": "r439-compensation/1", + "forward_cap": 49347, + "forward_rejections": 0, + "native_ADDs": 13208, + "nine_stage_prefix_bits": 189, + "pair_scores": 3748470, + "payload_bits": 100, + "positive_pairs": 218204, + "reverse_cap": 16913320, + "reverse_rejections": 0, + "seed": 10, + "steps": [ + { + "B": 1125980, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 20006, + "destination": 57, + "gain": 187, + "source": 50 + }, + { + "B": 1125980, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 68090, + "destination": 0, + "gain": 176, + "source": 5 + }, + { + "B": 1125980, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 38804, + "destination": 66, + "gain": 173, + "source": 60 + }, + { + "B": 1125980, + "F": 49347, + "delta_forward": 24, + "delta_reverse": 54594, + "destination": 46, + "gain": 172, + "source": 62 + }, + { + "B": 1125980, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 70342, + "destination": 11, + "gain": 170, + "source": 9 + }, + { + "B": 1125980, + "F": 49347, + "delta_forward": 26, + "delta_reverse": 61738, + "destination": 72, + "gain": 145, + "source": 54 + }, + { + "B": 1401222, + "F": 49347, + "delta_forward": 68, + "delta_reverse": 308996, + "destination": 27, + "gain": 117, + "source": 52 + }, + { + "B": 1401222, + "F": 49347, + "delta_forward": 94, + "delta_reverse": 270976, + "destination": 47, + "gain": 112, + "source": 68 + }, + { + "B": 1401222, + "F": 49347, + "delta_forward": 80, + "delta_reverse": 326324, + "destination": 23, + "gain": 111, + "source": 102 + }, + { + "B": 1401222, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 51118, + "destination": 56, + "gain": 108, + "source": 69 + }, + { + "B": 1565750, + "F": 49347, + "delta_forward": 92, + "delta_reverse": 439770, + "destination": 50, + "gain": 104, + "source": 5 + }, + { + "B": 1565750, + "F": 49347, + "delta_forward": 90, + "delta_reverse": 306610, + "destination": 62, + "gain": 103, + "source": 60 + }, + { + "B": 1565750, + "F": 49347, + "delta_forward": 78, + "delta_reverse": 229206, + "destination": 85, + "gain": 101, + "source": 34 + }, + { + "B": 1565750, + "F": 49347, + "delta_forward": 96, + "delta_reverse": 409882, + "destination": 92, + "gain": 100, + "source": 5 + }, + { + "B": 1565750, + "F": 49347, + "delta_forward": 86, + "delta_reverse": 261842, + "destination": 63, + "gain": 99, + "source": 52 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 86, + "delta_reverse": 460638, + "destination": 5, + "gain": 97, + "source": 74 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 90, + "delta_reverse": 384884, + "destination": 68, + "gain": 96, + "source": 9 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 85928, + "destination": 6, + "gain": 96, + "source": 3 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 96, + "delta_reverse": 522854, + "destination": 10, + "gain": 94, + "source": 13 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 104, + "delta_reverse": 660064, + "destination": 59, + "gain": 87, + "source": 51 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 90, + "delta_reverse": 296298, + "destination": 29, + "gain": 87, + "source": 101 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 86, + "delta_reverse": 350098, + "destination": 73, + "gain": 85, + "source": 40 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 86, + "delta_reverse": 303614, + "destination": 60, + "gain": 85, + "source": 54 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 72, + "delta_reverse": 283474, + "destination": 21, + "gain": 84, + "source": 91 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 24, + "delta_reverse": 79474, + "destination": 65, + "gain": 84, + "source": 67 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 82870, + "destination": 63, + "gain": 83, + "source": 47 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 88, + "delta_reverse": 469912, + "destination": 17, + "gain": 83, + "source": 54 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 102, + "delta_reverse": 494472, + "destination": 103, + "gain": 82, + "source": 2 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 88, + "delta_reverse": 358298, + "destination": 108, + "gain": 82, + "source": 7 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 8, + "delta_reverse": 39986, + "destination": 103, + "gain": 91, + "source": 108 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 82, + "delta_reverse": 403608, + "destination": 98, + "gain": 80, + "source": 25 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 96, + "delta_reverse": 476370, + "destination": 104, + "gain": 80, + "source": 107 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 6, + "delta_reverse": 28496, + "destination": 104, + "gain": 97, + "source": 10 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 100, + "delta_reverse": 499080, + "destination": 52, + "gain": 79, + "source": 97 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 76, + "delta_reverse": 330384, + "destination": 15, + "gain": 79, + "source": 94 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 98, + "delta_reverse": 449894, + "destination": 14, + "gain": 79, + "source": 90 + }, + { + "B": 2026388, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 31184, + "destination": 14, + "gain": 84, + "source": 98 + }, + { + "B": 2481858, + "F": 49347, + "delta_forward": 94, + "delta_reverse": 455470, + "destination": 74, + "gain": 79, + "source": 77 + }, + { + "B": 2481858, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 43320, + "destination": 87, + "gain": 88, + "source": 74 + }, + { + "B": 2481858, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 67228, + "destination": 47, + "gain": 76, + "source": 48 + }, + { + "B": 2481858, + "F": 49347, + "delta_forward": 104, + "delta_reverse": 397206, + "destination": 42, + "gain": 76, + "source": 39 + }, + { + "B": 2481858, + "F": 49347, + "delta_forward": 82, + "delta_reverse": 255372, + "destination": 99, + "gain": 76, + "source": 24 + }, + { + "B": 2481858, + "F": 49347, + "delta_forward": 6, + "delta_reverse": 17538, + "destination": 29, + "gain": 98, + "source": 99 + }, + { + "B": 2481858, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 46502, + "destination": 85, + "gain": 75, + "source": 73 + }, + { + "B": 2481858, + "F": 49347, + "delta_forward": 104, + "delta_reverse": 629712, + "destination": 9, + "gain": 75, + "source": 97 + }, + { + "B": 2481858, + "F": 49347, + "delta_forward": 86, + "delta_reverse": 261360, + "destination": 32, + "gain": 74, + "source": 83 + }, + { + "B": 2481858, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 27852, + "destination": 73, + "gain": 75, + "source": 32 + }, + { + "B": 2481858, + "F": 49347, + "delta_forward": 106, + "delta_reverse": 546396, + "destination": 36, + "gain": 72, + "source": 30 + }, + { + "B": 2481858, + "F": 49347, + "delta_forward": 98, + "delta_reverse": 387432, + "destination": 2, + "gain": 72, + "source": 7 + }, + { + "B": 2481858, + "F": 49347, + "delta_forward": 98, + "delta_reverse": 449760, + "destination": 81, + "gain": 70, + "source": 86 + }, + { + "B": 2481858, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 62270, + "destination": 42, + "gain": 87, + "source": 81 + }, + { + "B": 2481858, + "F": 49347, + "delta_forward": 86, + "delta_reverse": 282526, + "destination": 102, + "gain": 69, + "source": 94 + }, + { + "B": 2939320, + "F": 49347, + "delta_forward": 102, + "delta_reverse": 457462, + "destination": 77, + "gain": 69, + "source": 54 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 82, + "delta_reverse": 411424, + "destination": 54, + "gain": 68, + "source": 35 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 70, + "delta_reverse": 217488, + "destination": 16, + "gain": 68, + "source": 88 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 52324, + "destination": 99, + "gain": 86, + "source": 16 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 98, + "delta_reverse": 348380, + "destination": 100, + "gain": 68, + "source": 28 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 6, + "delta_reverse": 12262, + "destination": 100, + "gain": 94, + "source": 98 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 82, + "delta_reverse": 399392, + "destination": 33, + "gain": 68, + "source": 35 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 49236, + "destination": 33, + "gain": 88, + "source": 74 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 39668, + "destination": 23, + "gain": 67, + "source": 21 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 35060, + "destination": 21, + "gain": 67, + "source": 15 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 60, + "delta_reverse": 214930, + "destination": 40, + "gain": 66, + "source": 45 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 112, + "delta_reverse": 617644, + "destination": 51, + "gain": 65, + "source": 55 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 112, + "delta_reverse": 830384, + "destination": 70, + "gain": 65, + "source": 55 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 82380, + "destination": 70, + "gain": 94, + "source": 59 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 70, + "delta_reverse": 218864, + "destination": 20, + "gain": 64, + "source": 95 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 150604, + "destination": 98, + "gain": 85, + "source": 20 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 52, + "delta_reverse": 327186, + "destination": 89, + "gain": 62, + "source": 3 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 66, + "delta_reverse": 237630, + "destination": 37, + "gain": 59, + "source": 31 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 4, + "delta_reverse": 12110, + "destination": 37, + "gain": 99, + "source": 81 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 104, + "delta_reverse": 443012, + "destination": 80, + "gain": 59, + "source": 75 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 72688, + "destination": 36, + "gain": 95, + "source": 80 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 88, + "delta_reverse": 324818, + "destination": 12, + "gain": 58, + "source": 8 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 49100, + "destination": 10, + "gain": 87, + "source": 12 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 86, + "delta_reverse": 380634, + "destination": 84, + "gain": 57, + "source": 82 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 70862, + "destination": 84, + "gain": 93, + "source": 80 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 112, + "delta_reverse": 590422, + "destination": 13, + "gain": 56, + "source": 86 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 104, + "delta_reverse": 325166, + "destination": 30, + "gain": 56, + "source": 41 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 84, + "delta_reverse": 337630, + "destination": 109, + "gain": 54, + "source": 4 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 8, + "delta_reverse": 39986, + "destination": 109, + "gain": 91, + "source": 108 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 114, + "delta_reverse": 627244, + "destination": 39, + "gain": 54, + "source": 86 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 72, + "delta_reverse": 263540, + "destination": 110, + "gain": 53, + "source": 105 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 6, + "delta_reverse": 19772, + "destination": 110, + "gain": 95, + "source": 12 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 80, + "delta_reverse": 519220, + "destination": 43, + "gain": 53, + "source": 58 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 86, + "delta_reverse": 416108, + "destination": 97, + "gain": 52, + "source": 88 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 58, + "delta_reverse": 218122, + "destination": 58, + "gain": 52, + "source": 59 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 104, + "delta_reverse": 616732, + "destination": 34, + "gain": 51, + "source": 94 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 44, + "delta_reverse": 164238, + "destination": 90, + "gain": 50, + "source": 48 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 66, + "delta_reverse": 328980, + "destination": 25, + "gain": 61, + "source": 90 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 88, + "delta_reverse": 463620, + "destination": 71, + "gain": 49, + "source": 53 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 96030, + "destination": 71, + "gain": 96, + "source": 59 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 100, + "delta_reverse": 483454, + "destination": 41, + "gain": 48, + "source": 44 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 65022, + "destination": 41, + "gain": 93, + "source": 80 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 68, + "delta_reverse": 304426, + "destination": 86, + "gain": 46, + "source": 3 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 72, + "delta_reverse": 242556, + "destination": 102, + "gain": 45, + "source": 19 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 94, + "delta_reverse": 296840, + "destination": 101, + "gain": 44, + "source": 88 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 78, + "delta_reverse": 284924, + "destination": 26, + "gain": 44, + "source": 96 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 45870, + "destination": 15, + "gain": 65, + "source": 26 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 82, + "delta_reverse": 249524, + "destination": 78, + "gain": 44, + "source": 45 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 27852, + "destination": 78, + "gain": 75, + "source": 32 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 58, + "delta_reverse": 208700, + "destination": 101, + "gain": 43, + "source": 12 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 84, + "delta_reverse": 336618, + "destination": 55, + "gain": 43, + "source": 90 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 66, + "delta_reverse": 141618, + "destination": 69, + "gain": 42, + "source": 60 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 40902, + "destination": 62, + "gain": 72, + "source": 69 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 102, + "delta_reverse": 619006, + "destination": 75, + "gain": 41, + "source": 82 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 6, + "delta_reverse": 25210, + "destination": 30, + "gain": 116, + "source": 75 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 90, + "delta_reverse": 330906, + "destination": 18, + "gain": 35, + "source": 93 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 6, + "delta_reverse": 14286, + "destination": 16, + "gain": 96, + "source": 18 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 102, + "delta_reverse": 468770, + "destination": 28, + "gain": 35, + "source": 53 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 82, + "delta_reverse": 572820, + "destination": 61, + "gain": 32, + "source": 3 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 90, + "delta_reverse": 276324, + "destination": 91, + "gain": 32, + "source": 96 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 74, + "delta_reverse": 256786, + "destination": 91, + "gain": 43, + "source": 19 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 56470, + "destination": 91, + "gain": 63, + "source": 102 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 78, + "delta_reverse": 344898, + "destination": 22, + "gain": 32, + "source": 59 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 90, + "delta_reverse": 358554, + "destination": 106, + "gain": 31, + "source": 1 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 6, + "delta_reverse": 19504, + "destination": 108, + "gain": 93, + "source": 106 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 64, + "delta_reverse": 219362, + "destination": 7, + "gain": 30, + "source": 48 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 84, + "delta_reverse": 458976, + "destination": 107, + "gain": 29, + "source": 38 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 94, + "delta_reverse": 399172, + "destination": 24, + "gain": 28, + "source": 96 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 60, + "delta_reverse": 152018, + "destination": 81, + "gain": 28, + "source": 69 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 86, + "delta_reverse": 599896, + "destination": 51, + "gain": 28, + "source": 3 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 104, + "delta_reverse": 522932, + "destination": 49, + "gain": 27, + "source": 64 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 128886, + "destination": 59, + "gain": 92, + "source": 49 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 94, + "delta_reverse": 328294, + "destination": 4, + "gain": 27, + "source": 1 + }, + { + "B": 3350744, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 40020, + "destination": 2, + "gain": 97, + "source": 4 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 96, + "delta_reverse": 483494, + "destination": 35, + "gain": 26, + "source": 96 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 112, + "delta_reverse": 755530, + "destination": 44, + "gain": 26, + "source": 88 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 88, + "delta_reverse": 319368, + "destination": 94, + "gain": 25, + "source": 38 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 98, + "delta_reverse": 375270, + "destination": 107, + "gain": 24, + "source": 86 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 64, + "delta_reverse": 257610, + "destination": 13, + "gain": 61, + "source": 107 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 98, + "delta_reverse": 456898, + "destination": 76, + "gain": 24, + "source": 86 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 98, + "delta_reverse": 445470, + "destination": 8, + "gain": 23, + "source": 1 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 92, + "delta_reverse": 484490, + "destination": 75, + "gain": 22, + "source": 3 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 92, + "delta_reverse": 656518, + "destination": 19, + "gain": 22, + "source": 3 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 72, + "delta_reverse": 263650, + "destination": 106, + "gain": 23, + "source": 19 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 72, + "delta_reverse": 226642, + "destination": 83, + "gain": 22, + "source": 48 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 100, + "delta_reverse": 393388, + "destination": 79, + "gain": 22, + "source": 86 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 62, + "delta_reverse": 339578, + "destination": 40, + "gain": 21, + "source": 58 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 60, + "delta_reverse": 203566, + "destination": 12, + "gain": 21, + "source": 26 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 86, + "delta_reverse": 496518, + "destination": 82, + "gain": 20, + "source": 52 + }, + { + "B": 3834238, + "F": 49347, + "delta_forward": 86, + "delta_reverse": 504854, + "destination": 38, + "gain": 18, + "source": 77 + }, + { + "B": 3889268, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 55030, + "destination": 54, + "gain": 83, + "source": 38 + }, + { + "B": 3889268, + "F": 49347, + "delta_forward": 12, + "delta_reverse": 20404, + "destination": 48, + "gain": 16, + "source": 66 + }, + { + "B": 3889268, + "F": 49347, + "delta_forward": 60, + "delta_reverse": 179546, + "destination": 18, + "gain": 20, + "source": 48 + }, + { + "B": 3889268, + "F": 49347, + "delta_forward": 10, + "delta_reverse": 12310, + "destination": 72, + "gain": 15, + "source": 62 + }, + { + "B": 3889268, + "F": 49347, + "delta_forward": 112, + "delta_reverse": 603802, + "destination": 93, + "gain": 15, + "source": 97 + }, + { + "B": 3889268, + "F": 49347, + "delta_forward": 112, + "delta_reverse": 642698, + "destination": 95, + "gain": 14, + "source": 45 + }, + { + "B": 3889268, + "F": 49347, + "delta_forward": 92, + "delta_reverse": 671724, + "destination": 39, + "gain": 14, + "source": 49 + }, + { + "B": 3889268, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 39166, + "destination": 3, + "gain": 14, + "source": 66 + }, + { + "B": 3889268, + "F": 49347, + "delta_forward": 98, + "delta_reverse": 557124, + "destination": 9, + "gain": 14, + "source": 93 + }, + { + "B": 3944612, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 55344, + "destination": 57, + "gain": 13, + "source": 65 + }, + { + "B": 3944612, + "F": 49347, + "delta_forward": 96, + "delta_reverse": 463650, + "destination": 67, + "gain": 13, + "source": 80 + }, + { + "B": 3944612, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 32676, + "destination": 66, + "gain": 13, + "source": 65 + }, + { + "B": 3944612, + "F": 49347, + "delta_forward": 66, + "delta_reverse": 240858, + "destination": 7, + "gain": 12, + "source": 106 + }, + { + "B": 3944612, + "F": 49347, + "delta_forward": 10, + "delta_reverse": 29242, + "destination": 93, + "gain": 12, + "source": 70 + }, + { + "B": 3944612, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 62376, + "destination": 0, + "gain": 11, + "source": 11 + }, + { + "B": 3944612, + "F": 49347, + "delta_forward": 86, + "delta_reverse": 333582, + "destination": 60, + "gain": 11, + "source": 67 + }, + { + "B": 4437804, + "F": 49347, + "delta_forward": 72, + "delta_reverse": 370964, + "destination": 80, + "gain": 11, + "source": 58 + }, + { + "B": 4437804, + "F": 49347, + "delta_forward": 88, + "delta_reverse": 355286, + "destination": 49, + "gain": 14, + "source": 80 + }, + { + "B": 4437804, + "F": 49347, + "delta_forward": 80, + "delta_reverse": 319618, + "destination": 52, + "gain": 20, + "source": 49 + }, + { + "B": 4437804, + "F": 49347, + "delta_forward": 82, + "delta_reverse": 377072, + "destination": 20, + "gain": 18, + "source": 49 + }, + { + "B": 4437804, + "F": 49347, + "delta_forward": 12, + "delta_reverse": 30072, + "destination": 52, + "gain": 10, + "source": 70 + }, + { + "B": 4437804, + "F": 49347, + "delta_forward": 94, + "delta_reverse": 564958, + "destination": 83, + "gain": 10, + "source": 77 + }, + { + "B": 4437804, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 43074, + "destination": 4, + "gain": 10, + "source": 6 + }, + { + "B": 4437804, + "F": 49347, + "delta_forward": 124, + "delta_reverse": 488432, + "destination": 90, + "gain": 10, + "source": 7 + }, + { + "B": 4437804, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 68678, + "destination": 11, + "gain": 10, + "source": 6 + }, + { + "B": 4437804, + "F": 49347, + "delta_forward": 112, + "delta_reverse": 570730, + "destination": 64, + "gain": 10, + "source": 96 + }, + { + "B": 4437804, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 31446, + "destination": 46, + "gain": 9, + "source": 56 + }, + { + "B": 4437804, + "F": 49347, + "delta_forward": 92, + "delta_reverse": 463686, + "destination": 89, + "gain": 9, + "source": 92 + }, + { + "B": 4437804, + "F": 49347, + "delta_forward": 8, + "delta_reverse": 20750, + "destination": 14, + "gain": 9, + "source": 98 + }, + { + "B": 4437804, + "F": 49347, + "delta_forward": 10, + "delta_reverse": 10496, + "destination": 62, + "gain": 9, + "source": 46 + }, + { + "B": 5071832, + "F": 49347, + "delta_forward": 116, + "delta_reverse": 634028, + "destination": 88, + "gain": 9, + "source": 105 + }, + { + "B": 5071832, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 29886, + "destination": 67, + "gain": 9, + "source": 56 + }, + { + "B": 5071832, + "F": 49347, + "delta_forward": 74, + "delta_reverse": 365482, + "destination": 39, + "gain": 9, + "source": 58 + }, + { + "B": 5071832, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 41942, + "destination": 77, + "gain": 8, + "source": 70 + }, + { + "B": 5071832, + "F": 49347, + "delta_forward": 10, + "delta_reverse": 32210, + "destination": 73, + "gain": 8, + "source": 78 + }, + { + "B": 5071832, + "F": 49347, + "delta_forward": 122, + "delta_reverse": 568606, + "destination": 53, + "gain": 8, + "source": 24 + }, + { + "B": 5071832, + "F": 49347, + "delta_forward": 10, + "delta_reverse": 118938, + "destination": 55, + "gain": 8, + "source": 71 + }, + { + "B": 5071832, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 40332, + "destination": 27, + "gain": 8, + "source": 6 + }, + { + "B": 5071832, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 25328, + "destination": 32, + "gain": 7, + "source": 56 + }, + { + "B": 5071832, + "F": 49347, + "delta_forward": 10, + "delta_reverse": 12048, + "destination": 6, + "gain": 7, + "source": 0 + }, + { + "B": 5071832, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 16078, + "destination": 69, + "gain": 7, + "source": 6 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 63544, + "destination": 80, + "gain": 7, + "source": 47 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 16766, + "destination": 22, + "gain": 7, + "source": 6 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 72664, + "destination": 18, + "gain": 7, + "source": 47 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 76, + "delta_reverse": 429824, + "destination": 68, + "gain": 7, + "source": 58 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 10, + "delta_reverse": 26788, + "destination": 9, + "gain": 7, + "source": 0 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 25328, + "destination": 12, + "gain": 7, + "source": 56 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 127830, + "destination": 20, + "gain": 6, + "source": 59 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 57296, + "destination": 38, + "gain": 6, + "source": 70 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 12, + "delta_reverse": 121456, + "destination": 78, + "gain": 6, + "source": 85 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 52322, + "destination": 9, + "gain": 6, + "source": 59 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 17752, + "destination": 56, + "gain": 6, + "source": 72 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 10, + "delta_reverse": 24366, + "destination": 15, + "gain": 6, + "source": 23 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 8, + "delta_reverse": 44080, + "destination": 103, + "gain": 6, + "source": 109 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 22, + "delta_reverse": 80728, + "destination": 32, + "gain": 5, + "source": 65 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 38980, + "destination": 74, + "gain": 5, + "source": 6 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 22, + "delta_reverse": 80728, + "destination": 101, + "gain": 5, + "source": 65 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 25580, + "destination": 1, + "gain": 5, + "source": 6 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 12, + "delta_reverse": 43796, + "destination": 76, + "gain": 4, + "source": 57 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 67676, + "destination": 74, + "gain": 4, + "source": 59 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 12, + "delta_reverse": 35656, + "destination": 101, + "gain": 4, + "source": 57 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 57554, + "destination": 13, + "gain": 4, + "source": 54 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 121378, + "destination": 51, + "gain": 4, + "source": 70 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 18498, + "destination": 19, + "gain": 4, + "source": 72 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 18482, + "destination": 102, + "gain": 4, + "source": 72 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 134440, + "destination": 49, + "gain": 4, + "source": 59 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 20970, + "destination": 17, + "gain": 4, + "source": 72 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 138022, + "destination": 89, + "gain": 4, + "source": 71 + }, + { + "B": 5198920, + "F": 49347, + "delta_forward": 94, + "delta_reverse": 467430, + "destination": 68, + "gain": 8, + "source": 89 + }, + { + "B": 5453532, + "F": 49347, + "delta_forward": 94, + "delta_reverse": 321716, + "destination": 68, + "gain": 5, + "source": 80 + }, + { + "B": 5631746, + "F": 49347, + "delta_forward": 56, + "delta_reverse": 178214, + "destination": 68, + "gain": 38, + "source": 52 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 8, + "delta_reverse": 10826, + "destination": 68, + "gain": 9, + "source": 0 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 155846, + "destination": 22, + "gain": 4, + "source": 70 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 86, + "delta_reverse": 448574, + "destination": 92, + "gain": 7, + "source": 22 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 31778, + "destination": 75, + "gain": 4, + "source": 33 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 18482, + "destination": 95, + "gain": 4, + "source": 72 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 12, + "delta_reverse": 35656, + "destination": 32, + "gain": 4, + "source": 57 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 45072, + "destination": 3, + "gain": 4, + "source": 99 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 21552, + "destination": 56, + "gain": 4, + "source": 62 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 167166, + "destination": 40, + "gain": 4, + "source": 71 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 57548, + "destination": 61, + "gain": 3, + "source": 47 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 79888, + "destination": 67, + "gain": 3, + "source": 41 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 23986, + "destination": 79, + "gain": 3, + "source": 6 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 96, + "delta_reverse": 411978, + "destination": 79, + "gain": 6, + "source": 76 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 80, + "delta_reverse": 166172, + "destination": 79, + "gain": 11, + "source": 69 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 30, + "delta_reverse": 102866, + "destination": 79, + "gain": 49, + "source": 81 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 10, + "delta_reverse": 53630, + "destination": 79, + "gain": 10, + "source": 42 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 8, + "delta_reverse": 24964, + "destination": 79, + "gain": 8, + "source": 57 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 96, + "delta_reverse": 426974, + "destination": 94, + "gain": 3, + "source": 5 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 18482, + "destination": 94, + "gain": 4, + "source": 72 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 46832, + "destination": 94, + "gain": 3, + "source": 87 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 30336, + "destination": 50, + "gain": 3, + "source": 98 + }, + { + "B": 5642572, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 23986, + "destination": 75, + "gain": 3, + "source": 6 + }, + { + "B": 5711836, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 69264, + "destination": 58, + "gain": 3, + "source": 63 + }, + { + "B": 5711836, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 77636, + "destination": 60, + "gain": 3, + "source": 41 + }, + { + "B": 5711836, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 49740, + "destination": 20, + "gain": 3, + "source": 47 + }, + { + "B": 5711836, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 58240, + "destination": 31, + "gain": 3, + "source": 41 + }, + { + "B": 5711836, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 74718, + "destination": 77, + "gain": 3, + "source": 84 + }, + { + "B": 5711836, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 39562, + "destination": 50, + "gain": 3, + "source": 6 + }, + { + "B": 5759924, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 48088, + "destination": 88, + "gain": 3, + "source": 47 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 108, + "delta_reverse": 338234, + "destination": 3, + "gain": 3, + "source": 50 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 46430, + "destination": 68, + "gain": 3, + "source": 6 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 50928, + "destination": 5, + "gain": 2, + "source": 36 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 22806, + "destination": 77, + "gain": 2, + "source": 62 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 49096, + "destination": 43, + "gain": 2, + "source": 33 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 88, + "delta_reverse": 571610, + "destination": 34, + "gain": 2, + "source": 40 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 14, + "delta_reverse": 39046, + "destination": 18, + "gain": 2, + "source": 57 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 52686, + "destination": 34, + "gain": 2, + "source": 59 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 22806, + "destination": 60, + "gain": 2, + "source": 62 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 132, + "delta_reverse": 713358, + "destination": 28, + "gain": 2, + "source": 55 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 64, + "delta_reverse": 330058, + "destination": 28, + "gain": 22, + "source": 58 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 98, + "delta_reverse": 844844, + "destination": 28, + "gain": 10, + "source": 61 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 88, + "delta_reverse": 411802, + "destination": 28, + "gain": 12, + "source": 51 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 58464, + "destination": 20, + "gain": 2, + "source": 36 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 101916, + "destination": 28, + "gain": 2, + "source": 70 + }, + { + "B": 5824606, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 226728, + "destination": 28, + "gain": 2, + "source": 71 + }, + { + "B": 5890714, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 22036, + "destination": 47, + "gain": 2, + "source": 72 + }, + { + "B": 5906288, + "F": 49347, + "delta_forward": 28, + "delta_reverse": 60250, + "destination": 49, + "gain": 5, + "source": 47 + }, + { + "B": 5906288, + "F": 49347, + "delta_forward": 22, + "delta_reverse": 66332, + "destination": 87, + "gain": 2, + "source": 54 + }, + { + "B": 5906288, + "F": 49347, + "delta_forward": 8, + "delta_reverse": 20468, + "destination": 87, + "gain": 10, + "source": 33 + }, + { + "B": 5906288, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 133584, + "destination": 19, + "gain": 2, + "source": 78 + }, + { + "B": 5906288, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 22806, + "destination": 86, + "gain": 2, + "source": 62 + }, + { + "B": 5945182, + "F": 49347, + "delta_forward": 12, + "delta_reverse": 54468, + "destination": 75, + "gain": 2, + "source": 109 + }, + { + "B": 5945182, + "F": 49347, + "delta_forward": 22, + "delta_reverse": 66376, + "destination": 77, + "gain": 2, + "source": 54 + }, + { + "B": 6431574, + "F": 49347, + "delta_forward": 98, + "delta_reverse": 581148, + "destination": 93, + "gain": 2, + "source": 9 + }, + { + "B": 6617956, + "F": 49347, + "delta_forward": 42, + "delta_reverse": 186382, + "destination": 93, + "gain": 60, + "source": 89 + }, + { + "B": 6932878, + "F": 49347, + "delta_forward": 98, + "delta_reverse": 314922, + "destination": 93, + "gain": 14, + "source": 68 + }, + { + "B": 7410460, + "F": 49347, + "delta_forward": 146, + "delta_reverse": 477582, + "destination": 6, + "gain": 8, + "source": 93 + }, + { + "B": 7569520, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 159060, + "destination": 70, + "gain": 2, + "source": 71 + }, + { + "B": 7702630, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 133110, + "destination": 59, + "gain": 8, + "source": 70 + }, + { + "B": 8016030, + "F": 49347, + "delta_forward": 24, + "delta_reverse": 156700, + "destination": 68, + "gain": 2, + "source": 59 + }, + { + "B": 8016030, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 66680, + "destination": 25, + "gain": 2, + "source": 36 + }, + { + "B": 8016030, + "F": 49347, + "delta_forward": 22, + "delta_reverse": 62440, + "destination": 24, + "gain": 2, + "source": 54 + }, + { + "B": 8016030, + "F": 49347, + "delta_forward": 106, + "delta_reverse": 612232, + "destination": 82, + "gain": 2, + "source": 61 + }, + { + "B": 8016030, + "F": 49347, + "delta_forward": 96, + "delta_reverse": 427224, + "destination": 82, + "gain": 2, + "source": 20 + }, + { + "B": 8016030, + "F": 49347, + "delta_forward": 130, + "delta_reverse": 501870, + "destination": 102, + "gain": 2, + "source": 68 + }, + { + "B": 8016030, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 19668, + "destination": 64, + "gain": 2, + "source": 72 + }, + { + "B": 8329430, + "F": 49347, + "delta_forward": 24, + "delta_reverse": 156700, + "destination": 89, + "gain": 2, + "source": 59 + }, + { + "B": 8329430, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 37438, + "destination": 25, + "gain": 1, + "source": 66 + }, + { + "B": 8329430, + "F": 49347, + "delta_forward": 110, + "delta_reverse": 444568, + "destination": 5, + "gain": 1, + "source": 74 + }, + { + "B": 8329430, + "F": 49347, + "delta_forward": 24, + "delta_reverse": 56966, + "destination": 94, + "gain": 1, + "source": 87 + }, + { + "B": 8329430, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 74022, + "destination": 95, + "gain": 1, + "source": 0 + }, + { + "B": 8329430, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 64262, + "destination": 83, + "gain": 1, + "source": 2 + }, + { + "B": 8329430, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 58258, + "destination": 7, + "gain": 1, + "source": 0 + }, + { + "B": 8392926, + "F": 49347, + "delta_forward": 42, + "delta_reverse": 63496, + "destination": 48, + "gain": 1, + "source": 56 + }, + { + "B": 8392926, + "F": 49347, + "delta_forward": 156, + "delta_reverse": 485090, + "destination": 45, + "gain": 1, + "source": 6 + }, + { + "B": 8469752, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 76826, + "destination": 80, + "gain": 1, + "source": 63 + }, + { + "B": 8526718, + "F": 49347, + "delta_forward": 24, + "delta_reverse": 56966, + "destination": 65, + "gain": 1, + "source": 87 + }, + { + "B": 8526718, + "F": 49347, + "delta_forward": 46, + "delta_reverse": 130198, + "destination": 69, + "gain": 2, + "source": 65 + }, + { + "B": 8564436, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 37718, + "destination": 105, + "gain": 1, + "source": 98 + }, + { + "B": 8564436, + "F": 49347, + "delta_forward": 24, + "delta_reverse": 56966, + "destination": 3, + "gain": 1, + "source": 87 + }, + { + "B": 9534616, + "F": 49347, + "delta_forward": 156, + "delta_reverse": 485090, + "destination": 63, + "gain": 1, + "source": 6 + }, + { + "B": 9534616, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 37314, + "destination": 26, + "gain": 1, + "source": 0 + }, + { + "B": 9534616, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 103420, + "destination": 41, + "gain": 1, + "source": 84 + }, + { + "B": 9534616, + "F": 49347, + "delta_forward": 20, + "delta_reverse": 81212, + "destination": 36, + "gain": 6, + "source": 41 + }, + { + "B": 9534616, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 86628, + "destination": 49, + "gain": 1, + "source": 84 + }, + { + "B": 9534616, + "F": 49347, + "delta_forward": 118, + "delta_reverse": 684184, + "destination": 96, + "gain": 2, + "source": 49 + }, + { + "B": 9534616, + "F": 49347, + "delta_forward": 30, + "delta_reverse": 68928, + "destination": 96, + "gain": 3, + "source": 47 + }, + { + "B": 9534616, + "F": 49347, + "delta_forward": 32, + "delta_reverse": 78442, + "destination": 38, + "gain": 1, + "source": 47 + }, + { + "B": 9534616, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 45428, + "destination": 55, + "gain": 1, + "source": 46 + }, + { + "B": 9534616, + "F": 49347, + "delta_forward": 24, + "delta_reverse": 56966, + "destination": 50, + "gain": 1, + "source": 87 + }, + { + "B": 9534616, + "F": 49347, + "delta_forward": 16, + "delta_reverse": 61730, + "destination": 24, + "gain": 1, + "source": 11 + }, + { + "B": 9534616, + "F": 49347, + "delta_forward": 24, + "delta_reverse": 56966, + "destination": 67, + "gain": 1, + "source": 87 + }, + { + "B": 9534616, + "F": 49347, + "delta_forward": 18, + "delta_reverse": 45532, + "destination": 60, + "gain": 1, + "source": 46 + } + ], + "stopping_reason": "no admissible strict-gain ordered pair" +} diff --git a/research/r439-two-sided-compensation/vendor/pr915/EXPECTED.json b/research/r439-two-sided-compensation/vendor/pr915/EXPECTED.json new file mode 100644 index 0000000000..2d6335d46b --- /dev/null +++ b/research/r439-two-sided-compensation/vendor/pr915/EXPECTED.json @@ -0,0 +1,3004 @@ +{ + "baseline_sha256": "5642fd0e35a1acc11acff8d0c08350c1617e95f310d4d35ad63a651f9eeeba0b", + "boundary_columns": 661, + "boundary_words_and_directions": 4, + "candidate_sha256": "6aec2c6f91c87a7440af10cdeb90b8814501224a86de14d4033ae3ffa00899da", + "certificate_sha256": "f350a62882c1de669c63c8418a13a855ad81a1e4ad46089cbf28791b07303273", + "controls": { + "paid_neutral_pair": 2, + "rejected": [ + "missing entrance passes helper-only checking", + "missing target restoration", + "missing recoded helper injection", + "undo in forward order", + "nonzero D frame", + "temporary helper write", + "source read at frame zero", + "undercharged restoration", + "local payload overrun", + "nine-stage overrun below local cap", + "forward guard overrun", + "boolean masquerading as count", + "unrelated cleanup change", + "boolean target index" + ] + }, + "native": { + "baseline": { + "common_frame_ADDs": 24305, + "copies": 9, + "erasures": 9, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 27234, + "staged": { + "11": { + "bridge_additions": 2664, + "controls_rejected": 24, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 45, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 10 + } + ] + }, + "5": { + "bridge_additions": 666, + "controls_rejected": 6, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 18, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 4 + } + ] + }, + "9": { + "bridge_additions": 1998, + "controls_rejected": 18, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 93, + "payload_prefix_upper": "9528119495320518471870892800", + "reverse_fresh_center_copies": 36, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 21, + "cancellation_free_signed_row_l1_upper": "1113070", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 24305, + "signed_inverse": false, + "stage": 8 + } + ] + } + } + }, + "candidate": { + "common_frame_ADDs": 13208, + "copies": 9, + "erasures": 9, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 16137, + "staged": { + "11": { + "bridge_additions": 2664, + "controls_rejected": 24, + "formal_columns_checked": 1549, + "fresh_center_copies": 99, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 100, + "payload_prefix_upper": "699147249763640764132165496832", + "reverse_fresh_center_copies": 45, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 24, + "cancellation_free_signed_row_l1_upper": "9534616", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 10 + } + ] + }, + "5": { + "bridge_additions": 666, + "controls_rejected": 6, + "formal_columns_checked": 883, + "fresh_center_copies": 45, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 100, + "payload_prefix_upper": "699147249763640764132165496832", + "reverse_fresh_center_copies": 18, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 24, + "cancellation_free_signed_row_l1_upper": "9534616", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 4 + } + ] + }, + "9": { + "bridge_additions": 1998, + "controls_rejected": 18, + "formal_columns_checked": 1327, + "fresh_center_copies": 81, + "local_raw_H": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "payload_prefix_bits": 100, + "payload_prefix_upper": "699147249763640764132165496832", + "reverse_fresh_center_copies": 36, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "49347", + "reverse": false + }, + { + "bits": 24, + "cancellation_free_signed_row_l1_upper": "9534616", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 13208, + "signed_inverse": false, + "stage": 8 + } + ] + } + } + } + }, + "nine_stage_prefix_bound": { + "baseline": { + "bits": 177, + "bound": "117742596540718658156527847560864213734191286190080000" + }, + "candidate": { + "bits": 189, + "bound": "633952218342189222305933054575935669674977721489175871488" + }, + "formula": "2^18 * F^5 * B^4", + "source_charge_bits": 192 + }, + "predecessor_files": { + "provenance/PR794-README.md": "edbec736b24b0f9e2bc95a8839e3a22bc8ca4fc7bd9c0a25dccfb0dc1fec80f4" + }, + "recipe": { + "D_adds_after": 6988, + "D_adds_before": 18085, + "entrance_adds": 306, + "helper_injections": 6376, + "literal_prefix_instructions_checked": 9643960, + "prefix_history": [ + { + "B": 1125980, + "D_adds": 17898, + "F": 49347, + "step": 1 + }, + { + "B": 1125980, + "D_adds": 17722, + "F": 49347, + "step": 2 + }, + { + "B": 1125980, + "D_adds": 17549, + "F": 49347, + "step": 3 + }, + { + "B": 1125980, + "D_adds": 17377, + "F": 49347, + "step": 4 + }, + { + "B": 1125980, + "D_adds": 17207, + "F": 49347, + "step": 5 + }, + { + "B": 1125980, + "D_adds": 17062, + "F": 49347, + "step": 6 + }, + { + "B": 1401222, + "D_adds": 16945, + "F": 49347, + "step": 7 + }, + { + "B": 1401222, + "D_adds": 16833, + "F": 49347, + "step": 8 + }, + { + "B": 1401222, + "D_adds": 16722, + "F": 49347, + "step": 9 + }, + { + "B": 1401222, + "D_adds": 16614, + "F": 49347, + "step": 10 + }, + { + "B": 1565750, + "D_adds": 16510, + "F": 49347, + "step": 11 + }, + { + "B": 1565750, + "D_adds": 16407, + "F": 49347, + "step": 12 + }, + { + "B": 1565750, + "D_adds": 16306, + "F": 49347, + "step": 13 + }, + { + "B": 1565750, + "D_adds": 16206, + "F": 49347, + "step": 14 + }, + { + "B": 1565750, + "D_adds": 16107, + "F": 49347, + "step": 15 + }, + { + "B": 2026388, + "D_adds": 16010, + "F": 49347, + "step": 16 + }, + { + "B": 2026388, + "D_adds": 15914, + "F": 49347, + "step": 17 + }, + { + "B": 2026388, + "D_adds": 15818, + "F": 49347, + "step": 18 + }, + { + "B": 2026388, + "D_adds": 15724, + "F": 49347, + "step": 19 + }, + { + "B": 2026388, + "D_adds": 15637, + "F": 49347, + "step": 20 + }, + { + "B": 2026388, + "D_adds": 15550, + "F": 49347, + "step": 21 + }, + { + "B": 2026388, + "D_adds": 15465, + "F": 49347, + "step": 22 + }, + { + "B": 2026388, + "D_adds": 15380, + "F": 49347, + "step": 23 + }, + { + "B": 2026388, + "D_adds": 15296, + "F": 49347, + "step": 24 + }, + { + "B": 2026388, + "D_adds": 15212, + "F": 49347, + "step": 25 + }, + { + "B": 2026388, + "D_adds": 15129, + "F": 49347, + "step": 26 + }, + { + "B": 2026388, + "D_adds": 15046, + "F": 49347, + "step": 27 + }, + { + "B": 2026388, + "D_adds": 14964, + "F": 49347, + "step": 28 + }, + { + "B": 2026388, + "D_adds": 14882, + "F": 49347, + "step": 29 + }, + { + "B": 2026388, + "D_adds": 14791, + "F": 49347, + "step": 30 + }, + { + "B": 2026388, + "D_adds": 14711, + "F": 49347, + "step": 31 + }, + { + "B": 2026388, + "D_adds": 14631, + "F": 49347, + "step": 32 + }, + { + "B": 2026388, + "D_adds": 14534, + "F": 49347, + "step": 33 + }, + { + "B": 2026388, + "D_adds": 14455, + "F": 49347, + "step": 34 + }, + { + "B": 2026388, + "D_adds": 14376, + "F": 49347, + "step": 35 + }, + { + "B": 2026388, + "D_adds": 14297, + "F": 49347, + "step": 36 + }, + { + "B": 2026388, + "D_adds": 14213, + "F": 49347, + "step": 37 + }, + { + "B": 2481858, + "D_adds": 14134, + "F": 49347, + "step": 38 + }, + { + "B": 2481858, + "D_adds": 14046, + "F": 49347, + "step": 39 + }, + { + "B": 2481858, + "D_adds": 13970, + "F": 49347, + "step": 40 + }, + { + "B": 2481858, + "D_adds": 13894, + "F": 49347, + "step": 41 + }, + { + "B": 2481858, + "D_adds": 13818, + "F": 49347, + "step": 42 + }, + { + "B": 2481858, + "D_adds": 13720, + "F": 49347, + "step": 43 + }, + { + "B": 2481858, + "D_adds": 13645, + "F": 49347, + "step": 44 + }, + { + "B": 2481858, + "D_adds": 13570, + "F": 49347, + "step": 45 + }, + { + "B": 2481858, + "D_adds": 13496, + "F": 49347, + "step": 46 + }, + { + "B": 2481858, + "D_adds": 13421, + "F": 49347, + "step": 47 + }, + { + "B": 2481858, + "D_adds": 13349, + "F": 49347, + "step": 48 + }, + { + "B": 2481858, + "D_adds": 13277, + "F": 49347, + "step": 49 + }, + { + "B": 2481858, + "D_adds": 13207, + "F": 49347, + "step": 50 + }, + { + "B": 2481858, + "D_adds": 13120, + "F": 49347, + "step": 51 + }, + { + "B": 2481858, + "D_adds": 13051, + "F": 49347, + "step": 52 + }, + { + "B": 2939320, + "D_adds": 12982, + "F": 49347, + "step": 53 + }, + { + "B": 3350744, + "D_adds": 12914, + "F": 49347, + "step": 54 + }, + { + "B": 3350744, + "D_adds": 12846, + "F": 49347, + "step": 55 + }, + { + "B": 3350744, + "D_adds": 12760, + "F": 49347, + "step": 56 + }, + { + "B": 3350744, + "D_adds": 12692, + "F": 49347, + "step": 57 + }, + { + "B": 3350744, + "D_adds": 12598, + "F": 49347, + "step": 58 + }, + { + "B": 3350744, + "D_adds": 12530, + "F": 49347, + "step": 59 + }, + { + "B": 3350744, + "D_adds": 12442, + "F": 49347, + "step": 60 + }, + { + "B": 3350744, + "D_adds": 12375, + "F": 49347, + "step": 61 + }, + { + "B": 3350744, + "D_adds": 12308, + "F": 49347, + "step": 62 + }, + { + "B": 3350744, + "D_adds": 12242, + "F": 49347, + "step": 63 + }, + { + "B": 3350744, + "D_adds": 12177, + "F": 49347, + "step": 64 + }, + { + "B": 3350744, + "D_adds": 12112, + "F": 49347, + "step": 65 + }, + { + "B": 3350744, + "D_adds": 12018, + "F": 49347, + "step": 66 + }, + { + "B": 3350744, + "D_adds": 11954, + "F": 49347, + "step": 67 + }, + { + "B": 3350744, + "D_adds": 11869, + "F": 49347, + "step": 68 + }, + { + "B": 3350744, + "D_adds": 11807, + "F": 49347, + "step": 69 + }, + { + "B": 3350744, + "D_adds": 11748, + "F": 49347, + "step": 70 + }, + { + "B": 3350744, + "D_adds": 11649, + "F": 49347, + "step": 71 + }, + { + "B": 3350744, + "D_adds": 11590, + "F": 49347, + "step": 72 + }, + { + "B": 3350744, + "D_adds": 11495, + "F": 49347, + "step": 73 + }, + { + "B": 3350744, + "D_adds": 11437, + "F": 49347, + "step": 74 + }, + { + "B": 3350744, + "D_adds": 11350, + "F": 49347, + "step": 75 + }, + { + "B": 3350744, + "D_adds": 11293, + "F": 49347, + "step": 76 + }, + { + "B": 3350744, + "D_adds": 11200, + "F": 49347, + "step": 77 + }, + { + "B": 3350744, + "D_adds": 11144, + "F": 49347, + "step": 78 + }, + { + "B": 3350744, + "D_adds": 11088, + "F": 49347, + "step": 79 + }, + { + "B": 3350744, + "D_adds": 11034, + "F": 49347, + "step": 80 + }, + { + "B": 3350744, + "D_adds": 10943, + "F": 49347, + "step": 81 + }, + { + "B": 3350744, + "D_adds": 10889, + "F": 49347, + "step": 82 + }, + { + "B": 3350744, + "D_adds": 10836, + "F": 49347, + "step": 83 + }, + { + "B": 3350744, + "D_adds": 10741, + "F": 49347, + "step": 84 + }, + { + "B": 3350744, + "D_adds": 10688, + "F": 49347, + "step": 85 + }, + { + "B": 3350744, + "D_adds": 10636, + "F": 49347, + "step": 86 + }, + { + "B": 3350744, + "D_adds": 10584, + "F": 49347, + "step": 87 + }, + { + "B": 3350744, + "D_adds": 10533, + "F": 49347, + "step": 88 + }, + { + "B": 3350744, + "D_adds": 10483, + "F": 49347, + "step": 89 + }, + { + "B": 3350744, + "D_adds": 10422, + "F": 49347, + "step": 90 + }, + { + "B": 3350744, + "D_adds": 10373, + "F": 49347, + "step": 91 + }, + { + "B": 3350744, + "D_adds": 10277, + "F": 49347, + "step": 92 + }, + { + "B": 3350744, + "D_adds": 10229, + "F": 49347, + "step": 93 + }, + { + "B": 3350744, + "D_adds": 10136, + "F": 49347, + "step": 94 + }, + { + "B": 3350744, + "D_adds": 10090, + "F": 49347, + "step": 95 + }, + { + "B": 3350744, + "D_adds": 10045, + "F": 49347, + "step": 96 + }, + { + "B": 3350744, + "D_adds": 10001, + "F": 49347, + "step": 97 + }, + { + "B": 3350744, + "D_adds": 9957, + "F": 49347, + "step": 98 + }, + { + "B": 3350744, + "D_adds": 9892, + "F": 49347, + "step": 99 + }, + { + "B": 3350744, + "D_adds": 9848, + "F": 49347, + "step": 100 + }, + { + "B": 3350744, + "D_adds": 9773, + "F": 49347, + "step": 101 + }, + { + "B": 3350744, + "D_adds": 9730, + "F": 49347, + "step": 102 + }, + { + "B": 3350744, + "D_adds": 9687, + "F": 49347, + "step": 103 + }, + { + "B": 3350744, + "D_adds": 9645, + "F": 49347, + "step": 104 + }, + { + "B": 3350744, + "D_adds": 9573, + "F": 49347, + "step": 105 + }, + { + "B": 3350744, + "D_adds": 9532, + "F": 49347, + "step": 106 + }, + { + "B": 3350744, + "D_adds": 9416, + "F": 49347, + "step": 107 + }, + { + "B": 3350744, + "D_adds": 9381, + "F": 49347, + "step": 108 + }, + { + "B": 3350744, + "D_adds": 9285, + "F": 49347, + "step": 109 + }, + { + "B": 3350744, + "D_adds": 9250, + "F": 49347, + "step": 110 + }, + { + "B": 3350744, + "D_adds": 9218, + "F": 49347, + "step": 111 + }, + { + "B": 3350744, + "D_adds": 9186, + "F": 49347, + "step": 112 + }, + { + "B": 3350744, + "D_adds": 9143, + "F": 49347, + "step": 113 + }, + { + "B": 3350744, + "D_adds": 9080, + "F": 49347, + "step": 114 + }, + { + "B": 3350744, + "D_adds": 9048, + "F": 49347, + "step": 115 + }, + { + "B": 3350744, + "D_adds": 9017, + "F": 49347, + "step": 116 + }, + { + "B": 3350744, + "D_adds": 8924, + "F": 49347, + "step": 117 + }, + { + "B": 3350744, + "D_adds": 8894, + "F": 49347, + "step": 118 + }, + { + "B": 3350744, + "D_adds": 8865, + "F": 49347, + "step": 119 + }, + { + "B": 3350744, + "D_adds": 8837, + "F": 49347, + "step": 120 + }, + { + "B": 3350744, + "D_adds": 8809, + "F": 49347, + "step": 121 + }, + { + "B": 3350744, + "D_adds": 8781, + "F": 49347, + "step": 122 + }, + { + "B": 3350744, + "D_adds": 8754, + "F": 49347, + "step": 123 + }, + { + "B": 3350744, + "D_adds": 8662, + "F": 49347, + "step": 124 + }, + { + "B": 3350744, + "D_adds": 8635, + "F": 49347, + "step": 125 + }, + { + "B": 3350744, + "D_adds": 8538, + "F": 49347, + "step": 126 + }, + { + "B": 3834238, + "D_adds": 8512, + "F": 49347, + "step": 127 + }, + { + "B": 3834238, + "D_adds": 8486, + "F": 49347, + "step": 128 + }, + { + "B": 3834238, + "D_adds": 8461, + "F": 49347, + "step": 129 + }, + { + "B": 3834238, + "D_adds": 8437, + "F": 49347, + "step": 130 + }, + { + "B": 3834238, + "D_adds": 8376, + "F": 49347, + "step": 131 + }, + { + "B": 3834238, + "D_adds": 8352, + "F": 49347, + "step": 132 + }, + { + "B": 3834238, + "D_adds": 8329, + "F": 49347, + "step": 133 + }, + { + "B": 3834238, + "D_adds": 8307, + "F": 49347, + "step": 134 + }, + { + "B": 3834238, + "D_adds": 8285, + "F": 49347, + "step": 135 + }, + { + "B": 3834238, + "D_adds": 8262, + "F": 49347, + "step": 136 + }, + { + "B": 3834238, + "D_adds": 8240, + "F": 49347, + "step": 137 + }, + { + "B": 3834238, + "D_adds": 8218, + "F": 49347, + "step": 138 + }, + { + "B": 3834238, + "D_adds": 8197, + "F": 49347, + "step": 139 + }, + { + "B": 3834238, + "D_adds": 8176, + "F": 49347, + "step": 140 + }, + { + "B": 3834238, + "D_adds": 8156, + "F": 49347, + "step": 141 + }, + { + "B": 3834238, + "D_adds": 8138, + "F": 49347, + "step": 142 + }, + { + "B": 3889268, + "D_adds": 8055, + "F": 49347, + "step": 143 + }, + { + "B": 3889268, + "D_adds": 8039, + "F": 49347, + "step": 144 + }, + { + "B": 3889268, + "D_adds": 8019, + "F": 49347, + "step": 145 + }, + { + "B": 3889268, + "D_adds": 8004, + "F": 49347, + "step": 146 + }, + { + "B": 3889268, + "D_adds": 7989, + "F": 49347, + "step": 147 + }, + { + "B": 3889268, + "D_adds": 7975, + "F": 49347, + "step": 148 + }, + { + "B": 3889268, + "D_adds": 7961, + "F": 49347, + "step": 149 + }, + { + "B": 3889268, + "D_adds": 7947, + "F": 49347, + "step": 150 + }, + { + "B": 3889268, + "D_adds": 7933, + "F": 49347, + "step": 151 + }, + { + "B": 3944612, + "D_adds": 7920, + "F": 49347, + "step": 152 + }, + { + "B": 3944612, + "D_adds": 7907, + "F": 49347, + "step": 153 + }, + { + "B": 3944612, + "D_adds": 7894, + "F": 49347, + "step": 154 + }, + { + "B": 3944612, + "D_adds": 7882, + "F": 49347, + "step": 155 + }, + { + "B": 3944612, + "D_adds": 7870, + "F": 49347, + "step": 156 + }, + { + "B": 3944612, + "D_adds": 7859, + "F": 49347, + "step": 157 + }, + { + "B": 3944612, + "D_adds": 7848, + "F": 49347, + "step": 158 + }, + { + "B": 4437804, + "D_adds": 7837, + "F": 49347, + "step": 159 + }, + { + "B": 4437804, + "D_adds": 7823, + "F": 49347, + "step": 160 + }, + { + "B": 4437804, + "D_adds": 7803, + "F": 49347, + "step": 161 + }, + { + "B": 4437804, + "D_adds": 7785, + "F": 49347, + "step": 162 + }, + { + "B": 4437804, + "D_adds": 7775, + "F": 49347, + "step": 163 + }, + { + "B": 4437804, + "D_adds": 7765, + "F": 49347, + "step": 164 + }, + { + "B": 4437804, + "D_adds": 7755, + "F": 49347, + "step": 165 + }, + { + "B": 4437804, + "D_adds": 7745, + "F": 49347, + "step": 166 + }, + { + "B": 4437804, + "D_adds": 7735, + "F": 49347, + "step": 167 + }, + { + "B": 4437804, + "D_adds": 7725, + "F": 49347, + "step": 168 + }, + { + "B": 4437804, + "D_adds": 7716, + "F": 49347, + "step": 169 + }, + { + "B": 4437804, + "D_adds": 7707, + "F": 49347, + "step": 170 + }, + { + "B": 4437804, + "D_adds": 7698, + "F": 49347, + "step": 171 + }, + { + "B": 4437804, + "D_adds": 7689, + "F": 49347, + "step": 172 + }, + { + "B": 5071832, + "D_adds": 7680, + "F": 49347, + "step": 173 + }, + { + "B": 5071832, + "D_adds": 7671, + "F": 49347, + "step": 174 + }, + { + "B": 5071832, + "D_adds": 7662, + "F": 49347, + "step": 175 + }, + { + "B": 5071832, + "D_adds": 7654, + "F": 49347, + "step": 176 + }, + { + "B": 5071832, + "D_adds": 7646, + "F": 49347, + "step": 177 + }, + { + "B": 5071832, + "D_adds": 7638, + "F": 49347, + "step": 178 + }, + { + "B": 5071832, + "D_adds": 7630, + "F": 49347, + "step": 179 + }, + { + "B": 5071832, + "D_adds": 7622, + "F": 49347, + "step": 180 + }, + { + "B": 5071832, + "D_adds": 7615, + "F": 49347, + "step": 181 + }, + { + "B": 5071832, + "D_adds": 7608, + "F": 49347, + "step": 182 + }, + { + "B": 5071832, + "D_adds": 7601, + "F": 49347, + "step": 183 + }, + { + "B": 5198920, + "D_adds": 7594, + "F": 49347, + "step": 184 + }, + { + "B": 5198920, + "D_adds": 7587, + "F": 49347, + "step": 185 + }, + { + "B": 5198920, + "D_adds": 7580, + "F": 49347, + "step": 186 + }, + { + "B": 5198920, + "D_adds": 7573, + "F": 49347, + "step": 187 + }, + { + "B": 5198920, + "D_adds": 7566, + "F": 49347, + "step": 188 + }, + { + "B": 5198920, + "D_adds": 7559, + "F": 49347, + "step": 189 + }, + { + "B": 5198920, + "D_adds": 7553, + "F": 49347, + "step": 190 + }, + { + "B": 5198920, + "D_adds": 7547, + "F": 49347, + "step": 191 + }, + { + "B": 5198920, + "D_adds": 7541, + "F": 49347, + "step": 192 + }, + { + "B": 5198920, + "D_adds": 7535, + "F": 49347, + "step": 193 + }, + { + "B": 5198920, + "D_adds": 7529, + "F": 49347, + "step": 194 + }, + { + "B": 5198920, + "D_adds": 7523, + "F": 49347, + "step": 195 + }, + { + "B": 5198920, + "D_adds": 7517, + "F": 49347, + "step": 196 + }, + { + "B": 5198920, + "D_adds": 7512, + "F": 49347, + "step": 197 + }, + { + "B": 5198920, + "D_adds": 7507, + "F": 49347, + "step": 198 + }, + { + "B": 5198920, + "D_adds": 7502, + "F": 49347, + "step": 199 + }, + { + "B": 5198920, + "D_adds": 7497, + "F": 49347, + "step": 200 + }, + { + "B": 5198920, + "D_adds": 7493, + "F": 49347, + "step": 201 + }, + { + "B": 5198920, + "D_adds": 7489, + "F": 49347, + "step": 202 + }, + { + "B": 5198920, + "D_adds": 7485, + "F": 49347, + "step": 203 + }, + { + "B": 5198920, + "D_adds": 7481, + "F": 49347, + "step": 204 + }, + { + "B": 5198920, + "D_adds": 7477, + "F": 49347, + "step": 205 + }, + { + "B": 5198920, + "D_adds": 7473, + "F": 49347, + "step": 206 + }, + { + "B": 5198920, + "D_adds": 7469, + "F": 49347, + "step": 207 + }, + { + "B": 5198920, + "D_adds": 7465, + "F": 49347, + "step": 208 + }, + { + "B": 5198920, + "D_adds": 7461, + "F": 49347, + "step": 209 + }, + { + "B": 5198920, + "D_adds": 7457, + "F": 49347, + "step": 210 + }, + { + "B": 5198920, + "D_adds": 7449, + "F": 49347, + "step": 211 + }, + { + "B": 5453532, + "D_adds": 7444, + "F": 49347, + "step": 212 + }, + { + "B": 5631746, + "D_adds": 7406, + "F": 49347, + "step": 213 + }, + { + "B": 5642572, + "D_adds": 7397, + "F": 49347, + "step": 214 + }, + { + "B": 5642572, + "D_adds": 7393, + "F": 49347, + "step": 215 + }, + { + "B": 5642572, + "D_adds": 7386, + "F": 49347, + "step": 216 + }, + { + "B": 5642572, + "D_adds": 7382, + "F": 49347, + "step": 217 + }, + { + "B": 5642572, + "D_adds": 7378, + "F": 49347, + "step": 218 + }, + { + "B": 5642572, + "D_adds": 7374, + "F": 49347, + "step": 219 + }, + { + "B": 5642572, + "D_adds": 7370, + "F": 49347, + "step": 220 + }, + { + "B": 5642572, + "D_adds": 7366, + "F": 49347, + "step": 221 + }, + { + "B": 5642572, + "D_adds": 7362, + "F": 49347, + "step": 222 + }, + { + "B": 5642572, + "D_adds": 7359, + "F": 49347, + "step": 223 + }, + { + "B": 5642572, + "D_adds": 7356, + "F": 49347, + "step": 224 + }, + { + "B": 5642572, + "D_adds": 7353, + "F": 49347, + "step": 225 + }, + { + "B": 5642572, + "D_adds": 7347, + "F": 49347, + "step": 226 + }, + { + "B": 5642572, + "D_adds": 7336, + "F": 49347, + "step": 227 + }, + { + "B": 5642572, + "D_adds": 7287, + "F": 49347, + "step": 228 + }, + { + "B": 5642572, + "D_adds": 7277, + "F": 49347, + "step": 229 + }, + { + "B": 5642572, + "D_adds": 7269, + "F": 49347, + "step": 230 + }, + { + "B": 5642572, + "D_adds": 7266, + "F": 49347, + "step": 231 + }, + { + "B": 5642572, + "D_adds": 7262, + "F": 49347, + "step": 232 + }, + { + "B": 5642572, + "D_adds": 7259, + "F": 49347, + "step": 233 + }, + { + "B": 5642572, + "D_adds": 7256, + "F": 49347, + "step": 234 + }, + { + "B": 5642572, + "D_adds": 7253, + "F": 49347, + "step": 235 + }, + { + "B": 5711836, + "D_adds": 7250, + "F": 49347, + "step": 236 + }, + { + "B": 5711836, + "D_adds": 7247, + "F": 49347, + "step": 237 + }, + { + "B": 5711836, + "D_adds": 7244, + "F": 49347, + "step": 238 + }, + { + "B": 5711836, + "D_adds": 7241, + "F": 49347, + "step": 239 + }, + { + "B": 5711836, + "D_adds": 7238, + "F": 49347, + "step": 240 + }, + { + "B": 5711836, + "D_adds": 7235, + "F": 49347, + "step": 241 + }, + { + "B": 5759924, + "D_adds": 7232, + "F": 49347, + "step": 242 + }, + { + "B": 5824606, + "D_adds": 7229, + "F": 49347, + "step": 243 + }, + { + "B": 5824606, + "D_adds": 7226, + "F": 49347, + "step": 244 + }, + { + "B": 5824606, + "D_adds": 7224, + "F": 49347, + "step": 245 + }, + { + "B": 5824606, + "D_adds": 7222, + "F": 49347, + "step": 246 + }, + { + "B": 5824606, + "D_adds": 7220, + "F": 49347, + "step": 247 + }, + { + "B": 5824606, + "D_adds": 7218, + "F": 49347, + "step": 248 + }, + { + "B": 5824606, + "D_adds": 7216, + "F": 49347, + "step": 249 + }, + { + "B": 5824606, + "D_adds": 7214, + "F": 49347, + "step": 250 + }, + { + "B": 5824606, + "D_adds": 7212, + "F": 49347, + "step": 251 + }, + { + "B": 5824606, + "D_adds": 7210, + "F": 49347, + "step": 252 + }, + { + "B": 5824606, + "D_adds": 7188, + "F": 49347, + "step": 253 + }, + { + "B": 5824606, + "D_adds": 7178, + "F": 49347, + "step": 254 + }, + { + "B": 5824606, + "D_adds": 7166, + "F": 49347, + "step": 255 + }, + { + "B": 5824606, + "D_adds": 7164, + "F": 49347, + "step": 256 + }, + { + "B": 5824606, + "D_adds": 7162, + "F": 49347, + "step": 257 + }, + { + "B": 5824606, + "D_adds": 7160, + "F": 49347, + "step": 258 + }, + { + "B": 5890714, + "D_adds": 7158, + "F": 49347, + "step": 259 + }, + { + "B": 5906288, + "D_adds": 7153, + "F": 49347, + "step": 260 + }, + { + "B": 5906288, + "D_adds": 7151, + "F": 49347, + "step": 261 + }, + { + "B": 5906288, + "D_adds": 7141, + "F": 49347, + "step": 262 + }, + { + "B": 5906288, + "D_adds": 7139, + "F": 49347, + "step": 263 + }, + { + "B": 5906288, + "D_adds": 7137, + "F": 49347, + "step": 264 + }, + { + "B": 5945182, + "D_adds": 7135, + "F": 49347, + "step": 265 + }, + { + "B": 5945182, + "D_adds": 7133, + "F": 49347, + "step": 266 + }, + { + "B": 6431574, + "D_adds": 7131, + "F": 49347, + "step": 267 + }, + { + "B": 6617956, + "D_adds": 7071, + "F": 49347, + "step": 268 + }, + { + "B": 6932878, + "D_adds": 7057, + "F": 49347, + "step": 269 + }, + { + "B": 7410460, + "D_adds": 7049, + "F": 49347, + "step": 270 + }, + { + "B": 7569520, + "D_adds": 7047, + "F": 49347, + "step": 271 + }, + { + "B": 7702630, + "D_adds": 7039, + "F": 49347, + "step": 272 + }, + { + "B": 8016030, + "D_adds": 7037, + "F": 49347, + "step": 273 + }, + { + "B": 8016030, + "D_adds": 7035, + "F": 49347, + "step": 274 + }, + { + "B": 8016030, + "D_adds": 7033, + "F": 49347, + "step": 275 + }, + { + "B": 8016030, + "D_adds": 7031, + "F": 49347, + "step": 276 + }, + { + "B": 8016030, + "D_adds": 7029, + "F": 49347, + "step": 277 + }, + { + "B": 8016030, + "D_adds": 7027, + "F": 49347, + "step": 278 + }, + { + "B": 8016030, + "D_adds": 7025, + "F": 49347, + "step": 279 + }, + { + "B": 8329430, + "D_adds": 7023, + "F": 49347, + "step": 280 + }, + { + "B": 8329430, + "D_adds": 7022, + "F": 49347, + "step": 281 + }, + { + "B": 8329430, + "D_adds": 7021, + "F": 49347, + "step": 282 + }, + { + "B": 8329430, + "D_adds": 7020, + "F": 49347, + "step": 283 + }, + { + "B": 8329430, + "D_adds": 7019, + "F": 49347, + "step": 284 + }, + { + "B": 8329430, + "D_adds": 7018, + "F": 49347, + "step": 285 + }, + { + "B": 8329430, + "D_adds": 7017, + "F": 49347, + "step": 286 + }, + { + "B": 8392926, + "D_adds": 7016, + "F": 49347, + "step": 287 + }, + { + "B": 8392926, + "D_adds": 7015, + "F": 49347, + "step": 288 + }, + { + "B": 8469752, + "D_adds": 7014, + "F": 49347, + "step": 289 + }, + { + "B": 8526718, + "D_adds": 7013, + "F": 49347, + "step": 290 + }, + { + "B": 8526718, + "D_adds": 7011, + "F": 49347, + "step": 291 + }, + { + "B": 8564436, + "D_adds": 7010, + "F": 49347, + "step": 292 + }, + { + "B": 8564436, + "D_adds": 7009, + "F": 49347, + "step": 293 + }, + { + "B": 9534616, + "D_adds": 7008, + "F": 49347, + "step": 294 + }, + { + "B": 9534616, + "D_adds": 7007, + "F": 49347, + "step": 295 + }, + { + "B": 9534616, + "D_adds": 7006, + "F": 49347, + "step": 296 + }, + { + "B": 9534616, + "D_adds": 7000, + "F": 49347, + "step": 297 + }, + { + "B": 9534616, + "D_adds": 6999, + "F": 49347, + "step": 298 + }, + { + "B": 9534616, + "D_adds": 6997, + "F": 49347, + "step": 299 + }, + { + "B": 9534616, + "D_adds": 6994, + "F": 49347, + "step": 300 + }, + { + "B": 9534616, + "D_adds": 6993, + "F": 49347, + "step": 301 + }, + { + "B": 9534616, + "D_adds": 6992, + "F": 49347, + "step": 302 + }, + { + "B": 9534616, + "D_adds": 6991, + "F": 49347, + "step": 303 + }, + { + "B": 9534616, + "D_adds": 6990, + "F": 49347, + "step": 304 + }, + { + "B": 9534616, + "D_adds": 6989, + "F": 49347, + "step": 305 + }, + { + "B": 9534616, + "D_adds": 6988, + "F": 49347, + "step": 306 + } + ], + "restoration_adds": 306, + "saving": 11097, + "steps": 306, + "terminal_max_gain": 0, + "terminal_pairs_checked": 12210 + }, + "source_checks": { + "baseline": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": true, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 2075, + "B": 712, + "C": 2574, + "D": 111 + }, + "scatter_terms": 527, + "totals": [ + { + "frame": 510, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 472 + }, + { + "frame": 511, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + -1 + ], + "rank": 7, + "register": 473 + }, + { + "frame": 512, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + 0, + -1, + -1, + 0 + ], + "rank": 7, + "register": 474 + }, + { + "frame": 513, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + 0, + 1, + -1, + 0 + ], + "rank": 7, + "register": 475 + }, + { + "frame": 514, + "hyperplane_of_punctured_line": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "rank": 7, + "register": 476 + }, + { + "frame": 515, + "hyperplane_of_punctured_line": [ + 1, + 1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "rank": 7, + "register": 477 + }, + { + "frame": 516, + "hyperplane_of_punctured_line": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 478 + }, + { + "frame": 517, + "hyperplane_of_punctured_line": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + -1 + ], + "rank": 7, + "register": 479 + }, + { + "frame": 518, + "hyperplane_of_punctured_line": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + -1 + ], + "rank": 7, + "register": 480 + } + ] + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": true, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "info": { + "B_target_reads_of_registers_rewritten_earlier_in_B": 111, + "B_z_operand_kinds": { + "helper<-helper": 3, + "helper<-source": 13, + "source<-helper": 108, + "source<-source": 375 + }, + "B_z_operand_kinds_by_dim": { + "dim4:helper<-source": 13, + "dim4:source<-source": 375, + "dim6:helper<-helper": 3, + "dim6:source<-helper": 108 + }, + "B_z_write_frame_dims": { + "4": 388, + "6": 111 + }, + "B_z_writes_after_a_target_read_of_the_same_register": 454, + "cleanup_gates": 2574, + "helper_writes_B": 16, + "source_writes_A": 0, + "source_writes_B": 483, + "sources_rewritten_B": 108, + "target_reads_of_targets": 0, + "z_gates_A": 2075, + "z_gates_B": 499 + }, + "labels": { + "frames": 636, + "gram_det": 1, + "labels": 111, + "lattice_rank": 8, + "punctured": 9, + "root_lines": 120 + } + }, + "candidate": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": false, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 2075, + "B": 712, + "C": 2574, + "D": 723 + }, + "scatter_terms": 527, + "totals": [ + { + "frame": 510, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + -1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 472 + }, + { + "frame": 511, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + -1, + 0, + 0, + -1 + ], + "rank": 7, + "register": 473 + }, + { + "frame": 512, + "hyperplane_of_punctured_line": [ + 0, + 1, + 1, + 0, + 0, + -1, + -1, + 0 + ], + "rank": 7, + "register": 474 + }, + { + "frame": 513, + "hyperplane_of_punctured_line": [ + 0, + 1, + -1, + 0, + 0, + 1, + -1, + 0 + ], + "rank": 7, + "register": 475 + }, + { + "frame": 514, + "hyperplane_of_punctured_line": [ + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ], + "rank": 7, + "register": 476 + }, + { + "frame": 515, + "hyperplane_of_punctured_line": [ + 1, + 1, + -1, + 1, + 0, + 0, + 0, + 0 + ], + "rank": 7, + "register": 477 + }, + { + "frame": 516, + "hyperplane_of_punctured_line": [ + 1, + 0, + 0, + 1, + 1, + 0, + 0, + 1 + ], + "rank": 7, + "register": 478 + }, + { + "frame": 517, + "hyperplane_of_punctured_line": [ + 0, + 0, + 1, + 1, + 0, + 0, + 1, + -1 + ], + "rank": 7, + "register": 479 + }, + { + "frame": 518, + "hyperplane_of_punctured_line": [ + 0, + 1, + 0, + -1, + 0, + -1, + 0, + -1 + ], + "rank": 7, + "register": 480 + } + ] + }, + "hypotheses": { + "H1_no_target_feeds_z": true, + "H2_D_frame0_targets_from_helpers": false, + "H3_A_z_only_scatter_targets_B_split": true, + "H4_C_literal_reverse_at_full": true, + "H5_V_identity": true + }, + "info": { + "B_target_reads_of_registers_rewritten_earlier_in_B": 111, + "B_z_operand_kinds": { + "helper<-helper": 3, + "helper<-source": 13, + "source<-helper": 108, + "source<-source": 375 + }, + "B_z_operand_kinds_by_dim": { + "dim4:helper<-source": 13, + "dim4:source<-source": 375, + "dim6:helper<-helper": 3, + "dim6:source<-helper": 108 + }, + "B_z_write_frame_dims": { + "4": 388, + "6": 111 + }, + "B_z_writes_after_a_target_read_of_the_same_register": 454, + "cleanup_gates": 2574, + "helper_writes_B": 16, + "source_writes_A": 0, + "source_writes_B": 483, + "sources_rewritten_B": 108, + "target_reads_of_targets": 0, + "z_gates_A": 2075, + "z_gates_B": 499 + }, + "labels": { + "frames": 636, + "gram_det": 1, + "labels": 111, + "lattice_rank": 8, + "punctured": 9, + "root_lines": 120 + } + } + }, + "source_files": { + "research/e8-bit-carrier-skeleton/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "research/e8-bit-carrier-skeleton/NOTICE.md": "5f4b7fcbf99f572be28b6da612ce775363908cdfc7810f7aca167be01c86e49a", + "research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "research/e8-bit-carrier-skeleton/code/bit/checkers/json.hpp": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63", + "research/e8-bit-carrier-skeleton/code/bit/checkers/legality_h.cpp": "6c1ef2b24e57781d6951c172a1024fc4300e6fd392c9d6672079a7806ab663b3", + "research/e8-bit-carrier-skeleton/code/bit/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "research/e8-bit-carrier-skeleton/code/bit/regression/stage_cohort.py": "6c288f6f234b528c1a7c0a4adfb724e91e0fe6b18c8dffad96af3f973de1829a", + "research/e8-bit-carrier-skeleton/portable-include/bits/stdc++.h": "420094be2af295eed03a983dd66debbbe9cfb78d8252859f4498a615a0074b99", + "research/e8-bit-p111-tuned/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "research/e8-bit-p111-tuned/NOTICE.md": "5b88eb2b7de76aa2a3288ee3c7a08d18a5eadfa82f5e7a99e207d232aed71221", + "research/e8-bit-p111-tuned/code/xcheck_p.py": "af3decc877e27c00001cf56f50c6c09566e8e101297ab34c7860aed96a06d80e", + "research/e8-bit-p111-tuned/tune/EXPECTED.json": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "research/e8-bit-p111-tuned/tune/bitE8mut-p111-tuned.json.gz": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f", + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "status": "PASS_R439_TARGET_COMPENSATION" +} diff --git a/research/r439-two-sided-compensation/vendor/pr915/LICENSE b/research/r439-two-sided-compensation/vendor/pr915/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/r439-two-sided-compensation/vendor/pr915/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/r439-two-sided-compensation/vendor/pr915/NOTICE.md b/research/r439-two-sided-compensation/vendor/pr915/NOTICE.md new file mode 100644 index 0000000000..bd410b07fd --- /dev/null +++ b/research/r439-two-sided-compensation/vendor/pr915/NOTICE.md @@ -0,0 +1,60 @@ +# Notice and attribution + +New code and documentation are Apache-2.0. Prepared for Gareth Davidson +(@bitplane), with substantial OpenAI Codex assistance. One AI agent performed +the work; algorithmic independence does not mean independent human review. + +The input and modified candidate derive from **DreamingOfClouds's PR589** +(`a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46`), tuning **eumemic's PR555/543** +punctured E8 construction. DreamingOfClouds used Claude Opus 5.5 (Anthropic) +via Claude Code; eumemic's retained notice discloses Anthropic Claude +assistance. PR589 uses transport mechanisms from Dugongue's PR541/548 and +rohanarun's PR542. The original notices and licenses for the tuned word and +carrier skeleton are immutable source inputs. LICENSE here is copied from +the tuned-word package. The candidate changes only D. + +**commdata2338's PR794**, at +`6be7364e0245c5a1c931cb1c43b3da991b755850`, supplies the guarded target-basis +method and exact incremental positive-vector formula. Its README is retained +verbatim in `provenance/PR794-README.md`, with Git-blob/SHA256 pins in +SOURCES.json. Relative links there refer to the original PR794 package. +PR794 discloses OpenAI Codex (GPT-6 Astra) assistance in mathematics/code and +Claude Code packaging. No PR794 executable is imported here. The new result +is its application to the selected R439 matrix, the actual circuit/bill, and +independent literal bounds at every accepted step. + +Earlier basis and semantic-interface credit: + +- **Mikhail R. Gadelha**, PR686: semantic D-boundary substitution and a + restored helper pair. +- **Greer Guthrie**, PR694: simultaneous helper-basis construction. +- **Scott Woolsey Biggart**, PR713, and **Sagar Thakrar**, PR716: target-side + compensation pair constructions, with substantial OpenAI Codex assistance. +- **Dugongue**, PR476/478: reversible target-factoring precedent. +- **navinor**, PR848: the selected R439 sharing barrier under unchanged + syntactic H2. This submission states the changed contract explicitly. + +`common.py`, `test_package.py` and the native harness are adapted from this +contributor's PR904 mathematical commit +`33b9175c345bcd0f21b95d29f37cb95fffd5a134`. The native harness follows +**Sagar Thakrar's `research/r420-decoder-sharing/native.py`** validation pattern. +The new harness admits the explicitly priced reverse-bound increase, retains +all geometry/lifecycle/column checks, and runs 5/9/11 stages on both words. + +Unchanged in-tree owning code retains the full original notices: + +- **eumemic**: punctured independent checker and carrier skeleton. +- **Dylan Crow / utcorvusvolat-dotcom**, PR370, with Anthropic Claude + assistance: exporter, staging and generalized native cohort checker lineage. +- **DaysSky**, PR381, assisted with Claude: bridged-stage `columns_k.cpp`. +- **Zhihao Chen / jacklightChen**, PR386, with OpenAI Codex assistance: + portable header; also the mutable-source/common-label scalar-interface lineage. +- **DreamingOfClouds**: nine-stage accounting and the retained global template; + **Chafik Boukhalfa** and other credited predecessors: hosted compilation, + physical routes and audits. +- **Niels Lohmann and contributors**: `json.hpp`, retaining its MIT header. +- **Jacob Sussman**: the E8 unit. + +No claim is made to priority for basis factoring, the semantic-prefix contract, +or its incremental-bound method. Source pins and the exact finite contribution +are recorded separately from the inherited full multiplication assumptions. diff --git a/research/r439-two-sided-compensation/vendor/pr915/PROOF.md b/research/r439-two-sided-compensation/vendor/pr915/PROOF.md new file mode 100644 index 0000000000..2230d1e1b6 --- /dev/null +++ b/research/r439-two-sided-compensation/vendor/pr915/PROOF.md @@ -0,0 +1,130 @@ +# Restored target basis and its complete bound + +Fix the selected PR589 word and the exact sources in SOURCES.json. Let K be +the 111×439 binary matrix of the old D helper reads, with target rows 0..110 +and helper columns 0..438. Physical targets are 111..221 and helpers 222..660. +The 111 source registers are untouched throughout D. + +## F2 prefix substitution + +For d≠s, let T(d,s) be the elementary target transvection adding coordinate s +to d. It is its own inverse over F2. For a sequence T₁,…,Tₘ in chronological +order, let E=Tₘ⋯T₁ and compute R=EK by the identical sequence of row XORs. +The emitted prefix performs: + +1. T₁,…,Tₘ on the actual arbitrary target vector y; +2. all helper-to-target additions specified by R; +3. Tₘ,…,T₁ on the actual targets. + +Its output is `E⁻¹(Ey+EKs)=y+Ks`, and every source and helper stays unchanged. +The entrance cannot be omitted just because helpers are the quantities being +compensated: without it, the output would be `E⁻¹y+Ks`. The explicit control +in verify.py passes all helper columns after this omission but fails target +columns. The inverse order is necessary because successive shears overlap. + +Every emitted gate is at frame zero, and reads/writes only targets and helpers +which start there. No MOVE, COPY, private register or recursive child is added. +The state and frames at the entrance to A equal the original state and frames. +Every non-D field is verified identical, so the unchanged remainder receives +identical inputs. This proves prefix substitution into the original interface +under its inherited common-label realization assumptions. + +Literal H2 originally allowed only helper donors in D. Target transvections +therefore fail H2, and direct extraction of K from D's helper lists is invalid. +The semantic replacement is the complete frame-zero boundary map above, checked +independently on all 661 input columns. The old predicates remain unchanged +and explicitly false for the candidate. This is the same semantic substitution +framework credited to PR686 and the target-side PR713/716/794 lineage. + +## Search cost + +Suppose the current row supports of R are Sᵢ. A new target shear d←s changes +only row d to `S_d Δ S_s` and adds one entrance and one restoration gate. +Its exact gain is + +``` +|S_d| - |S_d Δ S_s| - 2. +``` + +Only strictly positive gains are accepted. The 306 accepted shears leave +6,376 helper injections. Thus D costs 306+6,376+306=6,988, against 18,085. +The other 6,220 local additions remain byte-for-byte in the original fields, +giving 13,208 native ADDs and 11,097 saved. The candidate is fully specified by +the literal recipe, not by a rank-only or optimistic operation estimate. + +All paid resources are unchanged: 439 helpers, nine copied totals of rank +seven, rank mass 5,129 and histogram +`{1:1323,2:1342,3:79,4:44,5:102,6:11,7:19}`. The native harness checks each +register's complete MOVE path and every COPY/ERASE record. At 5/9/11 stages, +unchanged bridge costs are 666/1,998/2,664 and fresh-copy counts 45/81/99. +The corresponding ADD savings are 55,485/99,873/122,067. + +## Exact positive update used by nomination + +This argument and its use as an admission guard follow PR794. Replace each +XOR by nonnegative integer addition. Let P be the positive entrance matrix +and Q the positive reverse-order restoration matrix. They generally are not +integer inverses. For incoming nonnegative target bounds a and fixed helper +bounds h, the output bound is `Q(Pa+Rh)`, where R is the current binary read +matrix, interpreted as a 0/1 integer matrix. + +Append a shear d←s, with positive matrix G=I+e_d e_sᵀ. Then P′=GP, +Q′=QG, and row d of the binary R′ is S_d Δ S_s. The new bound is +`QG(GPa+R′h)`. Using `G²=I+2e_d e_sᵀ` and expanding row d gives exactly + +``` +new_bound - old_bound + = 2 Q[:,d] ((Pa)[s] + sum(h[j] for j in S_s minus S_d)). +``` + +All factors are nonnegative. Updating Q only requires adding its column d to +column s. The builder maintains this formula for the actual forward and reverse +entry bounds. The independent verifier does not use this update to accept +steps: it reconstructs and literally executes each of the 306 complete partial +words in both orientations, including fresh-center copies and erasures. + +Within D every positive target coordinate is monotone, so its maximum occurs +at the D endpoint. The unchanged remainder never reads a target as an ADD +source; its target increments can therefore be precomputed independently of +D. The forward maximum is the larger of the unchanged source/helper maximum +and the new D target endpoint plus the fixed tail increment. In reverse order, +the unchanged reversed tail fixes D's input bound vector; D comes last. These +observations justify the exact incremental full-word admission tests. + +## Precision guards and limits + +The guard fixes F≤49,347. It sets B≤16,913,320, the smaller of the exact integer +cutoffs from + +``` +64 F^3 B^2 < 2^104, +2^18 F^5 B^4 < 2^192. +``` + +The second expression is the pinned source template's +`2^nb F^(K+1) B^K` at K=4, with nb=6(K−1)=18 bridges. The verifier binds the +expression and bridge relation to the source AST and checks that the baseline +reproduces its recorded 177-bit bound and 192-bit charge. + +Literal native replay yields F=49,347 and B=9,534,616. The local payload bound +is 699,147,249,763,640,764,132,165,496,832 (100 bits). The nine-stage bound is +633,952,218,342,189,222,305,933,054,575,935,669,674,977,721,489,175,871,488 +(189 bits). Both fit the stated existing ceilings. The reverse bound is +larger than the baseline and is charged explicitly. No candidate was rejected +by either guard during this particular nomination. + +The verified bound concerns the signed lift's finite cancellation-free +prefix estimate. It does not establish unchanged unrounded invoice coefficients, +all other charged allocations, a full hosted reconstruction, or a new exponent. +The other assumptions of the selected construction remain those recorded in +its maintainer review. This prefix estimate alone does not justify a complete +machine implementation or the analytic multiplication bound. + +## Completed domain + +All 12,210 ordered pairs are scored at each of 307 iterations, including the +terminal iteration: 3,748,470 scores. Seed 10 fixes tie priority. The declared +1,000-step cap is not reached. The final matrix has maximum next-shear net gain +zero, verified independently on all pairs. This certifies termination for the +specified one-step improvement rule. Zero-gain detours, non-greedy histories, +simultaneous row/column changes and global circuit optimality are outside scope. diff --git a/research/r439-two-sided-compensation/vendor/pr915/README.md b/research/r439-two-sided-compensation/vendor/pr915/README.md new file mode 100644 index 0000000000..4259b0ceab --- /dev/null +++ b/research/r439-two-sided-compensation/vendor/pr915/README.md @@ -0,0 +1,144 @@ +# Selected R439 compensation through a restored target basis + +**Finite bit-circuit construction; no new κ.** Applying the target-basis +method of PR713/716/794 to the selected PR589 word saves **11,097 additions**: +the full local word falls from **24,305 to 13,208 ADDs**. All target +preparation, helper reads and target restoration are paid. Helpers, copies, +frame paths and paid recursive ranks stay unchanged. + +The positive reverse bound increases. The candidate needs **100 local payload +bits** under the inherited 104-bit ceiling. The source nine-stage expression +`2^18 F^5 B^4` needs **189 bits**, within the existing **192-bit prefix charge**. +A full changed-word hosted invoice and supplier integration are separate work. + +| Quantity | Selected PR589 | Candidate | +|---|---:|---:| +| D target preparation / restoration | 0 / 0 | 306 / 306 | +| D helper injections | 18,085 | 6,376 | +| Complete D ADDs | **18,085** | **6,988** | +| Other local ADDs | 6,220 | 6,220 | +| Complete native ADDs | **24,305** | **13,208** | +| Exported records | 27,234 | 16,137 | +| Forward positive bound F | 49,347 | 49,347 | +| Reverse positive bound B | 1,113,070 | 9,534,616 | +| Local payload bits | 93 | 100 | +| Nine-stage prefix bits / charge | 177 / 192 | 189 / 192 | +| Helpers / retained copies / paid rank mass | 439 / 9 / 5,129 | 439 / 9 / 5,129 | + +## Required interface change + +Only the frame-zero D prefix changes. For the original binary compensation +matrix K, the new D applies an invertible target basis E, adds helpers along +`R = E K`, and undoes E in literal reverse order. Thus + +```text +E^-1 (E y + R s) = y + K s. +``` + +This holds for arbitrary target inputs y and arbitrary helper dirt s. D never +writes a source or helper. Every non-D field is identical to PR589. + +**The original syntactic H2 and its direct K extractor reject this word.** +Their false results are retained in the receipt; the source checker is +unchanged. The replacement contract is a legal frame-zero D with complete +operator `(x,y,s) -> (x,y+Ks,s)`. The proof of prefix substitution is in +[PROOF.md](PROOF.md), following the semantic D-boundary work of PR686 and +the target-side constructions of PR713/716/794. The original H1/H3/H4/H5, +all other interface conclusions, complete geometry, frame legality and full +arbitrary-input endpoint pass. Maintainer acceptance and source binding of +this semantic contract are required for integration. + +The identity is over F2. The signed integer lifts have newly computed +cancellation-free bounds; no equality of the forward integer matrices is +asserted. The existing common-label, mutable-source and realization assumptions +remain inherited. + +## Reproduce + +Use Python 3.12+, a C++17 compiler and Boost headers: + +```sh +python3 -I -B research/r439-target-compensation/verify.py +python3 -I -B research/r439-target-compensation/test_package.py -v +``` + +Expected main marker: + +```text +PASS_R439_TARGET_COMPENSATION: D=18085->6988 ADDs=24305->13208 steps=306 nine_bits=189; semantic D; no new kappa +``` + +`CXX` selects the compiler; `BOOST_INCLUDE` selects a directory containing +`boost/` if it is outside `/usr/include`. No Python packages, Git metadata or +network are needed. `--output NEW_DIRECTORY` retains logs, regenerated data +and fresh native binaries; `--receipt NEW_JSON` writes the full deterministic +receipt. Both refuse existing paths. Without these options, outputs are +temporary and nothing is written to the package. `--source-root` supports a +relocated minimal closure of the 14 in-tree inputs in [SOURCES.json](SOURCES.json). +The pinned PR794 proof is retained verbatim under `provenance/`. + +The verifier repeats the nomination, compares every decoded candidate field, +reconstructs the recipe using independent set-valued rows, and literally +replays the complete positive word in **both directions for all 306 accepted +steps** (9,643,960 instructions). It checks **661 separate Boolean input +columns** on baseline/candidate D in both directions. All full source checks +then run, with exactly the two expected syntactic rejections recorded. + +Unchanged native legality and 5/9/11-stage checkers accept both complete words +on **883 / 1,327 / 1,549 columns** per word. All **96 omitted-bridge controls** +reject. Fourteen local controls cover missing entrance/restoration, wrong undo +order, missing helper injection, frame/operand/receipt faults, unrelated edits +and precision overruns. A missing entire entrance passes helper-only checking +and fails arbitrary-target checking. A cancelling target pair is accepted +semantically and charged two ADDs. Eight package tests cover source corruption, +typed JSON, recompression and output preservation. Executed portability checks +are recorded in [VALIDATION.md](VALIDATION.md). + +The nine-stage prefix expression is bound to the pinned source AST, bridge +exponent and PR589 baseline receipt. Its new bound is +`633952218342189222305933054575935669674977721489175871488` (189 bits). +This check does not reconstruct the hosted parent or its complete finite invoice. + +## Bounded search and prior work + +OS seed **10** selected the bit track and the compensation candidate among +three tasks. The [local claim](CLAIM.json) records the domain, stopped searches +and overlap review. Each iteration scores all 12,210 ordered target pairs, +charging two basis gates for a row change. Seed 10 fixes tie order. The search +accepts the highest-gain pair satisfying exact forward and reverse guards; +it stops at no eligible gain or 1,000 accepted steps. + +This run stops after **306 steps and 3,748,470 pair scores**, with **218,204 +positive scores across the successive matrices**. No prefix guard rejected a +nominee in this run. Independent enumeration of all 12,210 final pairs gives +maximum additional gain **zero**. This is a local stopping certificate for +one additional paid row shear. Neutral detours, multi-step improvements, +helper-basis changes and globally optimal circuits are outside the search. + +**commdata2338's PR794** supplies the guarded target-basis method and exact +incremental bound argument, on historical R420. **Scott Woolsey Biggart's +PR713** and **Sagar Thakrar's PR716** give earlier target-pair constructions; +**Mikhail R. Gadelha's PR686** and **Greer Guthrie's PR694** supply the semantic +D-boundary/helper-basis lineage. This contribution applies that mechanism to +the selected punctured R439 matrix, supplies the 11,097-ADD reduction and +replays all accepted-step bounds independently. It claims no priority for +basis factoring or the semantic contract. + +PR848 explains why R439 sharing is blocked by the unchanged H2 syntax; this +uses the explicitly stated semantic replacement. PR904 changes A/B windows +and leaves D unchanged. No combined candidate with PR904 or any other circuit +PR is certified. The selected #799 κ stays `1661634653669567/10^18`. + +Base: `f567884aeb8851b6e794af1184119a3bfbe1e631`. +Word: **DreamingOfClouds's PR589 tuning of eumemic's PR555**, +`a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46`. +Integration requires acceptance of the semantic D boundary and a full updated +hosted reconstruction and invoice. The selected construction's other assumptions +are recorded in the [maintainer review](../../docs/research/community-frontier799-review.md). +These finite checks do not prove that the construction compiles correctly for +every input size or establish the analytic reduction used by the multiplication +theorem. The selected construction is unchanged; no runtime improvement is measured. + +Prepared for **Gareth Davidson (@bitplane), with substantial OpenAI Codex +assistance**. One AI agent performed the work; no independent human review +is claimed. Apache-2.0. See [NOTICE.md](NOTICE.md). diff --git a/research/r439-two-sided-compensation/vendor/pr915/SOURCES.json b/research/r439-two-sided-compensation/vendor/pr915/SOURCES.json new file mode 100644 index 0000000000..94aa9ddb16 --- /dev/null +++ b/research/r439-two-sided-compensation/vendor/pr915/SOURCES.json @@ -0,0 +1,38 @@ +{ + "base_commit": "f567884aeb8851b6e794af1184119a3bfbe1e631", + "files": { + "research/e8-bit-carrier-skeleton/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "research/e8-bit-carrier-skeleton/NOTICE.md": "5f4b7fcbf99f572be28b6da612ce775363908cdfc7810f7aca167be01c86e49a", + "research/e8-bit-carrier-skeleton/code/bit/checkers/columns_k.cpp": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "research/e8-bit-carrier-skeleton/code/bit/checkers/json.hpp": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63", + "research/e8-bit-carrier-skeleton/code/bit/checkers/legality_h.cpp": "6c1ef2b24e57781d6951c172a1024fc4300e6fd392c9d6672079a7806ab663b3", + "research/e8-bit-carrier-skeleton/code/bit/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "research/e8-bit-carrier-skeleton/code/bit/regression/stage_cohort.py": "6c288f6f234b528c1a7c0a4adfb724e91e0fe6b18c8dffad96af3f973de1829a", + "research/e8-bit-carrier-skeleton/portable-include/bits/stdc++.h": "420094be2af295eed03a983dd66debbbe9cfb78d8252859f4498a615a0074b99", + "research/e8-bit-p111-tuned/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "research/e8-bit-p111-tuned/NOTICE.md": "5b88eb2b7de76aa2a3288ee3c7a08d18a5eadfa82f5e7a99e207d232aed71221", + "research/e8-bit-p111-tuned/code/xcheck_p.py": "af3decc877e27c00001cf56f50c6c09566e8e101297ab34c7860aed96a06d80e", + "research/e8-bit-p111-tuned/tune/EXPECTED.json": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "research/e8-bit-p111-tuned/tune/bitE8mut-p111-tuned.json.gz": "e3e301e62bc2b41dbf1ceac0acf3d35824ebeab1848c5a2142d4577b109da52f", + "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py": "6368196a393ac25bb2918880e4c4bd31ed733b762c27b6873ab391cbc0c5c3c8" + }, + "harness_adaptation": { + "head": "33b9175c345bcd0f21b95d29f37cb95fffd5a134", + "notice": "Common I/O, package controls and native harness adapted from previous contribution; native harness ultimately follows Sagar Thakrar r420-decoder-sharing/native.py.", + "pr": 904, + "source": "research/r439-four-wire-prefix/" + }, + "local_files": { + "provenance/PR794-README.md": "edbec736b24b0f9e2bc95a8839e3a22bc8ca4fc7bd9c0a25dccfb0dc1fec80f4" + }, + "predecessor": { + "author": "commdata2338", + "git_blob": "d81df58d1dc42dab099acf6aa4151c42778c804b", + "head": "6be7364e0245c5a1c931cb1c43b3da991b755850", + "original_path": "research/r420-target-compensation/README.md", + "pr": 794, + "use": "guarded target-basis construction and incremental prefix argument; no executable imported" + }, + "selected_word_commit": "a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46", + "selected_word_pr": 589 +} diff --git a/research/r439-two-sided-compensation/vendor/pr915/candidate.json.gz b/research/r439-two-sided-compensation/vendor/pr915/candidate.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..7f1f188f516ca4661f419dc72114751abf3cc920 GIT binary patch literal 38950 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 literal 0 HcmV?d00001 diff --git a/research/r439-two-sided-compensation/verify.py b/research/r439-two-sided-compensation/verify.py new file mode 100644 index 0000000000..26c284072e --- /dev/null +++ b/research/r439-two-sided-compensation/verify.py @@ -0,0 +1,448 @@ +#!/usr/bin/env python3 +"""Independent set/matrix replay and unchanged native checks of the two-sided word. + +Prepared for Gareth Davidson (@bitplane), with OpenAI Codex assistance. Apache-2.0. +""" +import argparse +import ast +import copy +from pathlib import Path +import random +import runpy +import subprocess +import sys +import tempfile + +C = runpy.run_path(str(Path(__file__).resolve().with_name("common.py"))) +need = C["need"] + + +def same(a, b, message): + need(C["canonical"](a) == C["canonical"](b), message) + + +def guards(forward, backward): + need(64 * forward ** 3 * backward ** 2 < 1 << 104, "local payload guard") + need((1 << 18) * forward ** 5 * backward ** 4 < 1 << 192, "nine-stage guard") + + +def d_atoms(word): + v, n = word["v"], 2 * word["v"] + word["R"] + result = [] + for frame, d, sources in word["D"]: + need(type(frame) is int and frame == 0, "D frame zero") + need(type(d) is int and v <= d < n, "D may not write sources") + need(sources and len(set(sources)) == len(sources), "D nonempty distinct donors") + need(all(type(s) is int and v <= s < n and s != d for s in sources), "D legal donor") + need(d < 2 * v or all(s >= 2 * v for s in sources), "D helper may not read target") + result.extend((d, s) for s in sources) + return result + + +def stream(word): + """Literal ADD/COPY/ERASE instructions, independent of builder macro evaluation.""" + v, temp = word["v"], 2 * word["v"] + word["R"] + instructions = [] + for section in ("D", "A"): + for _, d, sources in word[section]: + instructions.extend((1, d, s) for s in sources) + for j, center in enumerate(word["ret"]): + instructions.append((2, temp, center)) + for target, coefficients in enumerate(word["scatter"]): + if j in coefficients: + instructions.append((1, v + target, temp)) + instructions.append((3, temp, center)) + for section in ("B", "C"): + for _, d, sources in word[section]: + instructions.extend((1, d, s) for s in sources) + return instructions + + +def positive(instructions, size, reverse=False): + values, largest = [1] * size, 1 + for kind, d, s in (reversed(instructions) if reverse else instructions): + if reverse and kind != 1: + kind = 5 - kind + if kind == 1: + values[d] += values[s] + elif kind == 2: + values[d] = values[s] + else: + values[d] = 0 + largest = max(largest, values[d]) + return largest + + +def bill(word): + literal = stream(word) + size = 2 * word["v"] + word["R"] + 1 + forward, backward = positive(literal, size), positive(literal, size, True) + return dict(D_adds=len(d_atoms(word)), native_ADDs=sum(k == 1 for k, _, _ in literal), + F=forward, B=backward, payload_bits=(64 * forward ** 3 * backward ** 2).bit_length(), + nine_stage_prefix_bits=((1 << 18) * forward ** 5 * backward ** 4).bit_length()) + + +def check_bill(word, certificate): + for key, value in bill(word).items(): + same(value, certificate[key], "literal bill: " + key) + + +def boundary_columns(word, reverse=False): + """One byte-valued replay for each of the 661 separate input columns.""" + n = 2 * word["v"] + word["R"] + operations = d_atoms(word) + if reverse: + operations.reverse() + output = [] + for column in range(n): + values = bytearray(n) + values[column] = 1 + for d, s in operations: + values[d] ^= values[s] + output.append(bytes(values)) + return output + + +def outside_d(original, candidate): + same({k: v for k, v in original.items() if k != "D"}, + {k: v for k, v in candidate.items() if k != "D"}, "non-D field changed") + + +def original_rows(original): + v = original["v"] + rows = [set() for _ in range(v)] + for frame, d, sources in original["D"]: + need(frame == 0 and v <= d < 2 * v and all(s >= 2 * v for s in sources), "old D shape") + for s in sources: + rows[d - v].symmetric_difference_update({s - 2 * v}) + return rows + + +def frozen_parent(original, parent): + """Derive E and EK from the pinned target recipe, without accepting search claims.""" + certificate = C["load"](C["HERE"] / "vendor/pr915/CERTIFICATE.json") + same(C["digest"](parent), certificate["candidate_sha256"], "parent digest") + outside_d(original, parent) + v = original["v"] + rows, e_rows, target = original_rows(original), [{i} for i in range(v)], [] + for step in certificate["steps"]: + d, s = step["destination"], step["source"] + need(type(d) is int and type(s) is int and 0 <= d < v and 0 <= s < v and d != s, + "parent target shear") + rows[d].symmetric_difference_update(rows[s]) + e_rows[d].symmetric_difference_update(e_rows[s]) + target.append([0, v + d, [v + s]]) + middle = [[0, v + i, [2 * v + j for j in sorted(row)]] for i, row in enumerate(rows)] + same(target + middle + target[::-1], parent["D"], "frozen parent reconstruction") + check_bill(parent, certificate) + need(len(target) == 306, "parent target count") + return rows, e_rows, target + + +def helper_pairs(certificate, count): + pairs, used = [], set() + for step in certificate["steps"]: + a, b = step["a"], step["b"] + need(type(a) is int and type(b) is int, "noninteger helper index") + need(0 <= a < count and 0 <= b < count and a != b, "helper pair range") + need(a not in used and b not in used, "overlapping helper pair") + pairs.append((a, b)) + used.update((a, b)) + return pairs + + +def reconstruct(parent, rows, target, pairs): + v = parent["v"] + transformed = [set(row) for row in rows] + for a, b in pairs: + for row in transformed: + if a in row: + row.symmetric_difference_update({b}) + helpers = [[0, 2 * v + a, [2 * v + b]] for a, b in pairs] + middle = [[0, v + i, [2 * v + j for j in sorted(row)]] for i, row in enumerate(transformed)] + result = copy.deepcopy(parent) + result["D"] = helpers + target + middle + target[::-1] + helpers[::-1] + return result, transformed + + +def recipe_check(original, parent, candidate, certificate): + need(certificate["format"] == "r439-two-sided/1" and type(certificate["seed"]) is int + and certificate["seed"] == 5, "certificate format/seed") + for label, word in (("baseline", original), ("parent", parent), ("candidate", candidate)): + same(C["digest"](word), certificate[label + "_sha256"], label + " digest") + outside_d(original, candidate) + rows, e_rows, target = frozen_parent(original, parent) + v, helpers = original["v"], original["R"] + expected_pairs = helper_pairs(certificate, helpers) + # Set cardinalities, not the builder's packed column XOR/popcount implementation. + columns = [{i for i in range(v) if j in rows[i]} for j in range(helpers)] + rng, census, choices = random.Random(5), [], [] + for a in range(helpers): + for b in range(helpers): + if a == b: + continue + gain = len(columns[b]) - len(columns[b].symmetric_difference(columns[a])) - 2 + tie = rng.getrandbits(64) + census.append([a, b, gain, tie]) + if gain > 0: + choices.append((-gain, tie, a, b)) + same(C["digest"](census), certificate["census_sha256"], "all pair scores and ties") + same(len(census), certificate["pair_scores"], "pair census size") + same(len(choices), certificate["positive_pairs"], "positive pair count") + same(max(-p[0] for p in choices), certificate["max_pair_gain"], "maximum pair gain") + accepted, used, history, rejected, skipped, instructions_checked = [], set(), [], [], 0, 0 + for neg_gain, tie, a, b in sorted(choices): + if a in used or b in used: + skipped += 1 + continue + trial, supports = reconstruct(parent, rows, target, accepted + [(a, b)]) + charges = bill(trial) + forward, backward = charges["F"], charges["B"] + instructions_checked += 2 * len(stream(trial)) + try: + guards(forward, backward) + except ValueError: + rejected.append(dict(a=a, b=b, gain=-neg_gain, F=forward, B=backward)) + continue + accepted.append((a, b)) + used.update((a, b)) + history.append(dict(a=a, b=b, gain=-neg_gain, F=forward, B=backward, + middle_weight=sum(map(len, supports)))) + same(accepted, expected_pairs, "guarded greedy pairs") + same(history, certificate["steps"], "literal prefix history") + same(rejected, certificate["guard_rejections"], "guard rejection history") + same(skipped, certificate["overlap_skips"], "overlap count") + reconstructed, supports = reconstruct(parent, rows, target, accepted) + same(reconstructed, candidate, "entire candidate recipe") + check_bill(candidate, certificate) + need(len(accepted) == certificate["helper_pairs"] == 192, "accepted pair count") + need(certificate["target_shears"] == len(target), "fixed target count") + need(sum(map(len, supports)) == certificate["middle_weight"] == 4764, "middle matrix weight") + saving = sum(step["gain"] for step in history) + need(saving == certificate["saved_beyond_parent"] == 1228, "fully paid savings") + need(certificate["D_adds"] == 2 * len(target) + 2 * len(accepted) + sum(map(len, supports)) == 5760, + "all preparation and restoration charged") + return dict(pair_scores=len(census), positive_pairs=len(choices), max_pair_gain=max(-p[0] for p in choices), + overlap_skips=skipped, guard_rejections=len(rejected), helper_pairs=len(accepted), + target_shears=len(target), middle_weight=sum(map(len, supports)), + saved_beyond_parent=saving, literal_prefix_instructions_checked=instructions_checked), e_rows, supports + + +def matrix_check(original, e_rows, pairs, middle): + """Every coefficient by K + (E-I)K + K(H-I) + (E-I)K(H-I).""" + v, helpers = original["v"], original["R"] + k_rows = original_rows(original) + k = [[int(j in k_rows[i]) for j in range(helpers)] for i in range(v)] + a_rows = [row.symmetric_difference({i}) for i, row in enumerate(e_rows)] + predecessor = {b: a for a, b in pairs} + mixed, coefficients, helper_only_weight = [set() for _ in range(v)], 0, 0 + for i in range(v): + for j in range(helpers): + base = k[i][j] + left = sum(k[t][j] for t in a_rows[i]) % 2 + right = k[i][predecessor[j]] if j in predecessor else 0 + cross = sum(k[t][predecessor[j]] for t in a_rows[i]) % 2 if j in predecessor else 0 + need(((base + left + right + cross) % 2) == int(j in middle[i]), "four-term matrix coefficient") + if cross: + mixed[i].add(j) + helper_only_weight += (base + right) % 2 + coefficients += 1 + need(sum(map(len, mixed)) == 7031, "nonzero mixed-term support") + return dict(coefficients_checked=coefficients, mixed_term_nonzeros=sum(map(len, mixed)), + helper_only_middle_weight_for_same_pairs=helper_only_weight, + helper_only_D_cost_for_same_pairs=helper_only_weight + 2 * len(pairs)), mixed + + +def source_checks(root, words): + owner = C["module"]("pinned_r439", Path(root) / C["CHECKER"]) + receipts = {} + for name, word in words.items(): + _, labels, full, hypotheses, conclusions, info = owner.check(word) + wanted_h = {key: True for key in hypotheses} + wanted_c = {key: True for key in conclusions} + if name != "baseline": + wanted_h["H2_D_frame0_targets_from_helpers"] = False + wanted_c["K_equals_D"] = False + same(hypotheses, wanted_h, "unexpected source interface predicates") + same(conclusions, wanted_c, "unexpected source conclusion predicates") + receipts[name] = dict(labels=labels, full=full, hypotheses=hypotheses, conclusions=conclusions, info=info) + return receipts + + +def nine_stage_bound(root, native): + path = ("research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/" + "vendor/e8-r715-eleven-stage-whole/code/global_k.py") + syntax = ast.parse((Path(root) / path).read_text()) + formulas = [node.value for node in ast.walk(syntax) if isinstance(node, ast.Assign) + and any(isinstance(t, ast.Name) and t.id == "prefix" for t in node.targets)] + expected = ast.parse("(1 << nb) * cf ** (K + 1) * cb ** K", mode="eval").body + need(len(formulas) == 1 and ast.dump(formulas[0]) == ast.dump(expected), "source prefix formula") + bridge = ast.parse("nb == 6 * (K - 1)", mode="eval").body + need(any(isinstance(node, ast.Compare) and ast.dump(node) == ast.dump(bridge) + for node in ast.walk(syntax)), "source bridge exponent") + admitted = C["load"](Path(root) / "research/e8-bit-p111-tuned/tune/EXPECTED.json")["nine"]["bit"] + need(admitted["charged_prefix_bits"] == 192, "source nine-stage charge") + output = {"formula": "2^18 * F^5 * B^4", "source_charge_bits": 192} + for name in ("baseline", "parent", "candidate"): + bounds = native[name]["staged"]["9"]["signed_lift_prefix"] + forward, backward = [int(x["cancellation_free_signed_row_l1_upper"]) for x in bounds] + value = (1 << 18) * forward ** 5 * backward ** 4 + need(value < 1 << 192, "nine-stage invoice bound") + output[name] = {"bound": str(value), "bits": value.bit_length()} + need(output["baseline"]["bits"] == admitted["prefix_bits"] == 177, "source baseline prefix") + need(output["parent"]["bits"] == 189 and output["candidate"]["bits"] == 192, "changed prefix charges") + return output + + +def controls(original, parent, candidate, certificate, baseline_columns, mixed, middle): + rejected = [] + + def reject(name, action, message): + try: + action() + except ValueError as error: + need(message in str(error), "unexpected control failure: " + name + ": " + str(error)) + rejected.append(name) + else: + raise ValueError("control accepted: " + name) + + def boundary(word): + need(boundary_columns(word) == baseline_columns, "D boundary mismatch") + + h, m, v = certificate["helper_pairs"], certificate["target_shears"], original["v"] + changed = copy.deepcopy(candidate) + del changed["D"][h:h + m] + columns = boundary_columns(changed) + need(columns[2 * v:] == baseline_columns[2 * v:], "missing-target-entrance control premise") + need(columns[v:2 * v] != baseline_columns[v:2 * v], "arbitrary target inputs are necessary") + reject("missing target preparation passes helper-only columns", lambda: boundary(changed), "D boundary") + changed = copy.deepcopy(candidate) + del changed["D"][:h] + columns = boundary_columns(changed) + need(columns[:2 * v] == baseline_columns[:2 * v], "missing-helper-preparation control premise") + reject("missing helper preparation passes clean-helper inputs", lambda: boundary(changed), "D boundary") + changed = copy.deepcopy(candidate) + changed["D"].pop() + reject("missing helper restoration", lambda: boundary(changed), "D boundary") + changed = copy.deepcopy(candidate) + changed["D"].pop(-h - 1) + reject("missing target restoration", lambda: boundary(changed), "D boundary") + changed = copy.deepcopy(candidate) + for i, row in enumerate(middle): + changed["D"][h + m + i][2] = [2 * v + j for j in sorted(row.symmetric_difference(mixed[i]))] + reject("omitted mixed term", lambda: boundary(changed), "D boundary") + changed = copy.deepcopy(candidate) + changed["D"][h + m:h + m + v] = copy.deepcopy(parent["D"][m:m + v]) + reject("stale one-sided middle matrix", lambda: boundary(changed), "D boundary") + changed = copy.deepcopy(candidate) + for i, (_, _, row) in enumerate(parent["D"][m:m + v]): + support = set(row) + for a, b in helper_pairs(certificate, original["R"]): + if 2 * v + b in support: + support.symmetric_difference_update({2 * v + a}) + changed["D"][h + m + i][2] = sorted(support) + reject("wrong direction of helper-column change", lambda: boundary(changed), "D boundary") + changed = copy.deepcopy(candidate) + changed["D"][-h - m:-h] = copy.deepcopy(parent["D"][:m]) + reject("target restoration in forward order", lambda: boundary(changed), "D boundary") + changed = copy.deepcopy(candidate) + changed["D"][0][0] = 1 + reject("nonzero D frame", lambda: d_atoms(changed), "D frame") + changed = copy.deepcopy(candidate) + changed["D"][0][1] = 0 + reject("D writes source", lambda: d_atoms(changed), "may not write sources") + changed = copy.deepcopy(candidate) + changed["D"][0][2] = [0] + reject("D reads source", lambda: d_atoms(changed), "D legal donor") + changed = copy.deepcopy(candidate) + changed["D"][0][2] = [v] + reject("helper reads target", lambda: d_atoms(changed), "may not read target") + wrong = copy.deepcopy(certificate) + wrong["D_adds"] -= h + reject("unpaid helper restoration", lambda: check_bill(candidate, wrong), "literal bill: D_adds") + wrong = copy.deepcopy(certificate) + wrong["F"] = 49347 + reject("inherited parent forward bound", lambda: check_bill(candidate, wrong), "literal bill: F") + reject("local payload ceiling equality", lambda: guards(1, 1 << 49), "local payload") + reject("nine-stage overrun below local cap", lambda: guards(71907, 14000000), "nine-stage") + wrong = copy.deepcopy(certificate) + wrong["steps"][1]["a"] = wrong["steps"][0]["a"] + reject("overlapping helper pairs", lambda: helper_pairs(wrong, original["R"]), "overlapping") + wrong = copy.deepcopy(certificate) + wrong["steps"][0]["a"] = True + reject("boolean helper index", lambda: helper_pairs(wrong, original["R"]), "noninteger") + changed = copy.deepcopy(candidate) + changed["C"].pop() + reject("unrelated cleanup change", lambda: outside_d(original, changed), "non-D") + neutral = copy.deepcopy(candidate) + neutral["D"][:0] = [[0, 2 * v, [2 * v + 1]], [0, 2 * v, [2 * v + 1]]] + need(boundary_columns(neutral) == baseline_columns, "neutral helper pair endpoint") + need(len(d_atoms(neutral)) == len(d_atoms(candidate)) + 2, "neutral pair must be paid") + return {"rejected": rejected, "paid_neutral_helper_pair": 2} + + +def run(root, output): + root, output = Path(root).resolve(), Path(output).resolve() + manifest = C["pins"](root) + output.mkdir(parents=True, exist_ok=False) + original = C["load"](root / C["WORD"]) + parent = C["load"](C["HERE"] / "vendor/pr915/candidate.json.gz") + candidate = C["load"](C["HERE"] / "candidate.json.gz") + certificate = C["load"](C["HERE"] / "CERTIFICATE.json") + same(C["digest"](parent), manifest["parent"]["canonical_word_sha256"], "manifest parent digest") + print("reproduce complete seed-5 pair census and guarded greedy pass", flush=True) + generated = output / "regenerated" + subprocess.run([sys.executable, "-I", "-B", C["HERE"] / "build.py", "--source-root", root, + "--output", generated], check=True) + same(C["load"](generated / "CERTIFICATE.json"), certificate, "certificate regeneration") + same(C["load"](generated / "candidate.json.gz"), candidate, "candidate regeneration") + print("independent set-valued search replay and literal prefix bounds", flush=True) + recipe, e_rows, middle = recipe_check(original, parent, candidate, certificate) + pairs = helper_pairs(certificate, original["R"]) + matrix, mixed = matrix_check(original, e_rows, pairs, middle) + print("48,729 four-term coefficients; 661 separate columns, three words, both D directions", flush=True) + baseline_columns = boundary_columns(original) + words = {"baseline": original, "parent": parent, "candidate": candidate} + bills = {name: bill(word) for name, word in words.items()} + for word in words.values(): + for reverse in (False, True): + need(boundary_columns(word, reverse) == baseline_columns, "arbitrary-input D boundary") + source = source_checks(root, words) + negative = controls(original, parent, candidate, certificate, baseline_columns, mixed, middle) + print("unchanged native legality and 5/9/11-stage checks for all three complete words", flush=True) + native = C["module"]("r439_native", C["HERE"] / "native.py").run( + root, root / C["WORD"], C["HERE"] / "vendor/pr915/candidate.json.gz", + C["HERE"] / "candidate.json.gz", output / "native") + for name in words: + need(bills[name]["native_ADDs"] == native[name]["common_frame_ADDs"], "native/literal cost") + bounds = native[name]["staged"]["9"]["signed_lift_prefix"] + same([bills[name]["F"], bills[name]["B"]], + [int(x["cancellation_free_signed_row_l1_upper"]) for x in bounds], "native/literal bounds") + return {"status": "PASS_R439_TWO_SIDED_COMPENSATION", "source_files": manifest["files"], + "predecessor_files": manifest["local_files"], "recipe": recipe, "matrix": matrix, + "boundary_columns": 661, "boundary_words_and_directions": 6, "bills": bills, + "baseline_sha256": C["digest"](original), "parent_sha256": C["digest"](parent), + "candidate_sha256": C["digest"](candidate), "certificate_sha256": C["digest"](certificate), + "source_checks": source, "controls": negative, "native": native, + "nine_stage_prefix_bound": nine_stage_bound(root, native)} + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--source-root", type=Path, default=C["ROOT"]) + parser.add_argument("--output", type=Path) + parser.add_argument("--receipt", type=Path) + parser.add_argument("--expected", type=Path, default=C["HERE"] / "EXPECTED.json") + args = parser.parse_args() + if args.output: + need(not args.output.exists(), "output already exists") + if args.receipt: + need(not args.receipt.exists(), "receipt already exists") + expected = C["load"](args.expected) + with tempfile.TemporaryDirectory(prefix="r439-two-sided-") as temp: + report = run(args.source_root, args.output or Path(temp) / "run") + same(report, expected, "receipt differs from EXPECTED.json") + if args.receipt: + C["write"](args.receipt, report) + print("PASS_R439_TWO_SIDED_COMPENSATION: ADDs 24,305 -> 13,208 -> 11,980; " + "192 helper pairs; nine-stage prefix 192 bits; semantic D; no new kappa") From 0f216a345c37bc71cc0e22030ef11ec31b26a69e Mon Sep 17 00:00:00 2001 From: Gareth Davidson Date: Tue, 13 Oct 2026 14:08:53 +0100 Subject: [PATCH 2/2] docs: record pass 11 result and PR926 handoff --- .../r439-two-sided-compensation/CLAIM.json | 43 ++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/research/r439-two-sided-compensation/CLAIM.json b/research/r439-two-sided-compensation/CLAIM.json index 513f2c3cb0..891542f70b 100644 --- a/research/r439-two-sided-compensation/CLAIM.json +++ b/research/r439-two-sided-compensation/CLAIM.json @@ -6,7 +6,7 @@ "source": "secrets.randbelow(100), OS randomness", "base": "91a2094f2e022930069e8cfdc810a3ea1b81cd09", "branch": "research/pass11-bit-seed05", - "status": "claimed", + "status": "submitted", "claimed_at_utc": "2026-10-13T12:36:24.399839+00:00", "candidate_selection": "Seed 5 modulo 3 selects candidate 2; seed 5 fixes the helper-pair tie order.", "candidates": [ @@ -53,5 +53,44 @@ "latest": 917, "new_main": "91a2094f freezes an 18-PR follow-up review batch; selected PR799/PR589 result is unchanged. This contribution does not edit that batch or claim approval." }, - "scope": "Finite construction with the semantic D-boundary contract already required by PR915. Integration still requires acceptance of that contract and a complete updated hosted reconstruction/invoice. No new kappa or measured runtime speedup." + "scope": "Finite construction with the semantic D-boundary contract already required by PR915. Integration still requires acceptance of that contract and a complete updated hosted reconstruction/invoice. No new kappa or measured runtime speedup.", + "completed_at_utc": "2026-10-13T13:08:53.779229+00:00", + "result": { + "pr": 926, + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/926", + "mathematical_head": "1e9c43ee8dbeeb9aca0e8fdecbf9769db4f4a29e", + "complete_ADDs": { + "selected_PR589": 24305, + "parent_PR915": 13208, + "candidate": 11980 + }, + "D_ADDs": 5760, + "saving_beyond_parent": 1228, + "saving_against_selected_word": 12325, + "helper_pairs": 192, + "middle_weight": 4764, + "F": 71907, + "B": 10562318, + "payload_bits": 102, + "nine_stage_prefix_bits": 192, + "coverage": { + "ordered_pair_scores": 192282, + "positive_pairs": 2298, + "overlap_skips": 2106, + "guard_rejections": 0, + "four_term_coefficients": 48729, + "mixed_term_nonzeros": 7031, + "literal_prefix_instructions": 4760850 + }, + "validation": "Complete receipts match on CPython 3.14.4 and isolated optimized read-only CPython 3.12.3. All three words pass original endpoint and native 5/9/11-stage checks; 144 bridge controls, 19 local controls, 8 package tests. Selected record and whitespace checks pass.", + "integration": "Original H2 and literal K extraction remain false. Requires semantic D acceptance, changed whole-hosted emission/audit, full finite/precision invoices and outer assembly. Nine-stage bound uses about 99.925% of its ceiling; no new kappa.", + "hosted_CI": "Separate from local verification; no hosted success claimed." + }, + "final_refresh": { + "upstream": "91a2094f2e022930069e8cfdc810a3ea1b81cd09", + "open_prs": 714, + "through_pr": 924, + "gist_revision": "4180bf0d4045ffdcd12d75bb1fec91c234420162", + "overlap": "PR917 is complex CK; PR923 changes R439 phase-B frame520 and cleanup. Neither is composed; no new R439 two-sided D construction in snapshot." + } }