From e2a6cce2f9db5a2c5f9714f4b9e5292dd3a10581 Mon Sep 17 00:00:00 2001 From: Ali Romman <226877337+aliromman@users.noreply.github.com> Date: Sun, 25 Oct 2026 03:33:13 -0500 Subject: [PATCH] Admit productive P104 caller at conditional kappa 0.00304057 --- .../CONTROLLER.json | 5480 +++++++++++++++++ research/p104-productive-controller/PROOF.md | 212 + research/p104-productive-controller/README.md | 141 + .../p104-productive-controller/RESULT.json | 315 + .../p104-productive-controller/SOURCES.json | 156 + research/p104-productive-controller/TASK.json | 153 + .../p104-productive-controller/VERIFY.json | 45 + .../p104-productive-controller/WORD.json.gz | Bin 0 -> 107034 bytes research/p104-productive-controller/caller.py | 175 + research/p104-productive-controller/local.py | 264 + research/p104-productive-controller/price.py | 153 + research/p104-productive-controller/verify.py | 86 + 12 files changed, 7180 insertions(+) create mode 100644 research/p104-productive-controller/CONTROLLER.json create mode 100644 research/p104-productive-controller/PROOF.md create mode 100644 research/p104-productive-controller/README.md create mode 100644 research/p104-productive-controller/RESULT.json create mode 100644 research/p104-productive-controller/SOURCES.json create mode 100644 research/p104-productive-controller/TASK.json create mode 100644 research/p104-productive-controller/VERIFY.json create mode 100644 research/p104-productive-controller/WORD.json.gz create mode 100644 research/p104-productive-controller/caller.py create mode 100644 research/p104-productive-controller/local.py create mode 100644 research/p104-productive-controller/price.py create mode 100644 research/p104-productive-controller/verify.py diff --git a/research/p104-productive-controller/CONTROLLER.json b/research/p104-productive-controller/CONTROLLER.json new file mode 100644 index 0000000000..cc539db709 --- /dev/null +++ b/research/p104-productive-controller/CONTROLLER.json @@ -0,0 +1,5480 @@ +{ + "ambient_rank": 145, + "boundaries": { + "left": [ + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "1", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "1", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "1", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "1", + "0", + "-1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "-1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "-1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "-1", + "0", + "1", + "0", + "-1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ] + ], + "left_program": [ + [ + "SWAP", + 30, + 31 + ], + [ + "SWAP", + 29, + 30 + ], + [ + "SWAP", + 28, + 30 + ], + [ + "SWAP", + 27, + 29 + ], + [ + "SWAP", + 26, + 28 + ], + [ + "SWAP", + 25, + 30 + ], + [ + "SWAP", + 24, + 25 + ], + [ + "SWAP", + 23, + 26 + ], + [ + "SWAP", + 22, + 30 + ], + [ + "SWAP", + 20, + 26 + ], + [ + "SWAP", + 19, + 22 + ], + [ + "SWAP", + 18, + 29 + ], + [ + "SWAP", + 17, + 23 + ], + [ + "SWAP", + 16, + 27 + ], + [ + "SCALE", + 15, + "-1" + ], + [ + "SWAP", + 15, + 31 + ], + [ + "ADD", + 12, + 14, + "1" + ], + [ + "ADD", + 10, + 14, + "-1" + ], + [ + "ADD", + 8, + 14, + "1" + ], + [ + "ADD", + 6, + 14, + "-1" + ], + [ + "ADD", + 4, + 14, + "1" + ], + [ + "ADD", + 2, + 14, + "-1" + ], + [ + "ADD", + 0, + 14, + "1" + ], + [ + "SWAP", + 14, + 15 + ], + [ + "ADD", + 31, + 13, + "1" + ], + [ + "SWAP", + 13, + 30 + ], + [ + "ADD", + 10, + 12, + "1" + ], + [ + "ADD", + 8, + 12, + "-1" + ], + [ + "ADD", + 6, + 12, + "1" + ], + [ + "ADD", + 4, + 12, + "-1" + ], + [ + "ADD", + 2, + 12, + "1" + ], + [ + "ADD", + 0, + 12, + "-1" + ], + [ + "SWAP", + 12, + 14 + ], + [ + "ADD", + 31, + 11, + "-1" + ], + [ + "ADD", + 30, + 11, + "-1" + ], + [ + "SCALE", + 11, + "-1" + ], + [ + "SWAP", + 11, + 29 + ], + [ + "ADD", + 8, + 10, + "1" + ], + [ + "ADD", + 6, + 10, + "-1" + ], + [ + "ADD", + 4, + 10, + "1" + ], + [ + "ADD", + 2, + 10, + "-1" + ], + [ + "ADD", + 0, + 10, + "1" + ], + [ + "SWAP", + 10, + 13 + ], + [ + "ADD", + 31, + 9, + "1" + ], + [ + "ADD", + 30, + 9, + "1" + ], + [ + "ADD", + 29, + 9, + "1" + ], + [ + "SWAP", + 9, + 28 + ], + [ + "ADD", + 6, + 8, + "1" + ], + [ + "ADD", + 4, + 8, + "-1" + ], + [ + "ADD", + 2, + 8, + "1" + ], + [ + "ADD", + 0, + 8, + "-1" + ], + [ + "SWAP", + 8, + 12 + ], + [ + "ADD", + 31, + 7, + "-1" + ], + [ + "ADD", + 30, + 7, + "-1" + ], + [ + "ADD", + 29, + 7, + "-1" + ], + [ + "ADD", + 28, + 7, + "-1" + ], + [ + "SCALE", + 7, + "-1" + ], + [ + "SWAP", + 7, + 27 + ], + [ + "ADD", + 4, + 6, + "1" + ], + [ + "ADD", + 2, + 6, + "-1" + ], + [ + "ADD", + 0, + 6, + "1" + ], + [ + "SWAP", + 6, + 11 + ], + [ + "ADD", + 31, + 5, + "1" + ], + [ + "ADD", + 30, + 5, + "1" + ], + [ + "ADD", + 29, + 5, + "1" + ], + [ + "ADD", + 28, + 5, + "1" + ], + [ + "ADD", + 27, + 5, + "1" + ], + [ + "SWAP", + 5, + 26 + ], + [ + "ADD", + 2, + 4, + "1" + ], + [ + "ADD", + 0, + 4, + "-1" + ], + [ + "SWAP", + 4, + 10 + ], + [ + "ADD", + 31, + 3, + "-1" + ], + [ + "ADD", + 30, + 3, + "-1" + ], + [ + "ADD", + 29, + 3, + "-1" + ], + [ + "ADD", + 28, + 3, + "-1" + ], + [ + "ADD", + 27, + 3, + "-1" + ], + [ + "ADD", + 26, + 3, + "-1" + ], + [ + "SCALE", + 3, + "-1" + ], + [ + "SWAP", + 3, + 25 + ], + [ + "ADD", + 0, + 2, + "1" + ], + [ + "SWAP", + 2, + 9 + ], + [ + "ADD", + 31, + 1, + "1" + ], + [ + "ADD", + 30, + 1, + "1" + ], + [ + "ADD", + 29, + 1, + "1" + ], + [ + "ADD", + 28, + 1, + "1" + ], + [ + "ADD", + 27, + 1, + "1" + ], + [ + "ADD", + 26, + 1, + "1" + ], + [ + "ADD", + 25, + 1, + "1" + ], + [ + "SWAP", + 1, + 24 + ], + [ + "SWAP", + 0, + 8 + ] + ], + "right": [ + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "-1", + "1", + "-1", + "1", + "-1", + "1", + "-1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "-1", + "1", + "-1", + "1", + "-1", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "-1", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "-1", + "1", + "-1", + "1", + "-1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "-1", + "1", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "-1", + "1", + "-1", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "-1", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "-1", + "1", + "-1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "-1", + "1", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "-1", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "-1", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "-1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "-1", + "1", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "-1" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ] + ], + "right_program": [ + [ + "ADD", + 30, + 31, + "-1" + ], + [ + "ADD", + 29, + 31, + "-1" + ], + [ + "ADD", + 28, + 31, + "-1" + ], + [ + "ADD", + 27, + 31, + "-1" + ], + [ + "SCALE", + 31, + "-1" + ], + [ + "ADD", + 31, + 30, + "-1" + ], + [ + "ADD", + 29, + 30, + "-1" + ], + [ + "ADD", + 28, + 30, + "-1" + ], + [ + "ADD", + 27, + 30, + "-1" + ], + [ + "ADD", + 31, + 29, + "-1" + ], + [ + "ADD", + 28, + 29, + "-1" + ], + [ + "ADD", + 27, + 29, + "-1" + ], + [ + "SCALE", + 29, + "-1" + ], + [ + "ADD", + 31, + 28, + "-1" + ], + [ + "ADD", + 27, + 28, + "-1" + ], + [ + "SWAP", + 28, + 29 + ], + [ + "ADD", + 31, + 27, + "-1" + ], + [ + "SCALE", + 27, + "-1" + ], + [ + "SWAP", + 27, + 29 + ], + [ + "ADD", + 31, + 26, + "1" + ], + [ + "SWAP", + 26, + 29 + ], + [ + "ADD", + 29, + 25, + "-1" + ], + [ + "ADD", + 24, + 25, + "-1" + ], + [ + "SWAP", + 25, + 28 + ], + [ + "ADD", + 28, + 24, + "1" + ], + [ + "SWAP", + 23, + 29 + ], + [ + "SWAP", + 22, + 25 + ], + [ + "SWAP", + 20, + 23 + ], + [ + "SWAP", + 19, + 25 + ], + [ + "SWAP", + 18, + 27 + ], + [ + "SWAP", + 17, + 29 + ], + [ + "SWAP", + 16, + 31 + ], + [ + "ADD", + 14, + 15, + "-1" + ], + [ + "SWAP", + 15, + 30 + ], + [ + "ADD", + 13, + 14, + "-1" + ], + [ + "SWAP", + 14, + 30 + ], + [ + "ADD", + 12, + 13, + "-1" + ], + [ + "SWAP", + 13, + 22 + ], + [ + "ADD", + 11, + 12, + "-1" + ], + [ + "SWAP", + 12, + 30 + ], + [ + "ADD", + 10, + 11, + "-1" + ], + [ + "SWAP", + 11, + 18 + ], + [ + "ADD", + 9, + 10, + "-1" + ], + [ + "SWAP", + 10, + 22 + ], + [ + "ADD", + 8, + 9, + "-1" + ], + [ + "SWAP", + 9, + 26 + ], + [ + "SWAP", + 8, + 30 + ], + [ + "SWAP", + 7, + 16 + ], + [ + "SWAP", + 6, + 18 + ], + [ + "SWAP", + 5, + 20 + ], + [ + "SWAP", + 4, + 22 + ], + [ + "SWAP", + 3, + 24 + ], + [ + "SWAP", + 2, + 26 + ], + [ + "SWAP", + 1, + 28 + ], + [ + "SWAP", + 0, + 30 + ] + ] + }, + "diagonal": [ + [ + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1 + ], + [ + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 1 + ], + [ + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 1 + ], + [ + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1 + ], + [ + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1 + ], + [ + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1 + ], + [ + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1 + ], + [ + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1 + ], + [ + -1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + -1, + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + -1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + -1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + -1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + -1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + -1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + -1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1 + ], + [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1 + ], + [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 1 + ], + [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 1 + ], + [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1 + ], + [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1 + ], + [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1 + ], + [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1 + ], + [ + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1 + ], + [ + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1 + ] + ], + "keep_mask": 35047648968703, + "kind": "complex", + "pairs": 16, + "physical_events": [ + [ + "LOCAL", + 0, + 0, + false + ], + [ + "Q_POWER", + 0, + -2 + ], + [ + "SIGNED_SWAP", + 0, + 1 + ], + [ + "LOCAL", + 1, + 0, + false + ], + [ + "Q_POWER", + 1, + 2 + ], + [ + "SIGNED_SWAP", + 1, + 0 + ], + [ + "IDLE", + 1, + [ + 0, + 1 + ] + ], + [ + "ADD", + 0, + 2, + 1 + ], + [ + "ADD", + 3, + 1, + -1 + ], + [ + "QUERY_SHEAR", + 2, + 0, + false + ], + [ + "ADD", + 0, + 2, + -1 + ], + [ + "ADD", + 3, + 1, + 1 + ], + [ + "Q_POWER", + 2, + -2 + ], + [ + "SIGNED_SWAP", + 2, + 3 + ], + [ + "LOCAL", + 3, + 1, + false + ], + [ + "Q_POWER", + 3, + 2 + ], + [ + "SIGNED_SWAP", + 3, + 2 + ], + [ + "IDLE", + 2, + [ + 0, + 1, + 3 + ] + ], + [ + "ADD", + 2, + 4, + 1 + ], + [ + "ADD", + 5, + 3, + -1 + ], + [ + "QUERY_SHEAR", + 4, + 1, + false + ], + [ + "ADD", + 2, + 4, + -1 + ], + [ + "ADD", + 5, + 3, + 1 + ], + [ + "Q_POWER", + 4, + -2 + ], + [ + "SIGNED_SWAP", + 4, + 5 + ], + [ + "LOCAL", + 5, + 2, + false + ], + [ + "Q_POWER", + 5, + 2 + ], + [ + "SIGNED_SWAP", + 5, + 4 + ], + [ + "IDLE", + 3, + [ + 0, + 1, + 3, + 5 + ] + ], + [ + "ADD", + 4, + 6, + 1 + ], + [ + "ADD", + 7, + 5, + -1 + ], + [ + "QUERY_SHEAR", + 6, + 2, + false + ], + [ + "ADD", + 4, + 6, + -1 + ], + [ + "ADD", + 7, + 5, + 1 + ], + [ + "Q_POWER", + 6, + -2 + ], + [ + "SIGNED_SWAP", + 6, + 7 + ], + [ + "LOCAL", + 7, + 3, + false + ], + [ + "Q_POWER", + 7, + 2 + ], + [ + "SIGNED_SWAP", + 7, + 6 + ], + [ + "IDLE", + 4, + [ + 0, + 1, + 3, + 5, + 7 + ] + ], + [ + "ADD", + 6, + 8, + 1 + ], + [ + "ADD", + 9, + 7, + -1 + ], + [ + "QUERY_SHEAR", + 8, + 3, + false + ], + [ + "ADD", + 6, + 8, + -1 + ], + [ + "ADD", + 9, + 7, + 1 + ], + [ + "Q_POWER", + 8, + -2 + ], + [ + "SIGNED_SWAP", + 8, + 9 + ], + [ + "LOCAL", + 9, + 4, + false + ], + [ + "Q_POWER", + 9, + 2 + ], + [ + "SIGNED_SWAP", + 9, + 8 + ], + [ + "IDLE", + 5, + [ + 0, + 1, + 3, + 5, + 7, + 9 + ] + ], + [ + "ADD", + 8, + 10, + 1 + ], + [ + "ADD", + 11, + 9, + -1 + ], + [ + "QUERY_SHEAR", + 10, + 4, + false + ], + [ + "ADD", + 8, + 10, + -1 + ], + [ + "ADD", + 11, + 9, + 1 + ], + [ + "Q_POWER", + 10, + -2 + ], + [ + "SIGNED_SWAP", + 10, + 11 + ], + [ + "LOCAL", + 11, + 5, + false + ], + [ + "Q_POWER", + 11, + 2 + ], + [ + "SIGNED_SWAP", + 11, + 10 + ], + [ + "IDLE", + 6, + [ + 0, + 1, + 3, + 5, + 7, + 9, + 11 + ] + ], + [ + "ADD", + 10, + 12, + 1 + ], + [ + "ADD", + 13, + 11, + -1 + ], + [ + "QUERY_SHEAR", + 12, + 5, + false + ], + [ + "ADD", + 10, + 12, + -1 + ], + [ + "ADD", + 13, + 11, + 1 + ], + [ + "Q_POWER", + 12, + -2 + ], + [ + "SIGNED_SWAP", + 12, + 13 + ], + [ + "LOCAL", + 13, + 6, + false + ], + [ + "Q_POWER", + 13, + 2 + ], + [ + "SIGNED_SWAP", + 13, + 12 + ], + [ + "IDLE", + 7, + [ + 0, + 1, + 3, + 5, + 7, + 9, + 11, + 13 + ] + ], + [ + "ADD", + 12, + 14, + 1 + ], + [ + "ADD", + 15, + 13, + -1 + ], + [ + "QUERY_SHEAR", + 14, + 6, + false + ], + [ + "ADD", + 12, + 14, + -1 + ], + [ + "ADD", + 15, + 13, + 1 + ], + [ + "Q_POWER", + 14, + -2 + ], + [ + "SIGNED_SWAP", + 14, + 15 + ], + [ + "LOCAL", + 15, + 7, + false + ], + [ + "Q_POWER", + 15, + 2 + ], + [ + "SIGNED_SWAP", + 15, + 14 + ], + [ + "ADD", + 14, + 16, + 1 + ], + [ + "ADD", + 17, + 15, + -1 + ], + [ + "QUERY_SHEAR", + 16, + 7, + false + ], + [ + "ADD", + 14, + 16, + -1 + ], + [ + "ADD", + 17, + 15, + 1 + ], + [ + "Q_POWER", + 16, + -2 + ], + [ + "SIGNED_SWAP", + 16, + 17 + ], + [ + "LOCAL", + 17, + 8, + false + ], + [ + "Q_POWER", + 17, + 2 + ], + [ + "SIGNED_SWAP", + 17, + 16 + ], + [ + "ADD", + 16, + 18, + 1 + ], + [ + "ADD", + 19, + 17, + -1 + ], + [ + "QUERY_SHEAR", + 18, + 8, + false + ], + [ + "ADD", + 16, + 18, + -1 + ], + [ + "ADD", + 19, + 17, + 1 + ], + [ + "Q_POWER", + 18, + -2 + ], + [ + "SIGNED_SWAP", + 18, + 19 + ], + [ + "LOCAL", + 19, + 9, + false + ], + [ + "Q_POWER", + 19, + 2 + ], + [ + "SIGNED_SWAP", + 19, + 18 + ], + [ + "ADD", + 18, + 20, + 1 + ], + [ + "ADD", + 21, + 19, + -1 + ], + [ + "QUERY_SHEAR", + 20, + 9, + false + ], + [ + "ADD", + 18, + 20, + -1 + ], + [ + "ADD", + 21, + 19, + 1 + ], + [ + "Q_POWER", + 20, + -2 + ], + [ + "SIGNED_SWAP", + 20, + 21 + ], + [ + "LOCAL", + 21, + 10, + false + ], + [ + "Q_POWER", + 21, + 2 + ], + [ + "SIGNED_SWAP", + 21, + 20 + ], + [ + "ADD", + 20, + 22, + 1 + ], + [ + "ADD", + 23, + 21, + -1 + ], + [ + "QUERY_SHEAR", + 22, + 10, + false + ], + [ + "ADD", + 20, + 22, + -1 + ], + [ + "ADD", + 23, + 21, + 1 + ], + [ + "Q_POWER", + 22, + -2 + ], + [ + "SIGNED_SWAP", + 22, + 23 + ], + [ + "LOCAL", + 23, + 11, + false + ], + [ + "Q_POWER", + 23, + 2 + ], + [ + "SIGNED_SWAP", + 23, + 22 + ], + [ + "ADD", + 22, + 24, + 1 + ], + [ + "ADD", + 25, + 23, + -1 + ], + [ + "QUERY_SHEAR", + 24, + 11, + false + ], + [ + "ADD", + 22, + 24, + -1 + ], + [ + "ADD", + 25, + 23, + 1 + ], + [ + "Q_POWER", + 24, + -2 + ], + [ + "SIGNED_SWAP", + 24, + 25 + ], + [ + "LOCAL", + 25, + 12, + false + ], + [ + "Q_POWER", + 25, + 2 + ], + [ + "SIGNED_SWAP", + 25, + 24 + ], + [ + "ADD", + 24, + 26, + 1 + ], + [ + "ADD", + 27, + 25, + -1 + ], + [ + "QUERY_SHEAR", + 26, + 12, + false + ], + [ + "ADD", + 24, + 26, + -1 + ], + [ + "ADD", + 27, + 25, + 1 + ], + [ + "Q_POWER", + 26, + -2 + ], + [ + "SIGNED_SWAP", + 26, + 27 + ], + [ + "LOCAL", + 27, + 13, + false + ], + [ + "Q_POWER", + 27, + 2 + ], + [ + "SIGNED_SWAP", + 27, + 26 + ], + [ + "ADD", + 26, + 28, + 1 + ], + [ + "ADD", + 29, + 27, + -1 + ], + [ + "QUERY_SHEAR", + 28, + 13, + false + ], + [ + "ADD", + 26, + 28, + -1 + ], + [ + "ADD", + 29, + 27, + 1 + ], + [ + "Q_POWER", + 28, + -2 + ], + [ + "SIGNED_SWAP", + 28, + 29 + ], + [ + "LOCAL", + 29, + 14, + false + ], + [ + "Q_POWER", + 29, + 2 + ], + [ + "SIGNED_SWAP", + 29, + 28 + ], + [ + "ADD", + 28, + 30, + 1 + ], + [ + "ADD", + 31, + 29, + -1 + ], + [ + "QUERY_SHEAR", + 30, + 14, + false + ], + [ + "ADD", + 28, + 30, + -1 + ], + [ + "ADD", + 31, + 29, + 1 + ], + [ + "Q_POWER", + 30, + -2 + ], + [ + "SIGNED_SWAP", + 30, + 31 + ], + [ + "LOCAL", + 31, + 15, + false + ], + [ + "Q_POWER", + 31, + 2 + ], + [ + "SIGNED_SWAP", + 31, + 30 + ], + [ + "LOCAL", + 32, + 15, + false + ], + [ + "IDLE", + 7, + [ + 17, + 19, + 21, + 23, + 25, + 27, + 29, + 31, + 32 + ] + ], + [ + "IDLE", + 8, + [ + 19, + 21, + 23, + 25, + 27, + 29, + 31, + 32 + ] + ], + [ + "IDLE", + 9, + [ + 21, + 23, + 25, + 27, + 29, + 31, + 32 + ] + ], + [ + "IDLE", + 10, + [ + 23, + 25, + 27, + 29, + 31, + 32 + ] + ], + [ + "IDLE", + 11, + [ + 25, + 27, + 29, + 31, + 32 + ] + ], + [ + "IDLE", + 12, + [ + 27, + 29, + 31, + 32 + ] + ], + [ + "IDLE", + 13, + [ + 29, + 31, + 32 + ] + ], + [ + "IDLE", + 14, + [ + 31, + 32 + ] + ], + [ + "ADD", + 30, + 28, + 1 + ], + [ + "ADD", + 29, + 31, + -1 + ], + [ + "ADD", + 28, + 26, + 1 + ], + [ + "ADD", + 27, + 29, + -1 + ], + [ + "ADD", + 26, + 24, + 1 + ], + [ + "ADD", + 25, + 27, + -1 + ], + [ + "ADD", + 24, + 22, + 1 + ], + [ + "ADD", + 23, + 25, + -1 + ], + [ + "ADD", + 22, + 20, + 1 + ], + [ + "ADD", + 21, + 23, + -1 + ], + [ + "ADD", + 20, + 18, + 1 + ], + [ + "ADD", + 19, + 21, + -1 + ], + [ + "ADD", + 18, + 16, + 1 + ], + [ + "ADD", + 17, + 19, + -1 + ], + [ + "ADD", + 16, + 14, + 1 + ], + [ + "ADD", + 15, + 17, + -1 + ], + [ + "ADD", + 14, + 12, + 1 + ], + [ + "ADD", + 13, + 15, + -1 + ], + [ + "ADD", + 12, + 10, + 1 + ], + [ + "ADD", + 11, + 13, + -1 + ], + [ + "ADD", + 10, + 8, + 1 + ], + [ + "ADD", + 9, + 11, + -1 + ], + [ + "ADD", + 8, + 6, + 1 + ], + [ + "ADD", + 7, + 9, + -1 + ], + [ + "ADD", + 6, + 4, + 1 + ], + [ + "ADD", + 5, + 7, + -1 + ], + [ + "ADD", + 4, + 2, + 1 + ], + [ + "ADD", + 3, + 5, + -1 + ], + [ + "ADD", + 2, + 0, + 1 + ], + [ + "ADD", + 1, + 3, + -1 + ], + [ + "SIGNED_SWAP", + 0, + 1 + ], + [ + "SIGNED_SWAP", + 2, + 3 + ], + [ + "SIGNED_SWAP", + 4, + 5 + ], + [ + "SIGNED_SWAP", + 6, + 7 + ], + [ + "SIGNED_SWAP", + 8, + 9 + ], + [ + "SIGNED_SWAP", + 10, + 11 + ], + [ + "SIGNED_SWAP", + 12, + 13 + ], + [ + "SIGNED_SWAP", + 14, + 15 + ], + [ + "SIGNED_SWAP", + 16, + 17 + ], + [ + "SIGNED_SWAP", + 18, + 19 + ], + [ + "SIGNED_SWAP", + 20, + 21 + ], + [ + "SIGNED_SWAP", + 22, + 23 + ], + [ + "SIGNED_SWAP", + 24, + 25 + ], + [ + "SIGNED_SWAP", + 26, + 27 + ], + [ + "SIGNED_SWAP", + 28, + 29 + ], + [ + "SIGNED_SWAP", + 30, + 31 + ] + ], + "prefix_pairs": 7, + "wrapper_sites": [ + 1, + 3, + 5, + 7, + 9, + 11, + 13, + 15, + 17, + 19, + 21, + 23, + 25, + 27, + 29, + 31 + ] +} diff --git a/research/p104-productive-controller/PROOF.md b/research/p104-productive-controller/PROOF.md new file mode 100644 index 0000000000..e0bb34fbef --- /dev/null +++ b/research/p104-productive-controller/PROOF.md @@ -0,0 +1,212 @@ +# Productive P104 caller and complete conditional cost + +This construction gives conditional `kappa = 304057/100000000 = 0.00304057`. +It changes the complete recursive profile. It does not change the selected +record. The five retained framework assumptions are native all-column +implementation, owned erasure, the uniform compiler, precision and tape cost, +and analytic recovery. This package checks the new finite interfaces and +all parameters of that conditional calculation. It does not claim an +unconditional integer multiplication theorem. + +## 1. The complete source word + +Use Gareth Davidson's PR2305 composition of David Arias's PR2152 coalesced +P104 word and Cinna Davis's PR2219 private reuse. `local.construct()` rebuilds +that exact word from its archived source and compares the full report with +PR2305. It does not run or reuse the old owner-price model. `WORD.json.gz` +contains the emitted word, all binary frames, all public boundaries and the +104 retained port indices. It has 25,311 events and 735 independent public +inputs. The 208 live main fields are X_r and Y_r for the 104 retained indices. +All other public fields are independent helpers, including the 16 punctured +main roles. Eight distinct owned lifetime labels can use one physical slot. + +At each frame V let Phi_V be the pinned nine-axis native chart. A register +in frame V contains Phi_V times its logical value. A MOVE applies +Phi_new Phi_old^(-1). Each ADD or SCALE uses the same frame on every operand. +COPY reads into a cleared owned field; each final private CLEAR uses the +retained owned-erasure contract. The exact endpoint is + +```text +X_r -> X_r +Y_r -> Y_r + X_r for every retained port r +h -> h for every one of the 527 helpers +owned -> 0 for all eight owned lifetime labels +``` + +The first interpreter checks this matrix on all 743 public and owned rows, +including arbitrary owned entrance values before initialization. A separate +interpreter applies the transposed instruction matrices in reverse order. +It uses dense integer rows with binary denominators. Both checks cover all +552,049 coefficients, including zeros. The private slot is initialized before +use and is cleared after use; its peak occupancy is one. It receives no +productive credit. The source word, correction and reuse are predecessor +results, not new local circuits. + +For each positive width f replace every chart by its factorwise tensor power. +Every common-chart scalar step still acts on the same logical values, with +its scalar coefficient outside the tensor power. The frame induction and +rational endpoint therefore hold at every f. Native phase checks include the +absolute scalar phase. Equality of an unsigned tableau alone is not used. +The pinned compiler produces each native recipe; a separate Gaussian +interpreter checks every Pauli image and the global phase. This establishes +the ideal linear identities. The retained all-column implementation and +rounded arithmetic hypotheses remain explicit. + +## 2. The local productive interface + +All public paths are nested. For each helper h, the complete boundary map +Phi_final Phi_initial^(-1) has Gaussian rank +`dim(final) - dim(initial)`. Native lowering checks this rank and supplies +its two monomial boundary maps. These maps give independent ordinary +Gaussian targets at these ranks: + +```text +helpers = {4:51, 5:36, 7:24, 8:122, 9:294} +paid = {1:2429, 2:557, 3:389, 4:112, 5:108, 6:16, 7:13, 9:1} +``` + +There are 527 helper targets and 3,625 paid calls. The paid rank mass is +5,894. Helper rank mass is 4,174. The main boundary progress is +`2*104*8 = 1664`, leaving 56 paid private-copy ranks. The unused helper 711 +keeps its paid H9 and its productive H9; they cancel in the moment. It is +not silently removed from one side of the calculation. + +The 2,981 distinct native maps include every paid occurrence and every helper +boundary. The 208 intrinsic main adapters have rank zero. Their phases give +these physical maps on port q: + +```math +Q_q=\frac{1+i}{2}I+\frac{1-i}{2}X_q,\qquad +F_s=D_s\begin{pmatrix}1&0\\Q_q^{-1}&1\end{pmatrix}. +``` + +At stage zero, `D_0=H9 Q_q^(-1)`. At later stages D_s acts on eight fresh +axes. The complete source accepts arbitrary main fields and arbitrary helper +fields, so this is a full interface, not a main-input subspace restriction. +Each full call uses a fresh independent helper inventory. + +## 3. A forward source supplies both caller orientations + +Retain Cinna Davis's literal p16/a7 controller from `joint-helper-lattice`. +Its 18 full sites formerly used two forward and sixteen backward interfaces. +Use the inverse of the direct wrapper in Ali Romman's PR5398. Put + +```math +R=\begin{pmatrix}0&1\\-Q^{-2}&0\end{pmatrix},\quad +B_s=R^{-1}F_sR + =D_s\begin{pmatrix}1&-Q\\0&1\end{pmatrix}. +``` + +For each backward site, the emitted execution order is + +```text +x <- Q^-2 x +(x,y) <- (y,-x) +execute the unchanged complete forward supplier +y <- Q^2 y +(x,y) <- (-y,x) +``` + +All 18 +full invocations now use the published forward word. No instruction-level +transpose of its COPY or CLEAR operations is needed. The wrapper acts only +on the two main fields; every helper and owned exit remains the source exit. + +Exact Gaussian arithmetic gives `Q^2=Q^-2=X_q`, with phase +1. It is a native +address translation, at every positive tensor width. Scalar minus signs stay +outside tensor substitution. D_s commutes with Q. Thus both signed exchanges +and both translations are ordinary operations. They add no Gaussian call. +The full Laurent replay retains Q as a formal invertible variable; it does +not impose Q^2=I to prove the caller identity. + +The physical check binds all 104 ports at all 18 full sites. It checks the +orthogonal route, inverse route, fixed central direction, four boundary +contacts and exact cross term. This gives 7,488 boundary contacts in the +265-axis layout. The 53,248 central-square column checks cover all nine-axis +columns at every port. Each route changes at most 17 axes. The phase check +also binds all 3,328 main targets and every whole idle job. If an idle includes +stage zero, its first eight axes are the actual orthonormal basis of +q-perpendicular; the residual translation is charged as ordinary work. +Unused fresh axes are spectators and can be deleted by an injective relabeling. + +The 15 thin queries keep the existing paid implementation: initialize an +owned field, COPY the source, perform Q or Q^-1, ADD to the target, and erase +the owned field. There is one paid rank-one call per port and no target +credit for that field. Q^-1 uses a positive Gaussian and its translation. +The one physical owned slot is reused sequentially by full and thin calls. + +## 4. The complete invoice + +For each full site add the local paid and helper profiles. For each thin +site add 104 H1 calls. For each idle with j stages add 208 H(8j) calls. +Each main Laurent diagonal gives 104 targets of rank `1+8j`. +A separate count from the two path lengths 7 and 8 gives the same invoice. +The resulting complete counts are + +```text +paid calls: 69930 +productive fields: 12814 = 18*527 + 32*104 +thin paid calls: 1560 +whole idle jobs: 3120 +rank mass surplus: 760 +maximum target: 145 +maximum paid rank: 72 +``` + +`RESULT.json` gives both full histograms. Every helper boundary and main target +has a native map. All COPY paths, source correction, cleanup, thin calls and +whole idles are included. The old fixed-window owner assignment is not used. +The retained mixed-target theorem supplies the productive matching and +uniform recursion from this complete field interface. No new helper output +is treated as free work without its corresponding paid path. + +Two rational interval engines check `sum(T_r*r^(1-k)) - sum(P_r*r^(1-k))`. +A sign-changing crossing is enclosed in +`(0.00304057807630, 0.00304057807631)`. This is a bound for the stated profile, +not an optimum over local words or controllers. The tested saving is +0.003040575. The claimed kappa 0.00304057 leaves more than 8.0763e-9 to this +crossing and improves selected 0.003027288235 by 0.000013281765. + +The complete tail calculation uses power 1024, cutoff 17, target floor 18, +offset 1/5, and reserve 1e-10. The paid ratio is less than +0.999999996781291. The higher-moment ratio is less than 0.965182173 and the +completion ratio is less than 0.963354733. Both tail ratios are below 0.97; +`0.97^128 < 1/16`. Splitting and rounding give the strict normalized bound +`5242880004882813/5242880536870912 < 1`. The old cutoff 20 fails for this +larger helper inventory and is rejected by a control. + +With complement factor 63/64 and logarithm power 1000, the compiler uses +`H=64215200000000` and `N=2^H`. The integer test exponent is 45,868; +`(H+1)^1000 < 2^45868`, and the preceding grid point fails. The arithmetic +checks all 54 strict outer predicates and four functional predicates. +The retained ordinary BIT saving is 0.0034, above the new complex requirement. +No stronger BIT result is needed. The uniform compiler word is specified by +the retained finite algorithm and is not materialized. + +## 5. Ordinary work, storage and precision boundary + +The source scalar allowance is 217,428 real operations. The route allowance +counts each paid map, both normalizers for every helper, all intrinsic main +adapters, all four fresh-stage contacts per port, and the eight owned +lifetimes. Each fixed map is on at most 17 active axes and has a 1,000-unit +allowance. The sum is below 10^7 per full call. The global raw allowance is +184,647,552, below the funded 10^9 bound. It includes thin COPY/ADD/erase, +scalar boundary programs, all signed exchanges and translations. One owned +field suffices in addition to the independent public fields. No helper +initialization assumes its arbitrary dirt is zero. + +The source checks fewer than 26,000 events and `1+abs(coefficient) < 2^16` +for every scalar update. A safe local scalar growth bound is 2^(16*26000). +Each rank-r tensor Gaussian has row l1 norm at most 2^(rf). The complete +raw implementation therefore has a conservative growth bound +`2^(10^9 + R*f)`, where R is the sum of the full paid ranks in RESULT.json. +Independent local defects can be bounded by the number of raw operations +and paid calls times this factor. These are finite upper bounds, not sharp +or attained norms. They include the intermediate growth in the three-ADD +signed exchange. They provide parameters for the retained precision/tape +contract; a complete rounded integer multiplier is not executed here. + +The claim retains the five framework assumptions stated at the start. +Normal and optimized Python checks, immutable source authentication, failure +controls and a Git-free export are verification of this conditional package. +They are not independent human acceptance or a proof-kernel theorem. diff --git a/research/p104-productive-controller/README.md b/research/p104-productive-controller/README.md new file mode 100644 index 0000000000..09dce91f62 --- /dev/null +++ b/research/p104-productive-controller/README.md @@ -0,0 +1,141 @@ +# Conditional kappa 0.00304057 from a productive P104 caller + +This construction gives **conditional kappa = 304057/100000000 = 0.00304057**. +It improves the selected +[PR #5413](https://github.com/CrocSwap/integer-mult-bounds/pull/5413) +value 0.003027288235 by **0.000013281765**, about **0.439%**. The complete +recursive profile changes. This is not extra precision on the old crossing. +The selected files and other contributors' work stay unchanged. + +The contribution binds the completed P104 word from +[PR #2305](https://github.com/CrocSwap/integer-mult-bounds/pull/2305) +to the current mixed-target recursion. Its 527 independent helper outputs +receive their actual Gaussian target ranks. An explicit caller uses that +published forward word at all 18 full sites. Signed exchanges and central-square +translations supply the sixteen backward interfaces. The word's COPY and +CLEAR operations do not need an instruction-level transpose. + +Read [the proof and full cost boundary](PROOF.md), +[the complete receipt](RESULT.json), [the emitted local word](WORD.json.gz), +[the emitted caller](CONTROLLER.json), and [exact source pins](SOURCES.json). +The source circuit and private reuse are credited predecessor results. +The new result is their physical caller and complete productive admission. + +| Verified quantity | Result | +| --- | ---: | +| Independent local public inputs | 735 | +| Productive helpers per full call | 527 | +| Owned lifetimes / peak owned fields | 8 / 1 | +| Full calls / thin calls / whole idle jobs | 18 / 15 / 3,120 | +| Complete paid calls / productive fields | 69,930 / 12,814 | +| Complete rank-mass surplus | 760 | +| Native paid and helper maps / main adapters | 2,981 / 208 | +| Physical caller boundary contacts | 7,488 | +| Crossing enclosure | (0.00304057807630, 0.00304057807631) | +| Tested saving | 0.003040575 | +| Claimed complete kappa | 0.00304057 | + +The proof checks both complete matrices with different arithmetic and +chronology, exact native phases, each helper boundary, all main targets and +whole idles, every owned lifetime, and all scalar and route charges. Two +rational interval engines check the moment. Cutoff 17 and floor 18 fund the +completion tails; the old cutoff 20 fails. The finite compiler threshold is +`N = 2^64215200000000`. All 54 strict outer inequalities and four functional +inequalities pass with the retained ordinary BIT saving 0.0034. + +## Reproduce + +Use Python 3.12 and the standard library, from the repository root: + +```sh +python3 -B scripts/research_package.py --package research/p104-productive-controller --check-only +python3 -B scripts/research_package.py --package research/p104-productive-controller +``` + +The registered hook runs the full verifier normally and with `-O`. Its final +marker is: + +```text +PASS_P104_PRODUCTIVE_COMPLETE_KAPPA_00304057 +``` + +Direct replay needs no Git, network or optimizer: + +```sh +python3 -I -B research/p104-productive-controller/verify.py +python3 -I -O -B research/p104-productive-controller/verify.py +``` + +The source archive is read and authenticated, then copied to temporary +storage for reconstruction. Normal replay does not write artifacts. The +explicit `--write` mode rebuilds the three local artifacts. Controls reject a +missing COPY, a wrong frame, a wrong native phase, an omitted central +translation, unearned helper credit, the old cutoff, and insufficient BIT +stock. The compiler grid check rejects its preceding integer point. + +## Scope and coordination + +The scientific base is canonical main +`32890bc5de034ab8fc93ac88ead7279a6a416d04`, priority revision 7. The +[canonical claim](https://github.com/CrocSwap/integer-mult-bounds/discussions/5125#discussioncomment-19154639) +records this changed cost model. The +[source handoff](https://github.com/CrocSwap/integer-mult-bounds/discussions/2299) +released the old composition scope and left global binding open. The initial +fresh cache covered 401 open PRs and 4,828 Discussion records. This scope does +not take literal-slot P104 repairs, original split-contact charts, global +border grading, the Global120 constructor or the p19 compiler. Full overlap +search is coordination evidence, not a novelty theorem. + +The bound retains the selected framework assumptions: native all-column +implementation, owned erasure, uniform compiler, precision and tape cost, +and analytic recovery. The package supplies ideal uniform frame identities, +finite growth bounds and all new parameter checks. It does not execute the +complete rounded multiplier, materialize the enormous uniform compiler word, +provide a proof-kernel theorem, or claim independent human acceptance. +No fixed-profile or global optimality claim is made. + +## Sources and credit + +- **Gareth Davidson**, verified as `bitplane` in the retained source notice, + supplied [PR #2305](https://github.com/CrocSwap/integer-mult-bounds/pull/2305), + mathematical head `335e78619a17b7c418e11306f86a72fd366de35b`: the exact + [composition](https://github.com/CrocSwap/integer-mult-bounds/blob/335e78619a17b7c418e11306f86a72fd366de35b/research/p104-coalesced-private-reuse/compose.py) + and its complete local boundary. Its old owner-window price is not reused. +- **David Arias** supplied the coalesced 735-register word in + [PR #2152](https://github.com/CrocSwap/integer-mult-bounds/pull/2152), + head `05f7aad0f08992ee48ec2dd93e896d9a4567847d`. The source archive retains + the original code, README and attribution unchanged. +- **Cinna Davis** supplied the private-query reuse in + [PR #2219](https://github.com/CrocSwap/integer-mult-bounds/pull/2219) + and the productive controller lineage. The pinned + [p16 caller](https://github.com/CrocSwap/integer-mult-bounds/blob/32890bc5de034ab8fc93ac88ead7279a6a416d04/research/joint-helper-lattice/CONTROLLER.json) + supplies the finite path and boundary matrices. +- **Ali Romman** supplied the direct conjugation identity in + [PR #5398](https://github.com/CrocSwap/integer-mult-bounds/pull/5398). + This package uses its inverse to admit only forward invocations. +- **Jacob Alan Sussman** supplied the mixed-target recursion lineage in + [PR #4268](https://github.com/CrocSwap/integer-mult-bounds/pull/4268). + **zxv** supplied the retained higher-moment/compiler and outer machinery; + **Cao Yifan** supplied the source pricing lineage. Their exact interval + engines and outer ledger stay unchanged. +- The P104 lineage retains **Rohan Arun**'s scalar channel, **Chafik Boukhalfa**'s + native binding, **Adam Gall**'s schedule, **Josie Elliston** and **Ali Romman**'s + geometry/decoder work, **icekylinx**'s frame compiler, and the PR1042/PR1094 + scalar architecture. The unchanged source archive and + [native notices](https://github.com/CrocSwap/integer-mult-bounds/tree/32890bc5de034ab8fc93ac88ead7279a6a416d04/research/p104-native-channel/notices) + retain their earlier contributors and licenses. + +New caller, productive binding, independent replay, full cost and package: +Ali Romman with substantial OpenAI Codex assistance. No subagents. Apache-2.0. + +## Open next questions + +Can the P104 local word reduce its paid profile under productive accounting? +Its original coalescing optimized a different owner model. Start from the +emitted word, check active claims, preserve every independent boundary, and +compare a fully paid change against this complete invoice. + +Can an independent review confirm this changed complete admission? The first +step is the registered cold replay, followed by review of the forward wrapper, +helper normalizers and compiler. [TASK.json](TASK.json) records these questions +and their current limits. Neither question reserves work in another chat. diff --git a/research/p104-productive-controller/RESULT.json b/research/p104-productive-controller/RESULT.json new file mode 100644 index 0000000000..5637130d4a --- /dev/null +++ b/research/p104-productive-controller/RESULT.json @@ -0,0 +1,315 @@ +{ + "complete_cost": { + "compiler": { + "H": 64215200000000, + "N": "2^64215200000000", + "eta": { + "lower": "0.000000185845792706621973271570", + "upper": "0.000000185845792706621973271571" + }, + "gap": "1/1400000000", + "integer_test_exponent": 45868, + "logarithm_power": 1000, + "theta": "63/64", + "uniform_saving": "1064201/350000000", + "word_materialized": false + }, + "full_forward_calls": 18, + "gain": "2656353/200000000000", + "kappa": "304057/100000000", + "kappa_decimal": ".00304057", + "margin_at_previous": { + "lower": "3.300756773058285958096643251393", + "upper": "3.300756773058285958096643251394" + }, + "negative_controls": { + "old_BIT": "Rejected by outer inequalities", + "old_cutoff": "Rejected by completion-tail ratio greater than one" + }, + "nonrecursive": { + "fixed_scalar_growth_bound": "At most 2^(16*26000) before native factors; a declared constant, not an attained norm.", + "local_routes": 5335000, + "local_scalar": 217428, + "peak_owned_fields": 1, + "raw_budget": 1000000000, + "raw_scalar_upper": 184647552, + "tensor_native_growth_bound": "Each rank-r Gaussian has row l1 norm at most 2^(rf); sum of local ranks is 5894." + }, + "ordinary_BIT": { + "admitted": "17/5000", + "after_cover": "69/20000", + "atom": "1/250", + "before_cover": "3459/1000000", + "ordinary_saving": "8590884599/2500000000000", + "prime_rule": "odd q > 2^26*N^5 avoiding all fixed denominators and rank witnesses" + }, + "outer": { + "functional_checks": { + "actual_new_BIT_stock_sublinear": "348599999253/350000000000", + "fixed_halo_explicit_metadata_branch": "26950000001/350000000", + "new_BIT_row_stock_sublinear_in_active_group": "1395799997009/1400000000000", + "new_semantic_group_guard": "3/1400000000" + }, + "margins": { + "boundary_algebraic_matrix": "5959522795743199/1960000000000000000", + "fused_gaussian": "5959522787229597/1960000000000000000", + "global_coordinate_router": "2128401/700000000", + "group_bit_router": "2979762093614797/980000000000000000", + "group_scans": "699999999/700000000", + "main_transform": "5959521395743199/1960000000000000000", + "microbox_face_corrections": "26950000001/350000000", + "polynomial_products": "1399999999/1400000000", + "sparse_union_movement": "802209522795743199/1960000000000000000" + }, + "parameters": { + "a": "2128401/700000000", + "b": "4256803/1400000000", + "beta": "1399999997/1400000000", + "bit_saving": "17/5000", + "cap_xi": "1782209521395743199/1960000000000000000", + "complex_uniform_saving": "1064201/350000000", + "d": "1/1400000000", + "epsilon": "1399999999/1400000000", + "kappa": "304057/100000000", + "lambda_": "398783771/400000000", + "lambda_prime": "1395743199/1400000000", + "layout": "1/1400000000", + "q": "4256801/1400000000", + "r0": "1/14000000000", + "stop": "1/1400000000", + "tested_saving": "121623/40000000" + }, + "strict_checks": { + "actual_bit_above_effective": "251599/700000000", + "actual_logarithmic_gamma_guard": "1/1400000000", + "actual_logarithmic_group_guard": "177790480704256801/980000000000000000", + "alpha_logarithm_absorption": "1/14000000000", + "boundary_algebraic_matrix_above_kappa": "5595743199/1960000000000000000", + "cap_above_band": "802209521395743199/1960000000000000000", + "cap_below_cell": "177790477204256801/1960000000000000000", + "cap_below_phase_cell_power": "2137790478604256801/1960000000000000000", + "complex_above_effective": "1/1400000000", + "complex_below_one_over_32": "39493197/1400000000", + "complex_endpoint": "1/700000000", + "epsilon_below_one": "1/1400000000", + "epsilon_positive": "1399999999/1400000000", + "fine_prime_halo_umbrella": "7/2", + "fused_gaussian_above_kappa": "5587229597/1960000000000000000", + "gaussian_above_main": "695743199/980000000000000000", + "global_coordinate_router_above_kappa": "1/350000000", + "global_gamma_power_slack": "9/14000000000", + "group_below_dimension": "1/700000000", + "group_bit_router_above_kappa": "3493614797/980000000000000000", + "group_gauge_power_slack": "177790480634256801/980000000000000000", + "group_key_fits_record": "1/700000000", + "group_positive": "1399999997/1400000000", + "group_scans_above_kappa": "1744679/1750000", + "halo_covers_generic_inverse_radius": "5", + "improvement_over_user_baseline": "654799790400418148631/500000000000000000000000", + "lambda_above_internal": "1/2800000000", + "lambda_above_sigma": "3/2800000000", + "lambda_above_tau": "1/2800000000", + "lambda_prime_above_lambda": "1/2800000000", + "lambda_prime_above_leaf": "2795743197/1960000000000000000", + "leaf_saving_above_effective": "1395743197/1960000000000000000", + "main_transform_above_kappa": "4195743199/1960000000000000000", + "membership_arithmetic_fits_record": "1/1400000000", + "microbox_face_corrections_above_kappa": "53897871603/700000000", + "microbox_halo_volume": "110600000003/1400000000", + "new_complex_uniform_saving_above_b": "1/1400000000", + "new_semantic_guard_with_C1_one": "1/1400000000", + "polynomial_products_above_kappa": "1395743201/1400000000", + "positive_layout_slack": "1/1400000000", + "q_below_effective": "1/1400000000", + "q_below_internal": "1/1400000000", + "q_below_leaf": "2795743197/1960000000000000000", + "q_positive": "4256801/1400000000", + "short_record_fallback": "1395743197/1400000000", + "source_axis_superpolynomial": "1/1400000000", + "sparse_union_movement_above_kappa": "796250005595743199/1960000000000000000", + "stop_below_one": "1399999999/1400000000", + "stop_positive": "1/1400000000", + "strassen_integer_power_gap": "1951441519231", + "support_router_span": "3/1400000000", + "theta_positive_polynomial_power": "2", + "union_header_fits_record": "3/1400000000", + "union_tag_work_per_visit_fits_record": "3/1400000000" + } + }, + "paid": { + "1": 45282, + "16": 416, + "2": 10026, + "24": 416, + "3": 7002, + "32": 416, + "4": 2016, + "40": 416, + "48": 416, + "5": 1944, + "56": 416, + "6": 288, + "64": 416, + "7": 234, + "72": 208, + "9": 18 + }, + "paid_calls": 69930, + "previous_selected": "605457647/200000000000", + "productive_fields": 12814, + "query_shears": 15, + "rank_mass_surplus": 760, + "raw_headroom": [ + "80763/10000000000000", + "807631/100000000000000" + ], + "raw_root_interval": [ + "30405780763/10000000000000", + "304057807631/100000000000000" + ], + "relative_gain_percent": "265635300/605457647", + "strictification": { + "alpha": { + "lower": "0.999999996781290806577194629544", + "upper": "0.999999996781290806577194629545" + }, + "cutoff": 17, + "delta": { + "lower": "0.963354732998265185478252854607", + "upper": "0.963354732998265185478252854608" + }, + "floor": 18, + "gamma": { + "lower": "0.965182172149361102612340648898", + "upper": "0.965182172149361102612340648899" + }, + "normalized_paid_upper": "5242880004882813/5242880536870912", + "power": 1024, + "reserve": "1/10000000000", + "tail_offset": "1/5", + "tested": "121623/40000000" + }, + "targets": { + "145": 208, + "17": 416, + "25": 416, + "33": 416, + "4": 918, + "41": 416, + "49": 416, + "5": 648, + "57": 416, + "65": 416, + "7": 432, + "73": 208, + "8": 2196, + "9": 5292 + }, + "whole_idle_jobs": 3120 + }, + "limits": [ + "Conditional on the retained native all-column, owned-erasure, compiler, precision/tape and analytic-recovery framework.", + "The winning uniform compiler word and complete integer multiplier are not materialized.", + "No proof-kernel check or independent human review is claimed." + ], + "local": { + "endpoint_coefficients": 552049, + "helpers": { + "4": 51, + "5": 36, + "7": 24, + "8": 122, + "9": 294 + }, + "owned_lifetimes": 8, + "paid": { + "1": 2429, + "2": 557, + "3": 389, + "4": 112, + "5": 108, + "6": 16, + "7": 13, + "9": 1 + }, + "peak_owned_fields": 1, + "public_inputs": 735, + "real_scalar_allowance": 217428 + }, + "native": { + "distinct_maps": 2981, + "helper_normalizers": 1054, + "helpers": { + "4": 51, + "5": 36, + "7": 24, + "8": 122, + "9": 294 + }, + "main_adapters": 208, + "proof": "Every signed Pauli image and exact global phase; frame induction at every positive tensor width", + "recipe_payload_sha256": "0a12b2a43238496b226b47dd0e790882d03d1b1b66107308ab37dd6ce21a0481", + "wrong_phase_rejected": true + }, + "negative_controls": { + "missing_central_translation": "Rejected by the complete Laurent endpoint", + "omitted_copy": "Rejected by full arbitrary-input endpoint", + "unearned_helper": "Rejected by native helper census", + "wrong_frame": "Rejected by literal source-frame check" + }, + "physical_caller": { + "central_square_columns": 53248, + "full_calls": 18, + "main_targets": { + "145": 208, + "17": 416, + "25": 416, + "33": 416, + "41": 416, + "49": 416, + "57": 416, + "65": 416, + "73": 208 + }, + "new_paid_jobs": 0, + "physical_contacts": 7488, + "ports": 104, + "route_payload_sha256": "7f4f0ca768ffbc4f93dcff575592c4c67411f46b4289e45b73f715a2ad47b142", + "tensor_rule": "Factorwise native maps; scalar signs stay outside the tensor power.", + "whole_idle_jobs": { + "16": 416, + "24": 416, + "32": 416, + "40": 416, + "48": 416, + "56": 416, + "64": 416, + "72": 208 + }, + "wrapper_sites": [ + 1, + 3, + 5, + 7, + 9, + 11, + 13, + 15, + 17, + 19, + 21, + 23, + 25, + 27, + 29, + 31 + ] + }, + "separate_columns": { + "arithmetic": "Dense integer rows with binary denominators; reverse chronology", + "coefficients": 552049, + "columns": 743 + }, + "source_inputs_authenticated": 16, + "status": "PASS_P104_PRODUCTIVE_COMPLETE_KAPPA_00304057" +} diff --git a/research/p104-productive-controller/SOURCES.json b/research/p104-productive-controller/SOURCES.json new file mode 100644 index 0000000000..ee8f34a8af --- /dev/null +++ b/research/p104-productive-controller/SOURCES.json @@ -0,0 +1,156 @@ +{ + "schema_version": 1, + "base_commit": "32890bc5de034ab8fc93ac88ead7279a6a416d04", + "files": [ + { + "path": "research/p104-coalesced-private-reuse/compose.py", + "usage": "input", + "git_blob": "402e0ff402bc9822288e1bf069f0b5712069c11e", + "sha256": "9ac1c0e5ac26ed98976148ef9fd73ee58533533f9581c701deaf26ced899ae9e" + }, + { + "path": "research/p104-coalesced-private-reuse/predecessor2152.tar.gz", + "usage": "input", + "git_blob": "cc1a5cb5735ee489388004c27b709a825faf59d1", + "sha256": "67867369c99212184c13d75369811ea928c89dca0e004287a9dcf0b2c93bcdb8" + }, + { + "path": "research/complex-block-rank-optimum/inputs/selected.json.gz", + "usage": "input", + "git_blob": "5f9ef680983b0b63a4c82a4ed909837b78e690cd", + "sha256": "16bc0ebb04b4be6c0ade74badc6a0c0cdba4215eda86e4ff9f13abf8ecebd219" + }, + { + "path": "research/frame-sa504/inputs/hamming/PROTOTYPE.json", + "usage": "input", + "git_blob": "9efe30ee107b9c67f15f1c726e1a1cb5cef03929", + "sha256": "327d2a868043e846381aa58a33053c24425e8cad522ff401b10ec8af1d649a3f" + }, + { + "path": "research/p104-native-channel/inputs/P104-FIXTURE.json", + "usage": "input", + "git_blob": "2e16f99b295bb386fd13bd8fbd57b42ef54143a9", + "sha256": "516c06f6ec3cb84be588c546108de897650288576dd5fbf5fe44b9c5546ad8a4" + }, + { + "path": "research/p104-native-channel/vendor/clifford_exact.py", + "usage": "input", + "git_blob": "166841a037f069249f6f7f6dedb89248812f59e2", + "sha256": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962" + }, + { + "path": "research/p104-native-channel/vendor/native_verify.py", + "usage": "input", + "git_blob": "2c209dfa9cfade3bc20ac5fc9d876b433a147f8c", + "sha256": "3049471905b47b385c88378a1a3be7a18b8858aadd035b8a6da2f4a03b470f38" + }, + { + "path": "research/kappa-0023-productive-jobs/dependencies/kappa-next-regime/direct-decoder/sources/DATA-PHASES.json", + "usage": "input", + "git_blob": "d9a4f84211182ca200c081ea061d724c8a2cfb70", + "sha256": "c5916ff312678f12aba403847643fbbc29f643acec60bdf836fa56cd3e8251fa" + }, + { + "path": "research/joint-helper-lattice/CONTROLLER.json", + "usage": "input", + "git_blob": "49a2f0675819f9deeea27ed77be2c2b6ff2e87e5", + "sha256": "1f5d6aa267e4e66048818714b5d3b5eae17a58abe91d15deeaa34574f7391a5f" + }, + { + "path": "research/higher-moment-strictification/verify.py", + "usage": "input", + "git_blob": "4b24a5096154736ce060474eb8c72dc64c303699", + "sha256": "0ce7e7137422d5ffeda22085c81fa88471bbe963100fdad62e659f1e3bf89326" + }, + { + "path": "research/kappa-rebuild/architecture/mixed_target_probe.py", + "usage": "input", + "git_blob": "4fc05ab08138218ba9f09e5c89b649afae7c914e", + "sha256": "011c3c9d0cf81103dc84d709a0e36793eb7c5ae3f23c85eac27650ef13afa04a" + }, + { + "path": "research/pr4359-p7-padding/dependencies/compiler-refill/endpoint.py", + "usage": "input", + "git_blob": "340e1f0ffb8a1a9c38fbbd9119580b6d23e01b59", + "sha256": "d097e55f06c3f244f2074ffd7c1a0a5f3c4b4b6a6accf9619d1dde5c0ae85e15" + }, + { + "path": "research/query-thinned-controllers/RESULT.json", + "usage": "input", + "git_blob": "e0695152c98d727edfd0d2034b58a1c7e8682c0c", + "sha256": "6ebfc8c0f09166f4834e9d7427410cb31aefff2cd4d4ce588c8e52c9c70e9a0f" + }, + { + "path": "research/pr4359-p7-padding/native_inventory.py", + "usage": "input", + "git_blob": "8d2d96e3998254c2333c43fe47cdfd074cbd811e", + "sha256": "65539acaf45bdfe8c5aee6830f9c9b3d1107c442a60842ef803fdd7688de8f32" + }, + { + "path": "research/p104-coalesced-private-reuse/RESULT.json", + "usage": "input", + "git_blob": "f4cb528c2cc413f34e2ac83c42225c7a1cf11bd3", + "sha256": "580adb3de7037acc6f7e41cc186e8a210463afaa696d57892643d55acd0040c8" + }, + { + "path": "research/p104-coalesced-private-reuse/SOURCES.json", + "usage": "input", + "git_blob": "58f245e194b794b7bacd8ea88f9814d373ed91c3", + "sha256": "232fc3ca3928acc704333def0b8391f94a8e8736ef045c1b5de5b396be37cdc2" + }, + { + "path": "AGENTS.md", + "usage": "provenance", + "git_blob": "fa006ceb6b6b9d6c0e799f210963f4587ecfb162", + "sha256": "fbee67ab9e0ae4629a35fd9dba69c8f7e29e4a15392eb2d0f75d8768ffb65f40" + }, + { + "path": "autoresearch.md", + "usage": "provenance", + "git_blob": "2fe84a7b30b1e26e60ce0ec4775894eb1831c5d6", + "sha256": "d16f0d3bb4d4b213d06c128db6d6460b0fe9ec1ac5a6c1ea1febf1db40e7b60d" + }, + { + "path": "CONTRIBUTING.md", + "usage": "provenance", + "git_blob": "5185786f2ec00f215019fb5777d70979429690a9", + "sha256": "fcd1a8d0e52342a23b8ffa9e905e85ccc539fb084145ef016dfc93cedfb3d924" + }, + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "fc3d4ba105e1f097d0d7d051a308281e86ab1446", + "sha256": "66974efdced4083c00025f97d95d83909a226cdf801edb9301c195c6641f6903" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "f126dd2e2dad2b669e75d1d0d0bd05c600725602", + "sha256": "f7a48bfa2659b88378282a8eee7d9fe52cdf505594124c4d1686b58510fffd72" + }, + { + "path": "research/p104-coalesced-private-reuse/README.md", + "usage": "provenance", + "git_blob": "0ef79bfc5d978b8784b2d66cde113ffaf573c602", + "sha256": "dd1b9f28ee60887fbbecb7355417aa8fb72b697a771e4cdb37034a5710003d60" + }, + { + "path": "research/query-thinned-controllers/PROOF.md", + "usage": "provenance", + "git_blob": "9068f429896112082664455ab00bab083c99d1d8", + "sha256": "5ade59641f2ed70d045d6f60e89db7d979b1d1e9967f3acbe5c56eac81312841" + }, + { + "path": "research/kappa-backward-controller-20261023/README.md", + "usage": "provenance", + "git_blob": "c698f5b3e826b53c066d77fb22c091a5267a44cd", + "sha256": "e67cc6eb8f4bea9b1e83faeab9fb53ab91c427ea2fabd3cb1f746326e4c0b3c3" + }, + { + "path": "research/higher-moment-strictification/README.md", + "usage": "provenance", + "git_blob": "0a736ca89e1eafb73a30e1f2589cc45e6b5f76c3", + "sha256": "ebe80b68ff026ce90f71f274c31744f4c0b36132d15ebb7e39cf2d5df4df270d" + } + ] +} diff --git a/research/p104-productive-controller/TASK.json b/research/p104-productive-controller/TASK.json new file mode 100644 index 0000000000..6a31a94724 --- /dev/null +++ b/research/p104-productive-controller/TASK.json @@ -0,0 +1,153 @@ +{ + "schema_version": 1, + "task_id": "p104-side-correction", + "priority_revision": 7, + "base_commit": "32890bc5de034ab8fc93ac88ead7279a6a416d04", + "original_card": { + "id": "p104-side-correction", + "question": "Can a changed P104 producer/consumer contract escape the scoped slot, chart and completion obstructions with a favorable full bill?", + "starting_points": [ + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "research/p104-literal-slot-defect/README.md", + "research/p104-uniform-commutation-gap/README.md", + "research/p104-uniform-encoding-gap/README.md", + "research/p104-source-chart-shortcut/README.md", + "research/p104-fiber-tag-seam/README.md" + ], + "methods": [ + "Construct one side-correction word at an explicit chronological cut with the needed frames still available.", + "Derive a lower bound on the side correction and hosting costs that decides whether this channel can beat the selected budget." + ], + "acceptance_gate": "An exact arbitrary-input identity, source/target frame availability and restoration at the chosen cut, plus the complete channel+correction+idle/hosting bill or an explicit favorable bound. The native channel alone is not a supplier. A scoped local result may be retained without a complete supplier. Expanding it into further construction rounds requires the family-level budget and obligation gate in research-family-status.md; an optimistic passing relaxation alone is not acceptance.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read the named successor obstructions before extending #2981 static flags. Distinguish literal-slot action, commutation, uniform encoding, source-chart shortcut and fiber-tag seam scopes; none excludes all P104 mechanisms.", + "scope": "Source-binding orientation only; no scientific replay, theorem acceptance or supplier admission. Budget any heavy replay separately." + }, + "first_experiment": "Name one hypothesis changed from these exact interfaces. Write a literal producer-to-consumer timeline and an arbitrary-dirty-input positive/control pair, then charge acquisition, coefficients, completion, hosting and restoration. Stop if the same slot/fiber mismatch persists or the favorable full budget already fails. A scoped independent audit remains useful; another static count is not a new completion.", + "bottleneck_link": "Completing an already realized changed channel tests a concrete construction opportunity, instead of refining the incumbent packing. A positive local result still needs global and all-size admission.", + "allowed_variations": [ + "One correction factorization, one chronological cut, or one explicit hosting obstruction.", + "A changed correction schedule with an updated full bill and native frame contract." + ], + "scope_change_triggers": [ + "Recompiling the already certified low-rank channel without closing a new obligation.", + "Treating a pending ancestor, local histogram or unpriced side correction as an admitted global supplier.", + "Repeating a correction or physical conversion already supplied by a pending follow-up without adding independent coverage or a different unresolved obligation.", + "Repeating the 208-flag static matching or calling a static nested cover a chronological correction program. Independent audit of that certificate is distinct and remains useful.", + "Repeating a static cover, source-chart shortcut or fiber-tag seam without changing the hypothesis responsible for its obstruction." + ], + "overlap_terms": [ + "P104", + "I-G/2", + "side correction", + "native channel", + "1972", + "1991", + "2586", + "endpoint transport", + "physical dual", + "relay composition", + "2981", + "joint unit flags", + "acquisition delivery", + "static nesting", + "4133", + "4136", + "4140", + "4153", + "4154", + "p104-literal-slot-defect", + "p104-uniform-commutation-gap", + "p104-uniform-encoding-gap", + "p104-source-chart-shortcut", + "p104-fiber-tag-seam" + ], + "existing_checks": [ + { + "scope": "PR #4133: literal-slot defect", + "evidence": "research/p104-literal-slot-defect/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "status": "author-checked", + "source_commit": "88666f1dee93fbd85b31fd5d6f91a219e111b5f4", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4136: uniform commutation gap", + "evidence": "research/p104-uniform-commutation-gap/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "status": "author-checked", + "source_commit": "281ce601a8be9db470de630759179c23e1dfaa88", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4140: uniform encoding gap", + "evidence": "research/p104-uniform-encoding-gap/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "status": "author-checked", + "source_commit": "de25c6525aa866962309df5d107b32d55e6e5628", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4153: source-chart shortcut exhausts its optimistic allowance", + "evidence": "research/p104-source-chart-shortcut/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "status": "author-checked", + "source_commit": "9123241fea53df77e51ffe30d9aca1625d4bf3a8", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "PR #4154: fiber-tag seam mismatch", + "evidence": "research/p104-fiber-tag-seam/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "status": "author-checked", + "source_commit": "4ffcdaee5d6255a9cea1fe53a5424435068089d0", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + } + ] + }, + "scope_status": "changed", + "actual_scope": "Bind the completed PR2305 coalesced P104 word to the current productive p16/a7 caller, with all forward invocations, native helper normalization and complete conditional kappa 0.00304057.", + "scope_change_reason": "The old owner-window budget rejected this source. Its exact independent helper outputs can instead use the current mixed-target recursion. This is a changed complete consumer, not another static correction count.", + "bottleneck_link": "https://github.com/CrocSwap/integer-mult-bounds/discussions/5125#discussioncomment-19154639", + "budget_minutes": 240, + "stop_rule": "Finish only after the changed full invoice, native caller, compiler and outer calculation pass, then publish one focused reviewable PR. Do not change the selected frontier.", + "outcome": "completed", + "evidence": "PROOF.md, RESULT.json, WORD.json.gz, CONTROLLER.json; complete normal and optimized replay and Git-free export.", + "author": "Ali Romman", + "ai_assistance": "Substantial OpenAI Codex assistance; no subagents.", + "coordination": { + "claim": "https://github.com/CrocSwap/integer-mult-bounds/discussions/5125#discussioncomment-19154639", + "initial_open_prs": 401, + "initial_discussion_records": 4828, + "initial_refresh_utc": "2026-10-25T08:06:10.867121+00:00", + "source_scope_released": "https://github.com/CrocSwap/integer-mult-bounds/discussions/2299", + "excluded_scopes": [ + "Literal-slot P104 repairs", + "Original split-contact charts", + "Global border grading", + "Global120 constructor", + "p19 compiler" + ] + }, + "open_questions": [ + { + "question": "Can the complete P104 local word reduce its paid profile under productive accounting?", + "why_it_matters": "The current local word was optimized for the earlier fixed owner model.", + "first_step": "Refresh overlap, retain the exact arbitrary-helper boundary, and price a source-bound change against this complete invoice.", + "blocked_by": "No smaller native local word is proved here." + }, + { + "question": "Does an independent full replay confirm the new complete conditional bound?", + "why_it_matters": "Author verification does not provide independent admission.", + "first_step": "Run the registered commands from a clean source export and review the forward wrapper and productive helper interfaces.", + "blocked_by": "Independent maintainer review is pending." + } + ] +} diff --git a/research/p104-productive-controller/VERIFY.json b/research/p104-productive-controller/VERIFY.json new file mode 100644 index 0000000000..672efc1389 --- /dev/null +++ b/research/p104-productive-controller/VERIFY.json @@ -0,0 +1,45 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/p104-coalesced-private-reuse/compose.py", + "research/p104-coalesced-private-reuse/predecessor2152.tar.gz", + "research/complex-block-rank-optimum/inputs/selected.json.gz", + "research/frame-sa504/inputs/hamming/PROTOTYPE.json", + "research/p104-native-channel/inputs/P104-FIXTURE.json", + "research/p104-native-channel/vendor/clifford_exact.py", + "research/p104-native-channel/vendor/native_verify.py", + "research/kappa-0023-productive-jobs/dependencies/kappa-next-regime/direct-decoder/sources/DATA-PHASES.json", + "research/joint-helper-lattice/CONTROLLER.json", + "research/higher-moment-strictification/verify.py", + "research/kappa-rebuild/architecture/mixed_target_probe.py", + "research/pr4359-p7-padding/dependencies/compiler-refill/endpoint.py", + "research/query-thinned-controllers/RESULT.json", + "research/pr4359-p7-padding/native_inventory.py", + "research/p104-coalesced-private-reuse/RESULT.json", + "research/p104-coalesced-private-reuse/SOURCES.json" + ], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 600, + "checks": "Rebuild the exact P104 source; check all framed rows and reverse integer columns; certify all native calls and productive outputs; replay the physical forward caller, full invoice, two exact moment engines, compiler, ordinary BIT and all outer predicates; reject semantic controls." + }, + { + "argv": [ + "{python}", + "-O", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 600, + "checks": "Rebuild the exact P104 source; check all framed rows and reverse integer columns; certify all native calls and productive outputs; replay the physical forward caller, full invoice, two exact moment engines, compiler, ordinary BIT and all outer predicates; reject semantic controls with assertions disabled." + } + ] +} diff --git a/research/p104-productive-controller/WORD.json.gz b/research/p104-productive-controller/WORD.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..70f954b346dcf5ee27d394f74d0804731deafd86 GIT binary patch literal 107034 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 z

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

NQ6 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 qAXljX*i6tZD9TSMO)kkSOVusTFD*(=)i+eC= 735 and r not in live_owned, 'Owned initialization') + live_owned.add(r) + peak = max(peak, len(live_owned)) + rows[r] = {} + current[r] = e[2] + scalar += 2 + elif op == 'CLEAR': + need(r in live_owned and current[r] == e[2], 'Owned erasure at declared frame') + rows[r] = {} + current[r] = None + live_owned.remove(r) + scalar += 2 + else: + q, f = Q(e[-2]), e[-1] + need(q and current[r] == f, 'Scalar destination and coefficient') + n, d = abs(q.numerator), q.denominator + need(d & (d-1) == 0, 'Dyadic scalar coefficient') + need(abs(q)+1 < 2**16, 'Fixed scalar growth bound') + if op == 'SCALE': + need(n & (n-1) == 0, 'Dyadic unit SCALE') + rows[r] = {k:q*x for k,x in rows[r].items()} + scalar += 2*(abs(n.bit_length()-d.bit_length()) + int(q < 0)) + else: + s = e[2] + need(s != r and 0 <= s < 743 and current[s] == f, 'Common scalar chart') + if op == 'COPY': + need(r in live_owned and not rows[r], 'COPY into cleared owned field') + rows[r] = {k:q*x for k,x in rows[s].items()} + else: + need(op == 'ADD', 'Scalar opcode') + add(rows[r], rows[s], q) + scalar += 2*(3+n.bit_length()-1+n.bit_count()+d.bit_length()-1) + need(not live_owned and peak == 1 and current[:735] == w['final'], 'All public and owned exits') + live = set(w['live']) + for r,row in enumerate(rows): + expected = {r:Q(1)} if r < 735 else {} + if r-112 in live: + expected[r-112] = Q(1) + need(row == expected, 'All 743 public and owned rows') + main = live | {r+112 for r in live} + helpers = Counter(len(w['frames'][w['final'][r]])-len(w['frames'][w['initial'][r]]) for r in range(735) if r not in main) + need(len(live) == len(w['ports']) == 104 and len(main) == 208 and min(helpers) > 0, 'Independent productive inputs') + return {'paid':dict(paid), 'helpers':dict(helpers), 'public_inputs':735, 'owned_lifetimes':8, + 'peak_owned_fields':peak, 'real_scalar_allowance':scalar, 'endpoint_coefficients':743*743} + + +def reverse_columns(w): + """Check the transpose with dense dyadic rows and the reverse chronology.""" + n = 743 + rows = [[int(i == j) for j in range(n)] for i in range(n)] + exponents = [0]*n + for e in reversed(w['program']): + op,r = e[:2] + if op == 'MOVE': + continue + if op in ('INIT','CLEAR'): + rows[r] = [0]*n + exponents[r] = 0 + continue + q = Q(e[-2]) + qe = q.denominator.bit_length()-1 + if op == 'SCALE': + rows[r] = [q.numerator*x for x in rows[r]] + exponents[r] += qe + else: + s = e[2] + level = max(exponents[s], exponents[r]+qe) + a, b = 1 << (level-exponents[s]), q.numerator << (level-exponents[r]-qe) + rows[s] = [a*x+b*y for x,y in zip(rows[s],rows[r])] + exponents[s] = level + if op == 'COPY': + rows[r] = [0]*n + exponents[r] = 0 + r = s + while exponents[r] and not any(x & 1 for x in rows[r]): + rows[r] = [x//2 for x in rows[r]] + exponents[r] -= 1 + for r,row in enumerate(rows): + expected = [0]*n + if r < 735: + expected[r] = 1 << exponents[r] + if r in w['live']: + expected[r+112] = 1 << exponents[r] + need(row == expected, 'Independent dense transpose columns') + return {'columns':n, 'coefficients':n*n, 'arithmetic':'Dense integer rows with binary denominators; reverse chronology'} + + +def native(w): + C = load(ROOT/'research/p104-native-channel/vendor/clifford_exact.py', 'p104_productive_clifford') + V = load(ROOT/'research/p104-native-channel/vendor/native_verify.py', 'p104_productive_gaussian') + @lru_cache(None) + def chart(i): + return C.canonical_frame(9, tuple(w['frames'][i])) + recipes = {} + def check(a,b): + if (a,b) not in recipes: + recipe,_ = C.lower_child(chart(a).adjoint().then(chart(b))) + expected = V.adjoint(V.frame(w['frames'][a],9)) + V.frame(w['frames'][b],9) + V.equal(V.recipe(recipe),expected,'Native chart change and exact global phase') + need(recipe['rank'] == abs(len(w['frames'][a])-len(w['frames'][b])), 'Native boundary rank') + recipes[a,b] = recipe + return recipes[a,b] + for e in w['program']: + if e[0] == 'MOVE': + check(e[2],e[3]) + main = set(w['live']) | {r+112 for r in w['live']} + helper_profile = Counter() + for r in range(735): + if r not in main: + helper_profile[check(w['initial'][r],w['final'][r])['rank']] += 1 + adapters = [] + for r,q in zip(w['live'],w['ports']): + need(w['frames'][w['initial'][r]] == [q], 'Literal central port') + need(span(w['frames'][w['final'][r+112]]) == frozenset(x for x in range(512) if not (x&q).bit_count()%2), 'Literal output hyperplane') + tests = [ + (C.cgate(9,q,1).adjoint().then(chart(w['initial'][r])), V.adjoint((('C',q,1),))+V.frame(w['frames'][w['initial'][r]],9)), + (chart(w['final'][r+112]).adjoint().then(C.cgate(9,q,-1).then(C.fourier(9))), V.adjoint(V.frame(w['frames'][w['final'][r+112]],9))+(('C',q,-1),)+V.fourier(9))] + for actual,expected in tests: + recipe,_ = C.lower_child(actual) + need(recipe['rank'] == 0, 'Free intrinsic main adapter') + V.equal(V.recipe(recipe),expected,'Main endpoint phase') + adapters.append(recipe) + bad = json.loads(json.dumps(next(iter(recipes.values())))) + bad['left']['phase'] = (bad['left']['phase']+1)%4 + a,b = next(iter(recipes)) + try: + V.equal(V.recipe(bad),V.adjoint(V.frame(w['frames'][a],9))+V.frame(w['frames'][b],9),'Wrong phase control') + except ValueError: + pass + else: + raise ValueError('Wrong native phase accepted') + payload = [[a,b,recipes[a,b]] for a,b in sorted(recipes)] + adapters + return {'distinct_maps':len(recipes),'main_adapters':len(adapters),'helper_normalizers':2*sum(helper_profile.values()), + 'helpers':dict(helper_profile),'recipe_payload_sha256':sha256(json.dumps(payload,sort_keys=True,separators=(',',':')).encode()).hexdigest(), + 'wrong_phase_rejected':True, 'proof':'Every signed Pauli image and exact global phase; frame induction at every positive tensor width'} diff --git a/research/p104-productive-controller/price.py b/research/p104-productive-controller/price.py new file mode 100644 index 0000000000..6c856e173c --- /dev/null +++ b/research/p104-productive-controller/price.py @@ -0,0 +1,153 @@ +"""Complete mixed-target price, compiler and outer transfer. + +The interval and compiler bounds follow zxv and Cao Yifan. The productive +recursion is by Jacob Alan Sussman. The controller is by Cinna Davis. +Ali Romman with substantial OpenAI Codex assistance. Apache-2.0. +""" +from collections import Counter +from fractions import Fraction as Q +import local as L + +KAPPA, TESTED = Q('.00304057'), Q('.003040575') +PREVIOUS = Q('605457647/200000000000') + + +def encode(x): + if isinstance(x,Q): + return str(x) + if isinstance(x,dict): + return {str(k):encode(v) for k,v in x.items()} + if isinstance(x,(list,tuple)): + return [encode(v) for v in x] + return x + + +def assemble(local, native, word, physical): + paid, targets = Counter(), Counter() + counts = Counter() + L.need(local['helpers'] == native['helpers'], 'Every productive helper has a native target') + for e in word['physical_events']: + counts[e[0]] += 1 + if e[0] == 'LOCAL': + L.need(e[3] is False, 'Every source invocation is forward') + paid.update(local['paid']) + targets.update(local['helpers']) + elif e[0] == 'QUERY_SHEAR': + paid[1] += 104 + elif e[0] == 'IDLE': + paid[8*len(e[2])] += 208 + main = Counter() + idle = Counter({8*len(e[2]):0 for e in word['physical_events'] if e[0] == 'IDLE'}) + for e in word['physical_events']: + if e[0] == 'IDLE': + idle[8*len(e[2])] += 208 + L.need(idle == physical['whole_idle_jobs'], 'Every whole idle has a native Gaussian and full rank') + for term in word['diagonal']: + main[1+8*sum(term[1:])] += 104 + L.need(main == physical['main_targets'], 'Every main target has its full native phase') + targets.update(main) + L.need(counts['LOCAL'] == 18 and counts['QUERY_SHEAR'] == counts['IDLE'] == 15, 'Complete call census') + # Recount by the two path lengths, without using emitted main diagonals. + second_t = Counter({r:18*n for r,n in local['helpers'].items()}) + second_p = Counter({r:18*n for r,n in local['paid'].items()}) + second_t[145] += 208 + second_p[1] += 15*104 + for length in (7,8): + for j in range(1,length+1): + second_t[1+8*(j+1)] += 208 + second_p[8*(j+1)] += 208 + L.need((targets,paid) == (second_t,second_p), 'Independent full invoice') + L.need(max(targets) == 145 and max(paid) == 72, 'Maximum recursive ranks') + L.need(sum(targets.values()) == 12814 and sum(paid.values()) == 69930, 'Complete field and call counts') + L.need(sum(r*n for r,n in targets.items())-sum(r*n for r,n in paid.items()) == 760, 'Complete rank surplus') + return targets,paid,counts + + +def run(local,native,word,physical): + T,P,counts = assemble(local,native,word,physical) + E = L.load(L.ROOT/'research/higher-moment-strictification/verify.py','p104_productive_intervals') + other = L.load(L.ROOT/'research/kappa-rebuild/architecture/mixed_target_probe.py','p104_productive_second_intervals') + def margin(k): + a,b = E.moment(T,1-k), E.moment(P,1-k) + return a[0]-b[1],a[1]-b[0] + lo,hi,grid = 0,10**12,10**14 + while hi-lo > 1: + m=(lo+hi)//2 + if margin(Q(m,grid))[0] > 0: + lo=m + else: + hi=m + lower,upper = Q(lo,grid),Q(hi,grid) + L.need(margin(lower)[0] > 0 and margin(upper)[1] < 0, 'Strict rational crossing enclosure') + L.need(PREVIOUS < KAPPA < TESTED < lower and margin(PREVIOUS)[0] > 0, 'Changed complete bill improves selected kappa') + t,u,v,c,b = 1-TESTED,Q(1,5),1024,17,18 + target,paid = E.moment(T,t),E.moment(P,t) + tl,th = other.moment(T,TESTED) + pl,ph = other.moment(P,TESTED) + L.need(tl > ph and max(tl,target[0]) <= min(th,target[1]) and max(pl,paid[0]) <= min(ph,paid[1]), 'Two exact moment engines') + alpha = E.divide(paid,target) + gamma = E.divide(E.moment(P,t+u),E.mul(E.power(c,u),target)) + delta = E.divide((Q(sum(T.values())*b),)*2,E.mul(E.power(c,TESTED),target)) + reserve,decay = Q(1,10**10),Q(97,100) + L.need(alpha[1] < 1-reserve and gamma[1] < decay and delta[1] < decay, 'All three charged tail ratios') + L.need(decay**128 < Q(1,16), 'Both tail decay blocks') + normalized = 1/(1+v*reserve)+Q(4,2**32) + L.need(normalized < 1 and c**64 < b**63, 'Full completion, splitting and rounding charges') + theta,power = Q(63,64),1000 + eta = E.scale(E.power(145,-v*TESTED),t) + L.need(2*(c**v)**64 <= (145**v)**63 and eta[0] > theta**power, 'Shifted exits and complement capacity') + L.need(E.power(145,v*TESTED)[1] < 2**power, 'Compiler initial range') + gap = (TESTED-KAPPA)/7 + L.need(gap.numerator == 1, 'Exact compiler integer grid') + step = gap.denominator + def wins(j): + return (step*j+1)**power < 2**j + left,right=1,2 + while not wins(right): + left,right=right,2*right + while right-left > 1: + m=(left+right)//2 + if wins(m): + right=m + else: + left=m + H=step*right + L.need(H > 8*v and wins(right) and not wins(right-1), 'Finite uniform threshold with predecessor rejection') + local_routes = (sum(local['paid'].values())+native['helper_normalizers']+native['main_adapters']+4*104+4*local['owned_lifetimes'])*1000 + L.need(local['real_scalar_allowance']+local_routes < 10**7, 'Every local scalar, route and owned operation is funded') + boundary = sum(len(word['boundaries'][side+'_program']) for side in ('left','right')) + raw = 18*10**7 + 15*1664 + 32*104*(len(word['physical_events'])+boundary) + raw += 32*104*(26+1000) + L.need(raw < 10**9, 'Complete nonrecursive raw bound') + bit = L.read(L.ROOT/'research/query-thinned-controllers/RESULT.json')['ordinary_BIT'] + atom = Q(bit['atom']) + ordinary=(1-atom)*Q(bit['after_cover'])+atom*Q('.0000384599') + admitted=Q(bit['admitted']) + L.need(atom > ordinary > admitted > TESTED and atom < 1-ordinary, 'Retained BIT admission and stock') + outer_module=L.load(L.ROOT/'research/pr4359-p7-padding/dependencies/compiler-refill/endpoint.py','p104_productive_outer') + params={'kappa':KAPPA,'tested_saving':TESTED,'complex_uniform_saving':KAPPA+6*gap, + 'b':KAPPA+5*gap,'a':KAPPA+4*gap,'q':KAPPA+3*gap,'bit_saving':admitted, + 'epsilon':1-gap,'beta':1-3*gap,'r0':gap/10,'stop':gap,'layout':gap,'d':gap} + outer=outer_module.ledger(params) + outer['functional_checks']['actual_new_BIT_stock_sublinear']=params['beta']*(1-atom) + L.need(len(outer['strict_checks']) == 54 and len(outer['functional_checks']) == 4, 'Complete outer predicate inventory') + L.need(all(x > 0 for key in ('strict_checks','functional_checks') for x in outer[key].values()), 'All outer inequalities strict') + wrong_cutoff = E.divide((Q(sum(T.values())*21),)*2,E.mul(E.power(20,TESTED),target)) + L.need(wrong_cutoff[0] > 1, 'Old cutoff fails with this helper inventory') + bad=outer_module.ledger(dict(params,bit_saving=Q('.0027'))) + L.need(any(x <= 0 for x in bad['strict_checks'].values()), 'Insufficient BIT contract rejected') + return encode({'kappa':KAPPA,'kappa_decimal':'.00304057','previous_selected':PREVIOUS,'gain':KAPPA-PREVIOUS, + 'relative_gain_percent':100*(KAPPA/PREVIOUS-1),'raw_root_interval':[lower,upper], + 'raw_headroom':[lower-KAPPA,upper-KAPPA],'margin_at_previous':E.display(margin(PREVIOUS)), + 'targets':T,'paid':P,'productive_fields':sum(T.values()),'paid_calls':sum(P.values()), + 'rank_mass_surplus':760,'full_forward_calls':18,'query_shears':15,'whole_idle_jobs':3120, + 'strictification':{'tested':TESTED,'power':v,'cutoff':c,'floor':b,'tail_offset':u,'reserve':reserve, + 'alpha':E.display(alpha),'gamma':E.display(gamma),'delta':E.display(delta),'normalized_paid_upper':normalized}, + 'compiler':{'theta':theta,'logarithm_power':power,'eta':E.display(eta),'gap':gap,'H':H,'N':'2^'+str(H), + 'integer_test_exponent':right,'uniform_saving':params['complex_uniform_saving'],'word_materialized':False}, + 'nonrecursive':{'local_scalar':local['real_scalar_allowance'],'local_routes':local_routes, + 'raw_scalar_upper':raw,'raw_budget':10**9,'peak_owned_fields':1, + 'fixed_scalar_growth_bound':'At most 2^(16*26000) before native factors; a declared constant, not an attained norm.', + 'tensor_native_growth_bound':'Each rank-r Gaussian has row l1 norm at most 2^(rf); sum of local ranks is 5894.'}, + 'ordinary_BIT':bit,'outer':outer, + 'negative_controls':{'old_cutoff':'Rejected by completion-tail ratio greater than one','old_BIT':'Rejected by outer inequalities'}}) diff --git a/research/p104-productive-controller/verify.py b/research/p104-productive-controller/verify.py new file mode 100644 index 0000000000..9b4c4d61e6 --- /dev/null +++ b/research/p104-productive-controller/verify.py @@ -0,0 +1,86 @@ +"""Check the complete conditional P104 improvement and its immutable evidence. + +Ali Romman with substantial OpenAI Codex assistance. Apache-2.0. +""" +import argparse +from copy import deepcopy +from hashlib import sha1,sha256 +import gzip +import json +import sys +from pathlib import Path +sys.dont_write_bytecode = True +sys.path.insert(0, str(Path(__file__).resolve().parent)) +import local as L +import caller as C +import price as P + + +def authenticate(): + count=0 + for row in L.read(L.HERE/'SOURCES.json')['files']: + if row['usage'] == 'input': + raw=(L.ROOT/row['path']).read_bytes() + L.need(sha256(raw).hexdigest() == row['sha256'], 'Changed source: '+row['path']) + L.need(sha1(b'blob '+str(len(raw)).encode()+b'\0'+raw).hexdigest() == row['git_blob'], 'Source Git object') + count+=1 + return count + + +def rejected(action,label): + try: + action() + except ValueError: + return label + raise ValueError('Control accepted: '+label) + + +def run(): + pins=authenticate() + word=L.construct() + local=L.replay(word) + columns=L.reverse_columns(word) + print('PASS complete source rows, reverse integer columns and owned lifetimes',flush=True) + native=L.native(word) + print('PASS every native paid map, productive helper and main adapter',flush=True) + controller=C.construct() + physical=C.physical(controller,word) + costs=P.run(local,native,controller,physical) + controls=C.controls(controller) + bad=deepcopy(word) + bad['program'].remove(next(e for e in bad['program'] if e[0] == 'COPY')) + controls['omitted_copy']=rejected(lambda:L.replay(bad),'Rejected by full arbitrary-input endpoint') + bad=deepcopy(word) + e=next(e for e in bad['program'] if e[0] == 'MOVE') + e[2]=e[3] + controls['wrong_frame']=rejected(lambda:L.replay(bad),'Rejected by literal source-frame check') + bad=deepcopy(local) + bad['helpers'][9]+=1 + controls['unearned_helper']=rejected(lambda:P.assemble(bad,native,controller,physical),'Rejected by native helper census') + result={'status':'PASS_P104_PRODUCTIVE_COMPLETE_KAPPA_00304057','source_inputs_authenticated':pins, + 'local':local,'separate_columns':columns,'native':native,'physical_caller':physical, + 'complete_cost':costs,'negative_controls':controls, + 'limits':['Conditional on the retained native all-column, owned-erasure, compiler, precision/tape and analytic-recovery framework.', + 'The winning uniform compiler word and complete integer multiplier are not materialized.', + 'No proof-kernel check or independent human review is claimed.']} + return P.encode(result),word,controller + + +def main(): + parser=argparse.ArgumentParser(description=__doc__) + parser.add_argument('--write',action='store_true') + args=parser.parse_args() + result,word,controller=run() + for name,data in [('RESULT.json',result),('WORD.json.gz',word),('CONTROLLER.json',controller)]: + path=L.HERE/name + if args.write: + raw=(json.dumps(data,indent=None if name.endswith('.gz') else 2,sort_keys=True)+'\n').encode() + path.write_bytes(gzip.compress(raw,mtime=0) if name.endswith('.gz') else raw) + else: + L.need(L.read(path) == data,'Exact frozen artifact: '+name) + print(result['status']) + print(json.dumps({k:result['complete_cost'][k] for k in ('kappa','gain','raw_root_interval','productive_fields','paid_calls')},sort_keys=True)) + + +if __name__ == '__main__': + main()