From 2b1f30ade78ad5e9b8b8fb9bca80879ba5c7ba07 Mon Sep 17 00:00:00 2001 From: Gareth Davidson Date: Tue, 13 Oct 2026 15:26:05 +0100 Subject: [PATCH 1/2] Research: resynthesize seven complete R439 six-wire Boolean blocks --- .../r439-six-wire-boolean/CERTIFICATE.json | 5573 +++++++++++++++++ research/r439-six-wire-boolean/CLAIM.json | 41 + research/r439-six-wire-boolean/EXPECTED.json | 1810 ++++++ research/r439-six-wire-boolean/LICENSE | 201 + research/r439-six-wire-boolean/NOTICE.md | 35 + research/r439-six-wire-boolean/PROOF.md | 80 + research/r439-six-wire-boolean/README.md | 107 + research/r439-six-wire-boolean/SOURCES.json | 33 + research/r439-six-wire-boolean/VALIDATION.md | 68 + research/r439-six-wire-boolean/build.py | 169 + .../r439-six-wire-boolean/candidate.json.gz | Bin 0 -> 41184 bytes research/r439-six-wire-boolean/common.py | 69 + research/r439-six-wire-boolean/native.py | 109 + .../r439-six-wire-boolean/test_package.py | 74 + .../vendor/pr936/CERTIFICATE.json | 5346 ++++++++++++++++ .../vendor/pr936/LICENSE | 201 + .../vendor/pr936/NOTICE.md | 28 + .../vendor/pr936/README.md | 149 + .../vendor/pr936/candidate.json.gz | Bin 0 -> 41284 bytes research/r439-six-wire-boolean/verify.py | 311 + 20 files changed, 14404 insertions(+) create mode 100644 research/r439-six-wire-boolean/CERTIFICATE.json create mode 100644 research/r439-six-wire-boolean/CLAIM.json create mode 100644 research/r439-six-wire-boolean/EXPECTED.json create mode 100644 research/r439-six-wire-boolean/LICENSE create mode 100644 research/r439-six-wire-boolean/NOTICE.md create mode 100644 research/r439-six-wire-boolean/PROOF.md create mode 100644 research/r439-six-wire-boolean/README.md create mode 100644 research/r439-six-wire-boolean/SOURCES.json create mode 100644 research/r439-six-wire-boolean/VALIDATION.md create mode 100644 research/r439-six-wire-boolean/build.py create mode 100644 research/r439-six-wire-boolean/candidate.json.gz create mode 100644 research/r439-six-wire-boolean/common.py create mode 100644 research/r439-six-wire-boolean/native.py create mode 100644 research/r439-six-wire-boolean/test_package.py create mode 100644 research/r439-six-wire-boolean/vendor/pr936/CERTIFICATE.json create mode 100644 research/r439-six-wire-boolean/vendor/pr936/LICENSE create mode 100644 research/r439-six-wire-boolean/vendor/pr936/NOTICE.md create mode 100644 research/r439-six-wire-boolean/vendor/pr936/README.md create mode 100644 research/r439-six-wire-boolean/vendor/pr936/candidate.json.gz create mode 100644 research/r439-six-wire-boolean/verify.py diff --git a/research/r439-six-wire-boolean/CERTIFICATE.json b/research/r439-six-wire-boolean/CERTIFICATE.json new file mode 100644 index 0000000000..6e705e278e --- /dev/null +++ b/research/r439-six-wire-boolean/CERTIFICATE.json @@ -0,0 +1,5573 @@ +{ + "blocks": [ + { + "distinct_programs": 2192, + "end": 609, + "frame": 266, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 3, + 4 + ], + [ + 3, + 1 + ], + [ + 3, + 0 + ], + [ + 3, + 2 + ], + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 5, + 2 + ], + [ + 5, + 4 + ], + [ + 0, + 3 + ], + [ + 0, + 5 + ], + [ + 0, + 2 + ], + [ + 1, + 2 + ], + [ + 2, + 1 + ], + [ + 2, + 0 + ], + [ + 0, + 4 + ], + [ + 4, + 5 + ], + [ + 4, + 3 + ], + [ + 1, + 4 + ] + ], + "saved_A": 0, + "shorter_programs": 380, + "start": 591, + "trials": 2880, + "wires": [ + 226, + 236, + 238, + 243, + 244, + 247 + ] + }, + { + "distinct_programs": 1995, + "end": 624, + "frame": 267, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 1, + 4 + ], + [ + 5, + 1 + ], + [ + 5, + 2 + ], + [ + 5, + 3 + ], + [ + 0, + 1 + ], + [ + 1, + 3 + ], + [ + 1, + 2 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 2, + 5 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ], + [ + 0, + 5 + ], + [ + 3, + 0 + ], + [ + 3, + 1 + ] + ], + "saved_A": 0, + "shorter_programs": 148, + "start": 609, + "trials": 2880, + "wires": [ + 222, + 351, + 353, + 369, + 379, + 486 + ] + }, + { + "distinct_programs": 2011, + "end": 643, + "frame": 268, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 1, + 5 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 1, + 2 + ], + [ + 0, + 5 + ], + [ + 4, + 2 + ], + [ + 3, + 4 + ], + [ + 0, + 3 + ], + [ + 5, + 4 + ], + [ + 2, + 1 + ], + [ + 2, + 0 + ], + [ + 2, + 5 + ], + [ + 2, + 3 + ], + [ + 2, + 4 + ], + [ + 4, + 1 + ], + [ + 4, + 0 + ], + [ + 5, + 1 + ], + [ + 5, + 0 + ], + [ + 3, + 5 + ] + ], + "saved_A": 0, + "shorter_programs": 1119, + "start": 624, + "trials": 2880, + "wires": [ + 223, + 235, + 258, + 260, + 274, + 280 + ] + }, + { + "distinct_programs": 1900, + "end": 660, + "frame": 269, + "guarded_programs": 32, + "new": [ + [ + 0, + 5 + ], + [ + 1, + 3 + ], + [ + 0, + 1 + ], + [ + 4, + 1 + ], + [ + 0, + 2 + ], + [ + 4, + 2 + ], + [ + 3, + 2 + ], + [ + 3, + 0 + ], + [ + 2, + 0 + ], + [ + 1, + 0 + ], + [ + 5, + 4 + ], + [ + 3, + 4 + ], + [ + 2, + 4 + ], + [ + 1, + 4 + ] + ], + "nomination": { + "mode": "row", + "order": [ + 4, + 0, + 2, + 1, + 3, + 5 + ], + "priority": [ + 1, + 2, + 3, + 4, + 5, + 0 + ] + }, + "old": [ + [ + 5, + 4 + ], + [ + 5, + 2 + ], + [ + 5, + 1 + ], + [ + 5, + 3 + ], + [ + 0, + 4 + ], + [ + 4, + 2 + ], + [ + 1, + 3 + ], + [ + 4, + 1 + ], + [ + 3, + 5 + ], + [ + 3, + 0 + ], + [ + 3, + 4 + ], + [ + 3, + 2 + ], + [ + 0, + 5 + ], + [ + 1, + 0 + ], + [ + 2, + 4 + ], + [ + 1, + 4 + ], + [ + 2, + 0 + ] + ], + "saved_A": 3, + "shorter_programs": 573, + "start": 643, + "trials": 2880, + "wires": [ + 253, + 389, + 397, + 399, + 403, + 485 + ] + }, + { + "distinct_programs": 1955, + "end": 676, + "frame": 270, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 4 + ], + [ + 0, + 3 + ], + [ + 0, + 5 + ], + [ + 0, + 2 + ], + [ + 1, + 4 + ], + [ + 4, + 3 + ], + [ + 4, + 5 + ], + [ + 4, + 2 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 2, + 4 + ], + [ + 2, + 3 + ], + [ + 1, + 0 + ], + [ + 3, + 1 + ], + [ + 5, + 3 + ], + [ + 5, + 4 + ] + ], + "saved_A": 0, + "shorter_programs": 243, + "start": 660, + "trials": 2880, + "wires": [ + 234, + 252, + 266, + 268, + 272, + 276 + ] + }, + { + "distinct_programs": 2012, + "end": 695, + "frame": 271, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 5, + 3 + ], + [ + 5, + 1 + ], + [ + 5, + 4 + ], + [ + 5, + 2 + ], + [ + 0, + 3 + ], + [ + 4, + 2 + ], + [ + 1, + 4 + ], + [ + 0, + 1 + ], + [ + 3, + 4 + ], + [ + 2, + 5 + ], + [ + 2, + 0 + ], + [ + 2, + 3 + ], + [ + 2, + 1 + ], + [ + 2, + 4 + ], + [ + 4, + 5 + ], + [ + 4, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 5 + ], + [ + 1, + 3 + ] + ], + "saved_A": 0, + "shorter_programs": 1038, + "start": 676, + "trials": 2880, + "wires": [ + 246, + 391, + 393, + 401, + 405, + 484 + ] + }, + { + "distinct_programs": 1970, + "end": 713, + "frame": 272, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 1 + ], + [ + 0, + 4 + ], + [ + 5, + 3 + ], + [ + 3, + 1 + ], + [ + 1, + 4 + ], + [ + 2, + 1 + ], + [ + 5, + 2 + ], + [ + 4, + 0 + ], + [ + 4, + 5 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ], + [ + 1, + 0 + ], + [ + 1, + 5 + ], + [ + 2, + 5 + ], + [ + 2, + 0 + ], + [ + 3, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 670, + "start": 695, + "trials": 2880, + "wires": [ + 242, + 294, + 296, + 302, + 316, + 501 + ] + }, + { + "distinct_programs": 1961, + "end": 729, + "frame": 273, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ], + [ + 4, + 0 + ], + [ + 5, + 1 + ], + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 0 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 3, + 1 + ], + [ + 5, + 4 + ], + [ + 2, + 5 + ], + [ + 3, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 254, + "start": 713, + "trials": 2880, + "wires": [ + 419, + 421, + 427, + 439, + 483, + 502 + ] + }, + { + "distinct_programs": 1985, + "end": 745, + "frame": 274, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 4 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 1 + ], + [ + 5, + 4 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ], + [ + 4, + 1 + ], + [ + 1, + 0 + ], + [ + 1, + 5 + ], + [ + 1, + 4 + ], + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 5, + 0 + ], + [ + 2, + 5 + ], + [ + 3, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 246, + "start": 729, + "trials": 2880, + "wires": [ + 240, + 288, + 298, + 304, + 308, + 500 + ] + }, + { + "distinct_programs": 1950, + "end": 758, + "frame": 275, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 4, + 5 + ], + [ + 4, + 0 + ], + [ + 4, + 3 + ], + [ + 4, + 2 + ], + [ + 0, + 2 + ], + [ + 1, + 3 + ], + [ + 0, + 1 + ], + [ + 5, + 0 + ], + [ + 2, + 4 + ], + [ + 3, + 2 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 1, + 4 + ] + ], + "saved_A": 0, + "shorter_programs": 0, + "start": 745, + "trials": 2880, + "wires": [ + 417, + 423, + 425, + 437, + 482, + 503 + ] + }, + { + "distinct_programs": 2055, + "end": 770, + "frame": 276, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 5 + ], + [ + 0, + 2 + ], + [ + 0, + 4 + ], + [ + 0, + 1 + ], + [ + 3, + 1 + ], + [ + 4, + 3 + ], + [ + 2, + 4 + ], + [ + 5, + 2 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 1, + 4 + ], + [ + 4, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 0, + "start": 758, + "trials": 2880, + "wires": [ + 232, + 334, + 338, + 342, + 346, + 504 + ] + }, + { + "distinct_programs": 1937, + "end": 782, + "frame": 277, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 5, + 0 + ], + [ + 5, + 1 + ], + [ + 5, + 2 + ], + [ + 4, + 5 + ], + [ + 5, + 3 + ], + [ + 0, + 3 + ], + [ + 2, + 0 + ], + [ + 3, + 1 + ], + [ + 3, + 4 + ], + [ + 1, + 2 + ], + [ + 0, + 4 + ], + [ + 2, + 4 + ] + ], + "saved_A": 0, + "shorter_programs": 6, + "start": 770, + "trials": 2880, + "wires": [ + 447, + 455, + 457, + 461, + 481, + 499 + ] + }, + { + "distinct_programs": 1957, + "end": 799, + "frame": 278, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 2, + 1 + ], + [ + 2, + 3 + ], + [ + 2, + 5 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 1, + 3 + ], + [ + 4, + 1 + ], + [ + 4, + 5 + ], + [ + 3, + 5 + ], + [ + 0, + 2 + ], + [ + 0, + 4 + ], + [ + 5, + 0 + ], + [ + 0, + 1 + ], + [ + 3, + 2 + ], + [ + 3, + 4 + ], + [ + 1, + 2 + ], + [ + 1, + 4 + ] + ], + "saved_A": 0, + "shorter_programs": 435, + "start": 782, + "trials": 2880, + "wires": [ + 231, + 339, + 341, + 343, + 375, + 456 + ] + }, + { + "distinct_programs": 2047, + "end": 811, + "frame": 279, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 5, + 3 + ], + [ + 5, + 1 + ], + [ + 5, + 4 + ], + [ + 5, + 0 + ], + [ + 2, + 0 + ], + [ + 2, + 4 + ], + [ + 1, + 2 + ], + [ + 3, + 1 + ], + [ + 2, + 5 + ], + [ + 0, + 2 + ], + [ + 4, + 2 + ], + [ + 2, + 1 + ] + ], + "saved_A": 0, + "shorter_programs": 0, + "start": 799, + "trials": 2880, + "wires": [ + 249, + 329, + 331, + 354, + 449, + 492 + ] + }, + { + "distinct_programs": 2144, + "end": 828, + "frame": 280, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 4, + 3 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 1 + ], + [ + 5, + 2 + ], + [ + 5, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 1, + 2 + ], + [ + 2, + 0 + ], + [ + 0, + 1 + ], + [ + 2, + 3 + ], + [ + 3, + 5 + ], + [ + 3, + 4 + ], + [ + 1, + 3 + ] + ], + "saved_A": 0, + "shorter_programs": 54, + "start": 811, + "trials": 2880, + "wires": [ + 261, + 281, + 299, + 309, + 345, + 380 + ] + }, + { + "distinct_programs": 1998, + "end": 846, + "frame": 281, + "guarded_programs": 104, + "new": [ + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 3, + 1 + ], + [ + 4, + 1 + ], + [ + 2, + 4 + ], + [ + 3, + 5 + ], + [ + 1, + 2 + ], + [ + 4, + 2 + ], + [ + 5, + 2 + ], + [ + 0, + 2 + ], + [ + 1, + 3 + ], + [ + 4, + 3 + ], + [ + 0, + 3 + ] + ], + "nomination": { + "mode": "row", + "order": [ + 3, + 2, + 5, + 4, + 1, + 0 + ], + "priority": [ + 0, + 5, + 4, + 3, + 2, + 1 + ] + }, + "old": [ + [ + 5, + 2 + ], + [ + 5, + 1 + ], + [ + 5, + 0 + ], + [ + 5, + 4 + ], + [ + 2, + 4 + ], + [ + 3, + 2 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 4, + 5 + ], + [ + 4, + 3 + ], + [ + 4, + 2 + ], + [ + 4, + 1 + ], + [ + 4, + 0 + ], + [ + 0, + 2 + ], + [ + 3, + 5 + ], + [ + 0, + 3 + ], + [ + 1, + 2 + ], + [ + 1, + 3 + ] + ], + "saved_A": 5, + "shorter_programs": 811, + "start": 828, + "trials": 2880, + "wires": [ + 263, + 275, + 310, + 374, + 410, + 491 + ] + }, + { + "distinct_programs": 1969, + "end": 862, + "frame": 282, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 1, + 0 + ], + [ + 1, + 5 + ], + [ + 1, + 4 + ], + [ + 1, + 3 + ], + [ + 2, + 0 + ], + [ + 0, + 5 + ], + [ + 0, + 4 + ], + [ + 0, + 3 + ], + [ + 3, + 1 + ], + [ + 3, + 2 + ], + [ + 3, + 0 + ], + [ + 3, + 5 + ], + [ + 2, + 1 + ], + [ + 4, + 0 + ], + [ + 5, + 2 + ], + [ + 4, + 5 + ] + ], + "saved_A": 0, + "shorter_programs": 242, + "start": 846, + "trials": 2880, + "wires": [ + 256, + 325, + 359, + 392, + 404, + 442 + ] + }, + { + "distinct_programs": 1938, + "end": 875, + "frame": 283, + "guarded_programs": 100, + "new": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 1, + 5 + ], + [ + 4, + 1 + ], + [ + 3, + 1 + ], + [ + 2, + 1 + ], + [ + 5, + 0 + ], + [ + 4, + 0 + ], + [ + 3, + 0 + ] + ], + "nomination": { + "mode": "mixed", + "order": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "priority": [ + 1, + 2, + 3, + 4, + 5, + 0 + ] + }, + "old": [ + [ + 0, + 2 + ], + [ + 5, + 0 + ], + [ + 5, + 3 + ], + [ + 5, + 4 + ], + [ + 1, + 0 + ], + [ + 0, + 4 + ], + [ + 0, + 3 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 1, + 5 + ], + [ + 4, + 1 + ], + [ + 3, + 1 + ], + [ + 2, + 1 + ] + ], + "saved_A": 1, + "shorter_programs": 100, + "start": 862, + "trials": 2880, + "wires": [ + 312, + 355, + 412, + 429, + 434, + 490 + ] + }, + { + "distinct_programs": 2005, + "end": 892, + "frame": 284, + "guarded_programs": 32, + "new": [ + [ + 2, + 0 + ], + [ + 5, + 0 + ], + [ + 2, + 4 + ], + [ + 5, + 4 + ], + [ + 3, + 2 + ], + [ + 5, + 1 + ], + [ + 1, + 3 + ], + [ + 2, + 3 + ], + [ + 4, + 3 + ], + [ + 0, + 3 + ], + [ + 2, + 5 + ], + [ + 4, + 5 + ], + [ + 0, + 5 + ] + ], + "nomination": { + "mode": "row", + "order": [ + 5, + 3, + 1, + 2, + 4, + 0 + ], + "priority": [ + 0, + 5, + 4, + 3, + 2, + 1 + ] + }, + "old": [ + [ + 1, + 3 + ], + [ + 1, + 2 + ], + [ + 1, + 0 + ], + [ + 1, + 4 + ], + [ + 5, + 3 + ], + [ + 5, + 2 + ], + [ + 2, + 4 + ], + [ + 2, + 0 + ], + [ + 3, + 2 + ], + [ + 4, + 1 + ], + [ + 4, + 5 + ], + [ + 4, + 3 + ], + [ + 0, + 3 + ], + [ + 2, + 3 + ], + [ + 5, + 1 + ], + [ + 0, + 5 + ], + [ + 2, + 5 + ] + ], + "saved_A": 4, + "shorter_programs": 490, + "start": 875, + "trials": 2880, + "wires": [ + 283, + 344, + 390, + 400, + 418, + 508 + ] + }, + { + "distinct_programs": 1976, + "end": 912, + "frame": 285, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 4, + 3 + ], + [ + 4, + 2 + ], + [ + 4, + 1 + ], + [ + 4, + 0 + ], + [ + 3, + 0 + ], + [ + 3, + 1 + ], + [ + 5, + 2 + ], + [ + 5, + 3 + ], + [ + 2, + 1 + ], + [ + 2, + 0 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 0, + 3 + ], + [ + 0, + 2 + ], + [ + 1, + 3 + ], + [ + 2, + 5 + ], + [ + 2, + 4 + ], + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 3, + 5 + ] + ], + "saved_A": 0, + "shorter_programs": 888, + "start": 892, + "trials": 2880, + "wires": [ + 383, + 408, + 426, + 431, + 489, + 507 + ] + }, + { + "distinct_programs": 1878, + "end": 926, + "frame": 286, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 2, + 5 + ], + [ + 2, + 4 + ], + [ + 2, + 3 + ], + [ + 2, + 0 + ], + [ + 1, + 3 + ], + [ + 4, + 0 + ], + [ + 1, + 4 + ], + [ + 5, + 1 + ], + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 3, + 0 + ], + [ + 3, + 4 + ], + [ + 4, + 2 + ], + [ + 4, + 1 + ] + ], + "saved_A": 0, + "shorter_programs": 0, + "start": 912, + "trials": 2880, + "wires": [ + 300, + 305, + 318, + 414, + 441, + 509 + ] + }, + { + "distinct_programs": 2008, + "end": 944, + "frame": 287, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 4, + 2 + ], + [ + 4, + 0 + ], + [ + 4, + 3 + ], + [ + 4, + 1 + ], + [ + 0, + 1 + ], + [ + 5, + 0 + ], + [ + 0, + 3 + ], + [ + 2, + 3 + ], + [ + 5, + 2 + ], + [ + 1, + 4 + ], + [ + 0, + 5 + ], + [ + 1, + 0 + ], + [ + 1, + 3 + ], + [ + 1, + 2 + ], + [ + 0, + 4 + ], + [ + 3, + 0 + ], + [ + 2, + 4 + ], + [ + 2, + 5 + ] + ], + "saved_A": 0, + "shorter_programs": 539, + "start": 926, + "trials": 2880, + "wires": [ + 265, + 270, + 286, + 315, + 488, + 506 + ] + }, + { + "distinct_programs": 1962, + "end": 957, + "frame": 288, + "guarded_programs": 100, + "new": [ + [ + 2, + 0 + ], + [ + 2, + 4 + ], + [ + 2, + 3 + ], + [ + 5, + 0 + ], + [ + 5, + 4 + ], + [ + 5, + 1 + ], + [ + 3, + 5 + ], + [ + 4, + 5 + ], + [ + 0, + 5 + ], + [ + 1, + 2 + ], + [ + 4, + 2 + ], + [ + 0, + 2 + ] + ], + "nomination": { + "mode": "mixed", + "order": [ + 2, + 5, + 0, + 1, + 3, + 4 + ], + "priority": [ + 0, + 5, + 4, + 3, + 2, + 1 + ] + }, + "old": [ + [ + 1, + 0 + ], + [ + 1, + 4 + ], + [ + 2, + 3 + ], + [ + 1, + 2 + ], + [ + 5, + 2 + ], + [ + 2, + 0 + ], + [ + 2, + 4 + ], + [ + 4, + 2 + ], + [ + 0, + 2 + ], + [ + 5, + 1 + ], + [ + 4, + 5 + ], + [ + 0, + 5 + ], + [ + 3, + 5 + ] + ], + "saved_A": 1, + "shorter_programs": 100, + "start": 944, + "trials": 2880, + "wires": [ + 224, + 324, + 326, + 362, + 446, + 505 + ] + }, + { + "distinct_programs": 1974, + "end": 971, + "frame": 289, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 4, + 5 + ], + [ + 4, + 1 + ], + [ + 4, + 3 + ], + [ + 4, + 0 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 2, + 3 + ], + [ + 5, + 2 + ], + [ + 0, + 1 + ], + [ + 3, + 4 + ], + [ + 3, + 2 + ], + [ + 0, + 3 + ], + [ + 1, + 4 + ], + [ + 1, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 12, + "start": 957, + "trials": 2880, + "wires": [ + 239, + 335, + 364, + 454, + 487, + 510 + ] + }, + { + "distinct_programs": 1984, + "end": 985, + "frame": 290, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 1, + 4 + ], + [ + 1, + 3 + ], + [ + 1, + 5 + ], + [ + 1, + 0 + ], + [ + 2, + 3 + ], + [ + 5, + 0 + ], + [ + 2, + 5 + ], + [ + 4, + 2 + ], + [ + 0, + 3 + ], + [ + 5, + 1 + ], + [ + 5, + 2 + ], + [ + 0, + 5 + ], + [ + 3, + 1 + ], + [ + 3, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 12, + "start": 971, + "trials": 2880, + "wires": [ + 230, + 337, + 347, + 370, + 373, + 453 + ] + }, + { + "distinct_programs": 2048, + "end": 1003, + "frame": 291, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 5, + 2 + ], + [ + 5, + 3 + ], + [ + 5, + 0 + ], + [ + 5, + 4 + ], + [ + 1, + 4 + ], + [ + 3, + 0 + ], + [ + 2, + 3 + ], + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 0, + 4 + ], + [ + 0, + 1 + ], + [ + 0, + 5 + ], + [ + 4, + 0 + ], + [ + 4, + 2 + ], + [ + 3, + 5 + ], + [ + 3, + 1 + ], + [ + 2, + 5 + ], + [ + 2, + 1 + ] + ], + "saved_A": 0, + "shorter_programs": 595, + "start": 985, + "trials": 2880, + "wires": [ + 251, + 356, + 376, + 378, + 460, + 498 + ] + }, + { + "distinct_programs": 2060, + "end": 1019, + "frame": 292, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 1, + 0 + ], + [ + 1, + 5 + ], + [ + 2, + 4 + ], + [ + 3, + 0 + ], + [ + 4, + 5 + ], + [ + 3, + 4 + ], + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 5 + ], + [ + 5, + 0 + ], + [ + 5, + 4 + ], + [ + 0, + 3 + ], + [ + 2, + 1 + ], + [ + 4, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 117, + "start": 1003, + "trials": 2880, + "wires": [ + 285, + 323, + 361, + 387, + 406, + 424 + ] + }, + { + "distinct_programs": 1943, + "end": 1032, + "frame": 293, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 5, + 2 + ], + [ + 5, + 0 + ], + [ + 5, + 3 + ], + [ + 5, + 1 + ], + [ + 0, + 1 + ], + [ + 4, + 3 + ], + [ + 0, + 4 + ], + [ + 2, + 0 + ], + [ + 1, + 5 + ], + [ + 3, + 1 + ], + [ + 1, + 4 + ], + [ + 3, + 0 + ], + [ + 4, + 5 + ] + ], + "saved_A": 0, + "shorter_programs": 0, + "start": 1019, + "trials": 2880, + "wires": [ + 264, + 289, + 366, + 395, + 445, + 497 + ] + }, + { + "distinct_programs": 1887, + "end": 1047, + "frame": 294, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 3, + 5 + ], + [ + 3, + 1 + ], + [ + 3, + 0 + ], + [ + 3, + 2 + ], + [ + 4, + 5 + ], + [ + 1, + 0 + ], + [ + 5, + 1 + ], + [ + 5, + 2 + ], + [ + 2, + 3 + ], + [ + 2, + 4 + ], + [ + 2, + 5 + ], + [ + 0, + 2 + ], + [ + 1, + 5 + ], + [ + 4, + 3 + ], + [ + 1, + 4 + ] + ], + "saved_A": 0, + "shorter_programs": 94, + "start": 1032, + "trials": 2880, + "wires": [ + 255, + 282, + 306, + 336, + 367, + 409 + ] + }, + { + "distinct_programs": 2010, + "end": 1065, + "frame": 295, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 5, + 4 + ], + [ + 5, + 2 + ], + [ + 5, + 0 + ], + [ + 5, + 1 + ], + [ + 0, + 1 + ], + [ + 4, + 0 + ], + [ + 3, + 4 + ], + [ + 3, + 2 + ], + [ + 2, + 1 + ], + [ + 1, + 5 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 0, + 4 + ], + [ + 2, + 5 + ], + [ + 2, + 3 + ], + [ + 0, + 2 + ], + [ + 4, + 5 + ], + [ + 4, + 3 + ] + ], + "saved_A": 0, + "shorter_programs": 648, + "start": 1047, + "trials": 2880, + "wires": [ + 269, + 292, + 313, + 372, + 420, + 496 + ] + }, + { + "distinct_programs": 1934, + "end": 1077, + "frame": 296, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 2, + 5 + ], + [ + 2, + 4 + ], + [ + 2, + 3 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 3 + ], + [ + 5, + 4 + ], + [ + 0, + 4 + ], + [ + 3, + 2 + ], + [ + 1, + 3 + ], + [ + 0, + 1 + ] + ], + "saved_A": 0, + "shorter_programs": 6, + "start": 1065, + "trials": 2880, + "wires": [ + 279, + 303, + 348, + 384, + 430, + 514 + ] + }, + { + "distinct_programs": 1900, + "end": 1092, + "frame": 297, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 4, + 1 + ], + [ + 4, + 3 + ], + [ + 4, + 0 + ], + [ + 4, + 2 + ], + [ + 5, + 2 + ], + [ + 1, + 0 + ], + [ + 3, + 2 + ], + [ + 2, + 1 + ], + [ + 1, + 3 + ], + [ + 2, + 5 + ], + [ + 2, + 4 + ], + [ + 2, + 0 + ], + [ + 5, + 4 + ], + [ + 3, + 5 + ], + [ + 0, + 3 + ] + ], + "saved_A": 0, + "shorter_programs": 236, + "start": 1077, + "trials": 2880, + "wires": [ + 267, + 291, + 317, + 438, + 495, + 513 + ] + }, + { + "distinct_programs": 1928, + "end": 1107, + "frame": 298, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 1, + 4 + ], + [ + 1, + 3 + ], + [ + 1, + 2 + ], + [ + 1, + 0 + ], + [ + 5, + 3 + ], + [ + 4, + 0 + ], + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 0, + 1 + ], + [ + 0, + 5 + ], + [ + 2, + 0 + ], + [ + 0, + 3 + ], + [ + 2, + 4 + ], + [ + 5, + 1 + ], + [ + 3, + 5 + ] + ], + "saved_A": 0, + "shorter_programs": 72, + "start": 1092, + "trials": 2880, + "wires": [ + 301, + 321, + 388, + 422, + 432, + 515 + ] + }, + { + "distinct_programs": 1988, + "end": 1123, + "frame": 299, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 4, + 2 + ], + [ + 4, + 1 + ], + [ + 3, + 0 + ], + [ + 4, + 3 + ], + [ + 5, + 2 + ], + [ + 2, + 3 + ], + [ + 0, + 2 + ], + [ + 0, + 5 + ], + [ + 0, + 4 + ], + [ + 2, + 1 + ], + [ + 0, + 3 + ], + [ + 1, + 2 + ], + [ + 3, + 2 + ], + [ + 5, + 4 + ], + [ + 3, + 5 + ], + [ + 1, + 5 + ] + ], + "saved_A": 0, + "shorter_programs": 189, + "start": 1107, + "trials": 2880, + "wires": [ + 262, + 314, + 402, + 440, + 494, + 512 + ] + }, + { + "distinct_programs": 1978, + "end": 1141, + "frame": 300, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 0 + ], + [ + 1, + 4 + ], + [ + 5, + 3 + ], + [ + 3, + 0 + ], + [ + 0, + 4 + ], + [ + 2, + 0 + ], + [ + 5, + 2 + ], + [ + 4, + 1 + ], + [ + 4, + 5 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ], + [ + 0, + 1 + ], + [ + 0, + 5 + ], + [ + 2, + 5 + ], + [ + 2, + 1 + ], + [ + 3, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 654, + "start": 1123, + "trials": 2880, + "wires": [ + 225, + 320, + 328, + 330, + 458, + 511 + ] + }, + { + "distinct_programs": 2081, + "end": 1159, + "frame": 301, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ], + [ + 1, + 2 + ], + [ + 0, + 1 + ], + [ + 5, + 0 + ], + [ + 5, + 3 + ], + [ + 1, + 3 + ], + [ + 2, + 3 + ], + [ + 2, + 4 + ], + [ + 2, + 5 + ], + [ + 3, + 2 + ], + [ + 3, + 0 + ], + [ + 1, + 4 + ], + [ + 1, + 5 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ] + ], + "saved_A": 0, + "shorter_programs": 486, + "start": 1141, + "trials": 2880, + "wires": [ + 350, + 363, + 448, + 450, + 493, + 516 + ] + }, + { + "distinct_programs": 2051, + "end": 1171, + "frame": 302, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 3, + 5 + ], + [ + 3, + 4 + ], + [ + 1, + 3 + ], + [ + 3, + 0 + ], + [ + 5, + 3 + ], + [ + 4, + 3 + ], + [ + 3, + 1 + ], + [ + 2, + 1 + ] + ], + "saved_A": 0, + "shorter_programs": 0, + "start": 1159, + "trials": 2880, + "wires": [ + 522, + 548, + 553, + 587, + 604, + 652 + ] + }, + { + "distinct_programs": 2047, + "end": 1188, + "frame": 303, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 1, + 3 + ], + [ + 4, + 5 + ], + [ + 1, + 4 + ], + [ + 2, + 3 + ], + [ + 2, + 4 + ], + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 5, + 3 + ], + [ + 5, + 4 + ], + [ + 3, + 0 + ], + [ + 3, + 1 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ] + ], + "saved_A": 0, + "shorter_programs": 318, + "start": 1171, + "trials": 2880, + "wires": [ + 521, + 539, + 557, + 575, + 607, + 630 + ] + }, + { + "distinct_programs": 1998, + "end": 1205, + "frame": 304, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 2, + 5 + ], + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 1, + 3 + ], + [ + 5, + 0 + ], + [ + 5, + 1 + ], + [ + 5, + 2 + ], + [ + 5, + 3 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 4, + 2 + ], + [ + 3, + 1 + ] + ], + "saved_A": 0, + "shorter_programs": 564, + "start": 1188, + "trials": 2880, + "wires": [ + 520, + 556, + 591, + 618, + 637, + 646 + ] + }, + { + "distinct_programs": 1973, + "end": 1222, + "frame": 305, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 2, + 5 + ], + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 1, + 3 + ], + [ + 3, + 5 + ], + [ + 5, + 0 + ], + [ + 5, + 1 + ], + [ + 5, + 3 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 4, + 2 + ], + [ + 3, + 1 + ] + ], + "saved_A": 0, + "shorter_programs": 398, + "start": 1205, + "trials": 2880, + "wires": [ + 519, + 555, + 592, + 613, + 642, + 645 + ] + }, + { + "distinct_programs": 2057, + "end": 1238, + "frame": 306, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 2 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 4, + 5 + ], + [ + 3, + 4 + ], + [ + 2, + 3 + ], + [ + 1, + 2 + ], + [ + 5, + 0 + ], + [ + 5, + 1 + ], + [ + 5, + 2 + ], + [ + 5, + 3 + ], + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 3, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 128, + "start": 1222, + "trials": 2880, + "wires": [ + 518, + 536, + 554, + 572, + 612, + 625 + ] + }, + { + "distinct_programs": 2148, + "end": 1254, + "frame": 307, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 1 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 1, + 2 + ], + [ + 2, + 3 + ], + [ + 3, + 4 + ], + [ + 3, + 5 + ], + [ + 5, + 0 + ], + [ + 5, + 2 + ], + [ + 5, + 3 + ], + [ + 2, + 0 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ], + [ + 3, + 1 + ], + [ + 1, + 0 + ] + ], + "saved_A": 0, + "shorter_programs": 0, + "start": 1238, + "trials": 2880, + "wires": [ + 517, + 551, + 558, + 584, + 603, + 651 + ] + }, + { + "distinct_programs": 1995, + "end": 1269, + "frame": 308, + "guarded_programs": 64, + "new": [ + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 2, + 4 + ], + [ + 1, + 5 + ], + [ + 2, + 5 + ], + [ + 0, + 2 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 5, + 0 + ], + [ + 2, + 1 + ], + [ + 4, + 1 + ], + [ + 5, + 1 + ] + ], + "nomination": { + "mode": "row", + "order": [ + 1, + 0, + 2, + 5, + 4, + 3 + ], + "priority": [ + 0, + 5, + 4, + 3, + 2, + 1 + ] + }, + "old": [ + [ + 0, + 2 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 1, + 5 + ], + [ + 2, + 4 + ], + [ + 2, + 5 + ], + [ + 5, + 0 + ], + [ + 5, + 1 + ], + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 3, + 0 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ] + ], + "saved_A": 2, + "shorter_programs": 148, + "start": 1254, + "trials": 2880, + "wires": [ + 528, + 550, + 559, + 585, + 622, + 634 + ] + }, + { + "distinct_programs": 1889, + "end": 1282, + "frame": 309, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 1 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 2, + 5 + ], + [ + 3, + 4 + ], + [ + 2, + 3 + ], + [ + 1, + 2 + ], + [ + 5, + 2 + ], + [ + 5, + 0 + ], + [ + 4, + 5 + ], + [ + 3, + 0 + ], + [ + 3, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 0, + "start": 1269, + "trials": 2880, + "wires": [ + 527, + 563, + 600, + 610, + 627, + 655 + ] + }, + { + "distinct_programs": 2061, + "end": 1300, + "frame": 310, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 4, + 5 + ], + [ + 1, + 4 + ], + [ + 5, + 0 + ], + [ + 5, + 1 + ], + [ + 5, + 2 + ], + [ + 5, + 3 + ], + [ + 5, + 4 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 4, + 2 + ], + [ + 3, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 472, + "start": 1282, + "trials": 2880, + "wires": [ + 526, + 543, + 562, + 579, + 589, + 648 + ] + }, + { + "distinct_programs": 1979, + "end": 1313, + "frame": 311, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 1, + 5 + ], + [ + 0, + 1 + ], + [ + 4, + 5 + ], + [ + 5, + 0 + ], + [ + 5, + 2 + ], + [ + 2, + 3 + ], + [ + 3, + 4 + ], + [ + 2, + 0 + ], + [ + 3, + 2 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 6, + "start": 1300, + "trials": 2880, + "wires": [ + 525, + 544, + 561, + 580, + 594, + 643 + ] + }, + { + "distinct_programs": 1887, + "end": 1329, + "frame": 312, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 1, + 2 + ], + [ + 3, + 5 + ], + [ + 2, + 3 + ], + [ + 2, + 4 + ], + [ + 5, + 1 + ], + [ + 5, + 2 + ], + [ + 5, + 0 + ], + [ + 4, + 5 + ], + [ + 4, + 3 + ], + [ + 1, + 0 + ], + [ + 3, + 1 + ], + [ + 3, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 313, + "start": 1313, + "trials": 2880, + "wires": [ + 524, + 560, + 595, + 609, + 628, + 660 + ] + }, + { + "distinct_programs": 2163, + "end": 1344, + "frame": 313, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 1, + 4 + ], + [ + 2, + 3 + ], + [ + 3, + 5 + ], + [ + 1, + 3 + ], + [ + 4, + 0 + ], + [ + 4, + 5 + ], + [ + 5, + 3 + ], + [ + 5, + 4 + ], + [ + 4, + 1 + ], + [ + 3, + 0 + ], + [ + 2, + 0 + ] + ], + "saved_A": 0, + "shorter_programs": 12, + "start": 1329, + "trials": 2880, + "wires": [ + 523, + 549, + 564, + 586, + 621, + 633 + ] + }, + { + "distinct_programs": 2144, + "end": 1360, + "frame": 314, + "guarded_programs": 8, + "new": [ + [ + 2, + 3 + ], + [ + 1, + 5 + ], + [ + 3, + 5 + ], + [ + 4, + 5 + ], + [ + 5, + 3 + ], + [ + 2, + 4 + ], + [ + 5, + 4 + ], + [ + 5, + 2 + ], + [ + 0, + 2 + ], + [ + 1, + 0 + ], + [ + 3, + 1 + ], + [ + 4, + 1 + ], + [ + 5, + 1 + ] + ], + "nomination": { + "mode": "row", + "order": [ + 1, + 0, + 2, + 4, + 5, + 3 + ], + "priority": [ + 0, + 5, + 4, + 3, + 2, + 1 + ] + }, + "old": [ + [ + 0, + 2 + ], + [ + 0, + 4 + ], + [ + 1, + 5 + ], + [ + 3, + 5 + ], + [ + 0, + 3 + ], + [ + 2, + 3 + ], + [ + 2, + 4 + ], + [ + 4, + 5 + ], + [ + 5, + 0 + ], + [ + 5, + 1 + ], + [ + 5, + 2 + ], + [ + 5, + 3 + ], + [ + 5, + 4 + ], + [ + 1, + 0 + ], + [ + 4, + 1 + ], + [ + 3, + 1 + ] + ], + "saved_A": 3, + "shorter_programs": 208, + "start": 1344, + "trials": 2880, + "wires": [ + 534, + 565, + 602, + 620, + 632, + 650 + ] + }, + { + "distinct_programs": 2049, + "end": 1374, + "frame": 315, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 1, + 5 + ], + [ + 2, + 3 + ], + [ + 3, + 4 + ], + [ + 1, + 3 + ], + [ + 5, + 0 + ], + [ + 4, + 5 + ], + [ + 5, + 3 + ], + [ + 4, + 1 + ], + [ + 3, + 0 + ], + [ + 2, + 0 + ] + ], + "saved_A": 0, + "shorter_programs": 16, + "start": 1360, + "trials": 2880, + "wires": [ + 533, + 535, + 566, + 576, + 599, + 659 + ] + }, + { + "distinct_programs": 2130, + "end": 1388, + "frame": 316, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 1, + 2 + ], + [ + 0, + 1 + ], + [ + 2, + 3 + ], + [ + 4, + 5 + ], + [ + 3, + 4 + ], + [ + 1, + 3 + ], + [ + 5, + 0 + ], + [ + 5, + 3 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 0, + "start": 1374, + "trials": 2880, + "wires": [ + 532, + 546, + 567, + 577, + 614, + 638 + ] + }, + { + "distinct_programs": 2080, + "end": 1405, + "frame": 317, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 1, + 4 + ], + [ + 2, + 5 + ], + [ + 2, + 3 + ], + [ + 1, + 2 + ], + [ + 4, + 5 + ], + [ + 5, + 0 + ], + [ + 5, + 1 + ], + [ + 5, + 2 + ], + [ + 3, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 3 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ] + ], + "saved_A": 0, + "shorter_programs": 145, + "start": 1388, + "trials": 2880, + "wires": [ + 531, + 541, + 568, + 582, + 617, + 641 + ] + }, + { + "distinct_programs": 1948, + "end": 1419, + "frame": 318, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 1, + 5 + ], + [ + 0, + 1 + ], + [ + 2, + 3 + ], + [ + 5, + 0 + ], + [ + 3, + 4 + ], + [ + 4, + 5 + ], + [ + 5, + 3 + ], + [ + 5, + 2 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 2, + 0 + ], + [ + 3, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 12, + "start": 1405, + "trials": 2880, + "wires": [ + 530, + 540, + 569, + 571, + 596, + 656 + ] + }, + { + "distinct_programs": 1889, + "end": 1432, + "frame": 319, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 1 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 2, + 5 + ], + [ + 3, + 4 + ], + [ + 2, + 3 + ], + [ + 1, + 2 + ], + [ + 5, + 2 + ], + [ + 5, + 0 + ], + [ + 4, + 5 + ], + [ + 3, + 0 + ], + [ + 3, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 0, + "start": 1419, + "trials": 2880, + "wires": [ + 529, + 570, + 605, + 623, + 635, + 653 + ] + }, + { + "distinct_programs": 1998, + "end": 1449, + "frame": 320, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 2, + 5 + ], + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 1, + 3 + ], + [ + 5, + 0 + ], + [ + 5, + 1 + ], + [ + 5, + 2 + ], + [ + 5, + 3 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 4, + 2 + ], + [ + 3, + 1 + ] + ], + "saved_A": 0, + "shorter_programs": 564, + "start": 1432, + "trials": 2880, + "wires": [ + 538, + 574, + 593, + 624, + 631, + 644 + ] + }, + { + "distinct_programs": 2022, + "end": 1467, + "frame": 321, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 1, + 3 + ], + [ + 2, + 5 + ], + [ + 2, + 4 + ], + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 3, + 5 + ], + [ + 5, + 0 + ], + [ + 5, + 1 + ], + [ + 5, + 3 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 4, + 2 + ], + [ + 3, + 1 + ] + ], + "saved_A": 0, + "shorter_programs": 416, + "start": 1449, + "trials": 2880, + "wires": [ + 537, + 573, + 590, + 619, + 636, + 647 + ] + }, + { + "distinct_programs": 2170, + "end": 1480, + "frame": 322, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 0, + 1 + ], + [ + 1, + 5 + ], + [ + 3, + 5 + ], + [ + 2, + 4 + ], + [ + 4, + 0 + ], + [ + 4, + 5 + ], + [ + 5, + 2 + ], + [ + 5, + 4 + ], + [ + 2, + 3 + ], + [ + 3, + 0 + ] + ], + "saved_A": 0, + "shorter_programs": 0, + "start": 1467, + "trials": 2880, + "wires": [ + 545, + 581, + 601, + 611, + 626, + 654 + ] + }, + { + "distinct_programs": 1944, + "end": 1494, + "frame": 323, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 5 + ], + [ + 1, + 2 + ], + [ + 3, + 5 + ], + [ + 2, + 3 + ], + [ + 1, + 0 + ], + [ + 5, + 1 + ], + [ + 2, + 4 + ], + [ + 4, + 5 + ], + [ + 4, + 2 + ], + [ + 3, + 1 + ], + [ + 3, + 2 + ] + ], + "saved_A": 0, + "shorter_programs": 50, + "start": 1480, + "trials": 2880, + "wires": [ + 542, + 578, + 606, + 608, + 629, + 649 + ] + }, + { + "distinct_programs": 1924, + "end": 1506, + "frame": 324, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 0, + 1 + ], + [ + 1, + 5 + ], + [ + 3, + 5 + ], + [ + 4, + 3 + ], + [ + 5, + 0 + ], + [ + 5, + 2 + ], + [ + 2, + 4 + ], + [ + 4, + 0 + ], + [ + 3, + 0 + ] + ], + "saved_A": 0, + "shorter_programs": 6, + "start": 1494, + "trials": 2880, + "wires": [ + 552, + 583, + 598, + 616, + 640, + 658 + ] + }, + { + "distinct_programs": 1917, + "end": 1521, + "frame": 325, + "guarded_programs": 0, + "new": null, + "nomination": null, + "old": [ + [ + 0, + 2 + ], + [ + 0, + 4 + ], + [ + 1, + 5 + ], + [ + 3, + 5 + ], + [ + 0, + 3 + ], + [ + 2, + 3 + ], + [ + 2, + 4 + ], + [ + 5, + 0 + ], + [ + 5, + 1 + ], + [ + 5, + 2 + ], + [ + 5, + 3 + ], + [ + 5, + 4 + ], + [ + 1, + 0 + ], + [ + 3, + 1 + ], + [ + 4, + 3 + ] + ], + "saved_A": 0, + "shorter_programs": 236, + "start": 1506, + "trials": 2880, + "wires": [ + 547, + 588, + 597, + 615, + 639, + 657 + ] + } + ], + "candidate_sha256": "4c2d2087103176551cb541c8dcae9dfbf5f7eb1e205e5ae60d284054f0708eef", + "domain": { + "blocks": 60, + "donor_priorities": [ + [ + 1, + 2, + 3, + 4, + 5, + 0 + ], + [ + 0, + 5, + 4, + 3, + 2, + 1 + ] + ], + "modes": [ + "row", + "mixed" + ], + "pivot_orders": 720, + "trials_per_block": 2880 + }, + "format": "r439-six-wire-boolean/1", + "parent_sha256": "9d212aff9eab815b18b09697d817f8df6e28602c596c68f2d408664b992d5f4d", + "seed": 19, + "summary": { + "saved_A": 19, + "selected": 7, + "trials": 172800 + } +} diff --git a/research/r439-six-wire-boolean/CLAIM.json b/research/r439-six-wire-boolean/CLAIM.json new file mode 100644 index 0000000000..0cefa7ee2e --- /dev/null +++ b/research/r439-six-wire-boolean/CLAIM.json @@ -0,0 +1,41 @@ +{ + "status": "claimed", + "assignment": { + "pass_number": 13, + "assignment_seed": 19, + "drawn_at_utc": "2026-10-13T13:55:13.232283+00:00", + "track": "bit supplier", + "source": "secrets.randbelow(100), OS randomness" + }, + "base": "47481c89fd30a43f8f882eb4b391e89c29273fd0", + "track": "bit supplier", + "candidates": [ + { + "task": "Shared-frame target delivery factoring in phase B", + "decision": "rejected by census: every target-writing same-frame run has one target; positive z blocks contain no targets" + }, + { + "task": "Whole six-wire phase-A Boolean synthesis beyond the five-wire windows", + "decision": "chosen: larger Boolean equivalence class than fixed positive-transfer PR925, whole-block rather than PR904/936 windows" + }, + { + "task": "Five-wire phase-B window synthesis", + "decision": "deferred: closer to PR936 window method and many already treated B frames" + } + ], + "scope": "Classify the 60 six-wire phase-A blocks and nominate complete Boolean-equivalent replacements for the pinned PR936 word using bounded deterministic row/column Gaussian reductions. Admit only shorter programs dominated entrywise in both positive orientations; preserve frames and all original H1-H5. Compare inherited savings separately.", + "search": "All 720 pivot orders in each of row-only and mixed row/column elimination modes, with two fixed donor priorities, at each of 60 blocks. Assignment seed 19 rotates tie order; one complete scan and no restarts. Baseline and seed nominations saved; no optimality claim.", + "optimistic_cost": "A replacement of length m for a block of length L saves 2(L-m) ADDs including required literal C. Six existing wires at the unchanged frame; no helper, copy, paid move or recursive child added. Both-direction positive domination prevents a larger absolute prefix after composition.", + "predecessors": [ + 904, + 925, + 936, + 891, + 848, + 933 + ], + "coordination": "No pinned sprint coordination issue: non-PR issues are 650 (Discussions) and 913 (prose quality). Local claim used.", + "expected_deliverable": "Exact candidate or bounded negative census with independently checked local maps, full original interface replay, complete costs and native stage evidence for any construction.", + "expected_finish_utc": "2026-10-13T15:00:00Z", + "claimed_at_utc": "2026-10-13T14:09:38.019451+00:00" +} diff --git a/research/r439-six-wire-boolean/EXPECTED.json b/research/r439-six-wire-boolean/EXPECTED.json new file mode 100644 index 0000000000..c871d75a95 --- /dev/null +++ b/research/r439-six-wire-boolean/EXPECTED.json @@ -0,0 +1,1810 @@ +{ + "certificate_sha256": "dc3cde9e98fd630d09570462fe4e489f47b0f2f525a27c22b9ca68068cb99056", + "controls_rejected": [ + "dropped Boolean gate", + "target or wrong physical participant", + "partial block boundary", + "boolean gate coordinate", + "unpaid saving", + "self addition", + "Boolean equality hides positive growth", + "semantically equal but unpaired literal cleanup", + "stale cleanup exact splice", + "dropped physical gate", + "unrelated payload edit with rebound digest", + "boolean receipt field" + ], + "local": { + "Boolean_inputs": 448, + "blocks": [ + { + "after": 14, + "before": 17, + "frame": 269, + "strict_positive_entries": [ + 4, + 8 + ] + }, + { + "after": 13, + "before": 18, + "frame": 281, + "strict_positive_entries": [ + 8, + 12 + ] + }, + { + "after": 12, + "before": 13, + "frame": 283, + "strict_positive_entries": [ + 8, + 4 + ] + }, + { + "after": 13, + "before": 17, + "frame": 284, + "strict_positive_entries": [ + 8, + 12 + ] + }, + { + "after": 12, + "before": 13, + "frame": 288, + "strict_positive_entries": [ + 8, + 4 + ] + }, + { + "after": 13, + "before": 15, + "frame": 308, + "strict_positive_entries": [ + 0, + 4 + ] + }, + { + "after": 13, + "before": 16, + "frame": 314, + "strict_positive_entries": [ + 0, + 11 + ] + } + ], + "changed_positive_maps": 5, + "positive_column_pairs": 84, + "saved_A": 19, + "saved_complete": 38, + "selected": 7 + }, + "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": 23673, + "copies": 9, + "erasures": 9, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 26602, + "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": 92, + "payload_prefix_upper": "3126061681564822569360612352", + "reverse_fresh_center_copies": 45, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "41287", + "reverse": false + }, + { + "bits": 20, + "cancellation_free_signed_row_l1_upper": "833084", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "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": 92, + "payload_prefix_upper": "3126061681564822569360612352", + "reverse_fresh_center_copies": 18, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "41287", + "reverse": false + }, + { + "bits": 20, + "cancellation_free_signed_row_l1_upper": "833084", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "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": 92, + "payload_prefix_upper": "3126061681564822569360612352", + "reverse_fresh_center_copies": 36, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "41287", + "reverse": false + }, + { + "bits": 20, + "cancellation_free_signed_row_l1_upper": "833084", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 23673, + "signed_inverse": false, + "stage": 8 + } + ] + } + } + }, + "parent936": { + "common_frame_ADDs": 23711, + "copies": 9, + "erasures": 9, + "paid_histogram": [ + [ + 1, + 1323 + ], + [ + 2, + 1342 + ], + [ + 3, + 79 + ], + [ + 4, + 44 + ], + [ + 5, + 102 + ], + [ + 6, + 11 + ], + [ + 7, + 19 + ] + ], + "rank_mass": 5129, + "records": 26640, + "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": 92, + "payload_prefix_upper": "3207937748686184803471645696", + "reverse_fresh_center_copies": 45, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "41311", + "reverse": false + }, + { + "bits": 20, + "cancellation_free_signed_row_l1_upper": "843188", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": false, + "stage": 8 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": true, + "stage": 9 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "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": 92, + "payload_prefix_upper": "3207937748686184803471645696", + "reverse_fresh_center_copies": 18, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "41311", + "reverse": false + }, + { + "bits": 20, + "cancellation_free_signed_row_l1_upper": "843188", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "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": 92, + "payload_prefix_upper": "3207937748686184803471645696", + "reverse_fresh_center_copies": 36, + "signed_lift_prefix": [ + { + "bits": 16, + "cancellation_free_signed_row_l1_upper": "41311", + "reverse": false + }, + { + "bits": 20, + "cancellation_free_signed_row_l1_upper": "843188", + "reverse": true + } + ], + "stages": [ + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": false, + "stage": 0 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": true, + "stage": 1 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": false, + "stage": 2 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": true, + "stage": 3 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": false, + "stage": 4 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": true, + "stage": 5 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": false, + "stage": 6 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": true, + "stage": 7 + }, + { + "fresh_copies": 9, + "scalar_additions": 23711, + "signed_inverse": false, + "stage": 8 + } + ] + } + } + } + }, + "prefix_source": { + "K": 4, + "bridges": 18, + "formula": "2^18 * F^5 * B^4", + "source": "research/e8-bit-p111-tuned/vendor/pr510/e8-r480-nine-stage/vendor/e8-r715-eleven-stage-whole/code/global_k.py", + "stages": 9 + }, + "scalar": { + "baseline": { + "ADDs": 24305, + "B": 1113070, + "F": 49347, + "columns_each_order": 661, + "instructions_both_orders": 48646, + "local_payload_bits": 93, + "nine_stage_bound": "117742596540718658156527847560864213734191286190080000", + "nine_stage_prefix_bits": 177 + }, + "candidate": { + "ADDs": 23673, + "B": 833084, + "F": 41287, + "columns_each_order": 661, + "instructions_both_orders": 47382, + "local_payload_bits": 92, + "nine_stage_bound": "15148224495959132732497298498295876067945200524197888", + "nine_stage_prefix_bits": 174 + }, + "parent936": { + "ADDs": 23711, + "B": 843188, + "F": 41311, + "columns_each_order": 661, + "instructions_both_orders": 47458, + "local_payload_bits": 92, + "nine_stage_bound": "15942856245661698272389873010133957531061174700867584", + "nine_stage_prefix_bits": 174 + } + }, + "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": true, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 1826, + "B": 922, + "C": 2313, + "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": 12, + "source<-helper": 108, + "source<-source": 364 + }, + "B_z_operand_kinds_by_dim": { + "dim4:helper<-source": 12, + "dim4:source<-source": 364, + "dim6:helper<-helper": 3, + "dim6:source<-helper": 108 + }, + "B_z_write_frame_dims": { + "4": 376, + "6": 111 + }, + "B_z_writes_after_a_target_read_of_the_same_register": 445, + "cleanup_gates": 2313, + "helper_writes_B": 15, + "source_writes_A": 0, + "source_writes_B": 472, + "sources_rewritten_B": 108, + "target_reads_of_targets": 0, + "z_gates_A": 1826, + "z_gates_B": 487 + }, + "labels": { + "frames": 636, + "gram_det": 1, + "labels": 111, + "lattice_rank": 8, + "punctured": 9, + "root_lines": 120 + } + }, + "parent936": { + "conclusions": { + "C_is_U_inverse": true, + "J_identity": true, + "K_equals_D": true, + "U_block_form": true + }, + "full": { + "columns": 661, + "gates": { + "A": 1845, + "B": 922, + "C": 2332, + "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": 12, + "source<-helper": 108, + "source<-source": 364 + }, + "B_z_operand_kinds_by_dim": { + "dim4:helper<-source": 12, + "dim4:source<-source": 364, + "dim6:helper<-helper": 3, + "dim6:source<-helper": 108 + }, + "B_z_write_frame_dims": { + "4": 376, + "6": 111 + }, + "B_z_writes_after_a_target_read_of_the_same_register": 445, + "cleanup_gates": 2332, + "helper_writes_B": 15, + "source_writes_A": 0, + "source_writes_B": 472, + "sources_rewritten_B": 108, + "target_reads_of_targets": 0, + "z_gates_A": 1845, + "z_gates_B": 487 + }, + "labels": { + "frames": 636, + "gram_det": 1, + "labels": 111, + "lattice_rank": 8, + "punctured": 9, + "root_lines": 120 + } + } + }, + "sources": { + "base_commit": "47481c89fd30a43f8f882eb4b391e89c29273fd0", + "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/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" + }, + "predecessor": { + "author": "Ross Richardson (@RossRichardson)", + "head": "0679fb6e1e4c91f573ae07ab1d0ea273b13c74e3", + "pr": 936, + "repo": "RossRichardson/integer-mult-bounds" + }, + "selected_word_commit": "a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46", + "selected_word_pr": 589, + "vendor_files": { + "vendor/pr936/CERTIFICATE.json": "6ce5015e9afc4db6d3742df433561ab9d1173b63f72da95178c76b6a0a973fea", + "vendor/pr936/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/pr936/NOTICE.md": "87b66e23337280915fd0546ba2e15ea07250a227224212f9767e5df9958fd30e", + "vendor/pr936/README.md": "428251a30f4564e03ea28fa1bcb72a926e69b5b1b804d73cabfe524e56f70e1b", + "vendor/pr936/candidate.json.gz": "3a11fc4675cd708316f9b0d398e0c3b73d626de0f824c5ed9b9c96279cfef091" + } + }, + "status": "PASS_R439_SIX_WIRE_BOOLEAN", + "word_sha256": { + "baseline": "5642fd0e35a1acc11acff8d0c08350c1617e95f310d4d35ad63a651f9eeeba0b", + "candidate": "4c2d2087103176551cb541c8dcae9dfbf5f7eb1e205e5ae60d284054f0708eef", + "parent936": "9d212aff9eab815b18b09697d817f8df6e28602c596c68f2d408664b992d5f4d" + } +} diff --git a/research/r439-six-wire-boolean/LICENSE b/research/r439-six-wire-boolean/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/r439-six-wire-boolean/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-six-wire-boolean/NOTICE.md b/research/r439-six-wire-boolean/NOTICE.md new file mode 100644 index 0000000000..9183e46389 --- /dev/null +++ b/research/r439-six-wire-boolean/NOTICE.md @@ -0,0 +1,35 @@ +# Attribution and license + +Prepared for Gareth Davidson (@bitplane), with substantial OpenAI Codex +assistance in the search, implementation, checks and writing. One AI agent +performed this pass. The independent interpreter is a separate implementation, +not independent human review. New work is Apache-2.0; see LICENSE. + +Ross Richardson's PR936 (`0679fb6e1e4c91f573ae07ab1d0ea273b13c74e3`) supplies +the frozen input circuit and 340 of the inherited ADD savings. Its candidate, +certificate, README, NOTICE and LICENSE are retained unchanged. Gareth +Davidson's PR904 (`883a0bdf7792693e57c16be660824b57aacfbe05`) supplies the earlier +254 ADD savings, the adapted common.py helpers and native.py harness. That +harness follows Sagar Thakrar's R420 decoder-sharing native checks. Jeffrey +Cox (@namredips), PR754, is credited for the predecessor local-resynthesis and +positive-guard method cited by PR904 and PR936. + +Ross Richardson's PR925 (`eb85d40a1ba80c2f776481fbeed1bae8cf04cfde`) motivates +the comparison with exact positive-transfer synthesis on one six-wire block. +Its search, candidate and 12-ADD minimum are not imported or recomputed here. +Frame 267 is unchanged in this contribution. The finite Gaussian elimination +search and independent truth-table checker are new code for this pass. + +Selected PR589 is DreamingOfClouds' tuned punctured word on eumemic's PR555 +and PR543 skeleton, with the retained PR545/493/510/425/370 ancestry. The exact +source checker and native exporter/checkers are used unchanged. Retain the +existing notices under `research/e8-bit-p111-tuned` and +`research/e8-bit-carrier-skeleton`, crediting eumemic, Dylan Crow, DaysSky, +Zhihao Chen and their predecessors. Source-specific AI disclosures remain. + +PR848's restored-sharing barrier and PR933's paid-profile relocation and +reframing results informed scope selection. PR891 and the other B-block +constructions concern separate operators. PR915/926/941 optimize D under a +different interface contract; their candidates and savings are not composed +here. Accepted PR890/U8/T21 and its credited complex contributors supply +current context, not a changed source in this package. diff --git a/research/r439-six-wire-boolean/PROOF.md b/research/r439-six-wire-boolean/PROOF.md new file mode 100644 index 0000000000..ff78e80861 --- /dev/null +++ b/research/r439-six-wire-boolean/PROOF.md @@ -0,0 +1,80 @@ +# Finite circuit argument and complete cost + +Each selected block uses the same six existing z registers at one unchanged +frame. An ADD over F2 is the transvection `x_d ^= x_s`, with distinct indices. +It is invertible and its own inverse. Let M be the old six-by-six Boolean map. + +The builder reduces M to identity using row additions L and, in mixed mode, +column additions R. A zero diagonal pivot is made one by adding a remaining +row with a one in that column. The already completed columns are preserved. +The resulting identity `L M R = I` gives `M = L^-1 R^-1`. The emitted program +executes the accumulated column operations first and the row operations in +reverse chronological order. This constructs a Boolean-equivalent program; +it does not minimize over every possible factorization of M. + +The verifier imports no elimination code. It separately compares both programs +on all 64 Boolean input vectors, covering arbitrary dirt in these six +registers. It evaluates six positive unit columns in each direction, replacing +every XOR by addition of nonnegative integers, and requires entrywise +domination in both orientations. + +| Frame | PR936 A ADDs | New A ADDs | Paired A+C saving | Positive map changes? | +|---|---:|---:|---:|---| +| 269 | 17 | 14 | 6 | yes | +| 281 | 18 | 13 | 10 | yes | +| 283 | 13 | 12 | 2 | yes | +| 284 | 17 | 13 | 8 | yes | +| 288 | 13 | 12 | 2 | yes | +| 308 | 15 | 13 | 4 | no | +| 314 | 16 | 13 | 6 | no | +| **Total** | **109** | **90** | **38** | **five blocks** | + +For any nonnegative incoming bound vector, entrywise matrix domination bounds +the new output by the old output. Every instruction within one such block is +a nonnegative addition, so intermediate coordinates are bounded by that +block's final coordinates. The two local matrix inequalities therefore also +control internal prefixes. All surrounding positive instructions are monotone. +This composes through the whole word in each direction, including the reverse +cleanup. COPY inherits its center's bound; ERASE resets its fresh temporary. +The independent whole-word interpreter and the native checkers recompute these +bounds rather than assuming them from the local certificate. + +Only A and its required literal cleanup C change. Every selected program uses +all six old registers, and has no intervening external gate inside its block. +The six-register state at each block boundary is identical over F2. The source +geometry checker and native records independently confirm identical ordered +frame paths for all 661 registers. Thus there is no unpriced extra MOVE, +helper, source read, copy, erase, recursive child or frame. D, scatter, B and +every other payload field are identical to PR936. C is rebuilt as the exact +reverse of z-destination gates in A followed by B, at the full frame. + +The unchanged source checker validates H1-H5 and U/J/K/C-inverse. In particular, +the original helper-only D remains compatible with its literal K extraction. +Full source and helper restoration, target `y+x`, and fresh temporary cleanup +are checked on every arbitrary-input column in both orientations. Preserving +the Boolean map suffices for the binary supplier; equality of the forward +positive integer transfer is not asserted for the five changed lifts. + +Complete ADD costs include the 18,085 D injections and all scatter, A, B and C +instructions. Counts are independently recomputed from literal instructions +and native records: **24,305 / 23,711 / 23,673** for PR589 / PR936 / candidate. +The paid histogram remains +`{1:1323, 2:1342, 3:79, 4:44, 5:102, 6:11, 7:19}`, with rank mass 5,129 and +nine copies of rank seven. For 5/9/11 stages the unchanged bridge costs are +666 / 1,998 / 2,664 ADDs and the fresh copy counts are 45 / 81 / 99. Every +stage executes the complete local word once, so the new saving is the stage +count times 38. + +The candidate's absolute bounds are `F = 41,287` and `B = 833,084`. +The native local payload upper bound is exactly +`64 F^3 B^2 = 3126061681564822569360612352`, needing 92 bits under 104. +The pinned nine-stage controller's expression is `2^18 F^5 B^4`, needing +174 bits under its 192-bit charge. The verifier checks the source expression +and its eighteen-bridge assertion. This substitutes freshly checked local +bounds into the inherited expression; it is not a regenerated whole-hosted +invoice. No exponent improvement follows from removing common-frame ADDs +while leaving the paid recursive profile unchanged. + +These are finite computationally checked identities and inequalities, not a +formal proof of the multiplication theorem or a claim that all shorter +six-wire or five-wire circuits have been excluded. diff --git a/research/r439-six-wire-boolean/README.md b/research/r439-six-wire-boolean/README.md new file mode 100644 index 0000000000..5c79450245 --- /dev/null +++ b/research/r439-six-wire-boolean/README.md @@ -0,0 +1,107 @@ +# Whole six-wire Boolean synthesis on R439 + +**Finite construction; no new kappa.** Seven complete phase-A block replacements +reduce the frozen PR936 circuit from **23,711 to 23,673 local ADDs**, including +the required reverse cleanup. The new saving is **38 ADDs**; the cumulative +saving against selected PR589 is **632**, including 254 credited to Gareth +Davidson's PR904 and 340 to Ross Richardson's PR936. + +| Complete local resource | Selected PR589 | PR936 input | This candidate | +|---|---:|---:|---:| +| ADDs, including D, scatter and C | 24,305 | 23,711 | **23,673** | +| Exported records | 27,234 | 26,640 | 26,602 | +| Forward positive bound | 49,347 | 41,311 | 41,287 | +| Reverse positive bound | 1,113,070 | 843,188 | 833,084 | +| Local payload bits, cap 104 | 93 | 92 | 92 | +| Nine-stage bound bits, charged 192 | 177 | 174 | 174 | +| Paid rank mass | 5,129 | 5,129 | 5,129 | +| Dirty helpers / rank-seven copies | 439 / 9 | 439 / 9 | 439 / 9 | + +All original H1-H5 and their interface conclusions hold. Every register's +ordered MOVE path and every COPY/ERASE record is preserved. No helper, frame, +source-access operation, recursive call or copy is added. The decoder constant +remains 63. The complete 5/9/11-stage ADD savings beyond PR936 are +**190 / 342 / 418**, with the same paid bridges and copies. + +## Reproduce + +From the repository root, with Python 3.12+, C++17 and Boost headers: + +```sh +BOOST_INCLUDE=/path/to/boost-headers python3 -I -B research/r439-six-wire-boolean/verify.py +python3 -I -B research/r439-six-wire-boolean/test_package.py +``` + +If Boost is installed in `/usr/include`, omit `BOOST_INCLUDE`. The verifier +regenerates the entire bounded search, checks the local truth tables and +positive column maps independently of the search, replays all three full words +in both directions, runs the unchanged geometry/interface checker, compiles +fresh unchanged native legality and 5/9/11-stage checkers, and compares the full +deterministic receipt with `EXPECTED.json`. + +Expected final line: + +```text +PASS_R439_SIX_WIRE_BOOLEAN: 7 blocks; 38 further ADDs; 632 versus PR589; H1-H5; 5/9/11 stages; 12 controls; no new kappa +``` + +Use `--output /absolute/fresh/path --receipt /absolute/new/report.json` to retain +native logs and the receipt. `--source-root` supports an offline minimal copy +of the exact source files in `SOURCES.json`. Outputs must be new. Regenerated +gzip files are compared by canonical decoded content, not compression bytes; +immutable predecessor artifacts retain exact source hashes. + +## Completed search and novelty + +The domain is all **60 complete six-wire A blocks, frames 266-325**, in the +pinned PR936 output. At each block, the search tries every permutation of six +pivots, two fixed donor priorities and two elimination modes: row-only and +mixed row/column. OS assignment seed **19** fixes the donor-priority rotation. +It completes **172,800 nominations**, with 119,983 distinct programs when +deduplicated within each block. There are 15,469 distinct shorter programs, +440 passing both positive guards, and seven blocks with an admitted nominee. +Choose the shortest admitted program, then a deterministic lexicographic tie. +One complete scan is the stopping rule; no restarts or iterative saturation. + +Unlike PR904's four-wire and PR936's five-wire windows, each nomination here +replaces an entire six-register operator. Five selected replacements have a +different positive integer transfer, outside PR925's fixed-transfer search +class. PR925 proves a 12-ADD minimum for frame 267 in that class; frame 267 is +unchanged here. The two other replacements preserve their integer transfer. +This is not an unrestricted XOR optimum, a fixed point, proof that six wires +are necessary, or a claim that another five-wire pass cannot also improve +PR936. No failed nomination establishes a lower bound. The D-compensation +results PR915/926/941 and the independent B-block constructions are not composed +into this candidate. + +The initial target-delivery candidate was screened out: every consecutive +same-frame B run that writes targets contains only one target. The large +same-frame B blocks write only z registers. This census only excludes that +literal grouping idea, not all target recoding or reframing. + +See [PROOF.md](PROOF.md) for the finite argument and complete pricing, +[VALIDATION.md](VALIDATION.md) for executed evidence, and [NOTICE.md](NOTICE.md) +for contributor credit. No independent human review is claimed. + +## Pins and remaining work + +Base: `47481c89fd30a43f8f882eb4b391e89c29273fd0`. PR936 input: +`0679fb6e1e4c91f573ae07ab1d0ea273b13c74e3`; its candidate, certificate and +attribution are retained verbatim under `vendor/pr936/`. Selected PR589 source: +`a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46`. The accepted conditional result at +this base is PR890's **0.001661957774647029**, with the same PR589 bit supplier. +Publication is rebased onto `007664306fff84fbb1c9a1b4053b69f439764034` after +the maintainer's batch932 integration; all thirteen consumed upstream files +are byte-identical across that update. The accepted frontier is unchanged. +Only this research package is added. + +The unchanged paid bit profile gives no improvement to the selected moment +or exponent. If adopted, the modified word still needs binding into the +whole-hosted supplier emitter and a regenerated global invoice and outer +assembly. The native stage tests and source-bound nine-stage prefix expression +do not perform that hosted replay. They also do not prove the multiplication +compiler for every input length, realize common labels and mutable sources on +physical tapes, or discharge the inherited hosting, rounding, precision/tape +and analytic transfer assumptions. The original H1-H5 remain satisfied rather +than replaced by a new semantic D contract. No full repository suite, selected +cold complex replay, or formal proof of the multiplication theorem is claimed. diff --git a/research/r439-six-wire-boolean/SOURCES.json b/research/r439-six-wire-boolean/SOURCES.json new file mode 100644 index 0000000000..37e6802e23 --- /dev/null +++ b/research/r439-six-wire-boolean/SOURCES.json @@ -0,0 +1,33 @@ +{ + "base_commit": "47481c89fd30a43f8f882eb4b391e89c29273fd0", + "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/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" + }, + "predecessor": { + "author": "Ross Richardson (@RossRichardson)", + "head": "0679fb6e1e4c91f573ae07ab1d0ea273b13c74e3", + "pr": 936, + "repo": "RossRichardson/integer-mult-bounds" + }, + "selected_word_commit": "a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46", + "selected_word_pr": 589, + "vendor_files": { + "vendor/pr936/CERTIFICATE.json": "6ce5015e9afc4db6d3742df433561ab9d1173b63f72da95178c76b6a0a973fea", + "vendor/pr936/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/pr936/NOTICE.md": "87b66e23337280915fd0546ba2e15ea07250a227224212f9767e5df9958fd30e", + "vendor/pr936/README.md": "428251a30f4564e03ea28fa1bcb72a926e69b5b1b804d73cabfe524e56f70e1b", + "vendor/pr936/candidate.json.gz": "3a11fc4675cd708316f9b0d398e0c3b73d626de0f824c5ed9b9c96279cfef091" + } +} diff --git a/research/r439-six-wire-boolean/VALIDATION.md b/research/r439-six-wire-boolean/VALIDATION.md new file mode 100644 index 0000000000..31692dc5e7 --- /dev/null +++ b/research/r439-six-wire-boolean/VALIDATION.md @@ -0,0 +1,68 @@ +# Executed verification + +Run on Linux x86_64, CPython 3.14.4 and CPython 3.12.3, with GCC C++ 15.2.0 and +Boost 1.83 headers. The Boost headers came from Ubuntu +`libboost1.83-dev_1.83.0-5ubuntu5_amd64.deb`, SHA-256 +`c17abc5a40a074c3d959655191ebec1561fa25f14f4948f6788be49417d4b234`. +No runtime Python package or solver is required. + +The full documented verification command passed on Python 3.14.4. A second +complete execution passed under `python3.12 -I -O -B`, from `/tmp`, with only +this package and the thirteen manifest-listed upstream files copied into a +read-only input tree. Both executions freshly compiled the native checkers. +Their complete deterministic JSON receipts are byte-identical to each other +and to `EXPECTED.json`; SHA-256 of the pretty-printed receipt is +`462160c4fa5fc4c624b055ee9cece91a95d3b443f1758717abf465698b35371f`. + +Completed coverage: + +- All 172,800 nominations regenerated; every certificate field and the full + decoded candidate reproduced. The 60-block domain gives 119,983 distinct + per-block programs, 15,469 shorter programs and 440 positive-guard passes. +- Separate truth-table and positive-column code checks 448 Boolean inputs + and 84 old/new positive column pairs across the seven replacements. +- A set-valued interpreter replays all 661 arbitrary dirty-input columns in + both directions for all three complete words. It lowers and charges + 143,486 individual ADD/COPY/ERASE instructions across these six replays. +- The unchanged source checker passes exact E8 labels, frame closure and + nesting, all 661 full-word columns, original H1-H5, and U/J/K/C-inverse on + PR589, PR936 and the candidate. This rechecks the pinned PR936 artifact; + it does not claim rerunning PR936's own discovery search. +- Fresh unchanged native legality and 5/9/11-stage checks pass on all three + words, covering 883 / 1,327 / 1,549 formal columns for each word. All 144 + omitted-bridge controls reject. The ADD counts, exact local positive bounds + and payload upper bounds agree with the independent interpreter. Every + per-register MOVE sequence and COPY/ERASE record agrees across all words. +- Twelve local controls reject malformed gates, partial-block splices, + incorrect physical participants, Boolean-typed coordinates, unpaid savings, + Boolean-equivalent positive growth, stale literal cleanup, a dropped actual + gate, unrelated payload edits and weak receipt equality. +- Seven artifact-admission tests pass in both Python environments. They cover + semantically equivalent gzip recompression, corrupted input words, duplicate + JSON keys, nonfinite JSON, missing sources and altered pinned checker bytes. +- All thirteen upstream source files match the named base Git objects, and all + five predecessor artifacts match the PR936 tree objects. The exact byte + hashes used at runtime are in `SOURCES.json`. +- `make selected-record-check` passes before and after the rebase onto + `007664306fff84fbb1c9a1b4053b69f439764034`. All consumed source bytes are + unchanged, so the full mathematical replays remain applicable. + +An initial development run stopped before source/native replay because the +prefix-source binder expected an assignment to `nb`. The source establishes +the bridge count by an assertion after unpacking `small()`. The binder now +checks that exact assertion and the actual prefix assignment; the full runs +above include the fix. No numerical witness or expected certificate value was +changed to bypass the failure. + +The final overlap inspection initially covered 716 open PRs and was refreshed +through PR949 before submission. PR936 remains the exact frozen input; +PR925 treats frame 267 with fixed integer transfer, untouched here. The newer +PR944/945/947/949 constructions and PR948 audit concern other objects. The +batch932 integration incorporates several earlier research packages but +changes no consumed input or selected bit word. There was no pinned sprint +coordination issue; `CLAIM.json` records the local scope. + +The finite checks above do not constitute a full repository `make verify`, +selected complex cold replay, changed hosted-parent invoice or outer assembly, +or formal proof of the multiplication theorem. Hosted CI and maintainer +adoption are separate from these completed local checks. diff --git a/research/r439-six-wire-boolean/build.py b/research/r439-six-wire-boolean/build.py new file mode 100644 index 0000000000..ba57ca2cc8 --- /dev/null +++ b/research/r439-six-wire-boolean/build.py @@ -0,0 +1,169 @@ +#!/usr/bin/env python3 +"""Bounded complete-block Boolean Gaussian nominations. Apache-2.0. + +Prepared for Gareth Davidson (@bitplane), with OpenAI Codex assistance. +Search results are constructions, not minimum-length certificates. +""" +import argparse +import copy +import gzip +import itertools +from pathlib import Path +import runpy + +C = runpy.run_path(str(Path(__file__).with_name("common.py"))) +need = C["need"] +SEED = 19 + + +def blocks(word): + offset = 0 + out = [] + for frame, group in itertools.groupby(word["A"], key=lambda x: x[0]): + gates = list(group) + if 266 <= frame <= 325: + wires = sorted({x for _, d, ss in gates for x in [d, *ss]}) + need(len(wires) == 6, "six-wire block domain") + lookup = {w: i for i, w in enumerate(wires)} + ops = [(lookup[d], lookup[s]) for _, d, ss in gates for s in ss] + out.append((frame, offset, offset + len(gates), wires, ops)) + offset += len(gates) + need(len(out) == 60, "sixty complete blocks") + return out + + +def binary(ops): + rows = [1 << i for i in range(6)] + for d, s in ops: + rows[d] ^= rows[s] + return tuple(rows) + + +def positive(ops): + rows = [[int(i == j) for j in range(6)] for i in range(6)] + for d, s in ops: + rows[d] = [x + y for x, y in zip(rows[d], rows[s])] + return rows + + +def nominate(target, order, mode, priority): + rows = list(target) + left, right = [], [] + + def row(d, s): + rows[d] ^= rows[s] + left.append((d, s)) + + def column(d, s): + # Right multiplication by elementary matrix E[d,s]: col_s += col_d. + for i in range(6): + if (rows[i] >> d) & 1: + rows[i] ^= 1 << s + right.append((d, s)) + + remaining = set(range(6)) + for p in order: + if not ((rows[p] >> p) & 1): + donor = next(j for j in priority if j in remaining and (rows[j] >> p) & 1) + row(p, donor) + for i in priority: + if i != p and (rows[i] >> p) & 1: + row(i, p) + if mode == "mixed": + for j in priority: + if j != p and (rows[p] >> j) & 1: + column(p, j) + remaining.remove(p) + need(rows == [1 << i for i in range(6)], "elimination did not reach identity") + # I = L M R, hence M = L^-1 R^-1. Gates execute right factor first. + result = tuple(right + left[::-1]) + need(binary(result) == target, "elimination word order") + return result + + +def dominates(old_positive, new_positive): + return all(b <= a for ra, rb in zip(old_positive, new_positive) for a, b in zip(ra, rb)) + + +def build(parent): + orders = list(itertools.permutations(range(6))) + priority = list(range(6)) + priority = priority[SEED % 6:] + priority[:SEED % 6] + priorities = [priority, priority[::-1]] + certificate = { + "format": "r439-six-wire-boolean/1", "seed": SEED, + "parent_sha256": C["digest"](parent), "blocks": [], + "domain": {"blocks": 60, "pivot_orders": 720, "modes": ["row", "mixed"], + "donor_priorities": priorities, "trials_per_block": 2880}, + } + replacements = {} + for frame, start, end, wires, old in blocks(parent): + target = binary(old) + old_pos = [positive(old), positive(old[::-1])] + seen = set() + admissible = [] + trials = shorter = guarded = 0 + for mode in ("row", "mixed"): + for donor_order in priorities: + for order in orders: + program = nominate(target, order, mode, donor_order) + trials += 1 + if program in seen: + continue + seen.add(program) + if len(program) >= len(old): + continue + shorter += 1 + if all(dominates(old_pos[k], positive(program[::-1] if k else program)) + for k in range(2)): + guarded += 1 + admissible.append((len(program), program, mode, order, donor_order)) + best = min(admissible) if admissible else None + item = {"frame": frame, "start": start, "end": end, "wires": wires, + "old": old, "trials": trials, "distinct_programs": len(seen), + "shorter_programs": shorter, "guarded_programs": guarded} + if best: + length, program, mode, order, donor_order = best + item.update({"new": program, "saved_A": len(old) - length, + "nomination": {"mode": mode, "order": order, "priority": donor_order}}) + replacements[start] = (end, [[frame, wires[d], [wires[s]]] for d, s in program]) + else: + item.update({"new": None, "saved_A": 0, "nomination": None}) + certificate["blocks"].append(item) + print(f"frame={frame} old={len(old)} new={len(best[1]) if best else len(old)} " + f"shorter={shorter} guarded={guarded}", flush=True) + candidate = copy.deepcopy(parent) + result, i = [], 0 + while i < len(parent["A"]): + if i in replacements: + end, gates = replacements[i] + result.extend(gates) + i = end + else: + result.append(parent["A"][i]) + i += 1 + candidate["A"] = result + v = parent["v"] + z_ops = [g for phase in ("A", "B") for g in candidate[phase] if not v <= g[1] < 2 * v] + candidate["C"] = [[1, d, list(ss)] for _, d, ss in z_ops[::-1]] + certificate["candidate_sha256"] = C["digest"](candidate) + certificate["summary"] = {"trials": sum(r["trials"] for r in certificate["blocks"]), + "selected": len(replacements), + "saved_A": sum(r["saved_A"] for r in certificate["blocks"])} + return candidate, certificate + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--out", required=True, type=Path) + args = parser.parse_args() + args.out.mkdir(parents=True, exist_ok=False) + parent = C["load"](C["HERE"] / "vendor/pr936/candidate.json.gz") + candidate, certificate = build(parent) + C["write"](args.out / "CERTIFICATE.json", certificate) + (args.out / "candidate.json.gz").write_bytes(gzip.compress(C["canonical"](candidate), mtime=0)) + print(certificate["summary"]) + + +if __name__ == "__main__": + main() diff --git a/research/r439-six-wire-boolean/candidate.json.gz b/research/r439-six-wire-boolean/candidate.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..028620b46ed820c0ec3125c112be5522d58f8114 GIT binary patch literal 41184 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 literal 0 HcmV?d00001 diff --git a/research/r439-six-wire-boolean/common.py b/research/r439-six-wire-boolean/common.py new file mode 100644 index 0000000000..a6196318ea --- /dev/null +++ b/research/r439-six-wire-boolean/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["vendor_files"].items(): + need(hashlib.sha256((HERE / name).read_bytes()).hexdigest() == sha, + "vendor 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-six-wire-boolean/native.py b/research/r439-six-wire-boolean/native.py new file mode 100644 index 0000000000..bc9b7892cd --- /dev/null +++ b/research/r439-six-wire-boolean/native.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 +"""Unmodified native legality and 5/9/11-stage column checks, three R439 words. + +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), ("parent936", 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 + for label in ("parent936", "candidate"): + need(C["canonical"](nonadd["baseline"]) == C["canonical"](nonadd[label]), "frame paths changed") + before, parent_result, after = (result[k] for k in ("baseline", "parent936", "candidate")) + need([x["common_frame_ADDs"] for x in (before, parent_result, after)] == [24305, 23711, 23673], + "complete native ADD costs") + need(before["records"] - after["records"] == 632, "unexpected record changes") + need(parent_result["records"] - after["records"] == 38, "new record savings") + for old_result, new_result in ((before, parent_result), (parent_result, after)): + for key in ("rank_mass", "paid_histogram", "copies", "erasures"): + need(old_result[key] == new_result[key], "paid resources changed: " + key) + for stage in ("5", "9", "11"): + old, new = old_result["staged"][stage], new_result["staged"][stage] + need(old["local_raw_H"] == new["local_raw_H"], "local raw ranks changed") + for a, b in zip(old["signed_lift_prefix"], new["signed_lift_prefix"]): + need(int(b["cancellation_free_signed_row_l1_upper"]) <= int(a["cancellation_free_signed_row_l1_upper"]), + "positive prefix grew") + C["write"](output / "commands.json", commands) + C["write"](output / "native-report.json", result) + return result diff --git a/research/r439-six-wire-boolean/test_package.py b/research/r439-six-wire-boolean/test_package.py new file mode 100644 index 0000000000..7be157475a --- /dev/null +++ b/research/r439-six-wire-boolean/test_package.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python3 +"""Artifact admission and portable verification failure modes. Apache-2.0.""" +import copy +import gzip +from pathlib import Path +import runpy +import shutil +import tempfile +import unittest + +V = runpy.run_path(str(Path(__file__).resolve().with_name("verify.py"))) +C = V["C"] + + +class ArtifactAdmission(unittest.TestCase): + @classmethod + def setUpClass(cls): + cls.parent = C["load"](C["HERE"] / "vendor/pr936/candidate.json.gz") + cls.candidate = C["load"](C["HERE"] / "candidate.json.gz") + cls.cert = C["load"](C["HERE"] / "CERTIFICATE.json") + + def test_semantic_candidate_recompression(self): + with tempfile.TemporaryDirectory() as tmp: + path = Path(tmp) / "candidate.json.gz" + path.write_bytes(gzip.compress(C["canonical"](self.candidate), compresslevel=1, mtime=12345)) + V["check_certificate"](self.parent, C["load"](path), self.cert) + + def test_corrupted_candidate_rejected(self): + bad = copy.deepcopy(self.candidate) + bad["A"][0][1] += 1 + with self.assertRaisesRegex(ValueError, "candidate digest"): + V["check_certificate"](self.parent, bad, self.cert) + + def test_corrupted_parent_rejected(self): + bad = copy.deepcopy(self.parent) + bad["D"][0][2].pop() + with self.assertRaisesRegex(ValueError, "parent digest"): + V["check_certificate"](bad, self.candidate, self.cert) + + def test_duplicate_keys_rejected(self): + with tempfile.TemporaryDirectory() as tmp: + path = Path(tmp) / "input.json" + path.write_text('{"seed":19,"seed":18}') + with self.assertRaisesRegex(ValueError, "duplicate JSON key"): + C["load"](path) + + def test_nonfinite_json_rejected(self): + with tempfile.TemporaryDirectory() as tmp: + path = Path(tmp) / "input.json" + path.write_text('{"saving":NaN}') + with self.assertRaisesRegex(ValueError, "invalid JSON constant"): + C["load"](path) + + def test_missing_source_rejected(self): + with tempfile.TemporaryDirectory() as tmp: + with self.assertRaises(FileNotFoundError): + C["pins"](Path(tmp)) + + def test_modified_pinned_source_rejected(self): + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp) + 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) + changed = root / C["CHECKER"] + changed.write_bytes(changed.read_bytes() + b"\n# corrupted source\n") + with self.assertRaisesRegex(ValueError, "source hash mismatch"): + C["pins"](root) + + +if __name__ == "__main__": + unittest.main() diff --git a/research/r439-six-wire-boolean/vendor/pr936/CERTIFICATE.json b/research/r439-six-wire-boolean/vendor/pr936/CERTIFICATE.json new file mode 100644 index 0000000000..fd23953c24 --- /dev/null +++ b/research/r439-six-wire-boolean/vendor/pr936/CERTIFICATE.json @@ -0,0 +1,5346 @@ +{ + "ball_histogram": { + "0": 1, + "1": 20, + "2": 260, + "3": 2570 + }, + "ball_states": 2851, + "baseline_sha256": "cf2f2fc28bb6f7084ed993e008edeb762657330049b0a470c8a4ac8955251971", + "candidate_sha256": "9d212aff9eab815b18b09697d817f8df6e28602c596c68f2d408664b992d5f4d", + "counts": { + "guarded_windows": 461, + "windows": 1805, + "windows_with_shorter_nominee": 509 + }, + "distinct_window_maps": 1097, + "domain": { + "backward_depth": 3, + "forward_depth": 3, + "max_window": 12, + "representative_policy": "first BFS path per state; seed-10 generator order; guarded nominees sorted by length then lexicographically", + "section": "A", + "wires": 5 + }, + "format": "r439-five-wire/1", + "saved_A": 170, + "saved_with_cleanup": 340, + "seed": 10, + "selected": [ + { + "frame": 266, + "new": [ + [ + 3, + 0 + ], + [ + 3, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ] + ], + "old": [ + [ + 4, + 3 + ], + [ + 4, + 1 + ], + [ + 4, + 0 + ], + [ + 4, + 2 + ], + [ + 3, + 1 + ], + [ + 3, + 0 + ] + ], + "registers": [ + 226, + 236, + 238, + 244, + 247 + ], + "saving": 2, + "section": "A", + "start": 595, + "stop": 601 + }, + { + "frame": 266, + "new": [ + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 2 + ], + [ + 1, + 2 + ], + [ + 2, + 1 + ], + [ + 2, + 0 + ] + ], + "old": [ + [ + 1, + 2 + ], + [ + 0, + 2 + ], + [ + 2, + 3 + ], + [ + 2, + 4 + ], + [ + 2, + 1 + ], + [ + 2, + 0 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ] + ], + "registers": [ + 226, + 236, + 238, + 243, + 247 + ], + "saving": 2, + "section": "A", + "start": 601, + "stop": 609 + }, + { + "frame": 267, + "new": [ + [ + 0, + 3 + ], + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ] + ], + "old": [ + [ + 4, + 0 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ], + [ + 4, + 1 + ], + [ + 0, + 3 + ] + ], + "registers": [ + 351, + 353, + 369, + 379, + 486 + ], + "saving": 1, + "section": "A", + "start": 613, + "stop": 618 + }, + { + "frame": 267, + "new": [ + [ + 1, + 2 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 2, + 4 + ], + [ + 3, + 2 + ] + ], + "old": [ + [ + 1, + 2 + ], + [ + 3, + 2 + ], + [ + 2, + 4 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 3, + 4 + ], + [ + 3, + 0 + ], + [ + 3, + 1 + ] + ], + "registers": [ + 222, + 351, + 353, + 379, + 486 + ], + "saving": 3, + "section": "A", + "start": 620, + "stop": 628 + }, + { + "frame": 268, + "new": [ + [ + 0, + 4 + ], + [ + 3, + 1 + ], + [ + 2, + 3 + ], + [ + 0, + 2 + ] + ], + "old": [ + [ + 0, + 4 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 1 + ], + [ + 3, + 1 + ], + [ + 2, + 3 + ] + ], + "registers": [ + 223, + 258, + 260, + 274, + 280 + ], + "saving": 2, + "section": "A", + "start": 636, + "stop": 642 + }, + { + "frame": 269, + "new": [ + [ + 0, + 4 + ], + [ + 1, + 0 + ], + [ + 2, + 3 + ], + [ + 1, + 3 + ] + ], + "old": [ + [ + 1, + 4 + ], + [ + 1, + 0 + ], + [ + 1, + 3 + ], + [ + 0, + 4 + ], + [ + 2, + 3 + ] + ], + "registers": [ + 253, + 389, + 397, + 403, + 485 + ], + "saving": 1, + "section": "A", + "start": 665, + "stop": 670 + }, + { + "frame": 270, + "new": [ + [ + 1, + 0 + ], + [ + 2, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ] + ], + "old": [ + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 3 + ], + [ + 1, + 0 + ], + [ + 4, + 2 + ], + [ + 2, + 1 + ] + ], + "registers": [ + 234, + 252, + 268, + 272, + 276 + ], + "saving": 2, + "section": "A", + "start": 683, + "stop": 689 + }, + { + "frame": 271, + "new": [ + [ + 0, + 3 + ], + [ + 4, + 2 + ], + [ + 1, + 4 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 0, + 3 + ], + [ + 0, + 1 + ], + [ + 0, + 4 + ], + [ + 0, + 2 + ], + [ + 4, + 2 + ], + [ + 1, + 4 + ] + ], + "registers": [ + 246, + 391, + 393, + 401, + 405 + ], + "saving": 2, + "section": "A", + "start": 693, + "stop": 699 + }, + { + "frame": 272, + "new": [ + [ + 4, + 2 + ], + [ + 2, + 0 + ], + [ + 0, + 3 + ], + [ + 1, + 0 + ], + [ + 4, + 1 + ] + ], + "old": [ + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 0 + ], + [ + 4, + 3 + ], + [ + 2, + 0 + ], + [ + 0, + 3 + ], + [ + 1, + 0 + ] + ], + "registers": [ + 294, + 296, + 302, + 316, + 501 + ], + "saving": 2, + "section": "A", + "start": 714, + "stop": 721 + }, + { + "frame": 273, + "new": [ + [ + 2, + 0 + ], + [ + 4, + 3 + ], + [ + 1, + 4 + ], + [ + 2, + 1 + ] + ], + "old": [ + [ + 2, + 3 + ], + [ + 2, + 4 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 4, + 3 + ], + [ + 1, + 4 + ] + ], + "registers": [ + 421, + 427, + 439, + 483, + 502 + ], + "saving": 2, + "section": "A", + "start": 742, + "stop": 748 + }, + { + "frame": 274, + "new": [ + [ + 2, + 3 + ], + [ + 4, + 0 + ], + [ + 1, + 4 + ], + [ + 2, + 1 + ] + ], + "old": [ + [ + 2, + 0 + ], + [ + 2, + 4 + ], + [ + 2, + 3 + ], + [ + 4, + 0 + ], + [ + 2, + 1 + ], + [ + 1, + 4 + ] + ], + "registers": [ + 240, + 298, + 304, + 308, + 500 + ], + "saving": 2, + "section": "A", + "start": 760, + "stop": 766 + }, + { + "frame": 275, + "new": [ + [ + 0, + 2 + ], + [ + 1, + 3 + ], + [ + 0, + 1 + ], + [ + 4, + 0 + ] + ], + "old": [ + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 3 + ], + [ + 4, + 2 + ], + [ + 1, + 3 + ], + [ + 0, + 1 + ], + [ + 0, + 2 + ] + ], + "registers": [ + 417, + 423, + 425, + 437, + 503 + ], + "saving": 3, + "section": "A", + "start": 770, + "stop": 777 + }, + { + "frame": 276, + "new": [ + [ + 2, + 0 + ], + [ + 3, + 2 + ], + [ + 1, + 3 + ], + [ + 4, + 1 + ] + ], + "old": [ + [ + 4, + 1 + ], + [ + 4, + 3 + ], + [ + 4, + 2 + ], + [ + 4, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 2 + ], + [ + 1, + 3 + ] + ], + "registers": [ + 334, + 338, + 342, + 346, + 504 + ], + "saving": 3, + "section": "A", + "start": 786, + "stop": 793 + }, + { + "frame": 277, + "new": [ + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 3, + 4 + ] + ], + "old": [ + [ + 3, + 4 + ], + [ + 3, + 1 + ], + [ + 3, + 2 + ], + [ + 3, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 0 + ] + ], + "registers": [ + 447, + 455, + 457, + 481, + 499 + ], + "saving": 3, + "section": "A", + "start": 797, + "stop": 804 + }, + { + "frame": 277, + "new": [ + [ + 0, + 3 + ], + [ + 2, + 0 + ], + [ + 3, + 1 + ], + [ + 3, + 4 + ], + [ + 1, + 2 + ] + ], + "old": [ + [ + 0, + 3 + ], + [ + 2, + 0 + ], + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 3, + 1 + ], + [ + 3, + 2 + ] + ], + "registers": [ + 447, + 455, + 457, + 461, + 481 + ], + "saving": 1, + "section": "A", + "start": 805, + "stop": 811 + }, + { + "frame": 278, + "new": [ + [ + 2, + 0 + ], + [ + 1, + 2 + ], + [ + 3, + 1 + ], + [ + 3, + 4 + ] + ], + "old": [ + [ + 3, + 1 + ], + [ + 3, + 2 + ], + [ + 3, + 4 + ], + [ + 3, + 0 + ], + [ + 2, + 0 + ], + [ + 1, + 2 + ] + ], + "registers": [ + 231, + 339, + 343, + 375, + 456 + ], + "saving": 2, + "section": "A", + "start": 817, + "stop": 823 + }, + { + "frame": 278, + "new": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 4, + 0 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 4, + 0 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ] + ], + "registers": [ + 231, + 339, + 341, + 375, + 456 + ], + "saving": 2, + "section": "A", + "start": 824, + "stop": 830 + }, + { + "frame": 279, + "new": [ + [ + 2, + 0 + ], + [ + 2, + 4 + ], + [ + 1, + 2 + ], + [ + 3, + 1 + ] + ], + "old": [ + [ + 3, + 1 + ], + [ + 3, + 2 + ], + [ + 3, + 4 + ], + [ + 3, + 0 + ], + [ + 2, + 0 + ], + [ + 2, + 4 + ], + [ + 1, + 2 + ] + ], + "registers": [ + 249, + 329, + 331, + 354, + 449 + ], + "saving": 3, + "section": "A", + "start": 838, + "stop": 845 + }, + { + "frame": 280, + "new": [ + [ + 3, + 0 + ], + [ + 3, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ] + ], + "old": [ + [ + 4, + 3 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 0 + ], + [ + 3, + 1 + ], + [ + 3, + 0 + ] + ], + "registers": [ + 261, + 281, + 299, + 309, + 380 + ], + "saving": 2, + "section": "A", + "start": 853, + "stop": 859 + }, + { + "frame": 280, + "new": [ + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 2 + ], + [ + 2, + 0 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 1, + 2 + ], + [ + 2, + 0 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 1 + ], + [ + 2, + 3 + ], + [ + 2, + 4 + ] + ], + "registers": [ + 261, + 281, + 299, + 345, + 380 + ], + "saving": 2, + "section": "A", + "start": 859, + "stop": 866 + }, + { + "frame": 281, + "new": [ + [ + 2, + 4 + ], + [ + 3, + 2 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ] + ], + "old": [ + [ + 3, + 2 + ], + [ + 3, + 4 + ], + [ + 2, + 1 + ], + [ + 2, + 0 + ], + [ + 2, + 4 + ] + ], + "registers": [ + 263, + 275, + 310, + 374, + 410 + ], + "saving": 1, + "section": "A", + "start": 874, + "stop": 879 + }, + { + "frame": 281, + "new": [ + [ + 0, + 2 + ], + [ + 3, + 4 + ], + [ + 0, + 3 + ], + [ + 1, + 2 + ] + ], + "old": [ + [ + 0, + 4 + ], + [ + 0, + 3 + ], + [ + 0, + 2 + ], + [ + 1, + 2 + ], + [ + 3, + 4 + ] + ], + "registers": [ + 263, + 275, + 310, + 374, + 491 + ], + "saving": 1, + "section": "A", + "start": 884, + "stop": 889 + }, + { + "frame": 282, + "new": [ + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 4, + 2 + ], + [ + 3, + 4 + ] + ], + "old": [ + [ + 3, + 1 + ], + [ + 3, + 2 + ], + [ + 3, + 0 + ], + [ + 2, + 1 + ], + [ + 3, + 4 + ], + [ + 4, + 2 + ] + ], + "registers": [ + 256, + 325, + 359, + 404, + 442 + ], + "saving": 2, + "section": "A", + "start": 902, + "stop": 908 + }, + { + "frame": 283, + "new": [ + [ + 0, + 1 + ], + [ + 4, + 0 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ] + ], + "old": [ + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 3 + ], + [ + 4, + 2 + ], + [ + 0, + 1 + ] + ], + "registers": [ + 312, + 412, + 429, + 434, + 490 + ], + "saving": 1, + "section": "A", + "start": 908, + "stop": 913 + }, + { + "frame": 283, + "new": [ + [ + 0, + 2 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 1, + 4 + ], + [ + 3, + 1 + ], + [ + 2, + 1 + ] + ], + "old": [ + [ + 0, + 2 + ], + [ + 2, + 4 + ], + [ + 2, + 1 + ], + [ + 2, + 0 + ], + [ + 3, + 4 + ], + [ + 3, + 1 + ], + [ + 3, + 0 + ], + [ + 1, + 4 + ] + ], + "registers": [ + 312, + 355, + 429, + 434, + 490 + ], + "saving": 2, + "section": "A", + "start": 915, + "stop": 923 + }, + { + "frame": 284, + "new": [ + [ + 0, + 3 + ], + [ + 2, + 3 + ], + [ + 4, + 1 + ], + [ + 0, + 4 + ] + ], + "old": [ + [ + 0, + 1 + ], + [ + 0, + 4 + ], + [ + 0, + 3 + ], + [ + 2, + 3 + ], + [ + 4, + 1 + ] + ], + "registers": [ + 283, + 344, + 390, + 400, + 508 + ], + "saving": 1, + "section": "A", + "start": 936, + "stop": 941 + }, + { + "frame": 285, + "new": [ + [ + 3, + 0 + ], + [ + 3, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ] + ], + "old": [ + [ + 4, + 3 + ], + [ + 4, + 2 + ], + [ + 4, + 1 + ], + [ + 4, + 0 + ], + [ + 3, + 1 + ], + [ + 3, + 0 + ] + ], + "registers": [ + 383, + 408, + 426, + 431, + 507 + ], + "saving": 2, + "section": "A", + "start": 946, + "stop": 952 + }, + { + "frame": 285, + "new": [ + [ + 0, + 2 + ], + [ + 1, + 4 + ], + [ + 1, + 3 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 2 + ], + [ + 0, + 1 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ] + ], + "registers": [ + 408, + 426, + 431, + 489, + 507 + ], + "saving": 2, + "section": "A", + "start": 958, + "stop": 964 + }, + { + "frame": 286, + "new": [ + [ + 1, + 2 + ], + [ + 3, + 0 + ], + [ + 1, + 3 + ], + [ + 4, + 1 + ] + ], + "old": [ + [ + 4, + 1 + ], + [ + 4, + 3 + ], + [ + 4, + 2 + ], + [ + 4, + 0 + ], + [ + 1, + 2 + ], + [ + 3, + 0 + ], + [ + 1, + 3 + ] + ], + "registers": [ + 300, + 305, + 414, + 441, + 509 + ], + "saving": 3, + "section": "A", + "start": 970, + "stop": 977 + }, + { + "frame": 287, + "new": [ + [ + 0, + 1 + ], + [ + 4, + 0 + ], + [ + 0, + 3 + ], + [ + 2, + 3 + ], + [ + 4, + 2 + ] + ], + "old": [ + [ + 4, + 2 + ], + [ + 4, + 0 + ], + [ + 4, + 3 + ], + [ + 4, + 1 + ], + [ + 2, + 3 + ], + [ + 0, + 3 + ], + [ + 0, + 1 + ] + ], + "registers": [ + 265, + 270, + 286, + 315, + 506 + ], + "saving": 2, + "section": "A", + "start": 987, + "stop": 994 + }, + { + "frame": 287, + "new": [ + [ + 0, + 4 + ], + [ + 1, + 0 + ], + [ + 1, + 3 + ], + [ + 1, + 2 + ] + ], + "old": [ + [ + 1, + 4 + ], + [ + 1, + 2 + ], + [ + 1, + 0 + ], + [ + 1, + 3 + ], + [ + 0, + 4 + ] + ], + "registers": [ + 265, + 270, + 286, + 315, + 506 + ], + "saving": 1, + "section": "A", + "start": 995, + "stop": 1000 + }, + { + "frame": 288, + "new": [ + [ + 1, + 0 + ], + [ + 1, + 4 + ], + [ + 2, + 3 + ], + [ + 1, + 2 + ] + ], + "old": [ + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 0 + ], + [ + 1, + 4 + ], + [ + 2, + 3 + ] + ], + "registers": [ + 224, + 324, + 326, + 362, + 446 + ], + "saving": 1, + "section": "A", + "start": 1004, + "stop": 1009 + }, + { + "frame": 288, + "new": [ + [ + 2, + 3 + ], + [ + 3, + 2 + ], + [ + 0, + 2 + ], + [ + 4, + 1 + ], + [ + 3, + 4 + ], + [ + 0, + 4 + ] + ], + "old": [ + [ + 2, + 3 + ], + [ + 3, + 1 + ], + [ + 3, + 4 + ], + [ + 3, + 2 + ], + [ + 0, + 1 + ], + [ + 0, + 4 + ], + [ + 0, + 2 + ], + [ + 4, + 1 + ] + ], + "registers": [ + 224, + 324, + 326, + 446, + 505 + ], + "saving": 2, + "section": "A", + "start": 1011, + "stop": 1019 + }, + { + "frame": 289, + "new": [ + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 2, + 3 + ], + [ + 4, + 2 + ] + ], + "old": [ + [ + 4, + 2 + ], + [ + 4, + 1 + ], + [ + 4, + 3 + ], + [ + 4, + 0 + ], + [ + 3, + 0 + ], + [ + 2, + 3 + ], + [ + 2, + 1 + ] + ], + "registers": [ + 239, + 335, + 364, + 454, + 510 + ], + "saving": 3, + "section": "A", + "start": 1024, + "stop": 1031 + }, + { + "frame": 289, + "new": [ + [ + 0, + 1 + ], + [ + 3, + 4 + ], + [ + 3, + 2 + ], + [ + 0, + 3 + ] + ], + "old": [ + [ + 0, + 4 + ], + [ + 0, + 2 + ], + [ + 0, + 1 + ], + [ + 0, + 3 + ], + [ + 3, + 4 + ], + [ + 3, + 2 + ] + ], + "registers": [ + 239, + 335, + 364, + 454, + 487 + ], + "saving": 2, + "section": "A", + "start": 1031, + "stop": 1037 + }, + { + "frame": 290, + "new": [ + [ + 1, + 2 + ], + [ + 4, + 0 + ], + [ + 1, + 4 + ], + [ + 3, + 1 + ] + ], + "old": [ + [ + 3, + 1 + ], + [ + 3, + 2 + ], + [ + 3, + 4 + ], + [ + 3, + 0 + ], + [ + 1, + 2 + ], + [ + 4, + 0 + ], + [ + 1, + 4 + ] + ], + "registers": [ + 230, + 347, + 370, + 373, + 453 + ], + "saving": 3, + "section": "A", + "start": 1043, + "stop": 1050 + }, + { + "frame": 290, + "new": [ + [ + 0, + 3 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 0, + 4 + ] + ], + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ] + ], + "registers": [ + 230, + 337, + 347, + 370, + 453 + ], + "saving": 2, + "section": "A", + "start": 1050, + "stop": 1056 + }, + { + "frame": 291, + "new": [ + [ + 1, + 4 + ], + [ + 3, + 0 + ], + [ + 2, + 3 + ], + [ + 1, + 2 + ] + ], + "old": [ + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 0 + ], + [ + 1, + 4 + ], + [ + 3, + 0 + ], + [ + 2, + 3 + ] + ], + "registers": [ + 251, + 356, + 376, + 378, + 460 + ], + "saving": 2, + "section": "A", + "start": 1062, + "stop": 1068 + }, + { + "frame": 291, + "new": [ + [ + 0, + 3 + ], + [ + 0, + 1 + ], + [ + 0, + 4 + ], + [ + 3, + 0 + ], + [ + 3, + 2 + ] + ], + "old": [ + [ + 0, + 3 + ], + [ + 3, + 4 + ], + [ + 3, + 1 + ], + [ + 3, + 2 + ], + [ + 3, + 0 + ], + [ + 0, + 4 + ], + [ + 0, + 1 + ] + ], + "registers": [ + 251, + 356, + 376, + 460, + 498 + ], + "saving": 2, + "section": "A", + "start": 1069, + "stop": 1076 + }, + { + "frame": 292, + "new": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 4 + ], + [ + 4, + 0 + ], + [ + 4, + 3 + ] + ], + "old": [ + [ + 0, + 4 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ], + [ + 4, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 2 + ] + ], + "registers": [ + 285, + 323, + 361, + 406, + 424 + ], + "saving": 2, + "section": "A", + "start": 1088, + "stop": 1095 + }, + { + "frame": 293, + "new": [ + [ + 0, + 1 + ], + [ + 4, + 3 + ], + [ + 0, + 4 + ], + [ + 2, + 0 + ] + ], + "old": [ + [ + 2, + 0 + ], + [ + 2, + 4 + ], + [ + 2, + 3 + ], + [ + 2, + 1 + ], + [ + 0, + 1 + ], + [ + 4, + 3 + ], + [ + 0, + 4 + ] + ], + "registers": [ + 264, + 289, + 366, + 395, + 445 + ], + "saving": 3, + "section": "A", + "start": 1102, + "stop": 1109 + }, + { + "frame": 294, + "new": [ + [ + 4, + 1 + ], + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 4, + 1 + ], + [ + 0, + 1 + ], + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ] + ], + "registers": [ + 255, + 306, + 336, + 367, + 409 + ], + "saving": 3, + "section": "A", + "start": 1121, + "stop": 1129 + }, + { + "frame": 295, + "new": [ + [ + 0, + 1 + ], + [ + 4, + 0 + ], + [ + 3, + 4 + ], + [ + 3, + 2 + ] + ], + "old": [ + [ + 3, + 4 + ], + [ + 3, + 2 + ], + [ + 3, + 0 + ], + [ + 3, + 1 + ], + [ + 0, + 1 + ], + [ + 4, + 0 + ] + ], + "registers": [ + 269, + 292, + 313, + 372, + 420 + ], + "saving": 2, + "section": "A", + "start": 1136, + "stop": 1142 + }, + { + "frame": 295, + "new": [ + [ + 0, + 3 + ], + [ + 1, + 4 + ], + [ + 1, + 2 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 0, + 4 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 1 + ], + [ + 1, + 4 + ], + [ + 1, + 2 + ] + ], + "registers": [ + 269, + 313, + 372, + 420, + 496 + ], + "saving": 2, + "section": "A", + "start": 1146, + "stop": 1152 + }, + { + "frame": 296, + "new": [ + [ + 2, + 0 + ], + [ + 3, + 1 + ], + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "old": [ + [ + 4, + 3 + ], + [ + 4, + 2 + ], + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 2, + 0 + ], + [ + 3, + 1 + ], + [ + 3, + 2 + ] + ], + "registers": [ + 279, + 303, + 384, + 430, + 514 + ], + "saving": 3, + "section": "A", + "start": 1158, + "stop": 1165 + }, + { + "frame": 296, + "new": [ + [ + 0, + 4 + ], + [ + 3, + 2 + ], + [ + 1, + 3 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 1, + 2 + ], + [ + 0, + 1 + ], + [ + 1, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 3 + ], + [ + 3, + 2 + ] + ], + "registers": [ + 279, + 303, + 348, + 384, + 430 + ], + "saving": 2, + "section": "A", + "start": 1165, + "stop": 1171 + }, + { + "frame": 297, + "new": [ + [ + 2, + 1 + ], + [ + 1, + 0 + ], + [ + 0, + 2 + ], + [ + 1, + 4 + ], + [ + 1, + 3 + ] + ], + "old": [ + [ + 2, + 1 + ], + [ + 0, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 1, + 0 + ], + [ + 1, + 2 + ] + ], + "registers": [ + 291, + 317, + 438, + 495, + 513 + ], + "saving": 1, + "section": "A", + "start": 1177, + "stop": 1183 + }, + { + "frame": 298, + "new": [ + [ + 0, + 1 + ], + [ + 0, + 4 + ], + [ + 2, + 0 + ], + [ + 0, + 3 + ] + ], + "old": [ + [ + 2, + 0 + ], + [ + 0, + 1 + ], + [ + 0, + 4 + ], + [ + 0, + 3 + ], + [ + 2, + 1 + ], + [ + 2, + 4 + ] + ], + "registers": [ + 301, + 321, + 388, + 422, + 515 + ], + "saving": 2, + "section": "A", + "start": 1195, + "stop": 1201 + }, + { + "frame": 299, + "new": [ + [ + 2, + 0 + ], + [ + 3, + 2 + ], + [ + 4, + 1 + ] + ], + "old": [ + [ + 3, + 2 + ], + [ + 3, + 0 + ], + [ + 4, + 1 + ], + [ + 2, + 0 + ] + ], + "registers": [ + 262, + 402, + 440, + 494, + 512 + ], + "saving": 1, + "section": "A", + "start": 1206, + "stop": 1210 + }, + { + "frame": 299, + "new": [ + [ + 0, + 2 + ], + [ + 0, + 4 + ], + [ + 0, + 3 + ], + [ + 2, + 1 + ] + ], + "old": [ + [ + 2, + 1 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 0, + 2 + ], + [ + 0, + 1 + ] + ], + "registers": [ + 262, + 314, + 402, + 494, + 512 + ], + "saving": 1, + "section": "A", + "start": 1211, + "stop": 1216 + }, + { + "frame": 299, + "new": [ + [ + 0, + 1 + ], + [ + 2, + 1 + ], + [ + 4, + 3 + ], + [ + 2, + 4 + ] + ], + "old": [ + [ + 2, + 3 + ], + [ + 2, + 4 + ], + [ + 2, + 1 + ], + [ + 0, + 1 + ], + [ + 4, + 3 + ] + ], + "registers": [ + 314, + 402, + 440, + 494, + 512 + ], + "saving": 1, + "section": "A", + "start": 1217, + "stop": 1222 + }, + { + "frame": 300, + "new": [ + [ + 4, + 2 + ], + [ + 2, + 0 + ], + [ + 0, + 3 + ], + [ + 1, + 0 + ], + [ + 4, + 1 + ] + ], + "old": [ + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 0 + ], + [ + 4, + 3 + ], + [ + 2, + 0 + ], + [ + 0, + 3 + ], + [ + 1, + 0 + ] + ], + "registers": [ + 225, + 328, + 330, + 458, + 511 + ], + "saving": 2, + "section": "A", + "start": 1227, + "stop": 1234 + }, + { + "frame": 301, + "new": [ + [ + 1, + 2 + ], + [ + 0, + 1 + ], + [ + 4, + 0 + ], + [ + 4, + 3 + ] + ], + "old": [ + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ], + [ + 1, + 2 + ], + [ + 0, + 1 + ] + ], + "registers": [ + 350, + 363, + 448, + 450, + 516 + ], + "saving": 2, + "section": "A", + "start": 1247, + "stop": 1253 + }, + { + "frame": 301, + "new": [ + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 2, + 1 + ], + [ + 2, + 0 + ] + ], + "old": [ + [ + 1, + 2 + ], + [ + 2, + 3 + ], + [ + 2, + 4 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ] + ], + "registers": [ + 350, + 448, + 450, + 493, + 516 + ], + "saving": 2, + "section": "A", + "start": 1254, + "stop": 1261 + }, + { + "frame": 303, + "new": [ + [ + 0, + 2 + ], + [ + 3, + 4 + ], + [ + 0, + 3 + ], + [ + 1, + 2 + ] + ], + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 2 + ], + [ + 3, + 4 + ] + ], + "registers": [ + 539, + 557, + 575, + 607, + 630 + ], + "saving": 1, + "section": "A", + "start": 1281, + "stop": 1286 + }, + { + "frame": 303, + "new": [ + [ + 3, + 0 + ], + [ + 3, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ] + ], + "old": [ + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ], + [ + 3, + 0 + ], + [ + 3, + 1 + ] + ], + "registers": [ + 521, + 539, + 575, + 607, + 630 + ], + "saving": 2, + "section": "A", + "start": 1287, + "stop": 1293 + }, + { + "frame": 304, + "new": [ + [ + 1, + 4 + ], + [ + 0, + 1 + ], + [ + 2, + 3 + ], + [ + 0, + 2 + ] + ], + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 4 + ], + [ + 2, + 3 + ] + ], + "registers": [ + 556, + 591, + 618, + 637, + 646 + ], + "saving": 2, + "section": "A", + "start": 1301, + "stop": 1307 + }, + { + "frame": 304, + "new": [ + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 4, + 2 + ], + [ + 3, + 1 + ] + ], + "old": [ + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 3, + 0 + ], + [ + 3, + 1 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ] + ], + "registers": [ + 520, + 556, + 591, + 618, + 637 + ], + "saving": 2, + "section": "A", + "start": 1311, + "stop": 1318 + }, + { + "frame": 305, + "new": [ + [ + 1, + 4 + ], + [ + 0, + 1 + ], + [ + 2, + 3 + ], + [ + 0, + 2 + ] + ], + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 4 + ], + [ + 2, + 3 + ] + ], + "registers": [ + 555, + 592, + 613, + 642, + 645 + ], + "saving": 2, + "section": "A", + "start": 1322, + "stop": 1328 + }, + { + "frame": 305, + "new": [ + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 4, + 2 + ], + [ + 3, + 1 + ] + ], + "old": [ + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 3, + 0 + ], + [ + 3, + 1 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ] + ], + "registers": [ + 519, + 555, + 592, + 613, + 642 + ], + "saving": 2, + "section": "A", + "start": 1332, + "stop": 1339 + }, + { + "frame": 306, + "new": [ + [ + 3, + 4 + ], + [ + 2, + 3 + ], + [ + 1, + 2 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 3, + 4 + ], + [ + 2, + 3 + ], + [ + 1, + 2 + ] + ], + "registers": [ + 536, + 554, + 572, + 612, + 625 + ], + "saving": 3, + "section": "A", + "start": 1342, + "stop": 1349 + }, + { + "frame": 307, + "new": [ + [ + 2, + 0 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ], + [ + 3, + 1 + ] + ], + "old": [ + [ + 4, + 0 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ], + [ + 3, + 1 + ], + [ + 2, + 0 + ] + ], + "registers": [ + 517, + 551, + 558, + 584, + 603 + ], + "saving": 1, + "section": "A", + "start": 1369, + "stop": 1374 + }, + { + "frame": 309, + "new": [ + [ + 1, + 4 + ], + [ + 2, + 3 + ], + [ + 1, + 2 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 4 + ], + [ + 2, + 3 + ], + [ + 1, + 2 + ] + ], + "registers": [ + 563, + 600, + 610, + 627, + 655 + ], + "saving": 3, + "section": "A", + "start": 1394, + "stop": 1401 + }, + { + "frame": 310, + "new": [ + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 4, + 0 + ], + [ + 4, + 2 + ] + ], + "old": [ + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 3, + 0 + ], + [ + 2, + 1 + ] + ], + "registers": [ + 526, + 543, + 562, + 579, + 589 + ], + "saving": 1, + "section": "A", + "start": 1419, + "stop": 1424 + }, + { + "frame": 311, + "new": [ + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ] + ], + "registers": [ + 525, + 544, + 580, + 594, + 643 + ], + "saving": 3, + "section": "A", + "start": 1425, + "stop": 1432 + }, + { + "frame": 311, + "new": [ + [ + 3, + 4 + ], + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 1, + 2 + ], + [ + 2, + 3 + ] + ], + "old": [ + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 2, + 3 + ], + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ] + ], + "registers": [ + 525, + 561, + 580, + 594, + 643 + ], + "saving": 2, + "section": "A", + "start": 1432, + "stop": 1439 + }, + { + "frame": 311, + "new": [ + [ + 2, + 0 + ], + [ + 3, + 2 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ] + ], + "old": [ + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 2, + 0 + ], + [ + 3, + 2 + ] + ], + "registers": [ + 525, + 544, + 561, + 580, + 594 + ], + "saving": 1, + "section": "A", + "start": 1439, + "stop": 1444 + }, + { + "frame": 312, + "new": [ + [ + 2, + 3 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 0 + ], + [ + 3, + 4 + ] + ], + "old": [ + [ + 2, + 3 + ], + [ + 3, + 4 + ], + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 3, + 0 + ], + [ + 3, + 1 + ], + [ + 3, + 2 + ] + ], + "registers": [ + 524, + 560, + 595, + 628, + 660 + ], + "saving": 3, + "section": "A", + "start": 1451, + "stop": 1459 + }, + { + "frame": 313, + "new": [ + [ + 0, + 3 + ], + [ + 1, + 2 + ], + [ + 2, + 4 + ], + [ + 0, + 2 + ] + ], + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 2 + ], + [ + 2, + 4 + ] + ], + "registers": [ + 549, + 564, + 586, + 621, + 633 + ], + "saving": 1, + "section": "A", + "start": 1467, + "stop": 1472 + }, + { + "frame": 314, + "new": [ + [ + 0, + 3 + ], + [ + 1, + 4 + ], + [ + 2, + 4 + ], + [ + 0, + 2 + ] + ], + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 4 + ], + [ + 2, + 4 + ] + ], + "registers": [ + 534, + 565, + 620, + 632, + 650 + ], + "saving": 1, + "section": "A", + "start": 1480, + "stop": 1485 + }, + { + "frame": 315, + "new": [ + [ + 0, + 4 + ], + [ + 1, + 2 + ], + [ + 2, + 3 + ], + [ + 0, + 2 + ] + ], + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 2 + ], + [ + 2, + 3 + ] + ], + "registers": [ + 535, + 566, + 576, + 599, + 659 + ], + "saving": 1, + "section": "A", + "start": 1500, + "stop": 1505 + }, + { + "frame": 316, + "new": [ + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 2 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 2 + ] + ], + "registers": [ + 532, + 546, + 567, + 614, + 638 + ], + "saving": 1, + "section": "A", + "start": 1511, + "stop": 1516 + }, + { + "frame": 316, + "new": [ + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 2, + 3 + ], + [ + 0, + 2 + ] + ], + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 2 + ], + [ + 3, + 4 + ], + [ + 2, + 3 + ] + ], + "registers": [ + 546, + 567, + 577, + 614, + 638 + ], + "saving": 2, + "section": "A", + "start": 1516, + "stop": 1522 + }, + { + "frame": 316, + "new": [ + [ + 2, + 0 + ], + [ + 3, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ] + ], + "old": [ + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 3, + 0 + ], + [ + 2, + 0 + ] + ], + "registers": [ + 532, + 546, + 567, + 577, + 614 + ], + "saving": 1, + "section": "A", + "start": 1524, + "stop": 1529 + }, + { + "frame": 317, + "new": [ + [ + 0, + 3 + ], + [ + 1, + 4 + ], + [ + 1, + 2 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 2 + ], + [ + 1, + 4 + ] + ], + "registers": [ + 541, + 568, + 582, + 617, + 641 + ], + "saving": 2, + "section": "A", + "start": 1533, + "stop": 1539 + }, + { + "frame": 318, + "new": [ + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ] + ], + "registers": [ + 530, + 540, + 571, + 596, + 656 + ], + "saving": 3, + "section": "A", + "start": 1548, + "stop": 1555 + }, + { + "frame": 318, + "new": [ + [ + 1, + 2 + ], + [ + 4, + 0 + ], + [ + 2, + 3 + ], + [ + 3, + 4 + ], + [ + 4, + 2 + ], + [ + 4, + 1 + ] + ], + "old": [ + [ + 1, + 2 + ], + [ + 2, + 3 + ], + [ + 3, + 4 + ], + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 3, + 0 + ] + ], + "registers": [ + 530, + 569, + 571, + 596, + 656 + ], + "saving": 1, + "section": "A", + "start": 1555, + "stop": 1562 + }, + { + "frame": 319, + "new": [ + [ + 1, + 4 + ], + [ + 2, + 3 + ], + [ + 1, + 2 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 4 + ], + [ + 2, + 3 + ], + [ + 1, + 2 + ] + ], + "registers": [ + 570, + 605, + 623, + 635, + 653 + ], + "saving": 3, + "section": "A", + "start": 1570, + "stop": 1577 + }, + { + "frame": 320, + "new": [ + [ + 1, + 4 + ], + [ + 0, + 1 + ], + [ + 2, + 3 + ], + [ + 0, + 2 + ] + ], + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 4 + ], + [ + 2, + 3 + ] + ], + "registers": [ + 574, + 593, + 624, + 631, + 644 + ], + "saving": 2, + "section": "A", + "start": 1586, + "stop": 1592 + }, + { + "frame": 320, + "new": [ + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 4, + 2 + ], + [ + 3, + 1 + ] + ], + "old": [ + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 3, + 0 + ], + [ + 3, + 1 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ] + ], + "registers": [ + 538, + 574, + 593, + 624, + 631 + ], + "saving": 2, + "section": "A", + "start": 1596, + "stop": 1603 + }, + { + "frame": 321, + "new": [ + [ + 0, + 2 + ], + [ + 1, + 4 + ], + [ + 1, + 3 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ] + ], + "registers": [ + 573, + 590, + 619, + 636, + 647 + ], + "saving": 2, + "section": "A", + "start": 1607, + "stop": 1613 + }, + { + "frame": 321, + "new": [ + [ + 2, + 0 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 4, + 2 + ], + [ + 3, + 1 + ] + ], + "old": [ + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 3, + 0 + ], + [ + 3, + 1 + ], + [ + 2, + 0 + ], + [ + 2, + 1 + ] + ], + "registers": [ + 537, + 573, + 590, + 619, + 636 + ], + "saving": 2, + "section": "A", + "start": 1618, + "stop": 1625 + }, + { + "frame": 322, + "new": [ + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ] + ], + "registers": [ + 545, + 581, + 601, + 611, + 626 + ], + "saving": 3, + "section": "A", + "start": 1625, + "stop": 1632 + }, + { + "frame": 322, + "new": [ + [ + 1, + 3 + ], + [ + 3, + 0 + ], + [ + 3, + 4 + ], + [ + 4, + 1 + ], + [ + 4, + 3 + ], + [ + 1, + 2 + ] + ], + "old": [ + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 3, + 4 + ], + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 4, + 2 + ], + [ + 4, + 3 + ], + [ + 3, + 0 + ] + ], + "registers": [ + 545, + 601, + 611, + 626, + 654 + ], + "saving": 2, + "section": "A", + "start": 1634, + "stop": 1642 + }, + { + "frame": 323, + "new": [ + [ + 1, + 0 + ], + [ + 4, + 1 + ], + [ + 2, + 3 + ], + [ + 3, + 4 + ], + [ + 3, + 2 + ] + ], + "old": [ + [ + 2, + 3 + ], + [ + 4, + 1 + ], + [ + 4, + 0 + ], + [ + 3, + 4 + ], + [ + 3, + 2 + ], + [ + 1, + 0 + ] + ], + "registers": [ + 542, + 578, + 606, + 629, + 649 + ], + "saving": 1, + "section": "A", + "start": 1650, + "stop": 1656 + }, + { + "frame": 324, + "new": [ + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ], + [ + 0, + 1 + ] + ], + "old": [ + [ + 0, + 1 + ], + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 1, + 4 + ] + ], + "registers": [ + 552, + 583, + 598, + 616, + 640 + ], + "saving": 3, + "section": "A", + "start": 1658, + "stop": 1665 + }, + { + "frame": 324, + "new": [ + [ + 2, + 4 + ], + [ + 3, + 2 + ], + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 1, + 3 + ] + ], + "old": [ + [ + 2, + 4 + ], + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 4, + 0 + ], + [ + 4, + 1 + ], + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "registers": [ + 552, + 598, + 616, + 640, + 658 + ], + "saving": 2, + "section": "A", + "start": 1666, + "stop": 1673 + }, + { + "frame": 325, + "new": [ + [ + 0, + 3 + ], + [ + 1, + 4 + ], + [ + 2, + 4 + ], + [ + 0, + 2 + ] + ], + "old": [ + [ + 0, + 2 + ], + [ + 0, + 3 + ], + [ + 0, + 4 + ], + [ + 1, + 4 + ], + [ + 2, + 4 + ] + ], + "registers": [ + 547, + 588, + 615, + 639, + 657 + ], + "saving": 1, + "section": "A", + "start": 1676, + "stop": 1681 + } + ], + "window_lengths": { + "3": 287, + "4": 654, + "5": 421, + "6": 238, + "7": 127, + "8": 52, + "9": 17, + "10": 7, + "11": 2 + } +} diff --git a/research/r439-six-wire-boolean/vendor/pr936/LICENSE b/research/r439-six-wire-boolean/vendor/pr936/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/r439-six-wire-boolean/vendor/pr936/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-six-wire-boolean/vendor/pr936/NOTICE.md b/research/r439-six-wire-boolean/vendor/pr936/NOTICE.md new file mode 100644 index 0000000000..de6be309eb --- /dev/null +++ b/research/r439-six-wire-boolean/vendor/pr936/NOTICE.md @@ -0,0 +1,28 @@ +# Attribution and source notice + +This contribution is by Ross Richardson (@RossRichardson), prepared with +substantial OpenAI Codex assistance. A second AI agent independently implemented +the finite Boolean/positive-transfer certificate checks. No independent human +review is claimed. New work is Apache-2.0; see LICENSE. + +The local resynthesis and interval-packing method follows Jeffrey Cox +(@namredips), PR754 (`47ebba87e064cc69d9b4834081fc74080762a74f`), and Gareth +Davidson (@bitplane), PR904 (`883a0bdf7792693e57c16be660824b57aacfbe05`). +The PR904 candidate is the unchanged starting word, preserved with its exact +certificate, README, notice and license under `vendor/pr904/`. PR904's +`build.py` and `common.py` are preserved unchanged for the repeated-pass control. +Our common.py is adapted from PR904's I/O helpers, and native.py from PR904's +harness (itself adapted from Sagar Thakrar's R420 decoder-sharing harness). +The native changes identify the new baseline/candidate costs and attribution. + +The selected PR589 R439 word/tuner is DreamingOfClouds' work on eumemic's PR555 +punctured R439 and PR543 R420 skeleton, with PR545/493/510/425/370 ancestry. +Retain the existing notices in `research/e8-bit-p111-tuned` and +`research/e8-bit-carrier-skeleton`; all used files are pinned in SOURCES.json. +The unchanged native exporter/checkers credit Dylan Crow, DaysSky, Zhihao Chen, +and their retained source notices. Substantial AI assistance in predecessor +sources is disclosed by their authors in those notices. + +Related PR886's frame-only negative result and concurrent PR925, PR915/926 are +acknowledged, not imported. No savings from those candidates are composed here. +No repository selected-frontier or predecessor package is modified. diff --git a/research/r439-six-wire-boolean/vendor/pr936/README.md b/research/r439-six-wire-boolean/vendor/pr936/README.md new file mode 100644 index 0000000000..0a94fec033 --- /dev/null +++ b/research/r439-six-wire-boolean/vendor/pr936/README.md @@ -0,0 +1,149 @@ +# Five-wire phase-A resynthesis on the R439 bit supplier + +**Finite construction; no new kappa.** On Gareth Davidson's frozen PR904 +candidate, 88 disjoint phase-A windows save **170 ADDs plus 170 literal reverse +cleanup ADDs**, reducing the complete local word from **24,051 to 23,711 ADDs**. +Relative to selected PR589, the combined reduction is **594 ADDs** (24,305 to +23,711). The 254 predecessor ADDs are credited to PR904, not rediscovered here. + +| Complete local resource | PR904 input | This candidate | +| --- | ---: | ---: | +| Phase A ADDs | 2,015 | 1,845 | +| Phase B ADDs | 922 | 922 | +| Phase C ADDs | 2,502 | 2,332 | +| Phase D ADDs | 18,085 | 18,085 | +| Scatter ADDs | 527 | 527 | +| Total ADDs | 24,051 | 23,711 | +| Exported records | 26,980 | 26,640 | +| Forward positive row-sum bound | 43,671 | 41,311 | +| Reverse positive row-sum bound | 928,888 | 843,188 | +| Local payload prefix bits | 92 | 92 | +| Paid rank mass | 5,129 | 5,129 | + +No helper, copy, restoration, source access or frame move is free in this bill. +All original physical registers are retained. Every register's ordered MOVE +sequence and every COPY/ERASE record agree. The nine rank-seven totals, decoder +constant 63, and paid histogram +`{1:1323,2:1342,3:79,4:44,5:102,6:11,7:19}` agree. The 5/9/11-stage words save +1,700 / 3,060 / 3,740 ADDs respectively; all bridge and copy bills remain paid. + +## Reproduce + +From the repository root, with Python 3.11+, a C++17 compiler and Boost headers: + +```sh +BOOST_INCLUDE=/path/to/boost-headers python3 -I -B research/r439-five-wire-prefix/verify.py +``` + +The include directory must contain `boost/multiprecision/cpp_int.hpp`; omit the +environment assignment when headers are in `/usr/include`. `CXX` can select a +compiler. Expected final marker: + +```text +PASS_R439_FIVE_WIRE_PREFIX: 88 rewrites; 340 further ADDs saved; H1-H5; 5/9/11 stages; 17 controls; no new kappa +``` + +This rebuilds the entire bounded search, compares every decoded artifact field, +checks all 32 Boolean inputs of each replacement with an implementation separate +from the row-mask search, checks both positive transfers on unit columns, runs +the unchanged source geometry/frame/661-column checker on both complete words, +and compiles/runs unchanged native legality and 5/9/11-stage checks on +883/1,327/1,549 columns. Seventeen local controls and 96 omitted-bridge controls +must succeed. Use `--output /absolute/new/path --receipt /absolute/new/file.json` +to retain native binaries, logs and a deterministic receipt. Nothing is +regenerated in an existing source package. + +## Exact scope and novelty + +OS assignment seed **10** selects the bit track and the CNOT generator tie order. +Initial exact base: `91a2094f2e022930069e8cfdc810a3ea1b81cd09`. +Rebased for submission onto `47481c89fd30a43f8f882eb4b391e89c29273fd0`; +all twelve upstream source/checker pins are unchanged. +PR904 dependency: `883a0bdf7792693e57c16be660824b57aacfbe05`. +Selected PR589 source: `a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46`. +[SOURCES.json](SOURCES.json) pins every source/checker and vendored PR904 file. +The PR904 snapshot includes its original notice, license and search code. + +The domain is every original contiguous phase-A window on that frozen PR904 word +with exactly five distinct source/helper registers, one common frame and at most +12 elementary ADDs. **1,805 windows** (lengths 3 through 11), **1,097 distinct +maps**, are completed. Each depth-three ball contains 2,851 states: histogram +`1,20,260,2570`. A meeting of two balls supplies a circuit of length at most six. +The generator order is shuffled once with `random.Random(10)`; each ball retains +only its first BFS path to each matrix. Among the resulting distinct nominees, +the first strictly shorter one passing both growth guards and full participation +is chosen by (length, lexicographic circuit). There are 509 windows with a shorter +nominee, 461 guarded windows and 88 compatible selected windows. A weighted +interval dynamic program maximizes savings among these nominees. The stopping +rule is completion of this single scan, with no rescanning of the rewritten word. + +This extends PR904's GL(2..4,2) window domain on its **actual output**, rather than +resubmitting that construction. For context, rerunning PR904's unchanged +seed-11 algorithm once on exactly this input gives 40 A plus 2 B ADD savings, +or **84 with cleanup**; that comparison is reproduced by the command above. +The 84 and 340 are alternative passes and must not be added. This comparison is +not a four-wire saturation result or an optimality theorem. A fifth participant +is not claimed intrinsically necessary for every saving. + +The search does not enumerate every circuit representation of each matrix, +all five-wire circuits, all schedules, or later fixed points. No global or local +minimum is claimed. PR886 closes fixed-order frame reassignment; this work changes +the circuit. Concurrent whole-block PR925, prefix PR904 and compensation +PR915/926 are credited as related work; only the explicit PR904 composition is +claimed here. A final refresh also found PR933 (head +`b9348c6907516e55dc07e135ad4d7a480d4f9840`): its exact relocation/reframing +and Steinberg search addresses the paid bit moment on PR589, whereas this +construction reduces native ADD counts on PR904 without changing that moment. + +## Why the replacements are valid + +A CNOT `d ^= s` is an invertible F2 row operation. For each selected window, the +independent checker evaluates all 32 inputs and obtains exactly the old outputs. +Thus it preserves arbitrary dirty inputs at that boundary, including all helper +dirt, with no extra workspace. A representative first window at frame 266 uses +physical registers `[226,236,238,244,247]`, renamed `[a,b,c,d,e]`: + +```text +old: e ^= d; e ^= b; e ^= a; e ^= c; d ^= b; d ^= a +new: d ^= a; d ^= b; e ^= c; e ^= d +``` + +Both end with `d = d0+a+b`, `e = e0+d0+a+b+c`. It saves two A ADDs and two +cleanup ADDs. Each window's full old and new circuit is in CERTIFICATE.json. + +All participants still occur at the same common frame, preserving their entry +climbs and exit frames; no target is touched in A. Outside the disjoint windows +A is identical, and B/D/scatter are identical. C is rebuilt as the literal +reverse of the z-destination gates of A then B at the full frame, preserving +H4 rather than substituting a weaker endpoint condition. The unchanged source +checker separately validates H1-H5 and U/J/K/U-inverse on all 661 columns. + +For precision, replace XOR by addition over nonnegative integer unit vectors. +The new window transfer is entrywise bounded by the old transfer, **in each +order**. Monotonicity carries this inequality through every nonnegative incoming +bound and subsequent operation. Every intermediate coordinate is at most its +window-final value, since these positive updates only increase coordinates. +Together with the reverse guard this applies to both directions and to paired +cleanup. This does not assume cancellation over the integers. The native +checker independently recalculates the complete bounds in the table. + +## Limits, attribution and review + +At the initial base, the selected conditional kappa was **0.001661634653669567**. +During final refresh, maintainers selected PR890 at **0.001661957774647029**, +retaining the identical PR589 bit supplier (see the current selected record and +`docs/research/community-frontier890-review.md`). This contribution changes +neither selected record. It is a finite circuit saving: the paid profile and +bit moment are unchanged, and the complex supplier remains binding. +No changed global hosted emitter, full finite invoice, outer assembly, or stronger +kappa is supplied. The inherited all-size/compiler, common-label/mutable-source, +whole-call hosting, precision/tape and analytic obligations remain. Native +multi-stage replay is not a formal proof of the multiplication theorem. + +Prepared by **Ross Richardson (@RossRichardson)** with substantial **OpenAI Codex +assistance**, including a separately tasked AI checker. No independent human +review is claimed. Credit Gareth Davidson (@bitplane), PR904, and Jeffrey Cox +(@namredips), PR754, for the predecessor exact small-circuit/positive-guard/interval +method; DreamingOfClouds PR589 on eumemic's PR555/543 and the retained source +lineage; Sagar Thakrar and the native checker authors. See [NOTICE.md](NOTICE.md) +and the preserved source notices. Apache-2.0. diff --git a/research/r439-six-wire-boolean/vendor/pr936/candidate.json.gz b/research/r439-six-wire-boolean/vendor/pr936/candidate.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..513cc674f2962973db5bfa41deafccc541b2aa6c GIT binary patch literal 41284 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 literal 0 HcmV?d00001 diff --git a/research/r439-six-wire-boolean/verify.py b/research/r439-six-wire-boolean/verify.py new file mode 100644 index 0000000000..3131c9c08e --- /dev/null +++ b/research/r439-six-wire-boolean/verify.py @@ -0,0 +1,311 @@ +#!/usr/bin/env python3 +"""Exact independent local checks and unchanged full/native replay. Apache-2.0. + +Prepared for Gareth Davidson (@bitplane), with OpenAI Codex assistance. +This checker does not import the Gaussian synthesis implementation. +""" +import argparse +import ast +import copy +from pathlib import Path +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 validate_ops(ops): + need(type(ops) is list and ops, "nonempty operation list") + for op in ops: + need(type(op) is list and len(op) == 2, "operation pair") + d, s = op + need(type(d) is int and type(s) is int and 0 <= d < 6 and 0 <= s < 6 and d != s, + "elementary transvection") + + +def act(ops, value, positive=False): + result = list(value) + for d, s in ops: + if positive: + result[d] += result[s] + else: + result[d] ^= result[s] + return result + + +def local_check(old, new): + validate_ops(old) + validate_ops(new) + strict = [0, 0] + # Entire Boolean truth tables, independently from builder's packed rows. + for x in range(64): + values = [(x >> i) & 1 for i in range(6)] + need(act(old, values) == act(new, values), "local Boolean map") + # Column images, including the reverse positive map, not just row sums. + for reverse in (False, True): + a, b = (old[::-1], new[::-1]) if reverse else (old, new) + for col in range(6): + values = [int(i == col) for i in range(6)] + before, after = act(a, values, True), act(b, values, True) + need(all(y <= x for x, y in zip(before, after)), "positive entrywise guard") + strict[int(reverse)] += sum(y < x for x, y in zip(before, after)) + return strict + + +def check_certificate(parent, candidate, cert): + need(cert["format"] == "r439-six-wire-boolean/1" and type(cert["seed"]) is int and cert["seed"] == 19, + "certificate version/seed") + need(cert["parent_sha256"] == C["digest"](parent), "parent digest") + need(cert["candidate_sha256"] == C["digest"](candidate), "candidate digest") + need(len(cert["blocks"]) == 60, "sixty-block domain") + need([r["frame"] for r in cert["blocks"]] == list(range(266, 326)), "frame domain") + total, selected, strict_maps, reports = 0, 0, 0, [] + candidate_a, cursor = [], 0 + for item in cert["blocks"]: + frame, start, end = (item[x] for x in ("frame", "start", "end")) + need(all(type(i) is int for i in (frame, start, end)), "integer frame/range") + indices = [i for i, g in enumerate(parent["A"]) if g[0] == frame] + need(indices == list(range(start, end)) and cursor <= start < end, "complete source block") + old_gates = parent["A"][start:end] + wires = sorted({x for _, d, ss in old_gates for x in [d, *ss]}) + same(wires, item["wires"], "physical wires") + need(len(wires) == 6 and all(r < parent["v"] or r >= 2 * parent["v"] for r in wires), "six z wires") + old = [[wires.index(d), wires.index(s)] for _, d, ss in old_gates for s in ss] + same(old, item["old"], "source operations") + candidate_a.extend(copy.deepcopy(parent["A"][cursor:start])) + new = item["new"] + if new is None: + need(item["saved_A"] == 0 and type(item["saved_A"]) is int, "unselected saving") + candidate_a.extend(copy.deepcopy(old_gates)) + else: + strict = local_check(old, new) + need({r for op in new for r in op} == set(range(6)), "all six frame paths retained") + need(len(new) < len(old) and type(item["saved_A"]) is int and + item["saved_A"] == len(old) - len(new), "shorter cost") + candidate_a.extend([[frame, wires[d], [wires[s]]] for d, s in new]) + total += len(old) - len(new) + selected += 1 + strict_maps += strict[0] > 0 + reports.append({"frame": frame, "before": len(old), "after": len(new), + "strict_positive_entries": strict}) + cursor = end + candidate_a.extend(copy.deepcopy(parent["A"][cursor:])) + expected = copy.deepcopy(parent) + expected["A"] = candidate_a + v = parent["v"] + z = [g for phase in ("A", "B") for g in expected[phase] if not v <= g[1] < 2 * v] + expected["C"] = [[1, d, list(ss)] for _, d, ss in z[::-1]] + same(expected, candidate, "exact splice with literal cleanup") + same(cert["summary"], {"trials": 172800, "selected": selected, "saved_A": total}, "summary accounting") + need(selected == 7 and total == 19 and strict_maps == 5, "new construction summary") + return {"selected": selected, "saved_A": total, "saved_complete": 2 * total, + "changed_positive_maps": strict_maps, "Boolean_inputs": 64 * selected, + "positive_column_pairs": 12 * selected, "blocks": reports} + + +def instructions(word): + n, v = 2 * word["v"] + word["R"], word["v"] + result = [] + for phase in ("D", "A", "scatter", "B", "C"): + if phase == "scatter": + for j, q in enumerate(word["ret"]): + result.append(("copy", n, q)) + for i, row in enumerate(word["scatter"]): + if j in row: + result.append(("add", v + i, n)) + result.append(("erase", n, q)) + else: + for _, d, sources in word[phase]: + result.extend(("add", d, s) for s in sources) + return result + + +def word_checks(word): + n, v = 2 * word["v"] + word["R"], word["v"] + program = instructions(word) + summaries = [] + for reverse in (False, True): + ops = [("erase" if k == "copy" else "copy" if k == "erase" else k, d, s) + for k, d, s in program[::-1]] if reverse else program + # A separate set-valued arbitrary-dirt interpreter plus positive ADDs. + values = [{r} for r in range(n)] + [set()] + positive = [1] * n + [0] + bound = 1 + for kind, d, s in ops: + if kind == "add": + values[d] ^= values[s] + positive[d] += positive[s] + elif kind == "copy": + need(not values[d], "fresh COPY temporary") + values[d] = set(values[s]) + positive[d] = positive[s] + else: + need(values[d] == values[s], "ERASE restoration") + values[d] = set() + positive[d] = 0 + bound = max(bound, positive[d]) + expected = [{r} if not v <= r < 2 * v else {r, r - v} for r in range(n)] + [set()] + need(values == expected, "complete arbitrary-dirt endpoint") + summaries.append(bound) + forward, backward = summaries + local = 64 * forward ** 3 * backward ** 2 + nine = (1 << 18) * forward ** 5 * backward ** 4 + need(local < 1 << 104 and nine < 1 << 192, "precision cap") + return {"F": forward, "B": backward, "local_payload_bits": local.bit_length(), + "nine_stage_prefix_bits": nine.bit_length(), "nine_stage_bound": str(nine), + "ADDs": sum(k == "add" for k, _, _ in program), "columns_each_order": n, + "instructions_both_orders": 2 * len(program)} + + +def prefix_binding(root): + path = next(p for p in C["load"](C["HERE"] / "SOURCES.json")["files"] if p.endswith("/global_k.py")) + tree = ast.parse((Path(root) / path).read_text()) + expressions = {} + for node in ast.walk(tree): + if isinstance(node, ast.Assign): + for target in node.targets: + if isinstance(target, ast.Name) and target.id in ("nb", "prefix"): + expressions[target.id] = node.value + expected = {"prefix": "(1< Date: Tue, 13 Oct 2026 15:28:06 +0100 Subject: [PATCH 2/2] Record completed six-wire research claim and PR link --- research/r439-six-wire-boolean/CLAIM.json | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/research/r439-six-wire-boolean/CLAIM.json b/research/r439-six-wire-boolean/CLAIM.json index 0cefa7ee2e..e23fc6f5a4 100644 --- a/research/r439-six-wire-boolean/CLAIM.json +++ b/research/r439-six-wire-boolean/CLAIM.json @@ -1,5 +1,5 @@ { - "status": "claimed", + "status": "submitted", "assignment": { "pass_number": 13, "assignment_seed": 19, @@ -37,5 +37,12 @@ "coordination": "No pinned sprint coordination issue: non-PR issues are 650 (Discussions) and 913 (prose quality). Local claim used.", "expected_deliverable": "Exact candidate or bounded negative census with independently checked local maps, full original interface replay, complete costs and native stage evidence for any construction.", "expected_finish_utc": "2026-10-13T15:00:00Z", - "claimed_at_utc": "2026-10-13T14:09:38.019451+00:00" + "claimed_at_utc": "2026-10-13T14:09:38.019451+00:00", + "completed_at_utc": "2026-10-13T14:27:59.103198+00:00", + "pr_url": "https://github.com/CrocSwap/integer-mult-bounds/pull/952", + "mathematical_head": "2b1f30ade78ad5e9b8b8fb9bca80879ba5c7ba07", + "publication_base": "007664306fff84fbb1c9a1b4053b69f439764034", + "result": "Seven complete six-wire A blocks save 19 ADDs plus 19 required cleanup ADDs beyond PR936: 23,711 to 23,673, total saving 632 versus selected PR589. Five positive integer maps change; Boolean maps, both positive guards, frame paths, original H1-H5 and paid profile preserved.", + "validation": "Full receipt identical on ordinary CPython 3.14.4 and isolated optimized read-only CPython 3.12.3; all three complete words and native 5/9/11 stages pass. 144 bridge controls, 12 local controls, seven package tests. Selected-record and source-object checks pass.", + "overlap_refresh": "Through PR951; pinned PR936 head unchanged, no duplicate whole-six-wire result. New PR950 is historical central-factor tooling and PR951 is a recursive cyclic-inverse construction." }