From 591394d8b791f6e8ac6e1aa36f8c3ea5389178c2 Mon Sep 17 00:00:00 2001 From: CubeJerry <80299683+CubeJerry@users.noreply.github.com> Date: Tue, 10 Nov 2026 05:37:44 +0800 Subject: [PATCH] research: literal rounded global Lambda with paid translation --- .../current-rounded-lambda/ARITHMETIC.json | 10 + .../current-rounded-lambda/COMPOSITION.json | 71 + research/current-rounded-lambda/CONTROLS.json | 17 + .../current-rounded-lambda/DEPENDENCIES.json | 1094 ++++++++++++++ .../current-rounded-lambda/DESCRIPTOR.json | 82 ++ research/current-rounded-lambda/OVERLAP.md | 30 + .../current-rounded-lambda/PR-DESCRIPTION.md | 102 ++ research/current-rounded-lambda/PROOF.md | 342 +++++ research/current-rounded-lambda/README.md | 146 ++ research/current-rounded-lambda/REVIEW.md | 28 + research/current-rounded-lambda/SOURCE.json | 41 + research/current-rounded-lambda/SOURCES.json | 18 + research/current-rounded-lambda/TASK.json | 93 ++ research/current-rounded-lambda/VERIFY.json | 231 +++ .../current-rounded-lambda/check_numeric.py | 64 + .../current-rounded-lambda/data/caller.json | 1 + .../current-rounded-lambda/data/word.json.gz | Bin 0 -> 349022 bytes .../current-rounded-lambda/gaussian_table.py | 130 ++ .../current-rounded-lambda/lambda_provider.py | 91 ++ .../reference/PRECISION-PROOF.md | 514 +++++++ .../reference/jclib_6936.py | 331 +++++ .../reference/physical-review-6936.py | 568 ++++++++ .../review/lambda-lead-check.py | 77 + .../review/lambda-lead-review.json | 20 + .../current-rounded-lambda/source_binding.py | 31 + .../vendor/exact_scalar_tables.py | 295 ++++ .../current-rounded-lambda/vendor/machine.py | 406 ++++++ .../vendor/scalar_fixture.py | 147 ++ .../vendor/serial/DEPENDENCIES.json | 877 +++++++++++ .../vendor/serial/PROOF.md | 160 ++ .../vendor/serial/column_view.py | 200 +++ .../vendor/serial/serial_sources.py | 64 + .../serial/vendor/monomial/DEPENDENCIES.json | 1203 ++++++++++++++++ .../vendor/serial/vendor/monomial/PROOF.md | 449 ++++++ .../vendor/serial/vendor/monomial/README.md | 179 +++ .../serial/vendor/monomial/SOURCES.json | 162 +++ .../vendor/serial/vendor/monomial/TASK.json | 93 ++ .../serial/vendor/monomial/check_fixture.py | 187 +++ .../serial/vendor/monomial/phase_adapter.py | 213 +++ .../serial/vendor/monomial/phase_binding.py | 80 + .../vendor/monomial/selected_service.py | 76 + .../monomial/vendor/binding/DEPENDENCIES.json | 724 ++++++++++ .../vendor/monomial/vendor/binding/PROOF.md | 490 +++++++ .../vendor/binding/binding_sources.py | 75 + .../vendor/monomial/vendor/binding/codec.py | 235 +++ .../monomial/vendor/binding/provider.py | 189 +++ .../vendor/binding/vendor/DEFERRED-PROOF.md | 122 ++ .../binding/vendor/SELECTED-RESULT.json | 120 ++ .../vendor/binding/vendor/TASK-CATALOG.json | 1281 +++++++++++++++++ .../vendor/binding/vendor/compact/PROOF.md | 334 +++++ .../binding/vendor/compact/compact_control.py | 235 +++ .../binding/vendor/compact/compact_counts.py | 198 +++ .../binding/vendor/compact/compact_engine.py | 153 ++ .../binding/vendor/compact/compact_layout.py | 132 ++ .../binding/vendor/compact/compact_streams.py | 257 ++++ .../binding/vendor/compact/native_sources.py | 56 + .../vendor/binding/vendor/dispatch/PROOF.md | 601 ++++++++ .../vendor/binding/vendor/dispatch/TASK.json | 93 ++ .../vendor/dispatch/compiler_routes.py | 150 ++ .../binding/vendor/dispatch/row_programs.py | 593 ++++++++ .../dispatch/vendor/occurrence_geometry.py | 312 ++++ .../vendor/dispatch/vendor/row_padding.py | 321 +++++ .../vendor/binding/vendor/lifecycle/PROOF.md | 591 ++++++++ .../binding/vendor/lifecycle/machine.py | 406 ++++++ .../binding/vendor/lifecycle/source_ir.py | 522 +++++++ .../binding/vendor/lockstep_executor.py | 558 +++++++ .../vendor/binding/vendor/ordinary/PROOF.md | 260 ++++ .../vendor/binding/vendor/ordinary/binary.py | 99 ++ .../vendor/binding/vendor/ordinary/encoded.py | 224 +++ .../binding/vendor/ordinary/ordinary.py | 193 +++ .../binding/vendor/ordinary/physical_words.py | 106 ++ .../vendor/binding/vendor/ordinary/session.py | 156 ++ .../vendor/binding/vendor/ordinary/source.py | 62 + .../binding/vendor/record_lift/PROOF.md | 101 ++ .../vendor/binding/vendor/record_lift/lift.py | 377 +++++ .../vendor/binding/vendor/reference/NOTICE.md | 38 + .../binding/vendor/reference/compact.py | 203 +++ .../binding/vendor/reference/streams.py | 115 ++ .../binding/vendor/runtime/pr2808/outer.py | 233 +++ .../runtime/pr2808/vendor/pr2786/padding.py | 135 ++ .../runtime/pr2809/inputs/pr2753/consumer.py | 85 ++ .../runtime/pr2809/inputs/pr2753/driver.py | 197 +++ .../pr2809/inputs/pr2753/evidence/NOTICE.md | 9 + .../inputs/pr2753/evidence/pr2688-NOTICE.md | 22 + .../runtime/pr2809/inputs/pr2753/layout.py | 123 ++ .../pr2809/inputs/pr2753/linear_sign.py | 82 ++ .../runtime/pr2809/inputs/pr2753/node.py | 88 ++ .../pr2809/inputs/pr2753/packet_engine.py | 98 ++ .../runtime/pr2809/inputs/pr2753/peel.py | 46 + .../inputs/pr2753/predecessor/NOTICE.md | 49 + .../pr2753/predecessor/cardinal_counts.py | 55 + .../inputs/pr2753/predecessor/catalogue.py | 268 ++++ .../inputs/pr2753/predecessor/control.py | 50 + .../inputs/pr2753/predecessor/fresh_rows.py | 68 + .../inputs/pr2753/predecessor/topology.py | 91 ++ .../pr2753/predecessor/vendor/binding.py | 102 ++ .../pr2753/predecessor/vendor/bitstream.py | 160 ++ .../pr2753/predecessor/vendor/cardinality.py | 136 ++ .../pr2753/predecessor/vendor/children.py | 84 ++ .../pr2753/predecessor/vendor/controller.py | 305 ++++ .../pr2753/predecessor/vendor/counts.py | 57 + .../pr2753/predecessor/vendor/directory.py | 126 ++ .../pr2753/predecessor/vendor/episode.py | 124 ++ .../inputs/pr2753/predecessor/vendor/forms.py | 182 +++ .../pr2753/predecessor/vendor/low_codes.py | 109 ++ .../pr2753/predecessor/vendor/matrices.py | 217 +++ .../pr2753/predecessor/vendor/numeric.py | 189 +++ .../pr2753/predecessor/vendor/oracle.py | 94 ++ .../pr2753/predecessor/vendor/packet.py | 97 ++ .../inputs/pr2753/predecessor/vendor/plan.py | 112 ++ .../pr2753/predecessor/vendor/records.py | 271 ++++ .../pr2753/predecessor/vendor/routes.py | 249 ++++ .../pr2753/predecessor/vendor/selection.py | 71 + .../pr2753/predecessor/vendor/sources.py | 148 ++ .../pr2753/predecessor/vendor/stream.py | 163 +++ .../pr2809/inputs/pr2753/recursive_call.py | 110 ++ .../runtime/pr2809/inputs/pr2753/scheduler.py | 28 + .../pr2809/inputs/pr2753/stream_runner.py | 113 ++ .../runtime/pr2809/inputs/pr2753/trace.py | 184 +++ .../runtime/pr2809/inputs/pr2769/NOTICE.md | 30 + .../runtime/pr2809/inputs/pr2769/codec.py | 151 ++ .../inputs/pr2769/vendor/parking_machine.py | 108 ++ .../pr2809/inputs/pr2769/vendor/words.py | 415 ++++++ .../vendor/runtime/pr2809/macro_binding.py | 145 ++ .../vendor/runtime/pr2809/macro_code.py | 107 ++ .../vendor/runtime/pr2809/macro_machine.py | 453 ++++++ .../vendor/runtime/pr2809/residual_blocks.py | 106 ++ .../vendor/runtime/pr2809/role_parking.py | 116 ++ .../vendor/runtime/pr2809/scratch_pool.py | 151 ++ .../vendor/monomial/vendor/monomial/PROOF.md | 242 ++++ .../monomial/vendor/monomial/SOURCES.json | 41 + .../vendor/monomial/monomial_engine.py | 184 +++ .../monomial/vendor/monomial/pair_dispatch.py | 19 + .../monomial/vendor/monomial/phase_recipe.py | 46 + .../monomial/vendor/monomial/phase_sources.py | 53 + .../monomial/vendor/monomial/reference.py | 102 ++ .../monomial/vendor/monomial/signed_phase.py | 112 ++ .../monomial/vendor/selected/RESULT.json | 396 +++++ .../monomial/vendor/selected/WORD.json.gz | Bin 0 -> 119880 bytes .../vendor/selected/clifford_exact.py | 149 ++ .../monomial/vendor/selected/native_verify.py | 277 ++++ research/current-rounded-lambda/verify.py | 141 ++ 142 files changed, 28279 insertions(+) create mode 100644 research/current-rounded-lambda/ARITHMETIC.json create mode 100644 research/current-rounded-lambda/COMPOSITION.json create mode 100644 research/current-rounded-lambda/CONTROLS.json create mode 100644 research/current-rounded-lambda/DEPENDENCIES.json create mode 100644 research/current-rounded-lambda/DESCRIPTOR.json create mode 100644 research/current-rounded-lambda/OVERLAP.md create mode 100644 research/current-rounded-lambda/PR-DESCRIPTION.md create mode 100644 research/current-rounded-lambda/PROOF.md create mode 100644 research/current-rounded-lambda/README.md create mode 100644 research/current-rounded-lambda/REVIEW.md create mode 100644 research/current-rounded-lambda/SOURCE.json create mode 100644 research/current-rounded-lambda/SOURCES.json create mode 100644 research/current-rounded-lambda/TASK.json create mode 100644 research/current-rounded-lambda/VERIFY.json create mode 100644 research/current-rounded-lambda/check_numeric.py create mode 100644 research/current-rounded-lambda/data/caller.json create mode 100644 research/current-rounded-lambda/data/word.json.gz create mode 100644 research/current-rounded-lambda/gaussian_table.py create mode 100644 research/current-rounded-lambda/lambda_provider.py create mode 100644 research/current-rounded-lambda/reference/PRECISION-PROOF.md create mode 100644 research/current-rounded-lambda/reference/jclib_6936.py create mode 100644 research/current-rounded-lambda/reference/physical-review-6936.py create mode 100644 research/current-rounded-lambda/review/lambda-lead-check.py create mode 100644 research/current-rounded-lambda/review/lambda-lead-review.json create mode 100644 research/current-rounded-lambda/source_binding.py create mode 100644 research/current-rounded-lambda/vendor/exact_scalar_tables.py create mode 100644 research/current-rounded-lambda/vendor/machine.py create mode 100644 research/current-rounded-lambda/vendor/scalar_fixture.py create mode 100644 research/current-rounded-lambda/vendor/serial/DEPENDENCIES.json create mode 100644 research/current-rounded-lambda/vendor/serial/PROOF.md create mode 100644 research/current-rounded-lambda/vendor/serial/column_view.py create mode 100644 research/current-rounded-lambda/vendor/serial/serial_sources.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/DEPENDENCIES.json create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/PROOF.md create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/README.md create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/SOURCES.json create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/TASK.json create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/check_fixture.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/phase_adapter.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/phase_binding.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/selected_service.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/DEPENDENCIES.json create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/PROOF.md create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/binding_sources.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/codec.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/provider.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/DEFERRED-PROOF.md create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/SELECTED-RESULT.json create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/TASK-CATALOG.json create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/compact/PROOF.md create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/compact/compact_control.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/compact/compact_counts.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/compact/compact_engine.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/compact/compact_layout.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/compact/compact_streams.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/compact/native_sources.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/PROOF.md create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/TASK.json create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/compiler_routes.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/row_programs.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/vendor/occurrence_geometry.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/vendor/row_padding.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/lifecycle/PROOF.md create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/lifecycle/machine.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/lifecycle/source_ir.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/lockstep_executor.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/PROOF.md create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/binary.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/encoded.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/ordinary.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/physical_words.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/session.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/source.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/record_lift/PROOF.md create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/record_lift/lift.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/reference/NOTICE.md create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/reference/compact.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/reference/streams.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2808/outer.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2808/vendor/pr2786/padding.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/consumer.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/driver.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/evidence/NOTICE.md create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/evidence/pr2688-NOTICE.md create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/layout.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/linear_sign.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/node.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/packet_engine.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/peel.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/NOTICE.md create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/cardinal_counts.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/catalogue.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/control.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/fresh_rows.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/topology.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/binding.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/bitstream.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/cardinality.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/children.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/controller.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/counts.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/directory.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/episode.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/forms.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/low_codes.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/matrices.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/numeric.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/oracle.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/packet.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/plan.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/records.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/routes.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/selection.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/sources.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/stream.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/recursive_call.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/scheduler.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/stream_runner.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/trace.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/NOTICE.md create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/codec.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/vendor/parking_machine.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/vendor/words.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/macro_binding.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/macro_code.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/macro_machine.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/residual_blocks.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/role_parking.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/scratch_pool.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/PROOF.md create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/SOURCES.json create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/monomial_engine.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/pair_dispatch.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/phase_recipe.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/phase_sources.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/reference.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/signed_phase.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/selected/RESULT.json create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/selected/WORD.json.gz create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/selected/clifford_exact.py create mode 100644 research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/selected/native_verify.py create mode 100644 research/current-rounded-lambda/verify.py diff --git a/research/current-rounded-lambda/ARITHMETIC.json b/research/current-rounded-lambda/ARITHMETIC.json new file mode 100644 index 0000000000..f2cb3b7cbe --- /dev/null +++ b/research/current-rounded-lambda/ARITHMETIC.json @@ -0,0 +1,10 @@ +{ + "accepted": 1708, + "additional_endpoint_cases": 1536, + "exhaustive_width_1_2_cases": 544, + "oracle": "direct four signed integers; no table recurrence imported", + "stage_rows": { + "-1": 5275, + "1": 5275 + } +} diff --git a/research/current-rounded-lambda/COMPOSITION.json b/research/current-rounded-lambda/COMPOSITION.json new file mode 100644 index 0000000000..d987108e32 --- /dev/null +++ b/research/current-rounded-lambda/COMPOSITION.json @@ -0,0 +1,71 @@ +{ + "cases": [ + { + "accepted": true, + "actual_source_nine_axis": false, + "endpoint_sha256": "3953d77479ecd5ff46517c4312203154cc4d59a906b9aa1d5ce32200d323a1f0", + "error": null, + "f": 1, + "materialized_private_cells": 45478, + "ordinary_runtime_calls": 0, + "owned_ports": 1837, + "physical_actions": 5033209, + "q": 1, + "rank": 1, + "records": 16, + "sign": 1, + "width": 3 + }, + { + "accepted": false, + "actual_source_nine_axis": false, + "endpoint_sha256": "bdb5c260c467b45d7ae412fa679baa720d5eea7c1240095322b30edbfb37b358", + "error": "Lambda signed range or canonical format", + "f": 1, + "materialized_private_cells": 45478, + "ordinary_runtime_calls": 0, + "owned_ports": 1837, + "physical_actions": 5027459, + "q": 1, + "rank": 1, + "records": 16, + "sign": 1, + "width": 3 + }, + { + "accepted": true, + "actual_source_nine_axis": false, + "endpoint_sha256": "3953d77479ecd5ff46517c4312203154cc4d59a906b9aa1d5ce32200d323a1f0", + "error": null, + "f": 1, + "materialized_private_cells": 45478, + "ordinary_runtime_calls": 0, + "owned_ports": 1837, + "physical_actions": 5033209, + "q": 1, + "rank": 1, + "records": 16, + "sign": 1, + "width": 3 + }, + { + "accepted": true, + "actual_source_nine_axis": false, + "endpoint_sha256": "933f5416771fd022da257c253f8343a8b88001de28261285435fc19ed60904db", + "error": null, + "f": 1, + "materialized_private_cells": 45478, + "ordinary_runtime_calls": 0, + "owned_ports": 1837, + "physical_actions": 5033209, + "q": 1, + "rank": 1, + "records": 16, + "sign": -1, + "width": 3 + } + ], + "late_failure_public_and_context_restored": true, + "positive_and_negative_signs": true, + "whole_source_nine_axis_executed": false +} diff --git a/research/current-rounded-lambda/CONTROLS.json b/research/current-rounded-lambda/CONTROLS.json new file mode 100644 index 0000000000..0650617b6d --- /dev/null +++ b/research/current-rounded-lambda/CONTROLS.json @@ -0,0 +1,17 @@ +{ + "controls": [ + "global_vs_tensor_Lambda", + "rounding_not_sign_equivariant", + "late_public_write_protection" + ], + "detected_table_mutants": [ + "tie-down", + "omit-range" + ], + "typed_binding_controls": [ + "boolean_table_sign", + "boolean_provider_sign", + "boolean_site", + "boolean_port" + ] +} diff --git a/research/current-rounded-lambda/DEPENDENCIES.json b/research/current-rounded-lambda/DEPENDENCIES.json new file mode 100644 index 0000000000..49897e2cc2 --- /dev/null +++ b/research/current-rounded-lambda/DEPENDENCIES.json @@ -0,0 +1,1094 @@ +{ + "schema_version": 1, + "files": [ + { + "local_path": "vendor/serial/vendor/monomial/phase_binding.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/phase_binding.py", + "bytes": 3332, + "sha256": "7624e2421c4188f7339231263d6d8504bf7eb3acaf91dcfd745952b87a6f1cda", + "git_blob": "7f51953eb91c53fb7b6923d3278638e1857d69ac" + }, + { + "local_path": "vendor/serial/vendor/monomial/phase_adapter.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/phase_adapter.py", + "bytes": 9463, + "sha256": "42687d9cd5f8f4a964e2ddd79aa404432ff26f9ebb55e9c069bbba30f0c3044f", + "git_blob": "02f0fdc3ba178f13c27c97c36260107d2c0bba82" + }, + { + "local_path": "vendor/serial/vendor/monomial/selected_service.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/selected_service.py", + "bytes": 3608, + "sha256": "afd4ba2ae8f833e8a47456a8c2dc502fb3e12158601aba999b0d0994085bf4b0", + "git_blob": "fc3cbdc16be69eeab39e887e1d3a33ea21a80cb7" + }, + { + "local_path": "vendor/serial/vendor/monomial/DEPENDENCIES.json", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/DEPENDENCIES.json", + "bytes": 58515, + "sha256": "40f200759a2f56a13b3cbcd1f6de9e5d6eaf9125270a7fc5dc09b82c4b4c1ed1", + "git_blob": "cbe38bbf8f0b912daddfaf6f1eb69d89343ca8ec" + }, + { + "local_path": "vendor/serial/vendor/monomial/PROOF.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/PROOF.md", + "bytes": 24018, + "sha256": "5bd00e9764cb628cbd92a113419c2cd79c77ba81b1e15b04519026c26ff3091f", + "git_blob": "5bd585e03ce948261ef979b748a1c6df8cbc2fb4" + }, + { + "local_path": "vendor/serial/vendor/monomial/README.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/README.md", + "bytes": 9609, + "sha256": "6419eccd7796e78ae25d3c1c42ad60d6e8d0da8f8f4d4c1e3adafdf45a8c4c69", + "git_blob": "28d2611cd3c3cc7555451af1e36f9c4701e5a0ec" + }, + { + "local_path": "vendor/serial/vendor/monomial/SOURCES.json", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/SOURCES.json", + "bytes": 6688, + "sha256": "01b27507feb5ce1ebfd3541c280cff74ceebcc1b705a4632afe14013ab4c4e64", + "git_blob": "43555e2f2717f404b752607da27a86b07c38a40d" + }, + { + "local_path": "vendor/serial/vendor/monomial/TASK.json", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/TASK.json", + "bytes": 6722, + "sha256": "4f27bee7c18e7b777e29afb11cc224fe72640b46b746d9abf1a0f075628a9982", + "git_blob": "4ab3215b61316d565ec6dc99c7db129c937b1e67" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/DEPENDENCIES.json", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/DEPENDENCIES.json", + "bytes": 36466, + "sha256": "8481fde09d925fe143a604a4924f05bb1ade2d1ac8f9068389680c9406f71507", + "git_blob": "9e68f7226669eb4b92330023e16a86739aa859ce" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/PROOF.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/PROOF.md", + "bytes": 25520, + "sha256": "acabf664e97b35d5c63998c6f08bbea27369b36db14b203c4ef62180a9535faf", + "git_blob": "859eb593d3b5bb07b3fd8a3b1034b4ac19a8dd6c" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/binding_sources.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/binding_sources.py", + "bytes": 3843, + "sha256": "e3b1cd40a2436381b3688aa3a5a740d402d08d0611dc43a629634bb1a6f7b299", + "git_blob": "15469f097247a4627336b9bb77d03b8696533276" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/codec.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/codec.py", + "bytes": 9914, + "sha256": "60f94c991568981c1ae8633bbc9c4d3c259e2df0654e8720d7f4554737d8e136", + "git_blob": "bf3bd0d5a6fbfa1e7a56c36578c2caaa0130c7c5" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/provider.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/provider.py", + "bytes": 10325, + "sha256": "3b7bb4f7940ffa9fafd34d25bbb1a9225e1b671924ed194ad012cb26251d7460", + "git_blob": "481013b988e5ae8189a0dddfcbb2f521e3142cab" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/DEFERRED-PROOF.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/DEFERRED-PROOF.md", + "bytes": 10651, + "sha256": "3a7ac6dae3b76d5f78849f521635da034fe99b1ea6c942175a3652b53f6262c2", + "git_blob": "de725a73e97496836100aa6e0ed9cd70985373da" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/SELECTED-RESULT.json", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/SELECTED-RESULT.json", + "bytes": 6784, + "sha256": "9b8d0eea95b3bf0dfcb7938a732a6439b87a2685dec2a5ab9e525b3b34debbfa", + "git_blob": "d59b5035e7b4cbaa9d688a1d32dd0d6eb79c466a" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/TASK-CATALOG.json", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/TASK-CATALOG.json", + "bytes": 82822, + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81", + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/compact/PROOF.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/compact/PROOF.md", + "bytes": 18626, + "sha256": "ec6395822ae500242f3fe5e2cf40caf9a7f9fa259d475d2c14970d951ff4df48", + "git_blob": "f65f38123ca0adb02f6ca69351cbfc933506e5cb" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/compact/compact_control.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/compact/compact_control.py", + "bytes": 10331, + "sha256": "73a9ace4f91aeb383fdbc6f7762498fe707b4e4b45b1c63920bb90cc8795e284", + "git_blob": "13af719b5844f14f5cf05c919e84204cd21caf6a" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/compact/compact_counts.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/compact/compact_counts.py", + "bytes": 5621, + "sha256": "71c19cfc186aaf0c159ec64ea1a5d58e1fc5fc093d50c7360247559261fad00d", + "git_blob": "064b508efd12f7d5a33729b2344b6890f0c75d2f" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/compact/compact_engine.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/compact/compact_engine.py", + "bytes": 6536, + "sha256": "2cacff4d36a6e029add115f47cd8ffbf3c61e7ece0900308b98e6032e652f098", + "git_blob": "5c5ca75567f85b042c156e0ed5a8afe81671b1b8" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/compact/compact_layout.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/compact/compact_layout.py", + "bytes": 4909, + "sha256": "5be2be9c32c15742da18fde438a5559a45a86eb661105027b1b233a7c397e0ce", + "git_blob": "03ca12aed77741f40d824fcb33cc4eedb85abfd9" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/compact/compact_streams.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/compact/compact_streams.py", + "bytes": 9634, + "sha256": "3b5cce3be9763c6bd7803d6223d2784d1975eeac6c7c99f5e00dfc49bb11d249", + "git_blob": "5699cc7f20def3bc873d2da05b13a252246367a1" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/compact/native_sources.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/compact/native_sources.py", + "bytes": 2148, + "sha256": "865c97c4f261fde37e86eb16a910eaa5b2f26daaa7d2648ae0322ba8c0286572", + "git_blob": "3d2834c5fff39481c9a0442a514c10eaf50f98d2" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/PROOF.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/dispatch/PROOF.md", + "bytes": 35049, + "sha256": "b0ed45deb84fa2ce835246d7de3c85ccdacf24ab68235cf1138fe6ff4c4ce5d9", + "git_blob": "96b032f662397d496c4d827839441b6794881a53" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/TASK.json", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/dispatch/TASK.json", + "bytes": 6765, + "sha256": "6b5334d10044644ba646452b0e9e21528061768726d124a4a97af26785aa9ec9", + "git_blob": "70bb2c54a6dbf9f17a55bbae8383d9bfde933e52" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/compiler_routes.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/dispatch/compiler_routes.py", + "bytes": 7612, + "sha256": "d375f8c2e666ffd2ebe6de34ccb7756ac9fa4a4cd5f866cb025a781f8538c599", + "git_blob": "5752189b8a838596346df8dde89024621b513e41" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/row_programs.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/dispatch/row_programs.py", + "bytes": 23631, + "sha256": "a59510516d1397382de6141edc1eb69cf3ba5e6e330198deb5e335e543300be4", + "git_blob": "30ba41725f7e1ba3dd058abd30c66d19820a008d" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/vendor/occurrence_geometry.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/dispatch/vendor/occurrence_geometry.py", + "bytes": 14919, + "sha256": "f3504a73803da120040cc62ee8f5e8b849237daf508a7146272d55624c3f8396", + "git_blob": "9c3c97d86a7bdd7b95944218bf1e6e4a5a1746a1" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/vendor/row_padding.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/dispatch/vendor/row_padding.py", + "bytes": 10721, + "sha256": "24270408e87b028791670cd63908adeb03162f0919237e8644065c5898fecf2f", + "git_blob": "1e3533efa92c3bab35916ae6844290586d18ff27" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/lifecycle/PROOF.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/lifecycle/PROOF.md", + "bytes": 35612, + "sha256": "9a088fa00f10e59df48090b67c6ef7c3641bc9cc36b223deb917740372d57993", + "git_blob": "605981247e27de68fe78d3a36e2b454efbd6b11e" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/lifecycle/machine.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/lifecycle/machine.py", + "bytes": 14932, + "sha256": "ec597bce13275003ff30e4be481c936401826c1d4af642b55eec0c410774d1df", + "git_blob": "acf475e4fccaff2fb64bd5b0b3f3fc0d246dc592" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/lifecycle/source_ir.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/lifecycle/source_ir.py", + "bytes": 27393, + "sha256": "54dd93bc50bd10e974c70794df1c13da27f0e3d8cdb6cfe6791a63280096f1b1", + "git_blob": "79c95fa79439f3c893de52991173bd3a5eae2729" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/lockstep_executor.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/lockstep_executor.py", + "bytes": 24787, + "sha256": "0bda14a3e5f4da348cd5c89ebe29d717e7a5406ec31b164d5b9e1d25f7f38e0e", + "git_blob": "9469443a3d7cc6310a7369daf77c7756d5bd3f38" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/PROOF.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/ordinary/PROOF.md", + "bytes": 13273, + "sha256": "8a1c2145cd8f080026488a571d95813c09679aa323f19aeaef0ea98030136e1c", + "git_blob": "12be1f06062090fcc68e598bae250f185e3d8524" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/binary.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/ordinary/binary.py", + "bytes": 4350, + "sha256": "578fb5bc793fc544dca8111605bf9f6067b8ba7dc7489a3ac243e1df3cd37953", + "git_blob": "651185a9eec51438949580a34e707f6dd1adbd4b" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/encoded.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/ordinary/encoded.py", + "bytes": 7305, + "sha256": "10ad2fa5902a48d49cf2b89a30b3f2711d63a6a43b9512a6427affcdf07335a7", + "git_blob": "2280fa98ff5e4da7c4909814ce4a1c405605ada8" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/ordinary.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/ordinary/ordinary.py", + "bytes": 8660, + "sha256": "7f8338e748bcd42fbef1e7cc47b6c5040dfb3aad216e34759bcb12b8e14f7705", + "git_blob": "81b330a4b886a0f4deab7b0811478bab3fbc107a" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/physical_words.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/ordinary/physical_words.py", + "bytes": 3777, + "sha256": "89ba40442297ec35368e426770f44852b39807ca426710ded2735678651bef61", + "git_blob": "44b464714277786297c8ee7fd04470dc6394896d" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/session.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/ordinary/session.py", + "bytes": 5874, + "sha256": "45ee809b27a69ca5576361922fd2760f568c9a98864d4c55c4fee3003ee3c9ad", + "git_blob": "09f645bbf0c6c3d41d0c03e8031adc4e81744ac1" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/source.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/ordinary/source.py", + "bytes": 2534, + "sha256": "4bd047a1272374880962d3074f1e50de717518a3a181f11607e820afe50dd4e5", + "git_blob": "8594fc62cee8a111958561b75045c8ec16ebfa47" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/record_lift/PROOF.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/record_lift/PROOF.md", + "bytes": 6973, + "sha256": "8442243130d4a9932f78eb42419196d2866d4496256e3bb2d6143fd52b44ddb3", + "git_blob": "69e07e58c5468e2045281335a56f4918b474c79d" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/record_lift/lift.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/record_lift/lift.py", + "bytes": 16191, + "sha256": "21c77119c004a86a603cca91ce1366629431db18e9e0554942492f1b5afebe4a", + "git_blob": "167d085a9191e3b3545bcf39d5e6edc94e54d514" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/reference/NOTICE.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/reference/NOTICE.md", + "bytes": 2140, + "sha256": "74a9f03e9ce467c75f5f7cf1b8465d349ea38ef114afad261824c3bcf13da00f", + "git_blob": "e82bfef53054bd753ba0aa8a966f84427faa2293" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/reference/compact.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/reference/compact.py", + "bytes": 9400, + "sha256": "0e1027a60f38c21cfd808c8ce44dcc2423810efdab0e15f02b07f261ad48fc3c", + "git_blob": "60bc206c78150f23563a4775800b0dd32025843d" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/reference/streams.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/reference/streams.py", + "bytes": 4369, + "sha256": "718a582a50aee8f1f04945ed942be1d4162962fe47dbf05c6ff37b7fb8c61257", + "git_blob": "61542ce4c9eb51bfc113475b4f98649cb90a853e" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2808/outer.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2808/outer.py", + "bytes": 8261, + "sha256": "9a26702a853805da7f97da7272d3b610c4d69767ecc6b450efbc4b6722dc3f19", + "git_blob": "1341d394481fb13beb826b944409b11083d8e7f8" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2808/vendor/pr2786/padding.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2808/vendor/pr2786/padding.py", + "bytes": 4971, + "sha256": "9f58bf2d343e13a70dc765d86c590b912d5987669d507ab14bd36deed94a76ee", + "git_blob": "0229304638de6c78ebc519b33a6ce34b1d396ca7" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/consumer.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/consumer.py", + "bytes": 4792, + "sha256": "2f2a8604c23fb2c81f24320c71ed0142118d98dde3be6086adad28e89954a777", + "git_blob": "a66d9276f829ce2c619871866816649d5f3687fd" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/driver.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/driver.py", + "bytes": 9523, + "sha256": "ceaf8f75de9810a05ebf8f65780b6f8bd7599a5768401d5e4386182afe615cdf", + "git_blob": "5b7846a70aada53d87480b337e1c04217118771b" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/evidence/NOTICE.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/evidence/NOTICE.md", + "bytes": 1035, + "sha256": "fd7c42e89878cda6df86dde8720ece34625a337cf5edd795a421e2d3b42919e9", + "git_blob": "d0318d43ed420e21dc52166a19de703aa87fbb3e" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/evidence/pr2688-NOTICE.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/evidence/pr2688-NOTICE.md", + "bytes": 1183, + "sha256": "c899fccf7bd32397f0ddd85e4af35a166cefb3e3ae3407ec40edc3ab2051b617", + "git_blob": "f2b49cdef83a4a685fad32c01fba93e12cfcb5a8" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/layout.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/layout.py", + "bytes": 5938, + "sha256": "3beef6534b02c3b011b741f957a7d9fb05a9ac0bba1fed53b2c71834e4ea6bc1", + "git_blob": "aa554b14fe0f6b308d9fba0a2afc92e5a28e20cb" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/linear_sign.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/linear_sign.py", + "bytes": 3138, + "sha256": "73e895fc701a4145cbe89d60f5775128354e7f08d0a45eacf22f423913f54e67", + "git_blob": "6a6e5c02f299fad8c4f7ab724fc36e14a22ab13c" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/node.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/node.py", + "bytes": 4739, + "sha256": "0bd4f640cafb5c8f070c161d86445910f77578a672bf5886936ed89e7f6bd21b", + "git_blob": "28c98a3573b458f7a055678d70b602b80e6e959e" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/packet_engine.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/packet_engine.py", + "bytes": 5093, + "sha256": "c80fc3aa9092f91cc309b2fb2dbc3618bf96bdb9b8498503993ea161f0ae2134", + "git_blob": "72543f684f38fefeacc2ee66d81661f1a2439cf7" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/peel.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/peel.py", + "bytes": 2104, + "sha256": "8b20888f74b4cd814a97b42ec72528fbfb6d2e936c5022df726f0785d0d01a2e", + "git_blob": "38502515afc928082c849cd2cda8578d33a5050a" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/NOTICE.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/NOTICE.md", + "bytes": 2849, + "sha256": "c446b32b8a621844fb2fbe654810c8122035bdd43fed2132f1137d98cb6f9943", + "git_blob": "ef9f81510db86eaf2f0a7191d85e92a6db30ddc0" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/cardinal_counts.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/cardinal_counts.py", + "bytes": 1861, + "sha256": "59ddeac102a0cc51fa49b15aae6aeb68cd68ed217fa974ce916372a177d2ec8f", + "git_blob": "6a14feac45094ae9156e8c2c982d6727544f180e" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/catalogue.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/catalogue.py", + "bytes": 12593, + "sha256": "83ea88f82d4a83c5f889774bfe3519b7ebaa24b6a0e2a969dafff012107a89bf", + "git_blob": "0efc0575a7623ac41c094d2e8772beda5a9fdc29" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/control.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/control.py", + "bytes": 2559, + "sha256": "d3a93e54bb7d333b73917586407d11674d38b5c3fda4fbdc436fb5293ae7786a", + "git_blob": "4f6ac09bffab43dbccc470bd0bde2ffbe969a8b2" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/fresh_rows.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/fresh_rows.py", + "bytes": 2471, + "sha256": "e4ae08fbd658add630eb7754ebe0cbcb42c6f39cf4128f9cb92e27fcf5213a7d", + "git_blob": "aa3a327604308d3a5c7a27b65f5e631d430ab093" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/topology.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/topology.py", + "bytes": 3652, + "sha256": "384d456ddba76de137a63b50019d5bba2e9f6daa4177c91643e0565d4cf1d44b", + "git_blob": "39a2916c207d04be5efc44750d8606f5da0c2990" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/binding.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/binding.py", + "bytes": 5099, + "sha256": "20169a8af6ed2b34069fd353a2bc1c42335ab686c58de8479baef33dd3fb493b", + "git_blob": "21a5a21220a18ab62a19ac403a9944bc3a8665c8" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/bitstream.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/bitstream.py", + "bytes": 5182, + "sha256": "f78bac9641007dbd8824984edcac057274fe016ce78bd9cb512d0c0913274783", + "git_blob": "4d1fd4abb0f2aabe833e5cbc9efb51039739e7ca" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/cardinality.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/cardinality.py", + "bytes": 3936, + "sha256": "505d5e560c5a507e6184edcc19a87cf1fed243eb34a5cb21fbe1e4fe017e7f22", + "git_blob": "b8ba857e32c5903408e1e61ff916300848b4a208" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/children.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/children.py", + "bytes": 3526, + "sha256": "a78866939631214c1d1659203b2b5fc062e3c6255e9f11f975c310046b010bd6", + "git_blob": "ce4935f838516e2b08d13bec767cb803786fbc6b" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/controller.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/controller.py", + "bytes": 15160, + "sha256": "fa09146991f6c04e6f4b6eb9bf0c8e103e70e90a0e402ff3d69814e6aac8ff8c", + "git_blob": "c631a9e77fbcccf0e8f448adc22978728aed7b60" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/counts.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/counts.py", + "bytes": 1695, + "sha256": "00b476dbda0e8cc99886bf794439e1cb9e775f435f599a3557e99321fe084069", + "git_blob": "81b48940ce222290a40d4fb349ce827f4788469d" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/directory.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/directory.py", + "bytes": 4633, + "sha256": "4270e370b2bfe38ef73aadcd97d1b3496b56bd582115d74331eb9e5ceb90bec7", + "git_blob": "c74cacf5ce809c0561d374f137a52df0992b4226" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/episode.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/episode.py", + "bytes": 5712, + "sha256": "38f79cb2a370548471063952d5f7c74bd795a2a8496fdcf3ce0996d79e3adaff", + "git_blob": "30d11ff4f333813855d36da3eb5a1ab0e154bafe" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/forms.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/forms.py", + "bytes": 6511, + "sha256": "1fdf9d31b7eb107c396e33f94dad61c9d3f2c709cae61178268a44ca80dbc0b4", + "git_blob": "6667c0b772a63f0059c7caffec63e0d919a92398" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/low_codes.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/low_codes.py", + "bytes": 4505, + "sha256": "f657e17f6088c840e3f7783e662257630f6d2c1e71c217721ffbca4d6ac93e87", + "git_blob": "737edfc4a10f4b7b3b97a7cef4b40864efd806e6" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/matrices.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/matrices.py", + "bytes": 9063, + "sha256": "00b687434039b54529ee092e34f9435cfcd66e0816eb3bd2a6688c73f4e01459", + "git_blob": "5d497353efbb9eeaaf4facd96ab40ffb0f3aa20d" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/numeric.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/numeric.py", + "bytes": 8729, + "sha256": "7327b05c4ec3e0f6d9c352cc7de85bfd4ebe940482553e77c59a773a8c09c514", + "git_blob": "6d4ebca8398008375b8f4762d1a9f1514e8c2611" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/oracle.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/oracle.py", + "bytes": 3547, + "sha256": "7bd18089e32ce48085b5e3a75159f6a82cdb2649ec682c53db05e399d97aef67", + "git_blob": "244f131466698a3ace10b657242fe1f65c07fd1f" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/packet.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/packet.py", + "bytes": 4175, + "sha256": "970e7fe0719e3dfe122b248941e6f21cd90d7dd62089fa6acbd0e5412ce083a5", + "git_blob": "ebc9b616514412b80c56d523776e6ba5d6766453" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/plan.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/plan.py", + "bytes": 3907, + "sha256": "d9c8dc93762db4d3a449814aa51e2211460648694469854d89cb48cb04188cf3", + "git_blob": "48255d5454308c07635fae4e7eb4873b0bd2a4f8" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/records.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/records.py", + "bytes": 9888, + "sha256": "0c9c4b23e998597fb877bb1a29da69ac869b68262abe635b162b4dba9c69b372", + "git_blob": "4f00467a0ff580954ad2fd0c7380240c753ddef3" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/routes.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/routes.py", + "bytes": 9031, + "sha256": "ed7dc3679451696ab1dd841146b215c9515a3eec5e4ff3763f33c315f1696ada", + "git_blob": "35531201dc349a811dfabc6f1f6e64697d665194" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/selection.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/selection.py", + "bytes": 2640, + "sha256": "bc8e371fb1fa0b41fb05ef0b34d0f4c317b2396f9833d91f44f95c2b54b4052b", + "git_blob": "2c28f1aaec104a75c4e6c170b3e6a60300ee6700" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/sources.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/sources.py", + "bytes": 6126, + "sha256": "f102edc7816d742bd89db8097254c19b843d0ef5cf6758ad42e93bcc0b214c62", + "git_blob": "16d5e7e6a28018f1e2d76d61efe2d54f6a6941d4" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/stream.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/stream.py", + "bytes": 5523, + "sha256": "c7dc7da5b00f27016982ada4c0416f8328568b00df16d97012f33d4b372d79b5", + "git_blob": "5e5a4bb0f98971447043e25d4dd6991bfc070389" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/recursive_call.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/recursive_call.py", + "bytes": 5323, + "sha256": "157deaa5972557893d43494a81151483bdc46373448ec677cb6a738c9b7e6f1e", + "git_blob": "6d33224145aa04f7fbaf7b6cda7c9c164311a402" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/scheduler.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/scheduler.py", + "bytes": 879, + "sha256": "0d96f7fbd6f90416167c5a52c0e3de942d1a0cae3d2968831932a9576701699f", + "git_blob": "60c2b6d065eba91dd5e0edb7a77fc087971eca3f" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/stream_runner.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/stream_runner.py", + "bytes": 4930, + "sha256": "b255feaf6cc6e40413ae73fe302bf8f290bf4dd89f4128b23a91cc9860601801", + "git_blob": "6ba5df130bb4a0fcb06b6c630830ae3a6922921b" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/trace.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/trace.py", + "bytes": 7774, + "sha256": "3a664224c558244f606b603cad816d75e94a17c9b2620a06a1530e893dfceac2", + "git_blob": "4b002201ce54cdecec9acf4e874b7f71cd75fe71" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/NOTICE.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/NOTICE.md", + "bytes": 1668, + "sha256": "8640d1b52fd21e5b20e8109ce9c4957ca1e19a95e26a1c80d019a6e6f4d5f178", + "git_blob": "307c2da733f7f3a76e97c77e71072e811f40df02" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/codec.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/codec.py", + "bytes": 6446, + "sha256": "5b9fda8136f7e60bece54e3fcc74f4ea0bec7145fa60e1ae3a4d252741b81fd3", + "git_blob": "9cd54d9417eb685dcd3f8293f01299ef9046ad31" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/vendor/parking_machine.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/vendor/parking_machine.py", + "bytes": 4402, + "sha256": "68134779debfb795468a1aaecbc2b9d321d7d4e451313ce7dc8fa7092561df4c", + "git_blob": "cafd614a3b7bc87b019361fcdf890ed976f26d19" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/vendor/words.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/vendor/words.py", + "bytes": 13794, + "sha256": "5c37f57708ba3131bdcb03139f9dbc29886bee44569c09cbba51b68f75acd7f9", + "git_blob": "8d4ba37e2778acb35b34e0719df2caf138fbeb50" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/macro_binding.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/macro_binding.py", + "bytes": 6359, + "sha256": "9ef31765d03d2c54fad9296f2ff0707a190ce169e44de4f0f45214e3c410c01a", + "git_blob": "c197eb6458be9374cb4684c654bfc99e619dcaf0" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/macro_code.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/macro_code.py", + "bytes": 5245, + "sha256": "f626b018124747a5f17c1603bea36cd74c00a69a0647fd7b10e9c4e2964caea8", + "git_blob": "2f5f8ecfac6457171707b1b5ff02b5071954fcb7" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/macro_machine.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/macro_machine.py", + "bytes": 21501, + "sha256": "7bc6e42072a09a08ac961e05c3da01cde012d740d4b4c605f298d994f2ad7c5a", + "git_blob": "5a032e8923f7f8b22bb98f3e39b804beb9906c16" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/residual_blocks.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/residual_blocks.py", + "bytes": 4708, + "sha256": "ab7f3df8906decd2efecfb138eac1456c106bb520b2598761f699f80680d8331", + "git_blob": "fba75e7649cf77e352a75324495191bbd7853c22" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/role_parking.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/role_parking.py", + "bytes": 4318, + "sha256": "1884a3c260d81d5efbc0c33d86a810d6728e55e5764cfcd423f858cc685470f3", + "git_blob": "fc48c244eefdbaa3e320e86c75a7d187cb5765ef" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/scratch_pool.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/binding/vendor/runtime/pr2809/scratch_pool.py", + "bytes": 5952, + "sha256": "41f1eb93652b7174c3b02f95f70e1a9ce2e2aed0a729e725167c8f226e65d8db", + "git_blob": "0f22807c65d1bca374b905538512bf8c43702070" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/monomial/PROOF.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/monomial/PROOF.md", + "bytes": 12856, + "sha256": "20885a8a137fc670121429625912ceae54db95ac5e574b8c64c90f477aebacb7", + "git_blob": "82e9a8b0b50f26844528af9e07632800679805ea" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/monomial/SOURCES.json", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/monomial/SOURCES.json", + "bytes": 6854, + "sha256": "0dd57a4fe4fc97826df0eb215975d013ac0e18f185c73cd93e34c95a9a2b4b16", + "git_blob": "e040a558800e719e2d8b6237bec39e7e10a3641b" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/monomial/monomial_engine.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/monomial/monomial_engine.py", + "bytes": 8584, + "sha256": "fc02c6c5159d6c258063a36ef3dc9313a34d7ba9781b650e451cc0ce971e9667", + "git_blob": "2251fd98ba01a171f5d39b25a93c895245f10e55" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/monomial/pair_dispatch.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/monomial/pair_dispatch.py", + "bytes": 841, + "sha256": "fc0eaa2a9d0855660b15a15d894137eeebc64c6418f52b6af0d0f79d86f2e0d9", + "git_blob": "0e467bdb3727d7f354f98dee54f320f1f072aa2c" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/monomial/phase_recipe.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/monomial/phase_recipe.py", + "bytes": 2265, + "sha256": "8215e5e55daf019694e55b2acfcd42ecf109a2faf767a2181d664ba9b4957e46", + "git_blob": "a2f684fb588257cc182dc88dded59ed70f5c2585" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/monomial/phase_sources.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/monomial/phase_sources.py", + "bytes": 2111, + "sha256": "3944ecbffe91fb561b2b8a810461cd2b8229f1f2611ca6a70e3d86451efb220b", + "git_blob": "aaa5c663a4bb6b0ca4d9119c1ae92064509d79c8" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/monomial/reference.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/monomial/reference.py", + "bytes": 4656, + "sha256": "394f9a465ac9148af0c20844d375e4befbef17d92b2fcc840d83419480dd4740", + "git_blob": "5fa4494167c4ba668993a2b1c902969518728a4c" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/monomial/signed_phase.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/monomial/signed_phase.py", + "bytes": 3787, + "sha256": "e21818674133a2bd7e63fadaf719eb45ce80db4b3806ca8ef99c247be22c2a39", + "git_blob": "bab32b0c5da7f364d6a79171c09b02d123a05bd9" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/selected/RESULT.json", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/selected/RESULT.json", + "bytes": 12798, + "sha256": "84fcbe2a0b64307b5703c363408042bdd91555b0419509aa50daa43b3b1924ad", + "git_blob": "e4a03118d585fb80c9ac932281b528ac394ccc5f" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/selected/WORD.json.gz", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/selected/WORD.json.gz", + "bytes": 119880, + "sha256": "7834725d9e34ee846a9ccc615221ea81e0201613938afa185d2eda0c9a6c232f", + "git_blob": "22f9ab02d1b73ea0aa4b07ce445a14cc2602c760" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/selected/clifford_exact.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/selected/clifford_exact.py", + "bytes": 6824, + "sha256": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "git_blob": "166841a037f069249f6f7f6dedb89248812f59e2" + }, + { + "local_path": "vendor/serial/vendor/monomial/vendor/selected/native_verify.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/vendor/selected/native_verify.py", + "bytes": 12323, + "sha256": "3049471905b47b385c88378a1a3be7a18b8858aadd035b8a6da2f4a03b470f38", + "git_blob": "2c209dfa9cfade3bc20ac5fc9d876b433a147f8c" + }, + { + "local_path": "vendor/serial/vendor/monomial/check_fixture.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/vendor/monomial/check_fixture.py", + "bytes": 8667, + "sha256": "9a7b0e372798586f63c657ba756589541ba7923175783c4a43adcdb5b31d2b41", + "git_blob": "1399f50d7bedab45806cc9e1ffe74c654aa33aab" + }, + { + "local_path": "vendor/serial/column_view.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/column_view.py", + "bytes": 6733, + "sha256": "fb19f59af7c8ef8f502c99cc4837d55a4e35f42b6334a3589cb37795b7627117", + "git_blob": "f547ed7a72d89fdfd23f6c54a9983b522e16076d" + }, + { + "local_path": "vendor/serial/serial_sources.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/serial_sources.py", + "bytes": 2314, + "sha256": "dbed4c5d139f5d4da0b9db9f8f7105d5eb59e44df4dbe4f499272a1e0130dbc4", + "git_blob": "54ab34373b67d61bddd44d1cc8d36491c8a2015c" + }, + { + "local_path": "vendor/serial/DEPENDENCIES.json", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/DEPENDENCIES.json", + "bytes": 51654, + "sha256": "6fadae340babb68b55076127bed4deecd2b4d4a3bcf1963b26f8631c32b61f1a", + "git_blob": "0fb28bde24d05254418ccd2b73e01bcdc697c839" + }, + { + "local_path": "vendor/serial/PROOF.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "2ec95e06c2a16e73f9da9a8fe41912710135daaf", + "source_path": "research/current-serial-monomial-leaf/PROOF.md", + "bytes": 9185, + "sha256": "9d9887da91617030174d1c7eb5e76492ac05974c78bb06e77412e5a6e34463a0", + "git_blob": "f6097b18553ede9b6ec3d4168cac79448d82eb4b" + }, + { + "local_path": "vendor/exact_scalar_tables.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "13193a22b1070a74a8580c5d3ea27470443f815a", + "source_path": "research/current-scalar-flat-tables/tables.py", + "bytes": 12650, + "sha256": "654e9734ef80a9394807ca508543b1bc164afb5768d23d0e5a88c790d2f13bac", + "git_blob": "1cc22f75fbe53d48b84be42782e581c04820cd49" + }, + { + "local_path": "vendor/machine.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "ab239cb6ee884e7a900dd9101c34448077fad0b0", + "source_path": "research/compiled-owned-bank-lifecycle/machine.py", + "bytes": 14932, + "sha256": "ec597bce13275003ff30e4be481c936401826c1d4af642b55eec0c410774d1df", + "git_blob": "acf475e4fccaff2fb64bd5b0b3f3fc0d246dc592" + }, + { + "local_path": "vendor/scalar_fixture.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "6476455a1cf7cd29d6a2a81c3b6f02fd3a3bbf57", + "source_path": "research/current-rounded-scalar-tables/physical.py", + "bytes": 6183, + "sha256": "b0eb6f2db2deff9104cdf786a8ae84b0d4864b09a1f9b99178cb08c1666d014e", + "git_blob": "027b563887fd748438d0d0dc7a75f356b29986bd" + }, + { + "local_path": "reference/PRECISION-PROOF.md", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "56bc9383594a3efc303148e00bb746851abd1ed5", + "source_path": "research/query-only-precision-envelope/PROOF.md", + "bytes": 26757, + "sha256": "8ddafd9a4c5b51d4c0e3f9b4a9eba27712335a16de1868ba156557344af86e63", + "git_blob": "465a5dddd83bdea5db09f1030f99dffe698fe600" + }, + { + "local_path": "data/caller.json", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "617903497387a98f7ca929ad0b6928dd32abffec", + "source_path": "research/p104-query-only-interval/QUERY-ONLY-CALLER.json", + "bytes": 73501, + "sha256": "3828d53e80ea97e8b866320f081af20b6b93bfebd58b95b56b85a7afe151af5e", + "git_blob": "cf55f4271009a06ad192a070d330a4466b6d44fa" + }, + { + "local_path": "data/word.json.gz", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "617903497387a98f7ca929ad0b6928dd32abffec", + "source_path": "research/p104-query-only-interval/data/word_6936.json.gz", + "bytes": 349022, + "sha256": "273e81f176f001684b1fa3eb857992bf58b54748004fcfe806b83adb48d2cc00", + "git_blob": "d93e67ca7628bf5531ae6e369da4dd7b7907b88f" + }, + { + "local_path": "reference/physical-review-6936.py", + "repository": "CrocSwap/integer-mult-bounds", + "commit": "03626137d0bd57f09b0bf9597376183ce6fa9683", + "source_path": "research/p104-main-wire-native/retained/physical-review/verify.py", + "bytes": 33361, + "sha256": "c303c2812d530849d174088f0330a4d7ddac2698d92b91848dbce7a512573fc2", + "git_blob": "f41390e0246cd6604a94ef5b418f48a817a4208c" + }, + { + "local_path": "reference/jclib_6936.py", + "repository": "CubeJerry/integer-mult-bounds", + "commit": "617903497387a98f7ca929ad0b6928dd32abffec", + "source_path": "research/p104-query-only-interval/reference/jclib_6936.py", + "bytes": 14872, + "sha256": "bdbd89da0125a41514ea10330bccd25de5dd626ac8b2d671c88dc2e4b8fb93c4", + "git_blob": "48a55ab03a731315dd27d1dd7dd52be716de0ce8" + } + ] +} diff --git a/research/current-rounded-lambda/DESCRIPTOR.json b/research/current-rounded-lambda/DESCRIPTOR.json new file mode 100644 index 0000000000..e26d7f9606 --- /dev/null +++ b/research/current-rounded-lambda/DESCRIPTOR.json @@ -0,0 +1,82 @@ +{ + "cases": [ + { + "actions": 37639, + "f": 1, + "old_remainder": 0, + "parent_bits": 1115 + }, + { + "actions": 38253, + "f": 1, + "old_remainder": 8, + "parent_bits": 1137 + }, + { + "actions": 47831, + "f": 1, + "old_remainder": 152, + "parent_bits": 1441 + }, + { + "actions": 67656, + "f": 2, + "old_remainder": 0, + "parent_bits": 2045 + }, + { + "actions": 68270, + "f": 2, + "old_remainder": 8, + "parent_bits": 2067 + }, + { + "actions": 77686, + "f": 2, + "old_remainder": 152, + "parent_bits": 2365 + }, + { + "actions": 216919, + "f": 7, + "old_remainder": 0, + "parent_bits": 6699 + }, + { + "actions": 217533, + "f": 7, + "old_remainder": 8, + "parent_bits": 6721 + }, + { + "actions": 226885, + "f": 7, + "old_remainder": 152, + "parent_bits": 7017 + }, + { + "actions": 928271, + "f": 31, + "old_remainder": 0, + "parent_bits": 28911 + }, + { + "actions": 928885, + "f": 31, + "old_remainder": 8, + "parent_bits": 28933 + }, + { + "actions": 938237, + "f": 31, + "old_remainder": 152, + "parent_bits": 29229 + } + ], + "changed_fields": [ + "remainder", + "selected_axes" + ], + "old_source_frame_export_assumed": false, + "private_ports": 39 +} diff --git a/research/current-rounded-lambda/OVERLAP.md b/research/current-rounded-lambda/OVERLAP.md new file mode 100644 index 0000000000..3ff0db2da9 --- /dev/null +++ b/research/current-rounded-lambda/OVERLAP.md @@ -0,0 +1,30 @@ +# Bounded overlap and source boundary + +The precision package at56bc9383594a3efc303148e00bb746851abd1ed5 Sections2/5 +explicitly leaves one-rounded Lambda with exact Q² production open. The +#6936 retained physical audit already establishes the total-Q convention +and source phase equations; this package credits and binds them to a new +literal monomial/header/Gaussian join, rather than claiming new character +algebra. #6937 already discusses total rounded division abstractly. + +The generic monomial7d1ff237... and serial2ec95e06... providers already +supply exact address/phase transport and genuine one-column execution. +This package does not re-prove their internal algorithms or infer membership +in the selected#6030 source catalogue. Its identity9/offset-q/phase0 recipe +and new outer header domain are derived directly from proposed#6936. + +Targeted canonical reads at7c49fe32... included: +* research/reflection-rounding-radius/README.md, blob14123795584429567e395216d493041175b94408: + optimal equivariant rounding radii for nonorthogonal integer reflections; + different map/domain and no physical Lambda join. +* research/d10-reflection-sharing-seeda3def8/README.md, blob658429a7889af7a7e145be353dfe70ab28d217f8: + finite group-algebra paid-call lower bound, not numeric arithmetic. +* research/format-limits-corrected/scripts/c5_lambda.py, blob4eb6c0bd57a58ac4e13d6a7d520a74deef2b70e5: + exact classical phase-frame butterfly/kernel identities. These are prior + algebra, not this current physical provider and lifecycle construction. + +The native worker's contemporaneous whole-MOVE rounding task is separate; +it does not identify the outer source Q² or implement this global Lambda. +The lead's refresh retained canonical7c49fe32, source#6936 head d360b118... +(timeout-only delta), and#6937 head a98df73.... No source-semantic delta is +assumed from a PR title. This is a bounded review, not exhaustive novelty. diff --git a/research/current-rounded-lambda/PR-DESCRIPTION.md b/research/current-rounded-lambda/PR-DESCRIPTION.md new file mode 100644 index 0000000000..eedcb41e63 --- /dev/null +++ b/research/current-rounded-lambda/PR-DESCRIPTION.md @@ -0,0 +1,102 @@ +## Summary + +The source precision proof leaves a completed one-rounded global LAMBDA +primitive open. This package supplies a literal Gaussian table and a +source-specific exact Q² monomial/header join, retaining all routing, +owned-copy, source, head-return and cleanup costs. **No new kappa, complete +caller admission or physical tariff-cap claim.** + +For the actual source direction q and positive column multiplicity f, +Q_f² is simultaneous address translation by q in every central column, +with phase zero. The new fixed recipe is identity9/offset-q/phase0. +It is executed through the unchanged serial monomial provider, with a +physically encoded private view changing exactly remainder to 0 and +selected_axes to 9f. All other descriptor fields and the full row are retained. + +Global Lambda_s(Q_f)=((1+s*i)I+(1-s*i)Q_f²)/2 stays outside tensor powers. +Two odd factor characters explicitly distinguish it from a product of +one-column Lambda kernels. The two Gaussian numerators are formed at W+2 +with cancellation intact, then rounded once per real/imaginary component. +STAGE writes only an owned translated copy; a separate literal COMMIT +writes the public field after every range check passes. + +## Source and exact result + +Canonical base: `7c49fe32c55de02c2c873655c804b16e4c3fef0a`. +Source: DreamingOfClouds' CrocSwap/integer-mult-bounds#6936 at tested head +`03626137d0bd57f09b0bf9597376183ce6fa9683`; current head `d360b118...` +changes only the verification timeout. The QUERY-only caller is public +`617903497387a98f7ca929ad0b6928dd32abffec`, descended from +CrocSwap/integer-mult-bounds#6937 at `a98df73...`. + +The caller has 14,480 expanded LAMBDA occurrences at 104 actual directions. +Each sign table has 5,275 rows. The rank-nine provider has 1,965 fixed owned +roles, including all retained private inventory, one new full-field bank +and two numerator banks. No new recursive paid request or productive helper +credit is introduced. Every unchanged dependency has exact commit/path/ +Git-blob/SHA-256 authentication. + +For valid current geometry, canonical common-grid data and admitted signed +range, the output defect from Lambda applied to the actual input is at most +eta_X=2^((X-1)/2)Delta on each containing complete X-fibre. The fibre includes +all 9f translated axes. Named late range rejection preserves the public value, +retires the partial copy/work and restores public/context heads explicitly. +No arbitrary malformed/native-interruption rollback is claimed. + +## Full cost and remaining interfaces + +The full serial bill remains + + O_9(f*((g+1)*(Vraw+M1*A1^6)+V+(E+1)^4+P)), + +where g=popcount(q). The new Gaussian tape/control bill is bounded by +4096(S+1), with additional positive copy, header, retirement, setup and old- +backing charges. Historical capacities of every role remain allocated. +Only explicit padding absorptions give O_9(fV). This is not converted into +the old 1000-unit LAMBDA tariff or a supplier raw cap. + +The new outer token/header contract is explicit. The old compiler has not +been shown to emit it. The selected #6030 catalogue has 22,803 events/3,453 +MOVEs; proposed #6936 has 71,144/6,323. This package derives its new Q² recipe +from #6936 and does not inherit selected-catalogue membership. Actual caller +width/radius substitution, full recursive stock and the full source invoice +remain open. All five foundational framework assumptions remain global +premises, and the selected certificate is unchanged. + +## Reproduction and verification + +```bash +python3 -I -B research/current-rounded-lambda/verify.py --suite all +python3 -I -O -B research/current-rounded-lambda/verify.py --suite all +``` + +Expected: five PASS_CURRENT_ROUNDED_LAMBDA_* markers. Registered suites have +120-second caps; standard library only, with no runtime Git/network/solver. + +Author checks cover 544 exhaustive four-input cases, 1,536 wider endpoints, +12 literal 23-field views, both-sign complete reduced-rank composition, +late rejection/retry, two arithmetic mutants, four strict typed-source +controls, and 53,248 source-character/compiled-flip equations. Separate lead +AI checks cover 48 wider cases through 129-bit components, a read-only-public +STAGE trap, dirty displaced work/context, retained backing after long-to-short +reuse, an independent rational oracle, and 1,020 global character cases. +Unchanged independent runner/receipt and reviewed hashes are supplied. + +The complete actual nine-axis numerical case is explicitly unexecuted. +Its minimum 4,096 records was screened above the 120-second attempt cap from +the measured 16-record reduced run before extra flips. This is a feasibility +screen, not a formal wall-time lower bound. Reduced physical evidence is +not described as a whole source replay; the universal join uses the retained +provider proof and the source-specific recipe/header proof. + +## Credit + +Prepared for **@CubeJerry**, with substantial **OpenAI assistance**. Credit +DreamingOfClouds' CrocSwap/integer-mult-bounds#6936/#6937 source lineage; +the retained monomial/phase work including CrocSwap/integer-mult-bounds#3087 +and CrocSwap/integer-mult-bounds#4172; CubeJerry's lifecycle, scalar and +serial-provider packages; and the source precision package at +`56bc9383594a3efc303148e00bb746851abd1ed5`. Classical Gaussian/rounding +identities are not claimed new. This contribution is the literal physical +source join, signed/defect proof and complete stated bill. Separate AI review +is not human or proof-kernel acceptance. diff --git a/research/current-rounded-lambda/PROOF.md b/research/current-rounded-lambda/PROOF.md new file mode 100644 index 0000000000..538302771c --- /dev/null +++ b/research/current-rounded-lambda/PROOF.md @@ -0,0 +1,342 @@ +# Literal one-rounded global LAMBDA with paid Q² routing + +Prepared for @CubeJerry with substantial OpenAI assistance. +**Conditional physical interface lemma; no new kappa, full caller, or tariff-cap claim.** + +## 1. Actual source and exact scope + +Canonical base is `7c49fe32c55de02c2c873655c804b16e4c3fef0a`. +The proposed source is #6936 word at +`03626137d0bd57f09b0bf9597376183ce6fa9683`, with the QUERY-only caller +published at `617903497387a98f7ca929ad0b6928dd32abffec` (3,095 events). +The caller has 14,480 LAMBDA occurrences after expanding its actual A/B +port lists. Each gives an exact sign s in {-1,+1} and a central direction +q from the word's 104 nine-bit ports. `construct_source(site,port,factory)` +checks this actual occurrence and constructs its fixed-q, fixed-s provider. +It is a new provider/header contract, not proof that an old compiler already +emits the required descriptor or dispatches these outer tokens. + +The exact primary source `research/p104-main-wire-native/retained/physical-review/verify.py` +at that #6936 head has Git blob +`f41390e0246cd6604a94ef5b418f48a817a4208c`. Its `phase` function uses + + phi(c,omega) = sum_v c_v [v dot omega] mod4. + +Its contact and query equations identify Q_q with the one-column multiplier +i^[q dot omega]. Its `central_normalization` explicitly keeps ordinary +Lambda polynomials outside tensor powers. Thus, with f positive columns, + + Q_f = tensor_j Q_q, + Q_f² = tensor_j X_q, + Lambda_s(Q_f) = ((1+s*i)I+(1-s*i)Q_f²)/2. + +Q_f² is a simultaneous address translation by q in every column, with +**absolute Gaussian phase zero**. The Fourier character is +(-1)^(sum_j [q dot omega_j]), exactly the character of that translation. +This is an all-f identity, not an inference from width-one checks. In +particular Lambda_s(Q_f) is generally not tensor_j Lambda_s(Q_q): two odd +factor characters give Q_total=-1, global Lambda=1, but the product of +factor Lambdas is (s*i)^2=-1. That false implementation is rejected explicitly. + +The unchanged #6936 `jclib.py` semantics are retained as +`reference/jclib_6936.py` from the public QUERY-only capsule: its LAMBDA +branch uses `((1+s*i)+(1-s*i)*q²)/2` on the total character. The new source +events keep that sign convention; no replacement definition is inferred. + +The new literal monomial recipe is identity9, offset=q, zero linear and +quadratic Z4 coefficients, and phase0. This recipe is derived from #6936; +no membership in the selected #6030 native catalogue is used. The selected +catalogue has 22,803 events/3,453 MOVEs, whereas #6936 has 71,144 events/ +6,323 MOVEs. Sharing a generic implementation does not identify those sources. + +The retained implementation is `current-coded-gaussian-monomial` at +`7d1ff23714e6f9182c1d0ff9214f65def2f30e04`, joined through the direct serial +provider at `2ec95e06c2a16e73f9da9a8fe41912710135daaf`. All reused bytes +and their original paths/commits/blobs/SHA-256 values are authenticated in +`DEPENDENCIES.json`; no monomial, Count, Tape, ordinary runtime or executor +source is modified. The existing serial result proves its physical route +for all valid descriptors. It is not a premise that an arbitrary formal +involution is a free physical operation. + +## 2. Exact new header contract and physical Q² join + +At this new outer boundary, a complete field has uniform signed width W>=2, +one common grid Delta=2^-F, canonical coded real/imaginary components and +actual physical blank frontiers. Its caller descriptor has the retained +23-field binary encoding. Let f,K,H,G be positive, 0<=rho=9; that is why simply +passing its old remainder to a rank-nine monomial would be invalid. This +private view is supplied only to the monomial consumer, not to an ordinary +or general global header producer. + +The exact monomial consumer checks selected_axes=rank*f+remainder, +remainder=2. + +The table rewinds the owned copy's head over its two components using the +real numerator as a width guide: skip its two high positions, move left +once per remaining bit, then repeat for the other component. The original +public head stays at its imaginary delimiter. Both complete input components +have already been read, so overwriting this owned pair cannot affect later +original or translated input pairs. + +For each numerator, add1 with a bit carry, discard the first result bit, +and emit W result bits into its original owned-copy component positions. +The one remaining high bit must equal the emitted sign; the final addition +carry must equal old_sign-new_sign. This is exactly the iff signed-width +criterion for floor((N+1)/2), including negative odd N. No assertion that +upward rounding commutes with negation is made: R_up(-1/2)=0 while +-R_up(1/2)=-1. + +A completed pair leaves both numerator heads at their delimiters. Rewind, +clear their current logical digits/delimiters to encoded logical blanks, +and return to marker5 for reuse. Physical retirement later erases all encoded +blanks and any old longer backing. Equal real/imaginary widths and matching +public/owned shapes are checked while scanning; their canonical initial +format remains a theorem premise, not universal corrupt-input validation. + +## 4. Complete staging, failures and ownership + +The STAGE table writes only the owned copy and the two numerator banks. +It never writes the public field. Earlier completed pairs may have changed +the owned copy when a later pair rejects. Those changes are allowed only +because this is explicitly owned disposable storage. + +On successful STAGE completion, the unchanged executor restores heads and +unchanged `Controller.primitive` retires its two work banks. A separate +literal COMMIT table copies the complete staged owned field to the public +field. All signed checks have already passed, so under the canonical format +premises COMMIT cannot fail its extent check. This separation uses the actual +executor's paid origin return; no free rewind guide for the full field is +assumed. The two numerator banks are reused and charged again by COMMIT's +primitive wrapper, even though its table does not need them. + +`LambdaProvider.run` explicitly retires every owned work role before use, +copies the original field, prepares the private header, executes the real +serial translation, executes STAGE and then COMMIT. Its finally boundary +releases the view, physically retires all private roles including a failed +partial copy, and returns public and context heads to their local origins. +Thus a final signed-range rejection leaves the complete public value intact +and returns clean owned bodies and restored public/context heads. This +property is proved for valid numerical geometry and named arithmetic +rejection. No arbitrary malformed/interrupted native execution or process +termination rollback is claimed. + +All physical tapes are distinct and behind protected local LEFT markers. +The initial public/context heads are at their origins. Old private bodies +must be contiguous binary prefixes and their heads within their local bodies +or frontiers. Hidden dirt after a physical blank is excluded. The fixed +inventory is allocated before runtime; pointer identity checks do not prove +physical segment disjointness. No arbitrary borrowed workspace is erased. + +## 5. Actual-input error and all-column precision contract + +For an admitted input, each real and imaginary output differs from the +exact Lambda_s(Q_f) of that actual input by at most Delta/2. Therefore on +any containing complete X-fibre, + + ||output-Lambda_s(Q_f) input||_X <= 2^((X-1)/2) Delta = eta_X. + +The count is 2^X complex entries, or 2^(X+1) real components. This is the +single rounding contract demanded by the published precision package +`56bc9383594a3efc303148e00bb746851abd1ed5` Sections2/5. It is uniform in +positive column multiplicity and in all spectator fibres. Since the pure +translation is a unitary involution, the ideal global Lambda has eigenvalues +1 and s*i and norm1. That algebraic fact is prior; the new contribution is +its source-specific physical producer and one-rounded arithmetic join. + +A simple sufficient closed admission domain is +||input||_X <= (2^(W-1)-1)Delta, with X containing every translated axis. +Unitary Lambda then has each output component within the same symmetric +bound, so rounding fits width W. More general inputs succeed iff every +rounded component fits. The source precision proof's common-width/radius +substitution may also be used once its actual caller/header and inherited +operator premises are installed. This package does not silently identify +its W,f,selected_axes with a complete caller export or prove all upstream +rounded states satisfy that external guard. + +## 6. Full positive cost, source count and historical backing + +Let V be the complete coded public physical length, E the parent descriptor +length, P the fixed total number of owned private roles, and A_old the sum +of their initially dirty contiguous physical body lengths. All constructor, +source access, fixed-table generation and allocation costs are F_template. +They are positive and separate from variable-input traversal. + +For the new Gaussian stages, let S=sum(W_i+1) over all real components. +Counting every physical tape action and every executed flat row, a safe +bound is 4096(S+1), plus entry/final old-body, context-head and fixed-role +charges. One ordinary position performs at most four coded reads, two writes, +four moves and finite carry-state jumps; its reversals and two high positions +are included. Coded reads cost at most10 physical actions, writes9, moves4, +plus their executed rows. Pair rewinds, encoded-blank clearing, executor +origin returns, the separate full-field COMMIT and successful retirement +are all linear in S. Two-component work reaches at most 3(W+4) physical +bits in each numerator role. A previous larger width remains allocated. + +An entry retirement from displacement p<=A costs 2p+3 for origin, 3A+1 to +erase, and 2A+3 to return: at most7A+7. The outer copy, final owned-bank +retirement, context returns and private view contribute O(V+E+P)+7A_old. +The new header construction/release has O_9(E+1) encoded-symbol work, because +rank9 is fixed. It makes no runtime integer conversion. + +Retain the serial monomial's complete bill. Write g=popcount(q), +C=outer*rows, R1=2Wr*2^(a-z), M1=C*2^z, Vraw=M1*R1, and +A1=2+z+ceil(log2(R1+1)). Its contribution is + + O_9(f*((g+1)*(Vraw+M1*A1^6)+V+(E+1)^4+P)). + +Therefore the whole Lambda invocation costs + + F_template + + O_9(f*((g+1)*(Vraw+M1*A1^6)+V+(E+1)^4+P)) + + 4096(S+1) + O_9(V+E+P) + 7A_old. + +There is no subtraction of inherited ordinary work and no conversion of +this bill to the old 1000-unit LAMBDA allowance. Only with the separately +stated padding absorptions R1>=A1^6 and (E+1)^4+P=O(V) does the variable +term simplify to O_9(fV), plus old history. If those premises fail, the larger +bill stays. All f iterations reuse one provider; no history reset or new +per-column allocation is hidden. + +The one extra full-field bank has current backing V. Each of the two +numerator roles retains max(old_capacity,3(W_max+4)). The header roles +retain maxima O(E+1), and every unchanged serial/monomial role retains its +own full historical maximum from the predecessor space theorem. Add public, +context, ancestor and fixed-controller backing. Erasure does not shrink +these maxima. The unused ordinary object and its tapes remain counted. + +At the caller-source level, there are 14,480 such service occurrences. +Each gains one explicit owned-copy lifetime and its positive bill; the two +primitive work roles and provider inventory must be included in active +stock. There are zero new recursive paid jobs and zero productive helper +credits. Whole-caller sequential reuse, unfinished-context stock and the +sum of all source/setup/runtime bills still require compiler integration. +No full raw cap, accepted exponent or unconditional theorem follows here. + +## 7. Evidence and limitations + +The source census pins every occurrence/sign/port/q. Physical descriptor +checks cover all23 fields with old remainders0,8,152 and several positive f, +including cases where passing the old remainder would violate rank9. +The Gaussian arithmetic has an independent direct integer oracle over all +four arbitrary signed inputs at widths1,2, plus wider signed endpoints. +It runs through unchanged primitive tables, including explicit rejection +cleanup, source protection and a positive tape/control bill. + +Complete reduced-rank composition executes the actual monomial provider, +private header, Gaussian staging and commit for both signs, late overflow +and reuse after failure. An ordinary-runtime entry trap rejects any accidental +child invocation. The source-specific nine-axis recipe/header join is proved, +but the minimum4096-record nine-axis numerical run is not claimed executed: +the16-record reduced run took0.91s and more than5 million physical actions; +a simple record-scaling screen already exceeds230s before the larger recipe's +extra flips, beyond the120s attempt cap. This is a feasibility screen, not +a formal wall-time lower bound or a runtime measurement of the source case. +No nine-axis host vector evaluation is relabelled physical execution. + +Credit the source authors DreamingOfClouds/#6936/#6937, the retained phase +and monomial work (#3087/#4172), CubeJerry's serial/provider/lifecycle and +scalar work, and the published source precision package. Horner/carry, +Gaussian identities, permutation tensoring and nearest-up rounding are +classical. Full source/header exporter installation, admitted caller precision, +all remaining native services, recursive owned history, common physical +tariff and analytic recovery remain open. All five framework assumptions +remain globally conditional. Separate AI review is not human or kernel +acceptance; the finite tests do not substitute for this all-size argument. diff --git a/research/current-rounded-lambda/README.md b/research/current-rounded-lambda/README.md new file mode 100644 index 0000000000..6e49ecaa0d --- /dev/null +++ b/research/current-rounded-lambda/README.md @@ -0,0 +1,146 @@ +# Literal one-rounded global LAMBDA + +**Result:** a source-bound physical provider implements +`Lambda_s(Q_f)=((1+s*i)I+(1-s*i)Q_f²)/2`, with one final rounding per +real/imaginary component and actual-input defect at most `eta_X`. It uses +an exact, paid translation for `Q_f²`, the unchanged serial monomial +implementation, a literal Gaussian numerator table, and explicit owned +staging and cleanup. **The new outer header contract remains to be installed +by the full caller; no tariff cap, new kappa or unconditional theorem follows.** + +The source is the 3,095-event QUERY-only caller published at +`617903497387a98f7ca929ad0b6928dd32abffec`, using DreamingOfClouds' +[CrocSwap/integer-mult-bounds#6936](https://github.com/CrocSwap/integer-mult-bounds/pull/6936) +word and the [#6937](https://github.com/CrocSwap/integer-mult-bounds/pull/6937) +lineage. Its 14,480 expanded LAMBDA occurrences have 104 actual directions. +The exact source phase definition identifies `Q_f²` as the simultaneous +phase-free address translation by q in every central column. + +## What is new + +The published [precision package](https://github.com/CubeJerry/integer-mult-bounds/tree/56bc9383594a3efc303148e00bb746851abd1ed5/research/query-only-precision-envelope) +explicitly leaves a completed one-rounded LAMBDA primitive as a contract. +This package supplies its literal arithmetic and its actual source-to-monomial +recipe/header join. It does not treat a formal involution as a free reflection. + +`LambdaProvider` copies the complete public field into one owned bank, +executes the unchanged serial provider with the new identity9/offset-q, +phase-zero recipe, forms both width-`W+2` Gaussian numerators, and stages +one-rounded results back into that owned bank. Only after all components +pass final range checks does a separate literal COMMIT table write the +public field. Two one-component numerator banks are reused throughout. + +`HeaderView` physically changes exactly `remainder=0` and +`selected_axes=9f` in a private 23-field descriptor. It preserves the full +ambient row and every other field. This handles outer remainders that +cannot be passed directly to a rank-nine monomial. The complete geometry +and the meaning of the central axes are explicit in `PROOF.md`. + +The Gaussian STAGE tables have **5,275 rows per sign**. They form +`a-s*b+c+s*d` and `b+s*a+d-s*c` exactly before rounding. Three plus signs +and one minus sign give strict `W+2` headroom, so cancellation is not lost. +Upward rounding is applied once to each complete numerator; no commutation +of rounding with signs is assumed. + +Global LAMBDA stays outside tensor powers. Applying one butterfly per +column would be wrong: two odd factor characters give global Lambda=1, +while their factor Lambda product is -1. The source and controls retain +this distinction. + +## Admission, error and ownership + +The assembled provider requires uniform signed width `W>=2`, a common grid, +canonical complete fields, valid reserved current geometry, disjoint +physical segments, origin public/context heads, and contiguous old private +bodies. It succeeds exactly when the rounded outputs fit the public width. +The sufficient norm domain in the proof gives a total contract without +range rejection. Any X-fibre used for its norm must contain all 9f +translated axes. + +Its per-component residual is at most half a grid unit, so its actual-input +complete-fibre defect is `eta_X=2^((X-1)/2)*Delta`. The current precision +width/radius substitution remains conditional on genuine caller/header +installation and the other retained operator contracts. + +A named late arithmetic rejection preserves the entire public field, +retires the partial owned copy and all private work, and restores public +and context heads. This cleanup is explicit in the wrapper. Arbitrary +malformed/interrupted native execution and process termination are outside +that rollback statement. + +The current rank-nine construction has **1,965 fixed owned roles**, including +all retained monomial/ordinary/descriptor inventory, the new full-field +copy and two numerator banks. All old backing remains allocated after +retirement. No new recursive paid job or productive helper credit is added. + +## Positive cost and limits + +The complete inherited serial bill remains + + O_9(f*((g+1)*(Vraw+M1*A1^6)+V+(E+1)^4+P)), + +with `g=popcount(q)` (3 or 7 at these source ports). The new Gaussian work +has the conservative positive tape-plus-control bound `4096(S+1)`. +Copying, physical head returns, private header work, retirement, fixed +inventory, finite setup and initial dirty backing are additionally paid. +Only under the proof's explicit padding absorptions does this simplify to +`O_9(fV)`, plus setup and old history. No exchange rate to the old +1000-unit LAMBDA allowance or full supplier raw cap is asserted. + +The new recipe is derived from #6936. Reusing a generic implementation does +not mean the selected #6030 catalogue covers #6936: those sources have +22,803/3,453 versus 71,144/6,323 events/MOVEs respectively. Neither full +catalogue membership nor an existing outer-LAMBDA exporter is inferred. + +## Reproduction and executed evidence + +```bash +python3 -I -B research/current-rounded-lambda/verify.py --suite all +python3 -I -O -B research/current-rounded-lambda/verify.py --suite all +``` + +Expected: five `PASS_CURRENT_ROUNDED_LAMBDA_*` lines. Registered runs split +into audit, arithmetic, descriptor and composition suites, each capped at +120 seconds. Standard library only; exported replay needs no Git/network. + +Executed author evidence includes 544 exhaustive width-1/2 four-input cases, +1,536 wider endpoint cases, 12 complete physical header checks, both-sign +full reduced-rank compositions, a late rejection and retry, arithmetic +mutants, strict typed-source controls, and 53,248 source-character/compiled- +flip checks. Separate lead AI review checked 48 wider cases through +129-bit components, with a read-only-public STAGE trap, long-to-short +history, an independent rational oracle, 1,020 global character cases and +the full positive arithmetic bill. Exact receipts and reviewed hashes are +in `REVIEW.md` and its unchanged runner/JSON artifacts. + +**A complete nine-axis source numerical execution is not claimed.** The +minimum case has 4,096 records. The 16-record reduced run used over five +million physical actions in 0.91 seconds; simple record scaling already +screens the source case above the 120-second attempt cap, before extra +flips. This is a feasibility screen, not a wall-time lower-bound theorem. +The source-specific all-size join is proved using the retained provider; +reduced physical tests are clearly labelled. + +## Open next questions + +1. Install the actual outer source-token/header exporter and prove its + central-axis, common-grid and radius substitution for every occurrence. +2. Assemble all 14,480 positive invocation bills, owned lifetimes and + unfinished-context stock into a complete physical supplier invoice. +3. Complete the remaining native, arithmetic, recursive and analytic + recovery interfaces. All five framework assumptions remain globally open. +4. If a larger bounded replay environment is available, run a full actual + nine-axis composition without replacing its runtime with a host oracle. + +## Credit + +Prepared for **@CubeJerry**, with substantial **OpenAI assistance** in proof, +implementation, source analysis and verification. Credit DreamingOfClouds' +#6936/#6937 source and proposal; the native phase/monomial lineage including +[CrocSwap/integer-mult-bounds#3087](https://github.com/CrocSwap/integer-mult-bounds/pull/3087) +and [#4172](https://github.com/CrocSwap/integer-mult-bounds/pull/4172); +CubeJerry's lifecycle, scalar, serial-provider and source-precision work. +Gaussian identities, carries, Fourier characters and rounding are classical. +The contribution is their literal source-bound physical join and complete +stated cost/domain proof. AI review is not human or proof-kernel acceptance. +Canonical base: `7c49fe32c55de02c2c873655c804b16e4c3fef0a`. diff --git a/research/current-rounded-lambda/REVIEW.md b/research/current-rounded-lambda/REVIEW.md new file mode 100644 index 0000000000..d83a4de496 --- /dev/null +++ b/research/current-rounded-lambda/REVIEW.md @@ -0,0 +1,28 @@ +# Separate review and evidence limits + +The author AI supplied the literal tables, wrapper, source/header proof and +positive cost argument. Its direct integer oracle is separate from table +carry recurrences. Normal/optimized replays are regression checks. + +The lead AI independently reviewed the complete proof and actual monomial +consumer guards, then ran 48 wider cases with 224 real components, widths 1..129: +40 succeeded and 8 correctly rejected late overflow. Its public STAGE tape +was read-only, detecting any premature public write. It used a separate +exact-rational Gaussian oracle, dirty displaced work/context, long-to-short +retained backing and combined physical plus table-control accounting. The +largest measured bound ratio was 5807/45494. It independently checked the +14,480 source occurrences and 1,020 global character cases. + +The untouched runner and receipt are in `review/lambda-lead-check.py` and +`review/lambda-lead-review.json`. The latter records exact reviewed hashes +of PROOF.md, gaussian_table.py, lambda_provider.py and source_binding.py; +all match the final package. Strict integer signs/site/port guards were +included, with boolean-alias negative controls. No runtime/proof changes +were made after that review. The complete nine-axis source numerical job +was not executed by either reviewer and is not claimed. + +The runner shares retained checker hardware and supplied literal tables, +not the author arithmetic oracle. It is model-assisted independent reasoning +and code, not human review or proof-kernel certification. Finite cases do +not prove the all-size statement. A full caller/header export, tariff cap, +recursive stock/precision admission and outer recovery remain open. diff --git a/research/current-rounded-lambda/SOURCE.json b/research/current-rounded-lambda/SOURCE.json new file mode 100644 index 0000000000..0497a28a6d --- /dev/null +++ b/research/current-rounded-lambda/SOURCE.json @@ -0,0 +1,41 @@ +{ + "actual_rank9_owned_ports_by_q_weight": { + "3": 1965, + "7": 1965 + }, + "current_selected_catalogue_used": false, + "directions": 104, + "first_site": { + "port": 0, + "q": 11, + "raw": [ + "A", + "LAMBDA", + 0, + -1 + ], + "role": 0, + "sign": -1, + "site": 2, + "type": "A" + }, + "literal_recipe": "identity9, offset=q, phase=0, linear=quadratic=0", + "nine_axis_numeric_run": false, + "occurrences": 14480, + "old_caller_exporter_installed": false, + "one_column_exact_character_checks": 53248, + "q_weight_histogram": { + "3": 70, + "7": 34 + }, + "signs": { + "-1": 8832, + "1": 5648 + }, + "source_events": 3095, + "source_numeric_screen": "16-record reduced composition took0.91s;4096-record source exceeds230s by simple record scaling before extra flips, exceeding120s cap; no source execution claimed", + "type_occurrences": { + "A": 13824, + "B": 656 + } +} diff --git a/research/current-rounded-lambda/SOURCES.json b/research/current-rounded-lambda/SOURCES.json new file mode 100644 index 0000000000..75ea7c3d55 --- /dev/null +++ b/research/current-rounded-lambda/SOURCES.json @@ -0,0 +1,18 @@ +{ + "schema_version": 1, + "base_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "files": [ + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81" + }, + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "d59b5035e7b4cbaa9d688a1d32dd0d6eb79c466a", + "sha256": "9b8d0eea95b3bf0dfcb7938a732a6439b87a2685dec2a5ab9e525b3b34debbfa" + } + ] +} diff --git a/research/current-rounded-lambda/TASK.json b/research/current-rounded-lambda/TASK.json new file mode 100644 index 0000000000..f7a46f4785 --- /dev/null +++ b/research/current-rounded-lambda/TASK.json @@ -0,0 +1,93 @@ +{ + "schema_version": 1, + "task_id": "uniform-transfer-audit", + "base_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_card": { + "id": "uniform-transfer-audit", + "question": "Can one of the selected record's five inherited assumptions be proved at its actual caller?", + "starting_points": [ + "docs/research/current-priorities.md", + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md" + ], + "methods": [ + "Construct and independently check one source-bound instance of the stated first experiment.", + "Seek an exact counterexample or target-specific complete-budget obstruction to that same proposed change." + ], + "acceptance_gate": "Identify the proposition and what would change downstream; do not equate a finite replay with a universal proof.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_selected_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read revision 8, the selected review and live exact-source handoffs. Then follow this card's bounded first_experiment.", + "scope": "Source-bound orientation only, not a supplier replay or theorem proof." + }, + "first_experiment": "Choose one assumption ID (native_all_columns, owned_erasure, compiler, precision_tape, analytic_recovery), one quantified implication and exact dependency closure. Check current handoffs, including #5625 row reentry and #5707 root-prefix lowering, without treating their partial scope as the whole theorem. Prove or falsify that implication with a caller-bound argument; stop at the chosen obligation. Finite tests or root digits do not discharge an all-size statement.", + "bottleneck_link": "Judge the actual current supplier contract and complete signed target/paid bill; frozen-profile ceilings require an applicability proof.", + "allowed_variations": [ + "One exact source head, helper/cut region or quantified proposition and changed hypothesis; check live handoffs first. Different seeds are not different scopes." + ], + "scope_change_triggers": [ + "Changing source head, helper/cut domain, operation alphabet or caller boundary without recording the new scope.", + "Treating an archived proposal or local numerical pass as complete supplier admission." + ], + "overlap_terms": [ + "native_all_columns", + "owned_erasure", + "compiler", + "precision_tape", + "analytic_recovery" + ], + "existing_checks": [ + { + "scope": "PR #4100: proposed unconditional construction and finite checks, without independent acceptance.", + "evidence": "research/unconditional-batched-crt/README.md", + "remaining": "Independent proof audit of one caller-bound all-size implication; all other premises remain explicit.", + "status": "author-checked", + "source_commit": "337d04939571a637aeab54a0f58f54fde811663a", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "Selected PR5599: complete helper-subspace construction and independent caller replay; five framework assumptions remain.", + "evidence": "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md", + "remaining": "The next experiment must identify uncovered source-specific work. Successor archive intake does not transfer this admission.", + "status": "reviewed", + "source_commit": "09dd0965711ca7eeb169057a420abab1c9052137", + "selected_record_sha256": "2a0220e866417774606e0f991e41b9c1d26b1f43b97857238cf478dbc7d330b5" + } + ] + }, + "scope_status": "refined", + "scope_change_reason": "Lead wave9 addresses the explicit total global LAMBDA primitive contract left by the published source precision package.", + "actual_scope": "Literal source-bound global LAMBDA via exact phase-zero Q\u00b2 monomial, new private descriptor, one-rounded Gaussian table, signed/eta_X/lifecycle proof and complete unabsorbed cost.", + "bottleneck_link": "Closes a specific physical arithmetic and Q\u00b2 production implication under an explicit new caller/header domain; does not install the whole caller.", + "stop_rule": "Stop at this source-derived primitive and its exact domain. No full caller exporter, native whole-MOVE duplication, tariff exchange or new kappa.", + "evidence": "PROOF.md, unchanged serial provider, literal header/Gaussian tables, five receipts and independent lead review.", + "author": "@CubeJerry", + "ai_assistance": "Substantial OpenAI assistance in proof, implementation, source analysis and testing; separate AI review is not independent human or proof-kernel acceptance.", + "outcome": "completed", + "open_questions": [ + { + "question": "Install the actual outer Lambda token/header export.", + "why_it_matters": "The exact source recipe does not prove the old compiler emits the needed complete geometry and common format.", + "first_step": "Bind each source occurrence to its actual field and complete23-field descriptor, preserving central-axis order.", + "blocked_by": "Uninstalled caller/header exporter and its precision substitution." + }, + { + "question": "Assemble complete physical source costs and unfinished-context stock.", + "why_it_matters": "All14480 owned lifetimes, private histories and serial routes must be paid before a supplier cap can be inferred.", + "first_step": "Sum the unabsorbed physical bounds with all native/arithmetic services and recursive ancestors.", + "blocked_by": "No established exchange rate to the old abstract tariff." + }, + { + "question": "Run a bounded full actual nine-axis numerical composition when resources allow.", + "why_it_matters": "Current executed whole compositions are reduced-rank mechanisms; source-specific nine-axis joining is proved but not numerically replayed.", + "first_step": "Use the retained literal provider with a budget exceeding the screened4096-record requirement.", + "blocked_by": "Current120-second per-attempt budget; not a mathematical impossibility." + } + ] +} diff --git a/research/current-rounded-lambda/VERIFY.json b/research/current-rounded-lambda/VERIFY.json new file mode 100644 index 0000000000..9939ea6729 --- /dev/null +++ b/research/current-rounded-lambda/VERIFY.json @@ -0,0 +1,231 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/current-rounded-lambda/vendor/serial/vendor/monomial/phase_binding.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/phase_adapter.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/selected_service.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/DEPENDENCIES.json", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/PROOF.md", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/README.md", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/SOURCES.json", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/TASK.json", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/DEPENDENCIES.json", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/PROOF.md", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/binding_sources.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/codec.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/provider.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/DEFERRED-PROOF.md", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/SELECTED-RESULT.json", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/TASK-CATALOG.json", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/compact/PROOF.md", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/compact/compact_control.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/compact/compact_counts.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/compact/compact_engine.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/compact/compact_layout.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/compact/compact_streams.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/compact/native_sources.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/PROOF.md", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/TASK.json", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/compiler_routes.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/row_programs.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/vendor/occurrence_geometry.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/dispatch/vendor/row_padding.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/lifecycle/PROOF.md", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/lifecycle/machine.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/lifecycle/source_ir.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/lockstep_executor.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/PROOF.md", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/binary.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/encoded.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/ordinary.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/physical_words.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/session.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/ordinary/source.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/record_lift/PROOF.md", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/record_lift/lift.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/reference/NOTICE.md", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/reference/compact.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/reference/streams.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2808/outer.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2808/vendor/pr2786/padding.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/consumer.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/driver.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/evidence/NOTICE.md", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/evidence/pr2688-NOTICE.md", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/layout.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/linear_sign.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/node.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/packet_engine.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/peel.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/NOTICE.md", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/cardinal_counts.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/catalogue.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/control.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/fresh_rows.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/topology.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/binding.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/bitstream.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/cardinality.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/children.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/controller.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/counts.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/directory.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/episode.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/forms.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/low_codes.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/matrices.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/numeric.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/oracle.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/packet.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/plan.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/records.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/routes.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/selection.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/sources.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/stream.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/recursive_call.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/scheduler.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/stream_runner.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2753/trace.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/NOTICE.md", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/codec.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/vendor/parking_machine.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/inputs/pr2769/vendor/words.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/macro_binding.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/macro_code.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/macro_machine.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/residual_blocks.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/role_parking.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/vendor/runtime/pr2809/scratch_pool.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/PROOF.md", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/SOURCES.json", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/monomial_engine.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/pair_dispatch.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/phase_recipe.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/phase_sources.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/reference.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/monomial/signed_phase.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/selected/RESULT.json", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/selected/WORD.json.gz", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/selected/clifford_exact.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/selected/native_verify.py", + "research/current-rounded-lambda/vendor/serial/vendor/monomial/check_fixture.py", + "research/current-rounded-lambda/vendor/serial/column_view.py", + "research/current-rounded-lambda/vendor/serial/serial_sources.py", + "research/current-rounded-lambda/vendor/serial/DEPENDENCIES.json", + "research/current-rounded-lambda/vendor/serial/PROOF.md", + "research/current-rounded-lambda/vendor/exact_scalar_tables.py", + "research/current-rounded-lambda/vendor/machine.py", + "research/current-rounded-lambda/vendor/scalar_fixture.py", + "research/current-rounded-lambda/reference/PRECISION-PROOF.md", + "research/current-rounded-lambda/data/caller.json", + "research/current-rounded-lambda/data/word.json.gz", + "research/current-rounded-lambda/reference/physical-review-6936.py", + "research/current-rounded-lambda/reference/jclib_6936.py" + ], + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-B", + "research/current-rounded-lambda/verify.py", + "--suite", + "audit" + ], + "timeout_seconds": 120, + "checks": "Normal literal Lambda audit and exact adverse controls." + }, + { + "argv": [ + "{python}", + "-I", + "-B", + "research/current-rounded-lambda/verify.py", + "--suite", + "arithmetic" + ], + "timeout_seconds": 120, + "checks": "Normal literal Lambda arithmetic and exact adverse controls." + }, + { + "argv": [ + "{python}", + "-I", + "-B", + "research/current-rounded-lambda/verify.py", + "--suite", + "descriptor" + ], + "timeout_seconds": 120, + "checks": "Normal literal Lambda descriptor and exact adverse controls." + }, + { + "argv": [ + "{python}", + "-I", + "-B", + "research/current-rounded-lambda/verify.py", + "--suite", + "composition" + ], + "timeout_seconds": 120, + "checks": "Normal literal Lambda composition and exact adverse controls." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "research/current-rounded-lambda/verify.py", + "--suite", + "audit" + ], + "timeout_seconds": 120, + "checks": "Optimized literal Lambda audit and exact adverse controls." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "research/current-rounded-lambda/verify.py", + "--suite", + "arithmetic" + ], + "timeout_seconds": 120, + "checks": "Optimized literal Lambda arithmetic and exact adverse controls." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "research/current-rounded-lambda/verify.py", + "--suite", + "descriptor" + ], + "timeout_seconds": 120, + "checks": "Optimized literal Lambda descriptor and exact adverse controls." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "research/current-rounded-lambda/verify.py", + "--suite", + "composition" + ], + "timeout_seconds": 120, + "checks": "Optimized literal Lambda composition and exact adverse controls." + } + ] +} diff --git a/research/current-rounded-lambda/check_numeric.py b/research/current-rounded-lambda/check_numeric.py new file mode 100644 index 0000000000..5fb9656cef --- /dev/null +++ b/research/current-rounded-lambda/check_numeric.py @@ -0,0 +1,64 @@ +"""Bounded complete composition, direct address/Gaussian integer oracle.""" +from pathlib import Path +import json,sys,time,hashlib +ROOT=Path(__file__).resolve().parent;sys.path.insert(0,str(ROOT)) +from lambda_provider import LambdaProvider,S,M +from source_binding import need +from check_fixture import factory,header_bits,encode,endpoint +from ordinary import Ordinary + +def load(t,body):t.cells[t.origin:]=bytearray(body);t.head=t.origin;t.high=max(t.high,t.origin+len(body)) +def body(t): + out=[] + for x in t.cells[t.origin:]: + if x==6:break + out.append(x) + return out + +def run_case(rank=1,q=1,sign=1,f=1,h=3,late=False,*,reuse=None): + recipe=dict(matrix_rows=tuple(1<1 else 'small' + if mode=='source':r,_=run_case(9,11,1,1,2) + elif mode=='late':r,_=run_case(late=True) + elif mode=='inverse-sign':r,_=run_case(sign=-1) + else:r,_=run_case() + print(json.dumps(r,sort_keys=True),flush=True) diff --git a/research/current-rounded-lambda/data/caller.json b/research/current-rounded-lambda/data/caller.json new file mode 100644 index 0000000000..cf55f42710 --- /dev/null +++ b/research/current-rounded-lambda/data/caller.json @@ -0,0 +1 @@ +{"schema":"mixed-root-caller/1","stages":18,"ambient_rank":153,"roles":76,"types":{"A":{"form":"two-chain-HOST2","roles":38,"offset":0,"ports":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,36,37,38,39,40,41,43,44,45,46,48,49,50,51,52,53,54,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],"alpha2":"-1","beta2":"0","diagonal":[[-1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],[-1,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,1,1,1,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1],[-1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],[-1,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,1,1,1,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1]]},"B":{"form":"hosted-HOST","roles":38,"offset":38,"ports":[15,17,27,34,35,42,47,55],"diagonal":[[-1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],[-1,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,1,1,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1],[-1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1]],"pairs":[[0,1,"-1","1/2","-1/2"],[2,3,"-1","1/2","-1/2"],[4,5,"-1","1/2","-1/2"],[6,7,"-1","1/2","-1/2"],[8,9,"-1","1/2","-1/2"],[10,11,"-1","1/2","-1/2"],[12,13,"-1","1/2","-1/2"],[14,15,"-1","1/2","-1/2"],[16,17,"-1","1/2","-1/2"],[22,23,"-1","1/2","-1/2"],[24,25,"-1","1/2","-1/2"],[26,27,"-1","1/2","-1/2"],[28,29,"-1","1/2","-1/2"],[30,31,"-1","1/2","-1/2"],[32,33,"-1","1/2","-1/2"],[34,35,"-1","1/2","-1/2"],[36,37,"-1","1/2","-1/2"],[38,39,"-1","1/2","-1/2"]]}},"events":[["A","ADD",0,1,"-1"],["A","SWAP",0,1],["A","LAMBDA",0,-1],["A","ADD",19,20,"-1"],["A","SWAP",19,20],["A","SCALE",20,"-1"],["A","LAMBDA",19,1],["B","ADD",40,41,"-2"],["B","ADD",39,41,"1"],["B","ADD",38,41,"2"],["B","ADD",39,40,"1"],["B","ADD",38,40,"1"],["B","ADD",38,39,"-2"],["B","SCALE",39,"256"],["B","ADD",41,39,"-1/128"],["B","ADD",40,39,"1/128"],["B","SCALE",38,"128"],["B","ADD",41,38,"-1/128"],["B","ADD",40,38,"1/64"],["B","ADD",39,38,"1"],["B","LAMBDA",38,-1],["J",1,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","ADD",1,2,"1"],["A","ADD",0,2,"-1"],["A","SCALE",1,"-1"],["A","SWAP",1,2],["A","ADD",2,0,"-1"],["A","SWAP",0,1],["A","LAMBDA",0,-1],["A","ADD",20,21,"1"],["A","ADD",19,21,"-1"],["A","SCALE",20,"-1"],["A","SWAP",20,21],["A","SCALE",19,"-1"],["A","ADD",21,19,"1"],["A","SWAP",19,20],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",40,[1]],["B","IDLE_ONE",41,[1]],["B","ADD",42,43,"-2"],["B","ADD",40,43,"-2"],["B","ADD",39,43,"-256"],["B","ADD",38,43,"-128"],["B","ADD",41,42,"1"],["B","ADD",40,42,"-2"],["B","ADD",39,42,"-256"],["B","ADD",39,41,"256"],["B","ADD",38,41,"-128"],["B","ADD",38,40,"-128"],["B","ADD",41,40,"1"],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",43,39,"-1/128"],["B","ADD",42,39,"1/128"],["B","ADD",41,39,"1/128"],["B","ADD",40,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",43,38,"1/128"],["B","ADD",41,38,"-1/128"],["B","ADD",40,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",2,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","ADD",0,1,"-1"],["A","IDLE_ONE",2,[2,3,4,5,6,7,8,9]],["A","ADD",1,3,"1"],["A","ADD",0,3,"-2"],["A","ADD",0,1,"2"],["A","SCALE",1,"-1"],["A","SCALE",0,"-1"],["A","ADD",1,0,"-1"],["A","SWAP",0,3],["A","LAMBDA",0,-1],["A","ADD",19,20,"-1"],["A","IDLE_ONE",21,[2,3,4,5,6,7,8,9]],["A","ADD",20,22,"1"],["A","ADD",19,22,"-2"],["A","ADD",19,20,"2"],["A","SCALE",19,"-1"],["A","ADD",20,19,"1"],["A","SWAP",19,22],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",40,[2,3,4,5,6,7,8,9]],["B","IDLE_ONE",41,[2,3,4,5,6,7,8,9]],["B","IDLE_ONE",42,[2]],["B","IDLE_ONE",43,[2]],["B","ADD",44,45,"-2"],["B","ADD",42,45,"-2"],["B","ADD",39,45,"-256"],["B","ADD",38,45,"-128"],["B","ADD",43,44,"1"],["B","ADD",42,44,"-2"],["B","ADD",39,44,"-256"],["B","ADD",39,43,"256"],["B","ADD",38,43,"-128"],["B","ADD",38,42,"-128"],["B","ADD",43,42,"1"],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",45,39,"-1/128"],["B","ADD",44,39,"1/128"],["B","ADD",43,39,"1/128"],["B","ADD",42,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",45,38,"1/128"],["B","ADD",43,38,"-1/128"],["B","ADD",42,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",3,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","ADD",0,1,"-1"],["A","IDLE_ONE",3,[3,4,5,6,7,8,9]],["A","ADD",1,4,"1"],["A","ADD",0,4,"-2"],["A","ADD",0,1,"2"],["A","SCALE",1,"-1"],["A","SCALE",0,"-1"],["A","ADD",1,0,"-1"],["A","SWAP",0,4],["A","LAMBDA",0,-1],["A","ADD",19,20,"-1"],["A","IDLE_ONE",22,[3,4,5,6,7,8,9]],["A","ADD",20,23,"1"],["A","ADD",19,23,"-2"],["A","ADD",19,20,"2"],["A","SCALE",19,"-1"],["A","ADD",20,19,"1"],["A","SWAP",19,23],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",42,[3,4,5,6,7,8,9]],["B","IDLE_ONE",43,[3,4,5,6,7,8,9]],["B","IDLE_ONE",44,[3]],["B","IDLE_ONE",45,[3]],["B","ADD",46,47,"-2"],["B","ADD",44,47,"-2"],["B","ADD",39,47,"-256"],["B","ADD",38,47,"-128"],["B","ADD",45,46,"1"],["B","ADD",44,46,"-2"],["B","ADD",39,46,"-256"],["B","ADD",39,45,"256"],["B","ADD",38,45,"-128"],["B","ADD",38,44,"-128"],["B","ADD",45,44,"1"],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",47,39,"-1/128"],["B","ADD",46,39,"1/128"],["B","ADD",45,39,"1/128"],["B","ADD",44,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",47,38,"1/128"],["B","ADD",45,38,"-1/128"],["B","ADD",44,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",4,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","ADD",0,1,"-1"],["A","IDLE_ONE",4,[4,5,6,7,8,9]],["A","ADD",1,5,"1"],["A","ADD",0,5,"-2"],["A","ADD",0,1,"2"],["A","SCALE",1,"-1"],["A","SCALE",0,"-1"],["A","ADD",1,0,"-1"],["A","SWAP",0,5],["A","LAMBDA",0,-1],["A","ADD",19,20,"-1"],["A","IDLE_ONE",23,[4,5,6,7,8,9]],["A","ADD",20,24,"1"],["A","ADD",19,24,"-2"],["A","ADD",19,20,"2"],["A","SCALE",19,"-1"],["A","ADD",20,19,"1"],["A","SWAP",19,24],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",44,[4,5,6,7,8,9]],["B","IDLE_ONE",45,[4,5,6,7,8,9]],["B","IDLE_ONE",46,[4]],["B","IDLE_ONE",47,[4]],["B","ADD",48,49,"-2"],["B","ADD",46,49,"-2"],["B","ADD",39,49,"-256"],["B","ADD",38,49,"-128"],["B","ADD",47,48,"1"],["B","ADD",46,48,"-2"],["B","ADD",39,48,"-256"],["B","ADD",39,47,"256"],["B","ADD",38,47,"-128"],["B","ADD",38,46,"-128"],["B","ADD",47,46,"1"],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",49,39,"-1/128"],["B","ADD",48,39,"1/128"],["B","ADD",47,39,"1/128"],["B","ADD",46,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",49,38,"1/128"],["B","ADD",47,38,"-1/128"],["B","ADD",46,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",5,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","ADD",0,1,"-1"],["A","IDLE_ONE",5,[5,6,7,8,9]],["A","ADD",1,6,"1"],["A","ADD",0,6,"-2"],["A","ADD",0,1,"2"],["A","SCALE",1,"-1"],["A","SCALE",0,"-1"],["A","ADD",1,0,"-1"],["A","SWAP",0,6],["A","LAMBDA",0,-1],["A","ADD",19,20,"-1"],["A","IDLE_ONE",24,[5,6,7,8,9]],["A","ADD",20,25,"1"],["A","ADD",19,25,"-2"],["A","ADD",19,20,"2"],["A","SCALE",19,"-1"],["A","ADD",20,19,"1"],["A","SWAP",19,25],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",46,[5,6,7,8,9]],["B","IDLE_ONE",47,[5,6,7,8,9]],["B","IDLE_ONE",48,[5]],["B","IDLE_ONE",49,[5]],["B","ADD",50,51,"-2"],["B","ADD",48,51,"-2"],["B","ADD",39,51,"-256"],["B","ADD",38,51,"-128"],["B","ADD",49,50,"1"],["B","ADD",48,50,"-2"],["B","ADD",39,50,"-256"],["B","ADD",39,49,"256"],["B","ADD",38,49,"-128"],["B","ADD",38,48,"-128"],["B","ADD",49,48,"1"],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",51,39,"-1/128"],["B","ADD",50,39,"1/128"],["B","ADD",49,39,"1/128"],["B","ADD",48,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",51,38,"1/128"],["B","ADD",49,38,"-1/128"],["B","ADD",48,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",6,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","ADD",0,1,"-1"],["A","IDLE_ONE",6,[6,7,8,9]],["A","ADD",1,7,"1"],["A","ADD",0,7,"-2"],["A","ADD",0,1,"2"],["A","SCALE",1,"-1"],["A","SCALE",0,"-1"],["A","ADD",1,0,"-1"],["A","SWAP",0,7],["A","LAMBDA",0,-1],["A","ADD",19,20,"-1"],["A","IDLE_ONE",25,[6,7,8,9]],["A","ADD",20,26,"1"],["A","ADD",19,26,"-2"],["A","ADD",19,20,"2"],["A","SCALE",19,"-1"],["A","ADD",20,19,"1"],["A","SWAP",19,26],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",48,[6,7,8,9]],["B","IDLE_ONE",49,[6,7,8,9]],["B","IDLE_ONE",50,[6]],["B","IDLE_ONE",51,[6]],["B","ADD",52,53,"-2"],["B","ADD",50,53,"-2"],["B","ADD",39,53,"-256"],["B","ADD",38,53,"-128"],["B","ADD",51,52,"1"],["B","ADD",50,52,"-2"],["B","ADD",39,52,"-256"],["B","ADD",39,51,"256"],["B","ADD",38,51,"-128"],["B","ADD",38,50,"-128"],["B","ADD",51,50,"1"],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",53,39,"-1/128"],["B","ADD",52,39,"1/128"],["B","ADD",51,39,"1/128"],["B","ADD",50,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",53,38,"1/128"],["B","ADD",51,38,"-1/128"],["B","ADD",50,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",7,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","ADD",0,1,"-1"],["A","IDLE_ONE",7,[7,8,9]],["A","ADD",1,8,"1"],["A","ADD",0,8,"-2"],["A","ADD",0,1,"2"],["A","SCALE",1,"-1"],["A","SCALE",0,"-1"],["A","ADD",1,0,"-1"],["A","SWAP",0,8],["A","LAMBDA",0,-1],["A","ADD",19,20,"-1"],["A","IDLE_ONE",26,[7,8,9]],["A","ADD",20,27,"1"],["A","ADD",19,27,"-2"],["A","ADD",19,20,"2"],["A","SCALE",19,"-1"],["A","ADD",20,19,"1"],["A","SWAP",19,27],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",50,[7,8,9]],["B","IDLE_ONE",51,[7,8,9]],["B","IDLE_ONE",52,[7]],["B","IDLE_ONE",53,[7]],["B","ADD",54,55,"-2"],["B","ADD",52,55,"-2"],["B","ADD",39,55,"-256"],["B","ADD",38,55,"-128"],["B","ADD",53,54,"1"],["B","ADD",52,54,"-2"],["B","ADD",39,54,"-256"],["B","ADD",39,53,"256"],["B","ADD",38,53,"-128"],["B","ADD",38,52,"-128"],["B","ADD",53,52,"1"],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",55,39,"-1/128"],["B","ADD",54,39,"1/128"],["B","ADD",53,39,"1/128"],["B","ADD",52,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",55,38,"1/128"],["B","ADD",53,38,"-1/128"],["B","ADD",52,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",8,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","ADD",0,1,"-1"],["A","IDLE_ONE",8,[8,9]],["A","ADD",1,9,"1"],["A","ADD",0,9,"-2"],["A","ADD",0,1,"2"],["A","SCALE",1,"-1"],["A","SCALE",0,"-1"],["A","ADD",1,0,"-1"],["A","SWAP",0,9],["A","LAMBDA",0,-1],["A","ADD",19,20,"-1"],["A","IDLE_ONE",27,[8,9]],["A","ADD",20,28,"1"],["A","ADD",19,28,"-2"],["A","ADD",19,20,"2"],["A","SCALE",19,"-1"],["A","ADD",20,19,"1"],["A","SWAP",19,28],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",52,[8,9]],["B","IDLE_ONE",53,[8,9]],["B","IDLE_ONE",54,[8]],["B","IDLE_ONE",55,[8]],["B","ADD",56,57,"-2"],["B","ADD",54,57,"-2"],["B","ADD",39,57,"-256"],["B","ADD",38,57,"-128"],["B","ADD",55,56,"1"],["B","ADD",54,56,"-2"],["B","ADD",39,56,"-256"],["B","ADD",39,55,"256"],["B","ADD",38,55,"-128"],["B","ADD",38,54,"-128"],["B","ADD",55,54,"1"],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",57,39,"-1/128"],["B","ADD",56,39,"1/128"],["B","ADD",55,39,"1/128"],["B","ADD",54,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",57,38,"1/128"],["B","ADD",55,38,"-1/128"],["B","ADD",54,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",9,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","ADD",0,1,"-1"],["A","IDLE_ONE",9,[9]],["A","SWAP",9,8],["A","SWAP",9,7],["A","SWAP",9,6],["A","SWAP",9,5],["A","SWAP",9,4],["A","SWAP",9,3],["A","SWAP",9,2],["A","ADD",0,1,"1"],["A","SCALE",1,"-1"],["A","SWAP",9,1],["A","ADD",18,0,"1"],["A","ADD",17,0,"1"],["A","ADD",16,0,"1"],["A","ADD",15,0,"1"],["A","ADD",14,0,"1"],["A","ADD",13,0,"1"],["A","ADD",12,0,"1"],["A","ADD",11,0,"1"],["A","ADD",10,0,"1"],["A","ADD",8,0,"1"],["A","ADD",7,0,"1"],["A","ADD",6,0,"1"],["A","ADD",5,0,"1"],["A","ADD",4,0,"1"],["A","ADD",3,0,"1"],["A","ADD",2,0,"1"],["A","ADD",1,0,"1"],["A","LAMBDA",0,1],["A","ADD",19,20,"-1"],["A","IDLE_ONE",28,[9]],["A","SWAP",28,27],["A","SWAP",28,26],["A","SWAP",28,25],["A","SWAP",28,24],["A","SWAP",28,23],["A","SWAP",28,22],["A","SWAP",28,21],["A","ADD",19,20,"1"],["A","SCALE",20,"-1"],["A","SWAP",28,20],["A","ADD",37,19,"1"],["A","ADD",36,19,"1"],["A","ADD",35,19,"1"],["A","ADD",34,19,"1"],["A","ADD",33,19,"1"],["A","ADD",32,19,"1"],["A","ADD",31,19,"1"],["A","ADD",30,19,"1"],["A","ADD",29,19,"1"],["A","ADD",27,19,"1"],["A","ADD",26,19,"1"],["A","ADD",25,19,"1"],["A","ADD",24,19,"1"],["A","ADD",23,19,"1"],["A","ADD",22,19,"1"],["A","ADD",21,19,"1"],["A","ADD",20,19,"1"],["A","LAMBDA",19,1],["A","ADD",2,1,"-1"],["A","ADD",3,1,"-1"],["A","ADD",4,1,"-1"],["A","ADD",5,1,"-1"],["A","ADD",6,1,"-1"],["A","ADD",7,1,"-1"],["A","ADD",8,1,"-1"],["A","ADD",9,1,"-1"],["A","ADD",10,1,"-1"],["A","ADD",11,1,"-1"],["A","ADD",12,1,"-1"],["A","ADD",13,1,"-1"],["A","ADD",14,1,"-1"],["A","ADD",15,1,"-1"],["A","ADD",16,1,"-1"],["A","ADD",17,1,"-1"],["A","ADD",18,1,"-1"],["A","ADD",2,3,"-1"],["A","ADD",2,4,"1"],["A","ADD",2,5,"-1"],["A","ADD",2,6,"1"],["A","ADD",2,7,"-1"],["A","ADD",2,8,"1"],["A","ADD",2,9,"-1"],["A","ADD",2,10,"1"],["A","ADD",2,11,"-1"],["A","ADD",2,12,"1"],["A","ADD",2,13,"-1"],["A","ADD",2,14,"1"],["A","ADD",2,15,"-1"],["A","ADD",2,16,"1"],["A","ADD",2,17,"-1"],["A","ADD",2,18,"1"],["A","LAMBDA",2,1],["A","ADD",0,2,"-1"],["A","SWAP",0,1],["A","SWAP",19,1],["A","ADD",19,2,"1"],["A","LAMBDA",2,1],["A","LAMBDA",2,1],["A","LAMBDA",0,1],["A","LAMBDA",0,1],["A","ADD",1,0,"1"],["A","LAMBDA",0,-1],["A","LAMBDA",0,-1],["A","QUERY",0,19,-1],["A","LAMBDA",0,1],["A","LAMBDA",0,1],["A","ADD",1,0,"-1"],["A","LAMBDA",0,-1],["A","LAMBDA",0,-1],["A","QUERY",19,1,-1],["A","LAMBDA",0,1],["A","LAMBDA",0,1],["A","ADD",1,0,"1"],["A","LAMBDA",0,-1],["A","LAMBDA",0,-1],["A","LAMBDA",19,1],["A","LAMBDA",19,1],["A","ADD",2,19,"-1"],["A","LAMBDA",19,-1],["A","LAMBDA",19,-1],["A","QUERY",1,2,-1],["A","LAMBDA",19,1],["A","LAMBDA",19,1],["A","ADD",2,19,"1"],["A","LAMBDA",19,-1],["A","LAMBDA",19,-1],["A","LAMBDA",1,1],["A","LAMBDA",1,1],["A","ADD",0,1,"-1"],["A","LAMBDA",2,1],["A","LAMBDA",2,1],["A","LAMBDA",2,-1],["A","ADD",2,3,"1"],["A","ADD",2,4,"-1"],["A","ADD",2,5,"1"],["A","ADD",2,6,"-1"],["A","ADD",2,7,"1"],["A","ADD",2,8,"-1"],["A","ADD",2,9,"1"],["A","ADD",2,10,"-1"],["A","ADD",2,11,"1"],["A","ADD",2,12,"-1"],["A","ADD",2,13,"1"],["A","ADD",2,14,"-1"],["A","ADD",2,15,"1"],["A","ADD",2,16,"-1"],["A","ADD",2,17,"1"],["A","ADD",2,18,"-1"],["A","ADD",2,1,"1"],["A","ADD",3,1,"1"],["A","ADD",4,1,"1"],["A","ADD",5,1,"1"],["A","ADD",6,1,"1"],["A","ADD",7,1,"1"],["A","ADD",8,1,"1"],["A","ADD",9,1,"1"],["A","ADD",10,1,"1"],["A","ADD",11,1,"1"],["A","ADD",12,1,"1"],["A","ADD",13,1,"1"],["A","ADD",14,1,"1"],["A","ADD",15,1,"1"],["A","ADD",16,1,"1"],["A","ADD",17,1,"1"],["A","ADD",18,1,"1"],["A","ADD",1,18,"-1"],["A","ADD",1,17,"1"],["A","ADD",1,16,"-1"],["A","ADD",1,15,"1"],["A","ADD",1,14,"-1"],["A","ADD",1,13,"1"],["A","ADD",1,12,"-1"],["A","ADD",1,11,"1"],["A","ADD",1,10,"-1"],["A","ADD",1,9,"1"],["A","ADD",1,8,"-1"],["A","ADD",1,7,"1"],["A","ADD",1,6,"-1"],["A","ADD",1,5,"1"],["A","ADD",1,4,"-1"],["A","ADD",1,3,"1"],["A","ADD",1,2,"-1"],["A","SCALE",1,"-1"],["A","SCALE",0,"-1"],["A","ADD",18,0,"-1"],["A","ADD",17,0,"-1"],["A","ADD",16,0,"-1"],["A","ADD",15,0,"-1"],["A","ADD",14,0,"-1"],["A","ADD",13,0,"-1"],["A","ADD",12,0,"-1"],["A","ADD",11,0,"-1"],["A","ADD",10,0,"-1"],["A","ADD",9,0,"-1"],["A","ADD",8,0,"-1"],["A","ADD",7,0,"-1"],["A","ADD",6,0,"-1"],["A","ADD",5,0,"-1"],["A","ADD",4,0,"-1"],["A","ADD",3,0,"-1"],["A","ADD",2,0,"-1"],["A","LAMBDA",0,-1],["A","LAMBDA",0,1],["A","ADD",1,18,"-1"],["A","ADD",0,18,"-1"],["A","ADD",1,17,"1"],["A","ADD",0,17,"1"],["A","ADD",1,16,"-1"],["A","ADD",0,16,"-1"],["A","ADD",1,15,"1"],["A","ADD",0,15,"1"],["A","ADD",1,14,"-1"],["A","ADD",0,14,"-1"],["A","ADD",1,13,"1"],["A","ADD",0,13,"1"],["A","ADD",1,12,"-1"],["A","ADD",0,12,"-1"],["A","ADD",1,11,"1"],["A","ADD",0,11,"1"],["A","ADD",1,10,"-1"],["A","SCALE",10,"-1"],["A","ADD",1,9,"1"],["A","ADD",0,9,"1"],["A","SWAP",18,9],["A","ADD",1,8,"-1"],["A","ADD",0,8,"-1"],["A","SWAP",17,8],["A","ADD",1,7,"1"],["A","ADD",0,7,"1"],["A","SWAP",16,7],["A","ADD",1,6,"-1"],["A","ADD",0,6,"-1"],["A","SWAP",15,6],["A","ADD",1,5,"1"],["A","ADD",0,5,"1"],["A","SWAP",14,5],["A","ADD",1,4,"-1"],["A","ADD",0,4,"-1"],["A","SWAP",13,4],["A","ADD",1,3,"1"],["A","ADD",0,3,"1"],["A","SWAP",12,3],["A","ADD",1,2,"-1"],["A","ADD",0,2,"-1"],["A","SWAP",11,2],["A","ADD",0,1,"-1"],["A","SCALE",1,"-1"],["A","SWAP",10,1],["A","SWAP",1,0],["A","ADD",0,1,"2"],["A","LAMBDA",0,-1],["A","ADD",20,37,"-1"],["A","ADD",20,36,"1"],["A","ADD",20,35,"-1"],["A","ADD",20,34,"1"],["A","ADD",20,33,"-1"],["A","ADD",20,32,"1"],["A","ADD",20,31,"-1"],["A","ADD",20,30,"1"],["A","ADD",20,29,"-1"],["A","ADD",20,28,"1"],["A","ADD",20,27,"-1"],["A","ADD",20,26,"1"],["A","ADD",20,25,"-1"],["A","ADD",20,24,"1"],["A","ADD",20,23,"-1"],["A","ADD",20,22,"1"],["A","ADD",20,21,"-1"],["A","SCALE",20,"-1"],["A","SCALE",19,"-1"],["A","ADD",37,19,"-1"],["A","ADD",36,19,"-1"],["A","ADD",35,19,"-1"],["A","ADD",34,19,"-1"],["A","ADD",33,19,"-1"],["A","ADD",32,19,"-1"],["A","ADD",31,19,"-1"],["A","ADD",30,19,"-1"],["A","ADD",29,19,"-1"],["A","ADD",28,19,"-1"],["A","ADD",27,19,"-1"],["A","ADD",26,19,"-1"],["A","ADD",25,19,"-1"],["A","ADD",24,19,"-1"],["A","ADD",23,19,"-1"],["A","ADD",22,19,"-1"],["A","ADD",21,19,"-1"],["A","LAMBDA",19,-1],["A","QUERY",19,20,-1],["A","LAMBDA",19,1],["A","ADD",20,37,"-1"],["A","ADD",19,37,"-1"],["A","ADD",20,36,"1"],["A","ADD",19,36,"1"],["A","ADD",20,35,"-1"],["A","ADD",19,35,"-1"],["A","ADD",20,34,"1"],["A","ADD",19,34,"1"],["A","ADD",20,33,"-1"],["A","ADD",19,33,"-1"],["A","ADD",20,32,"1"],["A","ADD",19,32,"1"],["A","ADD",20,31,"-1"],["A","ADD",19,31,"-1"],["A","ADD",20,30,"1"],["A","ADD",19,30,"1"],["A","ADD",20,29,"-1"],["A","SCALE",29,"-1"],["A","ADD",20,28,"1"],["A","ADD",19,28,"1"],["A","SWAP",37,28],["A","ADD",20,27,"-1"],["A","ADD",19,27,"-1"],["A","SWAP",36,27],["A","ADD",20,26,"1"],["A","ADD",19,26,"1"],["A","SWAP",35,26],["A","ADD",20,25,"-1"],["A","ADD",19,25,"-1"],["A","SWAP",34,25],["A","ADD",20,24,"1"],["A","ADD",19,24,"1"],["A","SWAP",33,24],["A","ADD",20,23,"-1"],["A","ADD",19,23,"-1"],["A","SWAP",32,23],["A","ADD",20,22,"1"],["A","ADD",19,22,"1"],["A","SWAP",31,22],["A","ADD",20,21,"-1"],["A","ADD",19,21,"-1"],["A","SWAP",30,21],["A","ADD",19,20,"-1"],["A","SCALE",20,"-1"],["A","SWAP",29,20],["A","SCALE",19,"-1"],["A","SWAP",20,19],["A","ADD",19,20,"-2"],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",54,[9]],["B","IDLE_ONE",55,[9]],["B","IDLE_ONE",56,[9]],["B","IDLE_ONE",57,[9]],["B","ADD",56,75,"1"],["B","ADD",55,75,"1"],["B","ADD",53,75,"1"],["B","ADD",51,75,"1"],["B","ADD",49,75,"1"],["B","ADD",47,75,"1"],["B","ADD",45,75,"1"],["B","ADD",43,75,"1"],["B","ADD",41,75,"1"],["B","ADD",39,75,"-128"],["B","ADD",38,75,"64"],["B","ADD",56,73,"-1"],["B","ADD",55,73,"-1"],["B","ADD",53,73,"-1"],["B","ADD",51,73,"-1"],["B","ADD",49,73,"-1"],["B","ADD",47,73,"-1"],["B","ADD",45,73,"-1"],["B","ADD",43,73,"-1"],["B","ADD",41,73,"-1"],["B","ADD",39,73,"128"],["B","ADD",38,73,"-64"],["B","ADD",56,72,"2"],["B","ADD",55,72,"2"],["B","ADD",53,72,"2"],["B","ADD",51,72,"2"],["B","ADD",49,72,"2"],["B","ADD",47,72,"2"],["B","ADD",45,72,"2"],["B","ADD",43,72,"2"],["B","ADD",41,72,"2"],["B","ADD",39,72,"-256"],["B","ADD",38,72,"128"],["B","ADD",56,71,"-1"],["B","ADD",55,71,"-1"],["B","ADD",53,71,"-1"],["B","ADD",51,71,"-1"],["B","ADD",49,71,"-1"],["B","ADD",47,71,"-1"],["B","ADD",45,71,"-1"],["B","ADD",43,71,"-1"],["B","ADD",41,71,"-1"],["B","ADD",39,71,"128"],["B","ADD",38,71,"-64"],["B","ADD",56,69,"1"],["B","ADD",55,69,"1"],["B","ADD",53,69,"1"],["B","ADD",51,69,"1"],["B","ADD",49,69,"1"],["B","ADD",47,69,"1"],["B","ADD",45,69,"1"],["B","ADD",43,69,"1"],["B","ADD",41,69,"1"],["B","ADD",39,69,"-128"],["B","ADD",38,69,"64"],["B","ADD",56,68,"-2"],["B","ADD",55,68,"-2"],["B","ADD",53,68,"-2"],["B","ADD",51,68,"-2"],["B","ADD",49,68,"-2"],["B","ADD",47,68,"-2"],["B","ADD",45,68,"-2"],["B","ADD",43,68,"-2"],["B","ADD",41,68,"-2"],["B","ADD",39,68,"256"],["B","ADD",38,68,"-128"],["B","ADD",56,67,"1"],["B","ADD",55,67,"1"],["B","ADD",53,67,"1"],["B","ADD",51,67,"1"],["B","ADD",49,67,"1"],["B","ADD",47,67,"1"],["B","ADD",45,67,"1"],["B","ADD",43,67,"1"],["B","ADD",41,67,"1"],["B","ADD",39,67,"-128"],["B","ADD",38,67,"64"],["B","ADD",56,65,"-1"],["B","ADD",55,65,"-1"],["B","ADD",53,65,"-1"],["B","ADD",51,65,"-1"],["B","ADD",49,65,"-1"],["B","ADD",47,65,"-1"],["B","ADD",45,65,"-1"],["B","ADD",43,65,"-1"],["B","ADD",41,65,"-1"],["B","ADD",39,65,"128"],["B","ADD",38,65,"-64"],["B","ADD",56,64,"2"],["B","ADD",55,64,"2"],["B","ADD",53,64,"2"],["B","ADD",51,64,"2"],["B","ADD",49,64,"2"],["B","ADD",47,64,"2"],["B","ADD",45,64,"2"],["B","ADD",43,64,"2"],["B","ADD",41,64,"2"],["B","ADD",39,64,"-256"],["B","ADD",38,64,"128"],["B","ADD",56,63,"-1"],["B","ADD",55,63,"-1"],["B","ADD",53,63,"-1"],["B","ADD",51,63,"-1"],["B","ADD",49,63,"-1"],["B","ADD",47,63,"-1"],["B","ADD",45,63,"-1"],["B","ADD",43,63,"-1"],["B","ADD",41,63,"-1"],["B","ADD",39,63,"128"],["B","ADD",38,63,"-64"],["B","ADD",56,61,"1"],["B","ADD",55,61,"1"],["B","ADD",53,61,"1"],["B","ADD",51,61,"1"],["B","ADD",49,61,"1"],["B","ADD",47,61,"1"],["B","ADD",45,61,"1"],["B","ADD",43,61,"1"],["B","ADD",41,61,"1"],["B","ADD",39,61,"-128"],["B","ADD",38,61,"64"],["B","ADD",56,60,"-2"],["B","ADD",55,60,"-2"],["B","ADD",53,60,"-2"],["B","ADD",51,60,"-2"],["B","ADD",49,60,"-2"],["B","ADD",47,60,"-2"],["B","ADD",45,60,"-2"],["B","ADD",43,60,"-2"],["B","ADD",41,60,"-2"],["B","ADD",39,60,"256"],["B","ADD",38,60,"-128"],["B","ADD",56,59,"1"],["B","ADD",55,59,"1"],["B","ADD",53,59,"1"],["B","ADD",51,59,"1"],["B","ADD",49,59,"1"],["B","ADD",47,59,"1"],["B","ADD",45,59,"1"],["B","ADD",43,59,"1"],["B","ADD",41,59,"1"],["B","ADD",39,59,"-128"],["B","ADD",38,59,"64"],["B","ADD",39,57,"256"],["B","ADD",38,57,"-128"],["B","ADD",55,56,"-3/2"],["B","ADD",53,56,"-1"],["B","ADD",51,56,"-1"],["B","ADD",49,56,"-1"],["B","ADD",47,56,"-1"],["B","ADD",45,56,"-1"],["B","ADD",43,56,"-1"],["B","ADD",41,56,"-1"],["B","ADD",39,56,"128"],["B","ADD",38,56,"-64"],["B","SCALE",56,"1/2"],["B","ADD",53,55,"-1"],["B","ADD",51,55,"-1"],["B","ADD",49,55,"-1"],["B","ADD",47,55,"-1"],["B","ADD",45,55,"-1"],["B","ADD",43,55,"-1"],["B","ADD",41,55,"-1"],["B","ADD",39,55,"128"],["B","ADD",38,55,"64"],["B","SCALE",55,"-1"],["B","ADD",57,55,"1"],["B","SWAP",55,56],["B","ADD",53,54,"1/2"],["B","ADD",51,54,"1/2"],["B","ADD",49,54,"1/2"],["B","ADD",47,54,"1/2"],["B","ADD",45,54,"1/2"],["B","ADD",43,54,"1/2"],["B","ADD",41,54,"1/2"],["B","ADD",39,54,"-64"],["B","ADD",38,54,"-32"],["B","ADD",57,54,"1/2"],["B","ADD",56,54,"1/2"],["B","ADD",55,54,"1/2"],["B","ADD",51,52,"-1/2"],["B","ADD",49,52,"-1/2"],["B","ADD",47,52,"-1/2"],["B","ADD",45,52,"-1/2"],["B","ADD",43,52,"-1/2"],["B","ADD",41,52,"-1/2"],["B","ADD",39,52,"64"],["B","ADD",38,52,"32"],["B","ADD",57,52,"-1/2"],["B","ADD",56,52,"-1/2"],["B","ADD",55,52,"-1/2"],["B","ADD",53,52,"-1/2"],["B","ADD",49,51,"-1"],["B","ADD",47,51,"-2"],["B","ADD",45,51,"-1"],["B","ADD",43,51,"-1"],["B","ADD",41,51,"-1"],["B","ADD",39,51,"128"],["B","ADD",38,51,"64"],["B","ADD",57,51,"-1"],["B","ADD",56,51,"-1"],["B","ADD",55,51,"-1"],["B","ADD",53,51,"-1"],["B","ADD",47,50,"1/2"],["B","ADD",51,50,"-1/2"],["B","ADD",47,49,"-1"],["B","ADD",45,49,"-1"],["B","ADD",43,49,"-1"],["B","ADD",41,49,"-1"],["B","ADD",39,49,"128"],["B","ADD",38,49,"64"],["B","SCALE",49,"-1"],["B","ADD",57,49,"1"],["B","ADD",56,49,"1"],["B","ADD",55,49,"1"],["B","ADD",53,49,"1"],["B","SWAP",49,51],["B","ADD",47,48,"-1/2"],["B","ADD",49,48,"1/2"],["B","ADD",45,47,"-1"],["B","ADD",43,47,"-1"],["B","ADD",41,47,"-1"],["B","ADD",39,47,"128"],["B","ADD",38,47,"64"],["B","SCALE",47,"-1"],["B","ADD",57,47,"1"],["B","ADD",56,47,"1"],["B","ADD",55,47,"1"],["B","ADD",53,47,"1"],["B","ADD",51,47,"1"],["B","SWAP",47,49],["B","ADD",45,46,"1/2"],["B","ADD",43,46,"1/2"],["B","ADD",41,46,"1/2"],["B","ADD",39,46,"-64"],["B","ADD",38,46,"-32"],["B","ADD",57,46,"1/2"],["B","ADD",56,46,"1/2"],["B","ADD",55,46,"1/2"],["B","ADD",53,46,"1/2"],["B","ADD",51,46,"1/2"],["B","ADD",49,46,"1/2"],["B","ADD",47,46,"1/2"],["B","ADD",43,44,"-1/2"],["B","ADD",41,44,"-1/2"],["B","ADD",39,44,"64"],["B","ADD",38,44,"32"],["B","ADD",57,44,"-1/2"],["B","ADD",56,44,"-1/2"],["B","ADD",55,44,"-1/2"],["B","ADD",53,44,"-1/2"],["B","ADD",51,44,"-1/2"],["B","ADD",49,44,"-1/2"],["B","ADD",47,44,"-1/2"],["B","ADD",45,44,"-1/2"],["B","ADD",41,43,"-1"],["B","ADD",39,43,"128"],["B","ADD",38,43,"64"],["B","SCALE",43,"2"],["B","ADD",57,43,"-1/2"],["B","ADD",56,43,"-1/2"],["B","ADD",55,43,"-1/2"],["B","ADD",53,43,"-1/2"],["B","ADD",51,43,"-1/2"],["B","ADD",49,43,"-1/2"],["B","ADD",47,43,"-1/2"],["B","ADD",45,43,"-1/2"],["B","ADD",43,42,"-1"],["B","ADD",39,41,"128"],["B","ADD",38,41,"64"],["B","SCALE",41,"-1"],["B","ADD",57,41,"1"],["B","ADD",56,41,"1"],["B","ADD",55,41,"1"],["B","ADD",53,41,"1"],["B","ADD",51,41,"1"],["B","ADD",49,41,"1"],["B","ADD",47,41,"1"],["B","ADD",45,41,"1"],["B","SWAP",41,43],["B","ADD",41,40,"1"],["B","ADD",38,39,"-1/2"],["B","SCALE",39,"1/128"],["B","ADD",57,39,"1"],["B","ADD",56,39,"1"],["B","ADD",55,39,"1"],["B","ADD",53,39,"1"],["B","ADD",51,39,"1"],["B","ADD",49,39,"1"],["B","ADD",47,39,"1"],["B","ADD",45,39,"1"],["B","ADD",43,39,"1"],["B","SWAP",39,41],["B","SCALE",38,"1/128"],["B","ADD",57,38,"2"],["B","ADD",56,38,"2"],["B","ADD",55,38,"1"],["B","ADD",53,38,"1"],["B","ADD",51,38,"1"],["B","ADD",49,38,"1"],["B","ADD",47,38,"1"],["B","ADD",45,38,"1"],["B","ADD",43,38,"1"],["B","ADD",41,38,"1"],["B","ADD",39,38,"1"],["B","LAMBDA",38,-1],["B","QUERY",38,39,-1],["B","LAMBDA",38,1],["B","ADD",38,39,"-1"],["B","ADD",39,75,"-1"],["B","ADD",39,73,"1"],["B","ADD",39,72,"-2"],["B","ADD",39,71,"1"],["B","ADD",39,69,"-1"],["B","ADD",39,68,"2"],["B","ADD",39,67,"-1"],["B","ADD",39,65,"1"],["B","ADD",39,64,"-2"],["B","ADD",39,63,"1"],["B","ADD",39,61,"-1"],["B","ADD",39,60,"2"],["B","ADD",39,59,"-1"],["B","ADD",39,56,"-1"],["B","ADD",39,55,"2"],["B","ADD",39,54,"-1"],["B","ADD",39,52,"1"],["B","ADD",39,51,"-2"],["B","ADD",39,50,"1"],["B","ADD",39,48,"-1"],["B","ADD",39,47,"2"],["B","ADD",39,46,"-1"],["B","ADD",39,44,"1"],["B","ADD",39,43,"-2"],["B","ADD",39,42,"1"],["B","ADD",39,40,"-1"],["B","ADD",38,39,"-1"],["B","ADD",57,39,"-1"],["B","ADD",56,39,"-2"],["B","ADD",55,39,"-1"],["B","ADD",54,39,"-2"],["B","ADD",53,39,"-1"],["B","ADD",52,39,"-2"],["B","ADD",51,39,"-1"],["B","ADD",50,39,"-2"],["B","ADD",49,39,"-1"],["B","ADD",48,39,"-2"],["B","ADD",47,39,"-1"],["B","ADD",46,39,"-2"],["B","ADD",45,39,"-1"],["B","ADD",44,39,"-2"],["B","ADD",43,39,"-1"],["B","ADD",42,39,"-2"],["B","ADD",41,39,"-1"],["B","ADD",40,39,"-2"],["B","SCALE",38,"1/2"],["B","ADD",74,38,"-1"],["B","ADD",72,38,"-1"],["B","ADD",70,38,"-1"],["B","ADD",68,38,"-1"],["B","ADD",66,38,"-1"],["B","ADD",64,38,"-1"],["B","ADD",62,38,"-1"],["B","ADD",60,38,"-1"],["B","ADD",58,38,"-1"],["B","ADD",57,38,"-1"],["B","ADD",56,38,"-2"],["B","ADD",55,38,"-1"],["B","ADD",54,38,"-2"],["B","ADD",53,38,"-1"],["B","ADD",52,38,"-2"],["B","ADD",51,38,"-1"],["B","ADD",50,38,"-2"],["B","ADD",49,38,"-1"],["B","ADD",48,38,"-2"],["B","ADD",47,38,"-1"],["B","ADD",46,38,"-2"],["B","ADD",45,38,"-1"],["B","ADD",44,38,"-2"],["B","ADD",43,38,"-1"],["B","ADD",42,38,"-2"],["B","ADD",41,38,"-1"],["B","ADD",40,38,"-2"],["B","ADD",39,38,"1"],["B","LAMBDA",38,-1],["B","QUERY",38,39,-1],["B","LAMBDA",38,1],["B","ADD",38,39,"-1"],["B","SCALE",38,"2"],["B","ADD",75,38,"-1"],["B","ADD",74,38,"-1/2"],["B","ADD",73,38,"-1"],["B","ADD",72,38,"-1/2"],["B","ADD",71,38,"-1"],["B","ADD",70,38,"-1/2"],["B","ADD",69,38,"-1"],["B","ADD",68,38,"-1/2"],["B","ADD",67,38,"-1"],["B","ADD",66,38,"-1/2"],["B","ADD",65,38,"-1"],["B","ADD",64,38,"-1/2"],["B","ADD",63,38,"-1"],["B","ADD",62,38,"-1/2"],["B","ADD",61,38,"-1"],["B","ADD",60,38,"-1/2"],["B","ADD",59,38,"-1"],["B","ADD",58,38,"-1/2"],["B","ADD",57,38,"-1/2"],["B","ADD",55,38,"-1/2"],["B","ADD",53,38,"-1/2"],["B","ADD",51,38,"-1/2"],["B","ADD",49,38,"-1/2"],["B","ADD",47,38,"-1/2"],["B","ADD",45,38,"-1/2"],["B","ADD",43,38,"-1/2"],["B","ADD",41,38,"-1/2"],["B","ADD",39,38,"1/2"],["B","LAMBDA",38,-1],["B","QUERY",38,39,-1],["B","LAMBDA",38,1],["B","ADD",38,39,"-1"],["B","ADD",74,75,"-1/2"],["B","ADD",73,75,"-1"],["B","ADD",72,75,"-1"],["B","ADD",71,75,"-1"],["B","ADD",70,75,"-1"],["B","ADD",69,75,"-1"],["B","ADD",68,75,"-1"],["B","ADD",67,75,"-1"],["B","ADD",66,75,"-1"],["B","ADD",65,75,"-1"],["B","ADD",64,75,"-1"],["B","ADD",63,75,"-1"],["B","ADD",62,75,"-1"],["B","ADD",61,75,"-1"],["B","ADD",60,75,"-1"],["B","ADD",59,75,"-1"],["B","ADD",58,75,"-1"],["B","ADD",56,75,"1"],["B","ADD",54,75,"1"],["B","ADD",52,75,"1"],["B","ADD",50,75,"1"],["B","ADD",48,75,"1"],["B","ADD",46,75,"1"],["B","ADD",44,75,"1"],["B","ADD",42,75,"1"],["B","ADD",40,75,"1"],["B","ADD",38,75,"1"],["B","SCALE",75,"-1/2"],["B","ADD",73,74,"2"],["B","ADD",72,74,"2"],["B","ADD",71,74,"2"],["B","ADD",70,74,"2"],["B","ADD",69,74,"2"],["B","ADD",68,74,"2"],["B","ADD",67,74,"2"],["B","ADD",66,74,"2"],["B","ADD",65,74,"2"],["B","ADD",64,74,"2"],["B","ADD",63,74,"2"],["B","ADD",62,74,"2"],["B","ADD",61,74,"2"],["B","ADD",60,74,"2"],["B","ADD",59,74,"2"],["B","ADD",58,74,"2"],["B","ADD",56,74,"-2"],["B","ADD",54,74,"-2"],["B","ADD",52,74,"-2"],["B","ADD",50,74,"-2"],["B","ADD",48,74,"-2"],["B","ADD",46,74,"-2"],["B","ADD",44,74,"-2"],["B","ADD",42,74,"-2"],["B","ADD",40,74,"-2"],["B","ADD",38,74,"-2"],["B","SCALE",74,"2"],["B","ADD",75,74,"3/2"],["B","SWAP",74,75],["B","ADD",71,72,"-1/2"],["B","ADD",70,72,"-1"],["B","ADD",69,72,"-1"],["B","ADD",68,72,"-1"],["B","ADD",67,72,"-1"],["B","ADD",66,72,"-1"],["B","ADD",65,72,"-1"],["B","ADD",64,72,"-1"],["B","ADD",63,72,"-1"],["B","ADD",62,72,"-1"],["B","ADD",61,72,"-1"],["B","ADD",60,72,"-1"],["B","ADD",59,72,"-1"],["B","ADD",58,72,"-1"],["B","ADD",56,72,"1"],["B","ADD",54,72,"1"],["B","ADD",52,72,"1"],["B","ADD",50,72,"1"],["B","ADD",48,72,"1"],["B","ADD",46,72,"1"],["B","ADD",44,72,"1"],["B","ADD",42,72,"1"],["B","ADD",40,72,"1"],["B","ADD",38,72,"1"],["B","SCALE",72,"-1/2"],["B","ADD",75,72,"2"],["B","ADD",74,72,"2"],["B","ADD",73,72,"2"],["B","ADD",70,71,"2"],["B","ADD",69,71,"2"],["B","ADD",68,71,"2"],["B","ADD",67,71,"2"],["B","ADD",66,71,"2"],["B","ADD",65,71,"2"],["B","ADD",64,71,"2"],["B","ADD",63,71,"2"],["B","ADD",62,71,"2"],["B","ADD",61,71,"2"],["B","ADD",60,71,"2"],["B","ADD",59,71,"2"],["B","ADD",58,71,"2"],["B","ADD",56,71,"-2"],["B","ADD",54,71,"-2"],["B","ADD",52,71,"-2"],["B","ADD",50,71,"-2"],["B","ADD",48,71,"-2"],["B","ADD",46,71,"-2"],["B","ADD",44,71,"-2"],["B","ADD",42,71,"-2"],["B","ADD",40,71,"-2"],["B","ADD",38,71,"-2"],["B","SCALE",71,"2"],["B","ADD",75,71,"1"],["B","ADD",74,71,"1"],["B","ADD",73,71,"1"],["B","ADD",72,71,"3/2"],["B","SWAP",71,72],["B","ADD",69,70,"-1"],["B","ADD",68,70,"-1/2"],["B","ADD",67,70,"-1"],["B","ADD",66,70,"-1"],["B","ADD",65,70,"-1"],["B","ADD",64,70,"-1"],["B","ADD",63,70,"-1"],["B","ADD",62,70,"-1"],["B","ADD",61,70,"-1"],["B","ADD",60,70,"-1"],["B","ADD",59,70,"-1"],["B","ADD",58,70,"-1"],["B","ADD",56,70,"1"],["B","ADD",54,70,"1"],["B","ADD",52,70,"1"],["B","ADD",50,70,"1"],["B","ADD",48,70,"1"],["B","ADD",46,70,"1"],["B","ADD",44,70,"1"],["B","ADD",42,70,"1"],["B","ADD",40,70,"1"],["B","ADD",38,70,"1"],["B","SCALE",70,"-1/2"],["B","ADD",75,70,"2"],["B","ADD",74,70,"2"],["B","ADD",73,70,"2"],["B","ADD",72,70,"2"],["B","ADD",71,70,"2"],["B","ADD",68,69,"1/2"],["B","ADD",67,69,"-1"],["B","ADD",66,69,"-1"],["B","ADD",65,69,"-1"],["B","ADD",64,69,"-1"],["B","ADD",63,69,"-1"],["B","ADD",62,69,"-1"],["B","ADD",61,69,"-1"],["B","ADD",60,69,"-1"],["B","ADD",59,69,"-1"],["B","ADD",58,69,"-1"],["B","ADD",56,69,"1"],["B","ADD",54,69,"1"],["B","ADD",52,69,"1"],["B","ADD",50,69,"1"],["B","ADD",48,69,"1"],["B","ADD",46,69,"1"],["B","ADD",44,69,"1"],["B","ADD",42,69,"1"],["B","ADD",40,69,"1"],["B","ADD",38,69,"1"],["B","SCALE",69,"-1"],["B","ADD",75,69,"1"],["B","ADD",74,69,"1"],["B","ADD",73,69,"1"],["B","ADD",72,69,"1"],["B","ADD",71,69,"1"],["B","ADD",70,69,"3/2"],["B","SWAP",69,70],["B","ADD",67,68,"2"],["B","ADD",66,68,"2"],["B","ADD",65,68,"2"],["B","ADD",64,68,"2"],["B","ADD",63,68,"2"],["B","ADD",62,68,"2"],["B","ADD",61,68,"2"],["B","ADD",60,68,"2"],["B","ADD",59,68,"2"],["B","ADD",58,68,"2"],["B","ADD",56,68,"-2"],["B","ADD",54,68,"-2"],["B","ADD",52,68,"-2"],["B","ADD",50,68,"-2"],["B","ADD",48,68,"-2"],["B","ADD",46,68,"-2"],["B","ADD",44,68,"-2"],["B","ADD",42,68,"-2"],["B","ADD",40,68,"-2"],["B","ADD",38,68,"-2"],["B","SCALE",68,"2"],["B","ADD",75,68,"1"],["B","ADD",74,68,"1"],["B","ADD",73,68,"1"],["B","ADD",72,68,"1"],["B","ADD",71,68,"1"],["B","ADD",70,68,"1"],["B","ADD",69,68,"3/2"],["B","SWAP",68,69],["B","ADD",66,67,"-1/2"],["B","ADD",65,67,"-1"],["B","ADD",64,67,"-1"],["B","ADD",63,67,"-1"],["B","ADD",62,67,"-1"],["B","ADD",61,67,"-1"],["B","ADD",60,67,"-1"],["B","ADD",59,67,"-1"],["B","ADD",58,67,"-1"],["B","ADD",56,67,"1"],["B","ADD",54,67,"1"],["B","ADD",52,67,"1"],["B","ADD",50,67,"1"],["B","ADD",48,67,"1"],["B","ADD",46,67,"1"],["B","ADD",44,67,"1"],["B","ADD",42,67,"1"],["B","ADD",40,67,"1"],["B","ADD",38,67,"1"],["B","SCALE",67,"-1/2"],["B","ADD",75,67,"2"],["B","ADD",74,67,"2"],["B","ADD",73,67,"2"],["B","ADD",72,67,"2"],["B","ADD",71,67,"2"],["B","ADD",70,67,"2"],["B","ADD",69,67,"2"],["B","ADD",68,67,"2"],["B","ADD",65,66,"2"],["B","ADD",64,66,"2"],["B","ADD",63,66,"2"],["B","ADD",62,66,"2"],["B","ADD",61,66,"2"],["B","ADD",60,66,"2"],["B","ADD",59,66,"2"],["B","ADD",58,66,"2"],["B","ADD",56,66,"-2"],["B","ADD",54,66,"-2"],["B","ADD",52,66,"-2"],["B","ADD",50,66,"-2"],["B","ADD",48,66,"-2"],["B","ADD",46,66,"-2"],["B","ADD",44,66,"-2"],["B","ADD",42,66,"-2"],["B","ADD",40,66,"-2"],["B","ADD",38,66,"-2"],["B","SCALE",66,"2"],["B","ADD",75,66,"1"],["B","ADD",74,66,"1"],["B","ADD",73,66,"1"],["B","ADD",72,66,"1"],["B","ADD",71,66,"1"],["B","ADD",70,66,"1"],["B","ADD",69,66,"1"],["B","ADD",68,66,"1"],["B","ADD",67,66,"3/2"],["B","SWAP",66,67],["B","ADD",63,64,"-1/2"],["B","ADD",62,64,"-1"],["B","ADD",61,64,"-1"],["B","ADD",60,64,"-1"],["B","ADD",59,64,"-1"],["B","ADD",58,64,"-1"],["B","ADD",56,64,"1"],["B","ADD",54,64,"1"],["B","ADD",52,64,"1"],["B","ADD",50,64,"1"],["B","ADD",48,64,"1"],["B","ADD",46,64,"1"],["B","ADD",44,64,"1"],["B","ADD",42,64,"1"],["B","ADD",40,64,"1"],["B","ADD",38,64,"1"],["B","SCALE",64,"-1/2"],["B","ADD",75,64,"2"],["B","ADD",74,64,"2"],["B","ADD",73,64,"2"],["B","ADD",72,64,"2"],["B","ADD",71,64,"2"],["B","ADD",70,64,"2"],["B","ADD",69,64,"2"],["B","ADD",68,64,"2"],["B","ADD",67,64,"2"],["B","ADD",66,64,"2"],["B","ADD",65,64,"2"],["B","ADD",62,63,"2"],["B","ADD",61,63,"2"],["B","ADD",60,63,"2"],["B","ADD",59,63,"2"],["B","ADD",58,63,"2"],["B","ADD",56,63,"-2"],["B","ADD",54,63,"-2"],["B","ADD",52,63,"-2"],["B","ADD",50,63,"-2"],["B","ADD",48,63,"-2"],["B","ADD",46,63,"-2"],["B","ADD",44,63,"-2"],["B","ADD",42,63,"-2"],["B","ADD",40,63,"-2"],["B","ADD",38,63,"-2"],["B","SCALE",63,"2"],["B","ADD",75,63,"1"],["B","ADD",74,63,"1"],["B","ADD",73,63,"1"],["B","ADD",72,63,"1"],["B","ADD",71,63,"1"],["B","ADD",70,63,"1"],["B","ADD",69,63,"1"],["B","ADD",68,63,"1"],["B","ADD",67,63,"1"],["B","ADD",66,63,"1"],["B","ADD",65,63,"1"],["B","ADD",64,63,"3/2"],["B","SWAP",63,64],["B","ADD",61,62,"-1"],["B","ADD",60,62,"-1/2"],["B","ADD",59,62,"-1"],["B","ADD",58,62,"-1"],["B","ADD",56,62,"1"],["B","ADD",54,62,"1"],["B","ADD",52,62,"1"],["B","ADD",50,62,"1"],["B","ADD",48,62,"1"],["B","ADD",46,62,"1"],["B","ADD",44,62,"1"],["B","ADD",42,62,"1"],["B","ADD",40,62,"1"],["B","ADD",38,62,"1"],["B","SCALE",62,"-1/2"],["B","ADD",75,62,"2"],["B","ADD",74,62,"2"],["B","ADD",73,62,"2"],["B","ADD",72,62,"2"],["B","ADD",71,62,"2"],["B","ADD",70,62,"2"],["B","ADD",69,62,"2"],["B","ADD",68,62,"2"],["B","ADD",67,62,"2"],["B","ADD",66,62,"2"],["B","ADD",65,62,"2"],["B","ADD",64,62,"2"],["B","ADD",63,62,"2"],["B","ADD",60,61,"1/2"],["B","ADD",59,61,"-1"],["B","ADD",58,61,"-1"],["B","ADD",56,61,"1"],["B","ADD",54,61,"1"],["B","ADD",52,61,"1"],["B","ADD",50,61,"1"],["B","ADD",48,61,"1"],["B","ADD",46,61,"1"],["B","ADD",44,61,"1"],["B","ADD",42,61,"1"],["B","ADD",40,61,"1"],["B","ADD",38,61,"1"],["B","SCALE",61,"-1"],["B","ADD",75,61,"1"],["B","ADD",74,61,"1"],["B","ADD",73,61,"1"],["B","ADD",72,61,"1"],["B","ADD",71,61,"1"],["B","ADD",70,61,"1"],["B","ADD",69,61,"1"],["B","ADD",68,61,"1"],["B","ADD",67,61,"1"],["B","ADD",66,61,"1"],["B","ADD",65,61,"1"],["B","ADD",64,61,"1"],["B","ADD",63,61,"1"],["B","ADD",62,61,"3/2"],["B","SWAP",61,62],["B","ADD",59,60,"2"],["B","ADD",58,60,"2"],["B","ADD",56,60,"-2"],["B","ADD",54,60,"-2"],["B","ADD",52,60,"-2"],["B","ADD",50,60,"-2"],["B","ADD",48,60,"-2"],["B","ADD",46,60,"-2"],["B","ADD",44,60,"-2"],["B","ADD",42,60,"-2"],["B","ADD",40,60,"-2"],["B","ADD",38,60,"-2"],["B","SCALE",60,"2"],["B","ADD",75,60,"1"],["B","ADD",74,60,"1"],["B","ADD",73,60,"1"],["B","ADD",72,60,"1"],["B","ADD",71,60,"1"],["B","ADD",70,60,"1"],["B","ADD",69,60,"1"],["B","ADD",68,60,"1"],["B","ADD",67,60,"1"],["B","ADD",66,60,"1"],["B","ADD",65,60,"1"],["B","ADD",64,60,"1"],["B","ADD",63,60,"1"],["B","ADD",62,60,"1"],["B","ADD",61,60,"3/2"],["B","SWAP",60,61],["B","ADD",58,59,"-1/2"],["B","ADD",56,59,"1"],["B","ADD",54,59,"1"],["B","ADD",52,59,"1"],["B","ADD",50,59,"1"],["B","ADD",48,59,"1"],["B","ADD",46,59,"1"],["B","ADD",44,59,"1"],["B","ADD",42,59,"1"],["B","ADD",40,59,"1"],["B","ADD",38,59,"1"],["B","SCALE",59,"-1/2"],["B","ADD",75,59,"2"],["B","ADD",74,59,"2"],["B","ADD",73,59,"2"],["B","ADD",72,59,"2"],["B","ADD",71,59,"2"],["B","ADD",70,59,"2"],["B","ADD",69,59,"2"],["B","ADD",68,59,"2"],["B","ADD",67,59,"2"],["B","ADD",66,59,"2"],["B","ADD",65,59,"2"],["B","ADD",64,59,"2"],["B","ADD",63,59,"2"],["B","ADD",62,59,"2"],["B","ADD",61,59,"2"],["B","ADD",60,59,"2"],["B","ADD",56,58,"-2"],["B","ADD",54,58,"-2"],["B","ADD",52,58,"-2"],["B","ADD",50,58,"-2"],["B","ADD",48,58,"-2"],["B","ADD",46,58,"-2"],["B","ADD",44,58,"-2"],["B","ADD",42,58,"-2"],["B","ADD",40,58,"-2"],["B","ADD",38,58,"-2"],["B","SCALE",58,"2"],["B","ADD",75,58,"1"],["B","ADD",74,58,"1"],["B","ADD",73,58,"1"],["B","ADD",72,58,"1"],["B","ADD",71,58,"1"],["B","ADD",70,58,"1"],["B","ADD",69,58,"1"],["B","ADD",68,58,"1"],["B","ADD",67,58,"1"],["B","ADD",66,58,"1"],["B","ADD",65,58,"1"],["B","ADD",64,58,"1"],["B","ADD",63,58,"1"],["B","ADD",62,58,"1"],["B","ADD",61,58,"1"],["B","ADD",60,58,"1"],["B","ADD",59,58,"3/2"],["B","SWAP",58,59],["B","ADD",56,57,"-2"],["B","ADD",54,57,"-2"],["B","ADD",52,57,"-2"],["B","ADD",50,57,"-2"],["B","ADD",48,57,"-2"],["B","ADD",46,57,"-2"],["B","ADD",44,57,"-2"],["B","ADD",42,57,"-2"],["B","ADD",40,57,"-2"],["B","ADD",38,57,"-2"],["B","ADD",75,57,"2"],["B","ADD",74,57,"2"],["B","ADD",73,57,"2"],["B","ADD",72,57,"2"],["B","ADD",71,57,"2"],["B","ADD",70,57,"2"],["B","ADD",69,57,"2"],["B","ADD",68,57,"2"],["B","ADD",67,57,"2"],["B","ADD",66,57,"2"],["B","ADD",65,57,"2"],["B","ADD",64,57,"2"],["B","ADD",63,57,"2"],["B","ADD",62,57,"2"],["B","ADD",61,57,"2"],["B","ADD",60,57,"2"],["B","ADD",59,57,"2"],["B","ADD",58,57,"2"],["B","ADD",54,56,"-2"],["B","ADD",52,56,"-2"],["B","ADD",50,56,"-2"],["B","ADD",48,56,"-2"],["B","ADD",46,56,"-2"],["B","ADD",44,56,"-2"],["B","ADD",42,56,"-2"],["B","ADD",40,56,"-2"],["B","ADD",38,56,"-2"],["B","SCALE",56,"-1"],["B","ADD",75,56,"-2"],["B","ADD",74,56,"-2"],["B","ADD",73,56,"-2"],["B","ADD",72,56,"-2"],["B","ADD",71,56,"-2"],["B","ADD",70,56,"-2"],["B","ADD",69,56,"-2"],["B","ADD",68,56,"-2"],["B","ADD",67,56,"-2"],["B","ADD",66,56,"-2"],["B","ADD",65,56,"-2"],["B","ADD",64,56,"-2"],["B","ADD",63,56,"-2"],["B","ADD",62,56,"-2"],["B","ADD",61,56,"-2"],["B","ADD",60,56,"-2"],["B","ADD",59,56,"-2"],["B","ADD",58,56,"-2"],["B","ADD",54,55,"2"],["B","ADD",52,55,"2"],["B","ADD",50,55,"2"],["B","ADD",48,55,"2"],["B","ADD",46,55,"2"],["B","ADD",44,55,"2"],["B","ADD",42,55,"2"],["B","ADD",40,55,"2"],["B","ADD",38,55,"2"],["B","ADD",75,55,"-2"],["B","ADD",74,55,"-2"],["B","ADD",73,55,"-2"],["B","ADD",72,55,"-2"],["B","ADD",71,55,"-2"],["B","ADD",70,55,"-2"],["B","ADD",69,55,"-2"],["B","ADD",68,55,"-2"],["B","ADD",67,55,"-2"],["B","ADD",66,55,"-2"],["B","ADD",65,55,"-2"],["B","ADD",64,55,"-2"],["B","ADD",63,55,"-2"],["B","ADD",62,55,"-2"],["B","ADD",61,55,"-2"],["B","ADD",60,55,"-2"],["B","ADD",59,55,"-2"],["B","ADD",58,55,"-2"],["B","ADD",56,55,"2"],["B","ADD",52,53,"-2"],["B","ADD",50,53,"-2"],["B","ADD",48,53,"-2"],["B","ADD",46,53,"-2"],["B","ADD",44,53,"-2"],["B","ADD",42,53,"-2"],["B","ADD",40,53,"-2"],["B","ADD",38,53,"-2"],["B","ADD",75,53,"2"],["B","ADD",74,53,"2"],["B","ADD",73,53,"2"],["B","ADD",72,53,"2"],["B","ADD",71,53,"2"],["B","ADD",70,53,"2"],["B","ADD",69,53,"2"],["B","ADD",68,53,"2"],["B","ADD",67,53,"2"],["B","ADD",66,53,"2"],["B","ADD",65,53,"2"],["B","ADD",64,53,"2"],["B","ADD",63,53,"2"],["B","ADD",62,53,"2"],["B","ADD",61,53,"2"],["B","ADD",60,53,"2"],["B","ADD",59,53,"2"],["B","ADD",58,53,"2"],["B","ADD",56,53,"-2"],["B","ADD",54,53,"-2"],["B","ADD",50,52,"-2"],["B","ADD",48,52,"-2"],["B","ADD",46,52,"-2"],["B","ADD",44,52,"-2"],["B","ADD",42,52,"-2"],["B","ADD",40,52,"-2"],["B","ADD",38,52,"-2"],["B","SCALE",52,"-1"],["B","ADD",75,52,"-2"],["B","ADD",74,52,"-2"],["B","ADD",73,52,"-2"],["B","ADD",72,52,"-2"],["B","ADD",71,52,"-2"],["B","ADD",70,52,"-2"],["B","ADD",69,52,"-2"],["B","ADD",68,52,"-2"],["B","ADD",67,52,"-2"],["B","ADD",66,52,"-2"],["B","ADD",65,52,"-2"],["B","ADD",64,52,"-2"],["B","ADD",63,52,"-2"],["B","ADD",62,52,"-2"],["B","ADD",61,52,"-2"],["B","ADD",60,52,"-2"],["B","ADD",59,52,"-2"],["B","ADD",58,52,"-2"],["B","ADD",56,52,"2"],["B","ADD",54,52,"2"],["B","ADD",50,51,"2"],["B","ADD",48,51,"2"],["B","ADD",46,51,"2"],["B","ADD",44,51,"2"],["B","ADD",42,51,"2"],["B","ADD",40,51,"2"],["B","ADD",38,51,"2"],["B","ADD",75,51,"-2"],["B","ADD",74,51,"-2"],["B","ADD",73,51,"-2"],["B","ADD",72,51,"-2"],["B","ADD",71,51,"-2"],["B","ADD",70,51,"-2"],["B","ADD",69,51,"-2"],["B","ADD",68,51,"-2"],["B","ADD",67,51,"-2"],["B","ADD",66,51,"-2"],["B","ADD",65,51,"-2"],["B","ADD",64,51,"-2"],["B","ADD",63,51,"-2"],["B","ADD",62,51,"-2"],["B","ADD",61,51,"-2"],["B","ADD",60,51,"-2"],["B","ADD",59,51,"-2"],["B","ADD",58,51,"-2"],["B","ADD",56,51,"2"],["B","ADD",54,51,"2"],["B","ADD",52,51,"2"],["B","ADD",48,49,"-2"],["B","ADD",46,49,"-2"],["B","ADD",44,49,"-2"],["B","ADD",42,49,"-2"],["B","ADD",40,49,"-2"],["B","ADD",38,49,"-2"],["B","ADD",75,49,"2"],["B","ADD",74,49,"2"],["B","ADD",73,49,"2"],["B","ADD",72,49,"2"],["B","ADD",71,49,"2"],["B","ADD",70,49,"2"],["B","ADD",69,49,"2"],["B","ADD",68,49,"2"],["B","ADD",67,49,"2"],["B","ADD",66,49,"2"],["B","ADD",65,49,"2"],["B","ADD",64,49,"2"],["B","ADD",63,49,"2"],["B","ADD",62,49,"2"],["B","ADD",61,49,"2"],["B","ADD",60,49,"2"],["B","ADD",59,49,"2"],["B","ADD",58,49,"2"],["B","ADD",56,49,"-2"],["B","ADD",54,49,"-2"],["B","ADD",52,49,"-2"],["B","ADD",50,49,"-2"],["B","ADD",46,48,"-2"],["B","ADD",44,48,"-2"],["B","ADD",42,48,"-2"],["B","ADD",40,48,"-2"],["B","ADD",38,48,"-2"],["B","SCALE",48,"-1"],["B","ADD",75,48,"-2"],["B","ADD",74,48,"-2"],["B","ADD",73,48,"-2"],["B","ADD",72,48,"-2"],["B","ADD",71,48,"-2"],["B","ADD",70,48,"-2"],["B","ADD",69,48,"-2"],["B","ADD",68,48,"-2"],["B","ADD",67,48,"-2"],["B","ADD",66,48,"-2"],["B","ADD",65,48,"-2"],["B","ADD",64,48,"-2"],["B","ADD",63,48,"-2"],["B","ADD",62,48,"-2"],["B","ADD",61,48,"-2"],["B","ADD",60,48,"-2"],["B","ADD",59,48,"-2"],["B","ADD",58,48,"-2"],["B","ADD",56,48,"2"],["B","ADD",54,48,"2"],["B","ADD",52,48,"2"],["B","ADD",50,48,"2"],["B","ADD",46,47,"2"],["B","ADD",44,47,"2"],["B","ADD",42,47,"2"],["B","ADD",40,47,"2"],["B","ADD",38,47,"2"],["B","ADD",75,47,"-2"],["B","ADD",74,47,"-2"],["B","ADD",73,47,"-2"],["B","ADD",72,47,"-2"],["B","ADD",71,47,"-2"],["B","ADD",70,47,"-2"],["B","ADD",69,47,"-2"],["B","ADD",68,47,"-2"],["B","ADD",67,47,"-2"],["B","ADD",66,47,"-2"],["B","ADD",65,47,"-2"],["B","ADD",64,47,"-2"],["B","ADD",63,47,"-2"],["B","ADD",62,47,"-2"],["B","ADD",61,47,"-2"],["B","ADD",60,47,"-2"],["B","ADD",59,47,"-2"],["B","ADD",58,47,"-2"],["B","ADD",56,47,"2"],["B","ADD",54,47,"2"],["B","ADD",52,47,"2"],["B","ADD",50,47,"2"],["B","ADD",48,47,"2"],["B","ADD",44,45,"-2"],["B","ADD",42,45,"-2"],["B","ADD",40,45,"-2"],["B","ADD",38,45,"-2"],["B","ADD",75,45,"2"],["B","ADD",74,45,"2"],["B","ADD",73,45,"2"],["B","ADD",72,45,"2"],["B","ADD",71,45,"2"],["B","ADD",70,45,"2"],["B","ADD",69,45,"2"],["B","ADD",68,45,"2"],["B","ADD",67,45,"2"],["B","ADD",66,45,"2"],["B","ADD",65,45,"2"],["B","ADD",64,45,"2"],["B","ADD",63,45,"2"],["B","ADD",62,45,"2"],["B","ADD",61,45,"2"],["B","ADD",60,45,"2"],["B","ADD",59,45,"2"],["B","ADD",58,45,"2"],["B","ADD",56,45,"-2"],["B","ADD",54,45,"-2"],["B","ADD",52,45,"-2"],["B","ADD",50,45,"-2"],["B","ADD",48,45,"-2"],["B","ADD",46,45,"-2"],["B","ADD",42,44,"-2"],["B","ADD",40,44,"-2"],["B","ADD",38,44,"-2"],["B","SCALE",44,"-1"],["B","ADD",75,44,"-2"],["B","ADD",74,44,"-2"],["B","ADD",73,44,"-2"],["B","ADD",72,44,"-2"],["B","ADD",71,44,"-2"],["B","ADD",70,44,"-2"],["B","ADD",69,44,"-2"],["B","ADD",68,44,"-2"],["B","ADD",67,44,"-2"],["B","ADD",66,44,"-2"],["B","ADD",65,44,"-2"],["B","ADD",64,44,"-2"],["B","ADD",63,44,"-2"],["B","ADD",62,44,"-2"],["B","ADD",61,44,"-2"],["B","ADD",60,44,"-2"],["B","ADD",59,44,"-2"],["B","ADD",58,44,"-2"],["B","ADD",56,44,"2"],["B","ADD",54,44,"2"],["B","ADD",52,44,"2"],["B","ADD",50,44,"2"],["B","ADD",48,44,"2"],["B","ADD",46,44,"2"],["B","ADD",42,43,"2"],["B","ADD",40,43,"2"],["B","ADD",38,43,"2"],["B","ADD",75,43,"-2"],["B","ADD",74,43,"-2"],["B","ADD",73,43,"-2"],["B","ADD",72,43,"-2"],["B","ADD",71,43,"-2"],["B","ADD",70,43,"-2"],["B","ADD",69,43,"-2"],["B","ADD",68,43,"-2"],["B","ADD",67,43,"-2"],["B","ADD",66,43,"-2"],["B","ADD",65,43,"-2"],["B","ADD",64,43,"-2"],["B","ADD",63,43,"-2"],["B","ADD",62,43,"-2"],["B","ADD",61,43,"-2"],["B","ADD",60,43,"-2"],["B","ADD",59,43,"-2"],["B","ADD",58,43,"-2"],["B","ADD",56,43,"2"],["B","ADD",54,43,"2"],["B","ADD",52,43,"2"],["B","ADD",50,43,"2"],["B","ADD",48,43,"2"],["B","ADD",46,43,"2"],["B","ADD",44,43,"2"],["B","ADD",40,41,"-2"],["B","ADD",38,41,"-2"],["B","ADD",75,41,"2"],["B","ADD",74,41,"2"],["B","ADD",73,41,"2"],["B","ADD",72,41,"2"],["B","ADD",71,41,"2"],["B","ADD",70,41,"2"],["B","ADD",69,41,"2"],["B","ADD",68,41,"2"],["B","ADD",67,41,"2"],["B","ADD",66,41,"2"],["B","ADD",65,41,"2"],["B","ADD",64,41,"2"],["B","ADD",63,41,"2"],["B","ADD",62,41,"2"],["B","ADD",61,41,"2"],["B","ADD",60,41,"2"],["B","ADD",59,41,"2"],["B","ADD",58,41,"2"],["B","ADD",56,41,"-2"],["B","ADD",54,41,"-2"],["B","ADD",52,41,"-2"],["B","ADD",50,41,"-2"],["B","ADD",48,41,"-2"],["B","ADD",46,41,"-2"],["B","ADD",44,41,"-2"],["B","ADD",42,41,"-2"],["B","ADD",38,40,"-2"],["B","SCALE",40,"-1"],["B","ADD",75,40,"-2"],["B","ADD",74,40,"-2"],["B","ADD",73,40,"-2"],["B","ADD",72,40,"-2"],["B","ADD",71,40,"-2"],["B","ADD",70,40,"-2"],["B","ADD",69,40,"-2"],["B","ADD",68,40,"-2"],["B","ADD",67,40,"-2"],["B","ADD",66,40,"-2"],["B","ADD",65,40,"-2"],["B","ADD",64,40,"-2"],["B","ADD",63,40,"-2"],["B","ADD",62,40,"-2"],["B","ADD",61,40,"-2"],["B","ADD",60,40,"-2"],["B","ADD",59,40,"-2"],["B","ADD",58,40,"-2"],["B","ADD",56,40,"2"],["B","ADD",54,40,"2"],["B","ADD",52,40,"2"],["B","ADD",50,40,"2"],["B","ADD",48,40,"2"],["B","ADD",46,40,"2"],["B","ADD",44,40,"2"],["B","ADD",42,40,"2"],["B","SCALE",39,"-1"],["B","ADD",75,39,"-2"],["B","ADD",74,39,"-2"],["B","ADD",73,39,"-2"],["B","ADD",72,39,"-2"],["B","ADD",71,39,"-2"],["B","ADD",70,39,"-2"],["B","ADD",69,39,"-2"],["B","ADD",68,39,"-2"],["B","ADD",67,39,"-2"],["B","ADD",66,39,"-2"],["B","ADD",65,39,"-2"],["B","ADD",64,39,"-2"],["B","ADD",63,39,"-2"],["B","ADD",62,39,"-2"],["B","ADD",61,39,"-2"],["B","ADD",60,39,"-2"],["B","ADD",59,39,"-2"],["B","ADD",58,39,"-2"],["B","SCALE",38,"1/2"],["B","ADD",75,38,"2"],["B","ADD",74,38,"2"],["B","ADD",73,38,"2"],["B","ADD",72,38,"2"],["B","ADD",71,38,"2"],["B","ADD",70,38,"2"],["B","ADD",69,38,"2"],["B","ADD",68,38,"2"],["B","ADD",67,38,"2"],["B","ADD",66,38,"2"],["B","ADD",65,38,"2"],["B","ADD",64,38,"2"],["B","ADD",63,38,"2"],["B","ADD",62,38,"2"],["B","ADD",61,38,"2"],["B","ADD",60,38,"2"],["B","ADD",59,38,"2"],["B","ADD",58,38,"2"],["B","ADD",56,38,"-2"],["B","ADD",54,38,"-2"],["B","ADD",52,38,"-2"],["B","ADD",50,38,"-2"],["B","ADD",48,38,"-2"],["B","ADD",46,38,"-2"],["B","ADD",44,38,"-2"],["B","ADD",42,38,"-2"],["B","ADD",40,38,"-2"],["B","SWAP",38,39],["B","LAMBDA",38,-1],["B","QUERY",38,39,-1],["B","LAMBDA",38,1],["B","ADD",38,39,"-1"],["B","ADD",39,75,"1"],["B","ADD",72,74,"-1"],["B","ADD",70,74,"-1"],["B","ADD",68,74,"-1"],["B","ADD",66,74,"-1"],["B","ADD",64,74,"-1"],["B","ADD",62,74,"-1"],["B","ADD",58,74,"-1/2"],["B","ADD",39,74,"1"],["B","SWAP",73,75],["B","ADD",39,72,"1"],["B","SWAP",72,74],["B","ADD",39,71,"-1"],["B","ADD",39,70,"1"],["B","ADD",39,68,"-1"],["B","ADD",39,67,"1"],["B","ADD",39,66,"-1"],["B","SWAP",65,69],["B","ADD",39,64,"1"],["B","SWAP",64,68],["B","ADD",39,63,"-1"],["B","SWAP",63,71],["B","ADD",39,62,"1"],["B","SWAP",62,70],["B","SWAP",61,75],["B","ADD",39,60,"-1"],["B","SWAP",60,74],["B","ADD",58,59,"-1"],["B","ADD",38,59,"1"],["B","SCALE",59,"-2"],["B","ADD",75,59,"1"],["B","ADD",74,59,"1"],["B","SWAP",59,73],["B","SCALE",58,"-2"],["B","ADD",72,58,"-1"],["B","ADD",70,58,"1"],["B","ADD",68,58,"1"],["B","ADD",66,58,"1"],["B","ADD",64,58,"1"],["B","ADD",62,58,"1"],["B","ADD",60,58,"1"],["B","ADD",39,57,"-1"],["B","ADD",39,56,"1"],["B","ADD",39,55,"-1"],["B","ADD",39,53,"1"],["B","ADD",39,52,"-1"],["B","ADD",39,51,"1"],["B","ADD",39,49,"-1"],["B","ADD",39,48,"1"],["B","ADD",39,47,"-1"],["B","ADD",39,45,"1"],["B","ADD",39,44,"-1"],["B","ADD",39,43,"1"],["B","ADD",39,41,"-1"],["B","ADD",39,40,"1"],["B","ADD",38,39,"1"],["B","SCALE",39,"-128"],["B","ADD",72,39,"1/64"],["B","ADD",70,39,"-1/64"],["B","ADD",68,39,"-1/64"],["B","ADD",66,39,"-1/64"],["B","ADD",64,39,"-1/64"],["B","ADD",62,39,"-1/64"],["B","ADD",60,39,"-1/64"],["B","ADD",58,39,"-1/64"],["B","SCALE",38,"128"],["B","ADD",75,38,"1/32"],["B","ADD",74,38,"1/64"],["B","ADD",73,38,"1/32"],["B","ADD",72,38,"-1/64"],["B","SWAP",38,39],["B","LAMBDA",38,-1],["J",10,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","ADD",0,1,"-1"],["A","IDLE_ONE",2,[10]],["A","IDLE_ONE",3,[10,11]],["A","IDLE_ONE",4,[10,11,12]],["A","IDLE_ONE",5,[10,11,12,13]],["A","IDLE_ONE",6,[10,11,12,13,14]],["A","IDLE_ONE",7,[10,11,12,13,14,15]],["A","IDLE_ONE",8,[10,11,12,13,14,15,16]],["A","IDLE_ONE",9,[10,11,12,13,14,15,16,17]],["A","SWAP",17,18],["A","SWAP",16,18],["A","SWAP",15,18],["A","SWAP",14,18],["A","SWAP",13,18],["A","SWAP",12,18],["A","SWAP",11,18],["A","SWAP",10,18],["A","SWAP",9,18],["A","SWAP",8,18],["A","SWAP",7,18],["A","SWAP",6,18],["A","SWAP",5,18],["A","SWAP",4,18],["A","SWAP",3,18],["A","ADD",1,2,"-1"],["A","SCALE",2,"-1"],["A","SWAP",2,18],["A","SCALE",1,"-1"],["A","ADD",18,1,"2"],["A","ADD",18,0,"2"],["A","ADD",1,0,"1"],["A","SWAP",0,18],["A","LAMBDA",0,-1],["A","ADD",19,20,"-1"],["A","IDLE_ONE",21,[10]],["A","IDLE_ONE",22,[10,11]],["A","IDLE_ONE",23,[10,11,12]],["A","IDLE_ONE",24,[10,11,12,13]],["A","IDLE_ONE",25,[10,11,12,13,14]],["A","IDLE_ONE",26,[10,11,12,13,14,15]],["A","IDLE_ONE",27,[10,11,12,13,14,15,16]],["A","IDLE_ONE",28,[10,11,12,13,14,15,16,17]],["A","SWAP",36,37],["A","SWAP",35,37],["A","SWAP",34,37],["A","SWAP",33,37],["A","SWAP",32,37],["A","SWAP",31,37],["A","SWAP",30,37],["A","SWAP",29,37],["A","SWAP",28,37],["A","SWAP",27,37],["A","SWAP",26,37],["A","SWAP",25,37],["A","SWAP",24,37],["A","SWAP",23,37],["A","SWAP",22,37],["A","ADD",20,21,"-1"],["A","SCALE",21,"-1"],["A","SWAP",21,37],["A","ADD",37,20,"-2"],["A","ADD",37,19,"2"],["A","ADD",20,19,"-1"],["A","SWAP",19,37],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",58,[10,11,12,13,14,15,16,17]],["B","IDLE_ONE",59,[10,11,12,13,14,15,16,17]],["B","IDLE_ONE",60,[10,11,12,13,14,15,16]],["B","IDLE_ONE",61,[10,11,12,13,14,15,16]],["B","IDLE_ONE",62,[10,11,12,13,14,15]],["B","IDLE_ONE",63,[10,11,12,13,14,15]],["B","IDLE_ONE",64,[10,11,12,13,14]],["B","IDLE_ONE",65,[10,11,12,13,14]],["B","IDLE_ONE",66,[10,11,12,13]],["B","IDLE_ONE",67,[10,11,12,13]],["B","IDLE_ONE",68,[10,11,12]],["B","IDLE_ONE",69,[10,11,12]],["B","IDLE_ONE",70,[10,11]],["B","IDLE_ONE",71,[10,11]],["B","IDLE_ONE",72,[10]],["B","IDLE_ONE",73,[10]],["B","IDLE_ONE",74,[10]],["B","IDLE_ONE",75,[10]],["B","ADD",74,75,"-1/2"],["B","ADD",73,75,"-1"],["B","ADD",72,75,"1/2"],["B","ADD",39,75,"-64"],["B","SCALE",75,"1/4"],["B","ADD",72,74,"-2"],["B","SCALE",74,"2"],["B","ADD",75,74,"1/2"],["B","ADD",72,73,"3/2"],["B","ADD",39,73,"64"],["B","ADD",38,73,"64"],["B","SCALE",73,"2"],["B","ADD",75,73,"-5/8"],["B","ADD",74,73,"-3/2"],["B","SWAP",73,75],["B","ADD",38,72,"-64"],["B","ADD",74,72,"2"],["B","ADD",73,72,"3/2"],["B","SWAP",72,73],["B","SWAP",71,73],["B","SWAP",70,72],["B","SWAP",69,71],["B","SWAP",68,70],["B","SWAP",67,69],["B","SWAP",66,68],["B","SWAP",65,67],["B","SWAP",64,66],["B","SWAP",63,65],["B","SWAP",62,64],["B","SWAP",61,63],["B","SWAP",60,62],["B","SWAP",59,61],["B","SWAP",58,60],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",75,39,"1/32"],["B","ADD",74,39,"-1/64"],["B","ADD",59,39,"1/64"],["B","ADD",58,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",75,38,"-1/32"],["B","ADD",59,38,"-1/64"],["B","ADD",58,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",11,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","SWAP",17,18],["A","SWAP",16,18],["A","SWAP",15,18],["A","SWAP",14,18],["A","SWAP",13,18],["A","SWAP",12,18],["A","SWAP",11,18],["A","SWAP",10,18],["A","SWAP",9,18],["A","SWAP",8,18],["A","SWAP",7,18],["A","SWAP",6,18],["A","SWAP",5,18],["A","SWAP",4,18],["A","SWAP",3,18],["A","ADD",1,2,"-1"],["A","ADD",0,2,"-1"],["A","SCALE",2,"-1"],["A","SWAP",2,18],["A","ADD",0,1,"-1"],["A","SCALE",1,"-1"],["A","ADD",18,1,"2"],["A","ADD",18,0,"2"],["A","ADD",1,0,"1"],["A","SWAP",0,18],["A","LAMBDA",0,-1],["A","SWAP",36,37],["A","SWAP",35,37],["A","SWAP",34,37],["A","SWAP",33,37],["A","SWAP",32,37],["A","SWAP",31,37],["A","SWAP",30,37],["A","SWAP",29,37],["A","SWAP",28,37],["A","SWAP",27,37],["A","SWAP",26,37],["A","SWAP",25,37],["A","SWAP",24,37],["A","SWAP",23,37],["A","SWAP",22,37],["A","ADD",20,21,"-1"],["A","ADD",19,21,"-1"],["A","SCALE",21,"-1"],["A","SWAP",21,37],["A","ADD",19,20,"-1"],["A","ADD",37,20,"-2"],["A","ADD",37,19,"2"],["A","ADD",20,19,"-1"],["A","SWAP",19,37],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",74,[11]],["B","IDLE_ONE",75,[11]],["B","ADD",74,75,"1"],["B","ADD",72,75,"-1/4"],["B","ADD",39,75,"-64"],["B","SCALE",75,"-1/2"],["B","ADD",73,74,"1/2"],["B","ADD",72,74,"1/2"],["B","ADD",39,74,"64"],["B","ADD",38,74,"32"],["B","SWAP",74,75],["B","ADD",72,73,"-1/2"],["B","ADD",39,73,"-128"],["B","SCALE",73,"-1"],["B","ADD",75,73,"2"],["B","ADD",74,73,"-1"],["B","ADD",38,72,"128"],["B","SCALE",72,"-2"],["B","ADD",74,72,"1"],["B","ADD",73,72,"1"],["B","SWAP",71,73],["B","SWAP",70,72],["B","SWAP",69,71],["B","SWAP",68,70],["B","SWAP",67,69],["B","SWAP",66,68],["B","SWAP",65,67],["B","SWAP",64,66],["B","SWAP",63,65],["B","SWAP",62,64],["B","SWAP",61,63],["B","SWAP",60,62],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",75,39,"1/32"],["B","ADD",74,39,"-1/64"],["B","ADD",61,39,"1/64"],["B","ADD",60,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",75,38,"-1/32"],["B","ADD",61,38,"-1/64"],["B","ADD",60,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",12,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","SWAP",17,18],["A","SWAP",16,18],["A","SWAP",15,18],["A","SWAP",14,18],["A","SWAP",13,18],["A","SWAP",12,18],["A","SWAP",11,18],["A","SWAP",10,18],["A","SWAP",9,18],["A","SWAP",8,18],["A","SWAP",7,18],["A","SWAP",6,18],["A","SWAP",5,18],["A","SWAP",4,18],["A","SWAP",3,18],["A","ADD",1,2,"-1"],["A","ADD",0,2,"-1"],["A","SCALE",2,"-1"],["A","SWAP",2,18],["A","ADD",0,1,"-1"],["A","SCALE",1,"-1"],["A","ADD",18,1,"2"],["A","ADD",18,0,"2"],["A","ADD",1,0,"1"],["A","SWAP",0,18],["A","LAMBDA",0,-1],["A","SWAP",36,37],["A","SWAP",35,37],["A","SWAP",34,37],["A","SWAP",33,37],["A","SWAP",32,37],["A","SWAP",31,37],["A","SWAP",30,37],["A","SWAP",29,37],["A","SWAP",28,37],["A","SWAP",27,37],["A","SWAP",26,37],["A","SWAP",25,37],["A","SWAP",24,37],["A","SWAP",23,37],["A","SWAP",22,37],["A","ADD",20,21,"-1"],["A","ADD",19,21,"-1"],["A","SCALE",21,"-1"],["A","SWAP",21,37],["A","ADD",19,20,"-1"],["A","ADD",37,20,"-2"],["A","ADD",37,19,"2"],["A","ADD",20,19,"-1"],["A","SWAP",19,37],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",74,[12]],["B","IDLE_ONE",75,[12]],["B","ADD",74,75,"1"],["B","ADD",72,75,"-1/4"],["B","ADD",39,75,"-64"],["B","SCALE",75,"-1/2"],["B","ADD",73,74,"1/2"],["B","ADD",72,74,"1/2"],["B","ADD",39,74,"64"],["B","ADD",38,74,"32"],["B","SWAP",74,75],["B","ADD",72,73,"-1/2"],["B","ADD",39,73,"-128"],["B","SCALE",73,"-1"],["B","ADD",75,73,"2"],["B","ADD",74,73,"-1"],["B","ADD",38,72,"128"],["B","SCALE",72,"-2"],["B","ADD",74,72,"1"],["B","ADD",73,72,"1"],["B","SWAP",71,73],["B","SWAP",70,72],["B","SWAP",69,71],["B","SWAP",68,70],["B","SWAP",67,69],["B","SWAP",66,68],["B","SWAP",65,67],["B","SWAP",64,66],["B","SWAP",63,65],["B","SWAP",62,64],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",75,39,"1/32"],["B","ADD",74,39,"-1/64"],["B","ADD",63,39,"1/64"],["B","ADD",62,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",75,38,"-1/32"],["B","ADD",63,38,"-1/64"],["B","ADD",62,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",13,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","SWAP",17,18],["A","SWAP",16,18],["A","SWAP",15,18],["A","SWAP",14,18],["A","SWAP",13,18],["A","SWAP",12,18],["A","SWAP",11,18],["A","SWAP",10,18],["A","SWAP",9,18],["A","SWAP",8,18],["A","SWAP",7,18],["A","SWAP",6,18],["A","SWAP",5,18],["A","SWAP",4,18],["A","SWAP",3,18],["A","ADD",1,2,"-1"],["A","ADD",0,2,"-1"],["A","SCALE",2,"-1"],["A","SWAP",2,18],["A","ADD",0,1,"-1"],["A","SCALE",1,"-1"],["A","ADD",18,1,"2"],["A","ADD",18,0,"2"],["A","ADD",1,0,"1"],["A","SWAP",0,18],["A","LAMBDA",0,-1],["A","SWAP",36,37],["A","SWAP",35,37],["A","SWAP",34,37],["A","SWAP",33,37],["A","SWAP",32,37],["A","SWAP",31,37],["A","SWAP",30,37],["A","SWAP",29,37],["A","SWAP",28,37],["A","SWAP",27,37],["A","SWAP",26,37],["A","SWAP",25,37],["A","SWAP",24,37],["A","SWAP",23,37],["A","SWAP",22,37],["A","ADD",20,21,"-1"],["A","ADD",19,21,"-1"],["A","SCALE",21,"-1"],["A","SWAP",21,37],["A","ADD",19,20,"-1"],["A","ADD",37,20,"-2"],["A","ADD",37,19,"2"],["A","ADD",20,19,"-1"],["A","SWAP",19,37],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",74,[13]],["B","IDLE_ONE",75,[13]],["B","ADD",74,75,"1"],["B","ADD",72,75,"-1/4"],["B","ADD",39,75,"-64"],["B","SCALE",75,"-1/2"],["B","ADD",73,74,"1/2"],["B","ADD",72,74,"1/2"],["B","ADD",39,74,"64"],["B","ADD",38,74,"32"],["B","SWAP",74,75],["B","ADD",72,73,"-1/2"],["B","ADD",39,73,"-128"],["B","SCALE",73,"-1"],["B","ADD",75,73,"2"],["B","ADD",74,73,"-1"],["B","ADD",38,72,"128"],["B","SCALE",72,"-2"],["B","ADD",74,72,"1"],["B","ADD",73,72,"1"],["B","SWAP",71,73],["B","SWAP",70,72],["B","SWAP",69,71],["B","SWAP",68,70],["B","SWAP",67,69],["B","SWAP",66,68],["B","SWAP",65,67],["B","SWAP",64,66],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",75,39,"1/32"],["B","ADD",74,39,"-1/64"],["B","ADD",65,39,"1/64"],["B","ADD",64,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",75,38,"-1/32"],["B","ADD",65,38,"-1/64"],["B","ADD",64,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",14,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","SWAP",17,18],["A","SWAP",16,18],["A","SWAP",15,18],["A","SWAP",14,18],["A","SWAP",13,18],["A","SWAP",12,18],["A","SWAP",11,18],["A","SWAP",10,18],["A","SWAP",9,18],["A","SWAP",8,18],["A","SWAP",7,18],["A","SWAP",6,18],["A","SWAP",5,18],["A","SWAP",4,18],["A","SWAP",3,18],["A","ADD",1,2,"-1"],["A","ADD",0,2,"-1"],["A","SCALE",2,"-1"],["A","SWAP",2,18],["A","ADD",0,1,"-1"],["A","SCALE",1,"-1"],["A","ADD",18,1,"2"],["A","ADD",18,0,"2"],["A","ADD",1,0,"1"],["A","SWAP",0,18],["A","LAMBDA",0,-1],["A","SWAP",36,37],["A","SWAP",35,37],["A","SWAP",34,37],["A","SWAP",33,37],["A","SWAP",32,37],["A","SWAP",31,37],["A","SWAP",30,37],["A","SWAP",29,37],["A","SWAP",28,37],["A","SWAP",27,37],["A","SWAP",26,37],["A","SWAP",25,37],["A","SWAP",24,37],["A","SWAP",23,37],["A","SWAP",22,37],["A","ADD",20,21,"-1"],["A","ADD",19,21,"-1"],["A","SCALE",21,"-1"],["A","SWAP",21,37],["A","ADD",19,20,"-1"],["A","ADD",37,20,"-2"],["A","ADD",37,19,"2"],["A","ADD",20,19,"-1"],["A","SWAP",19,37],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",74,[14]],["B","IDLE_ONE",75,[14]],["B","ADD",74,75,"1"],["B","ADD",72,75,"-1/4"],["B","ADD",39,75,"-64"],["B","SCALE",75,"-1/2"],["B","ADD",73,74,"1/2"],["B","ADD",72,74,"1/2"],["B","ADD",39,74,"64"],["B","ADD",38,74,"32"],["B","SWAP",74,75],["B","ADD",72,73,"-1/2"],["B","ADD",39,73,"-128"],["B","SCALE",73,"-1"],["B","ADD",75,73,"2"],["B","ADD",74,73,"-1"],["B","ADD",38,72,"128"],["B","SCALE",72,"-2"],["B","ADD",74,72,"1"],["B","ADD",73,72,"1"],["B","SWAP",71,73],["B","SWAP",70,72],["B","SWAP",69,71],["B","SWAP",68,70],["B","SWAP",67,69],["B","SWAP",66,68],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",75,39,"1/32"],["B","ADD",74,39,"-1/64"],["B","ADD",67,39,"1/64"],["B","ADD",66,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",75,38,"-1/32"],["B","ADD",67,38,"-1/64"],["B","ADD",66,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",15,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","SWAP",17,18],["A","SWAP",16,18],["A","SWAP",15,18],["A","SWAP",14,18],["A","SWAP",13,18],["A","SWAP",12,18],["A","SWAP",11,18],["A","SWAP",10,18],["A","SWAP",9,18],["A","SWAP",8,18],["A","SWAP",7,18],["A","SWAP",6,18],["A","SWAP",5,18],["A","SWAP",4,18],["A","SWAP",3,18],["A","ADD",1,2,"-1"],["A","ADD",0,2,"-1"],["A","SCALE",2,"-1"],["A","SWAP",2,18],["A","ADD",0,1,"-1"],["A","SCALE",1,"-1"],["A","ADD",18,1,"2"],["A","ADD",18,0,"2"],["A","ADD",1,0,"1"],["A","SWAP",0,18],["A","LAMBDA",0,-1],["A","SWAP",36,37],["A","SWAP",35,37],["A","SWAP",34,37],["A","SWAP",33,37],["A","SWAP",32,37],["A","SWAP",31,37],["A","SWAP",30,37],["A","SWAP",29,37],["A","SWAP",28,37],["A","SWAP",27,37],["A","SWAP",26,37],["A","SWAP",25,37],["A","SWAP",24,37],["A","SWAP",23,37],["A","SWAP",22,37],["A","ADD",20,21,"-1"],["A","ADD",19,21,"-1"],["A","SCALE",21,"-1"],["A","SWAP",21,37],["A","ADD",19,20,"-1"],["A","ADD",37,20,"-2"],["A","ADD",37,19,"2"],["A","ADD",20,19,"-1"],["A","SWAP",19,37],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",74,[15]],["B","IDLE_ONE",75,[15]],["B","ADD",74,75,"1"],["B","ADD",72,75,"-1/4"],["B","ADD",39,75,"-64"],["B","SCALE",75,"-1/2"],["B","ADD",73,74,"1/2"],["B","ADD",72,74,"1/2"],["B","ADD",39,74,"64"],["B","ADD",38,74,"32"],["B","SWAP",74,75],["B","ADD",72,73,"-1/2"],["B","ADD",39,73,"-128"],["B","SCALE",73,"-1"],["B","ADD",75,73,"2"],["B","ADD",74,73,"-1"],["B","ADD",38,72,"128"],["B","SCALE",72,"-2"],["B","ADD",74,72,"1"],["B","ADD",73,72,"1"],["B","SWAP",71,73],["B","SWAP",70,72],["B","SWAP",69,71],["B","SWAP",68,70],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",75,39,"1/32"],["B","ADD",74,39,"-1/64"],["B","ADD",69,39,"1/64"],["B","ADD",68,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",75,38,"-1/32"],["B","ADD",69,38,"-1/64"],["B","ADD",68,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",16,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","SWAP",17,18],["A","SWAP",16,18],["A","SWAP",15,18],["A","SWAP",14,18],["A","SWAP",13,18],["A","SWAP",12,18],["A","SWAP",11,18],["A","SWAP",10,18],["A","SWAP",9,18],["A","SWAP",8,18],["A","SWAP",7,18],["A","SWAP",6,18],["A","SWAP",5,18],["A","SWAP",4,18],["A","SWAP",3,18],["A","ADD",1,2,"-1"],["A","ADD",0,2,"-1"],["A","SCALE",2,"-1"],["A","SWAP",2,18],["A","ADD",0,1,"-1"],["A","SCALE",1,"-1"],["A","ADD",18,1,"2"],["A","ADD",18,0,"2"],["A","ADD",1,0,"1"],["A","SWAP",0,18],["A","LAMBDA",0,-1],["A","SWAP",36,37],["A","SWAP",35,37],["A","SWAP",34,37],["A","SWAP",33,37],["A","SWAP",32,37],["A","SWAP",31,37],["A","SWAP",30,37],["A","SWAP",29,37],["A","SWAP",28,37],["A","SWAP",27,37],["A","SWAP",26,37],["A","SWAP",25,37],["A","SWAP",24,37],["A","SWAP",23,37],["A","SWAP",22,37],["A","ADD",20,21,"-1"],["A","ADD",19,21,"-1"],["A","SCALE",21,"-1"],["A","SWAP",21,37],["A","ADD",19,20,"-1"],["A","ADD",37,20,"-2"],["A","ADD",37,19,"2"],["A","ADD",20,19,"-1"],["A","SWAP",19,37],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",74,[16]],["B","IDLE_ONE",75,[16]],["B","ADD",74,75,"1"],["B","ADD",72,75,"-1/4"],["B","ADD",39,75,"-64"],["B","SCALE",75,"-1/2"],["B","ADD",73,74,"1/2"],["B","ADD",72,74,"1/2"],["B","ADD",39,74,"64"],["B","ADD",38,74,"32"],["B","SWAP",74,75],["B","ADD",72,73,"-1/2"],["B","ADD",39,73,"-128"],["B","SCALE",73,"-1"],["B","ADD",75,73,"2"],["B","ADD",74,73,"-1"],["B","ADD",38,72,"128"],["B","SCALE",72,"-2"],["B","ADD",74,72,"1"],["B","ADD",73,72,"1"],["B","SWAP",71,73],["B","SWAP",70,72],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",75,39,"1/32"],["B","ADD",74,39,"-1/64"],["B","ADD",71,39,"1/64"],["B","ADD",70,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",75,38,"-1/32"],["B","ADD",71,38,"-1/64"],["B","ADD",70,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",17,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","SWAP",17,18],["A","SWAP",16,18],["A","SWAP",15,18],["A","SWAP",14,18],["A","SWAP",13,18],["A","SWAP",12,18],["A","SWAP",11,18],["A","SWAP",10,18],["A","SWAP",9,18],["A","SWAP",8,18],["A","SWAP",7,18],["A","SWAP",6,18],["A","SWAP",5,18],["A","SWAP",4,18],["A","SWAP",3,18],["A","ADD",1,2,"-1"],["A","ADD",0,2,"-1"],["A","SCALE",2,"-1"],["A","SWAP",2,18],["A","ADD",0,1,"-1"],["A","SCALE",1,"-1"],["A","ADD",18,1,"2"],["A","ADD",18,0,"2"],["A","ADD",1,0,"1"],["A","SWAP",0,18],["A","LAMBDA",0,-1],["A","SWAP",36,37],["A","SWAP",35,37],["A","SWAP",34,37],["A","SWAP",33,37],["A","SWAP",32,37],["A","SWAP",31,37],["A","SWAP",30,37],["A","SWAP",29,37],["A","SWAP",28,37],["A","SWAP",27,37],["A","SWAP",26,37],["A","SWAP",25,37],["A","SWAP",24,37],["A","SWAP",23,37],["A","SWAP",22,37],["A","ADD",20,21,"-1"],["A","ADD",19,21,"-1"],["A","SCALE",21,"-1"],["A","SWAP",21,37],["A","ADD",19,20,"-1"],["A","ADD",37,20,"-2"],["A","ADD",37,19,"2"],["A","ADD",20,19,"-1"],["A","SWAP",19,37],["A","LAMBDA",19,1],["B","LAMBDA",38,1],["B","IDLE_ONE",74,[17]],["B","IDLE_ONE",75,[17]],["B","ADD",74,75,"1"],["B","ADD",72,75,"-1/4"],["B","ADD",39,75,"-64"],["B","SCALE",75,"-1/4"],["B","ADD",73,74,"1/2"],["B","ADD",72,74,"1/2"],["B","ADD",39,74,"64"],["B","ADD",38,74,"32"],["B","SCALE",74,"1/2"],["B","SWAP",74,75],["B","ADD",72,73,"-1/2"],["B","ADD",39,73,"-128"],["B","SCALE",73,"-1"],["B","ADD",75,73,"1"],["B","ADD",74,73,"-1/2"],["B","ADD",38,72,"128"],["B","SCALE",72,"-2"],["B","ADD",74,72,"1/2"],["B","ADD",73,72,"1"],["B","ADD",38,39,"1/2"],["B","SCALE",39,"-1"],["B","ADD",75,39,"1/64"],["B","ADD",74,39,"-1/128"],["B","ADD",73,39,"1/64"],["B","ADD",72,39,"1/128"],["B","SCALE",38,"-1"],["B","ADD",75,38,"-1/64"],["B","ADD",73,38,"-1/64"],["B","ADD",72,38,"-1/64"],["B","ADD",39,38,"-1"],["B","LAMBDA",38,-1],["J",18,[1,0,19,20],[39,38,"-1","1/2"]],["A","LAMBDA",19,-1],["A","SCALE",20,"-1"],["A","LAMBDA",0,1],["A","SWAP",17,18],["A","SWAP",16,18],["A","SWAP",15,18],["A","SWAP",14,18],["A","SWAP",13,18],["A","SWAP",12,18],["A","SWAP",11,18],["A","SWAP",10,18],["A","SWAP",9,18],["A","SWAP",8,18],["A","SWAP",7,18],["A","SWAP",6,18],["A","SWAP",5,18],["A","SWAP",4,18],["A","SWAP",3,18],["A","SWAP",2,18],["A","ADD",0,1,"-2"],["A","SWAP",1,18],["A","SCALE",0,"-1"],["A","ADD",18,0,"-1"],["A","LAMBDA",0,-1],["A","LAMBDA",1,-1],["A","LAMBDA",2,-1],["A","LAMBDA",3,-1],["A","LAMBDA",4,-1],["A","LAMBDA",5,-1],["A","LAMBDA",6,-1],["A","LAMBDA",7,-1],["A","LAMBDA",8,-1],["A","LAMBDA",9,-1],["A","LAMBDA",10,-1],["A","LAMBDA",11,-1],["A","LAMBDA",12,-1],["A","LAMBDA",13,-1],["A","LAMBDA",14,-1],["A","LAMBDA",15,-1],["A","LAMBDA",16,-1],["A","LAMBDA",17,-1],["A","LAMBDA",18,-1],["A","SWAP",36,37],["A","SWAP",35,37],["A","SWAP",34,37],["A","SWAP",33,37],["A","SWAP",32,37],["A","SWAP",31,37],["A","SWAP",30,37],["A","SWAP",29,37],["A","SWAP",28,37],["A","SWAP",27,37],["A","SWAP",26,37],["A","SWAP",25,37],["A","SWAP",24,37],["A","SWAP",23,37],["A","SWAP",22,37],["A","SWAP",21,37],["A","ADD",19,20,"-2"],["A","SWAP",20,37],["A","SCALE",19,"-1"],["A","ADD",37,19,"-1"],["A","LAMBDA",19,-1],["A","LAMBDA",20,-1],["A","LAMBDA",21,-1],["A","LAMBDA",22,-1],["A","LAMBDA",23,-1],["A","LAMBDA",24,-1],["A","LAMBDA",25,-1],["A","LAMBDA",26,-1],["A","LAMBDA",27,-1],["A","LAMBDA",28,-1],["A","LAMBDA",29,-1],["A","LAMBDA",30,-1],["A","LAMBDA",31,-1],["A","LAMBDA",32,-1],["A","LAMBDA",33,-1],["A","LAMBDA",34,-1],["A","LAMBDA",35,-1],["A","LAMBDA",36,-1],["A","LAMBDA",37,-1],["B","LAMBDA",38,1],["B","IDLE_ONE",74,[18]],["B","IDLE_ONE",75,[18]],["B","ADD",39,75,"-128"],["B","ADD",38,75,"64"],["B","SCALE",75,"-1"],["B","ADD",38,74,"128"],["B","SCALE",74,"-1"],["B","ADD",75,74,"2"],["B","ADD",38,39,"1/2"],["B","SCALE",39,"1/128"],["B","ADD",75,39,"-2"],["B","ADD",74,39,"-1"],["B","SCALE",38,"1/128"],["B","ADD",75,38,"2"],["B","ADD",74,38,"2"],["B","SWAP",38,39],["B","LAMBDA",38,-1],["B","LAMBDA",39,-1],["B","LAMBDA",40,-1],["B","LAMBDA",41,-1],["B","LAMBDA",42,-1],["B","LAMBDA",43,-1],["B","LAMBDA",44,-1],["B","LAMBDA",45,-1],["B","LAMBDA",46,-1],["B","LAMBDA",47,-1],["B","LAMBDA",48,-1],["B","LAMBDA",49,-1],["B","LAMBDA",50,-1],["B","LAMBDA",51,-1],["B","LAMBDA",52,-1],["B","LAMBDA",53,-1],["B","LAMBDA",54,-1],["B","LAMBDA",55,-1],["B","LAMBDA",56,-1],["B","LAMBDA",57,-1],["B","LAMBDA",58,-1],["B","LAMBDA",59,-1],["B","LAMBDA",60,-1],["B","LAMBDA",61,-1],["B","LAMBDA",62,-1],["B","LAMBDA",63,-1],["B","LAMBDA",64,-1],["B","LAMBDA",65,-1],["B","LAMBDA",66,-1],["B","LAMBDA",67,-1],["B","LAMBDA",68,-1],["B","LAMBDA",69,-1],["B","LAMBDA",70,-1],["B","LAMBDA",71,-1],["B","LAMBDA",72,-1],["B","LAMBDA",73,-1],["B","LAMBDA",74,-1],["B","LAMBDA",75,-1]],"ops_note":"QSELF(x, k): R[x] *= q^k, one paid rank-1 job on one register (new op; not in the retained alphabet).; source interval457..575 replaced by a three-QUERY even-basis factorization; no QSELF"} diff --git a/research/current-rounded-lambda/data/word.json.gz b/research/current-rounded-lambda/data/word.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..d93e67ca7628bf5531ae6e369da4dd7b7907b88f GIT binary patch literal 349022 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%0DTSJ{9)k`>#8eQCpQme)zs(Cb8)J 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

    }j|8taaEMcCZ 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 Cwmpvk literal 0 HcmV?d00001 diff --git a/research/current-rounded-lambda/gaussian_table.py b/research/current-rounded-lambda/gaussian_table.py new file mode 100644 index 0000000000..327b6b45f7 --- /dev/null +++ b/research/current-rounded-lambda/gaussian_table.py @@ -0,0 +1,130 @@ +"""One final rounding of the global Lambda numerator, literal flat ABI. + +Ports: original public field, owned translated/staged field, real work, +imaginary work. No public write occurs in STAGE. COMMIT is separate. +""" +from source_binding import need,vendor +B=vendor('lambda_flat_builder','vendor/exact_scalar_tables.py') + +def compile_stage(sign,mutant=None): + need(type(sign)is int and sign in (-1,1),'fixed Lambda orientation') + b=B.Builder();b.request(('entry',));bad=('reject',) + def go(k):b.goto(k) + def br(p,c):b.branch(p,c,bad) + def mv(p,n=1): + for _ in range(abs(n)):b.emit('move',p,1 if n>0 else -1) + def nums(n=1):mv(2,n);mv(3,n) + def pubs():mv(0);mv(1) + def pairwrite(zr,zi):b.emit('write',2,zr);b.emit('write',3,zi);nums() + def realstep(kr,ki,x,y,left,seen): + vr=x+y+kr;vi=sign*(x-y)+ki;zr,zi=vr&1,vi&1;rr,ii=vr//2,vi//2 + need(abs(rr)<=2 and abs(ii)<=2,'bounded real carries');pairwrite(zr,zi) + if left is None:pubs();go(('real',rr,ii,x,y,seen)) + elif left>1:go(('real-high',left-1,rr,ii,x,y,seen)) + elif rr==x+y-zr and ii==sign*(x-y)-zi:go(('real-done',seen)) + else:go(bad) + def imagstep(kr,ki,x,y,nr,ni,left,seen): + vr=nr+sign*(y-x)+kr;vi=ni+x+y+ki;zr,zi=vr&1,vi&1;rr,ii=vr//2,vi//2 + need(abs(rr)<=3 and abs(ii)<=3,'bounded imaginary carries');pairwrite(zr,zi) + if left is None:pubs();go(('imag',rr,ii,x,y,seen)) + elif left>1:go(('imag-high',left-1,rr,ii,x,y,seen)) + elif rr==nr+sign*(y-x)-zr and ii==ni+x+y-zi:go(('imag-done',seen)) + else:go(bad) + while b.pending: + key=b.pending.popleft();b.mark(key);tag=key[0] + if tag=='reject':b.emit('reject','Lambda signed range or canonical format') + elif tag=='entry':br(2,{4:('entry-i',)}) + elif tag=='entry-i':br(3,{4:('markers',)}) + elif tag=='markers': + b.emit('write',2,5);b.emit('write',3,5);nums();go(('start',False)) + elif tag=='start': + _,seen=key;c={x:('real',0,0,2,2,seen) for x in (0,1)} + if seen:c[4]=('end-y',) + br(0,c) + elif tag=='end-y':br(1,{4:('halt',)}) + elif tag=='real': + _,kr,ki,sx,sy,seen=key;c={x:('real-y',kr,ki,x,seen) for x in (0,1)} + if sx in (0,1):c[2]=('real-end-y',kr,ki,sx,sy,seen) + br(0,c) + elif tag=='real-y': + _,kr,ki,x,seen=key;br(1,{y:('real-bit',kr,ki,x,y,seen) for y in (0,1)}) + elif tag=='real-bit':_,kr,ki,x,y,seen=key;realstep(kr,ki,x,y,None,seen) + elif tag=='real-end-y': + _,kr,ki,sx,sy,seen=key;br(1,{2:('real-high',2,kr,ki,sx,sy,seen)}) + elif tag=='real-high':_,left,kr,ki,x,y,seen=key;realstep(kr,ki,x,y,left,seen) + elif tag=='real-done': + _,seen=key;b.emit('write',2,2);b.emit('write',3,2);pubs();go(('rewind-both',('imag',0,0,2,2,seen))) + elif tag=='rewind-both': + _,nxt=key;nums(-1);br(2,{0:key,1:key,5:('both-ready',nxt)}) + elif tag=='both-ready':_,nxt=key;nums();go(nxt) + elif tag=='imag': + _,kr,ki,sx,sy,seen=key;c={x:('imag-y',kr,ki,x,seen) for x in (0,1)} + if sx in (0,1):c[2]=('imag-end-y',kr,ki,sx,sy,seen) + br(0,c) + elif tag=='imag-y': + _,kr,ki,x,seen=key;br(1,{y:('imag-r',kr,ki,x,y,None,seen) for y in (0,1)}) + elif tag=='imag-end-y': + _,kr,ki,x,y,seen=key;br(1,{2:('imag-high',2,kr,ki,x,y,seen)}) + elif tag=='imag-high':_,left,kr,ki,x,y,seen=key;go(('imag-r',kr,ki,x,y,left,seen)) + elif tag=='imag-r': + _,kr,ki,x,y,left,seen=key;br(2,{nr:('imag-i',kr,ki,x,y,nr,left,seen) for nr in (0,1)}) + elif tag=='imag-i': + _,kr,ki,x,y,nr,left,seen=key;br(3,{ni:('imag-bit',kr,ki,x,y,nr,ni,left,seen) for ni in (0,1)}) + elif tag=='imag-bit':_,kr,ki,x,y,nr,ni,left,seen=key;imagstep(kr,ki,x,y,nr,ni,left,seen) + elif tag=='imag-done': + _,seen=key;br(2,{2:('imag-done-i',seen)}) + elif tag=='imag-done-i':_,seen=key;br(3,{2:('back-y',0)}) + elif tag=='back-y': + _,phase=key;mv(2,-2);go(('back-y-bit',phase)) + elif tag=='back-y-bit': + _,phase=key;mv(2,-1);br(2,{0:('back-y-move',phase),1:('back-y-move',phase),5:('back-y-stop',phase)}) + elif tag=='back-y-move':_,phase=key;mv(1,-1);go(('back-y-bit',phase)) + elif tag=='back-y-stop': + _,phase=key;mv(2) + if phase==0:mv(1,-1);go(('seek-r-end',)) + else:go(('rewind-i',)) + elif tag=='seek-r-end':br(2,{0:('seek-r-step',),1:('seek-r-step',),2:('back-y',1)}) + elif tag=='seek-r-step':mv(2);go(('seek-r-end',)) + elif tag=='rewind-i':mv(3,-1);br(3,{0:key,1:key,5:('i-ready',)}) + elif tag=='i-ready':mv(3);go(('round-first',2,1 if mutant!='tie-down' else 0)) + elif tag=='round-first': + _,p,k=key;br(p,{n:('round-drop',p,k,n) for n in (0,1)}) + elif tag=='round-drop': + _,p,k,n=key;mv(p);go(('round-emit',p,(n+k)//2,2)) + elif tag=='round-emit': + _,p,k,sz=key;c={x:('round-n',p,k) for x in (0,1)} + if sz in (0,1):c[2]=('round-high',p,k,sz) + br(1,c) + elif tag=='round-n':_,p,k=key;br(p,{n:('round-bit',p,k,n) for n in (0,1)}) + elif tag=='round-bit': + _,p,k,n=key;v=n+k;z=v&1;b.emit('write',1,z);mv(1);mv(p);go(('round-emit',p,v//2,z)) + elif tag=='round-high':_,p,k,sz=key;br(p,{n:('round-high-bit',p,k,n,sz) for n in (0,1)}) + elif tag=='round-high-bit': + _,p,k,n,sz=key;v=n+k;z=v&1;kk=v//2 + if (z==sz and kk==n-sz) or mutant=='omit-range':mv(p);go(('round-end',p)) + else:go(bad) + elif tag=='round-end':_,p=key;br(p,{2:('round-next',p)}) + elif tag=='round-next': + _,p=key;b.emit('write',1,2);mv(1) + if p==2:go(('round-first',3,1 if mutant!='tie-down' else 0)) + else:mv(0);go(('rewind-both',('clear',))) + elif tag=='clear':br(2,{0:('clear-one',),1:('clear-one',),2:('clear-one',),4:('clear-back',)}) + elif tag=='clear-one':b.emit('write',2,4);b.emit('write',3,4);nums();go(('clear',)) + elif tag=='clear-back':nums(-1);br(2,{4:key,5:('clear-ready',)}) + elif tag=='clear-ready':nums();go(('start',True)) + elif tag=='halt':b.emit('halt') + else:raise ValueError(key) + return b.finish() + + +def compile_commit(): + b=B.Builder();b.request(('copy',));bad=('reject',) + while b.pending: + key=b.pending.popleft();b.mark(key) + if key[0]=='copy':b.branch(1,{s:('put',s) for s in (0,1,2)}|{4:('end',)},bad) + elif key[0]=='put':b.emit('write',0,key[1]);b.emit('move',0,1);b.emit('move',1,1);b.goto(('copy',)) + elif key[0]=='end':b.branch(0,{4:('halt',)},bad) + elif key[0]=='halt':b.emit('halt') + else:b.emit('reject','Lambda commit requires exact staged extent') + return b.finish() +COMMIT=compile_commit() diff --git a/research/current-rounded-lambda/lambda_provider.py b/research/current-rounded-lambda/lambda_provider.py new file mode 100644 index 0000000000..7d1933b182 --- /dev/null +++ b/research/current-rounded-lambda/lambda_provider.py @@ -0,0 +1,91 @@ +"""Actual Q² monomial, private descriptor and one-rounded Gaussian join.""" +from pathlib import Path +from types import SimpleNamespace +import sys +from source_binding import ROOT,authenticate,need,vendor,lambda_sites +from gaussian_table import compile_stage,COMMIT +M=vendor('lambda_retained_machine','vendor/machine.py') +authenticate();sys.path.insert(0,str(ROOT/'vendor/serial')) +from column_view import SerialProvider,S,literal +R=S.rows;ROLES=dict(R.SCHEMA);HEADER=R.HEADER;VIEW=R.CHILD_HEADER +PRIVATE=tuple(i for i in range(40) if i!=HEADER);FIELDS=tuple(p for _,p in R.SCHEMA) + +def compile_view(rank): + b=R.Builder() + for p in (HEADER,*PRIVATE):b.boundary(p) + for p in PRIVATE:b.empty(p) + b.decode(HEADER,FIELDS);b.canonical(ROLES['f'],positive=True) + b.clear(ROLES['remainder']);literal(b,ROLES['remainder'],0) + b.clear(ROLES['selected_axes']);b.copy(ROLES['f'],ROLES['selected_axes']) + for _ in range(rank-1): + b.add(ROLES['selected_axes'],ROLES['f'],R.CONSTANT) + b.clear(ROLES['selected_axes']);b.copy(R.CONSTANT,ROLES['selected_axes']);b.clear(R.CONSTANT) + b.encode(FIELDS,VIEW);return b.close() + +def release_view(): + b=R.Builder() + for p in PRIVATE:b.clear(p) + b.rewind(HEADER);return b.close() +RELEASE=release_view() + +class HeaderView: + port_count=len(PRIVATE) + def __init__(self,rank):self.table=compile_view(rank);self.active=False;self.ports=None + def bind(self,work,context): + need(len(work)==self.port_count,'private descriptor inventory') + self.ports={HEADER:R.PhysicalPort(context.tape)} + self.ports.update({r:R.PhysicalPort(t) for r,t in zip(PRIVATE,work)}) + @property + def context(self):return S.abi.BinaryContextPort(self.ports[VIEW].tape) + def prepare(self):self.active=True;R.run(self.table,self.ports) + def release(self): + try:R.run(RELEASE,self.ports) + finally:self.active=False + +def translation_recipe(q,rank=9): + need(type(rank)is int and 1<=rank<=9 and type(q)is int and 0=1`, `p,h>=0` be integers, with one common component grid +`Delta=2^-F`. Every real and imaginary component of every arbitrary public +input is on this grid and has absolute value less than `2^h` at the stated +raw/root boundary. Owned INIT produces exact zero. Public inputs include +every helper, independently; no correlation or cancellation is assumed. +For the outer-wrapper extension below, D is the total selected factor +`D=q+R`: the q preprocessed coordinates and the remaining reference factor +R. Establishing the input p,h domain at the chosen external boundary is +separately paid. The q kernels must precede the later R-fibre computation, +as stipulated by the retained wrapper contract; the proof converts once +from the D-fibre norm to the R-fibre norm in the safe direction. + +For a selected set of `X` binary coordinates use the supremum, over complete +`X`-fibres, of the Euclidean norm on that fibre's `2^X` complex entries. +Write this as `||z||_X`. For complete nested factors, `||z||_R<=||z||_D` when +`R` is contained in `D`. If every component has error at most `Delta/2`, +then the error in this norm is at most + + eta_X = 2^((X-1)/2) Delta. + +An input with the component bound above has fibre norm less than + + B_root = 2^(h+(D+1)/2). + +The norm contracts are explicit: + +* Each completed native frame change, Q query and D-mask job is the intended + complete-fibre unitary, with the absolute phases and column multiplicities + required by the inherited source. This is a semantic premise, not a + consequence of the finite frame-span check. +* Q and the D_j commute where the frozen exact endpoint uses that identity, + and `Q^4=I`. Therefore + + Lambda_s = ((1+s i) I + (1-s i) Q^2)/2, s in {-1,+1}, + + is unitary: the unitary involution Q^2 has eigenvalues ±1, and Lambda_s + has eigenvalues 1 and s i. In particular it is not `(I+Q^2)/2`. +* A completed primitive with ideal map T has a **total** contract on every + input in its declared grid/radius domain: it returns a grid value differing + from T of that actual input by at most its declared epsilon. The contract + may be nonlinear and its residual may depend adversarially on the input. + It must cover actual inputs to each recursive child, not just ideal ones. +* Scalar rounding, when invoked, is the total function + + RDiv_(a/b)(m) = floor((a m + floor(b/2))/b), gcd(a,b)=1, b>0. + + Its scalar residual has absolute value at most 1/2. Integer coefficients + are exact. For ADD, round the product and then add the old target exactly; + equivalently add the integer `b*old_target` inside the numerator. Negative + values use mathematical floor. Upward ties mean RDiv is not an odd map. +* Lambda needs its own completed primitive with residual at most eta_X, + for example exact formation of its common denominator-two numerator + followed by one rounding per component, with an exact Q^2 monomial + service. This is an explicit contract; no such physical table is installed + here. An implementation which rounds twice must supply the resulting + larger residual instead. + +For the local estimates take `epsilon>=eta_X`, and bound each completed +child, QUERY, IDLE and Lambda residual by epsilon. Arithmetic and native +operations must run to their completed source cut before another field +reads them. No assertion that partially constructed Clifford outputs are +Clifford vectors is used. Scalar numerator temporaries are handled separately +in section 6; arbitrary internals of a native provider are inherited +obligations, not unnamed source cuts certified by this package. + +**Why this is uniform in column multiplicity.** Tensor products of unitary +complete-fibre maps have norm one. Rational scalar coefficients are applied +once and are not raised to a tensor power. The only dimension factor is the +single conversion `eta_X` at a componentwise rounding site. These facts hold +for every positive column multiplicity under the complete-fibre premise. +Coordinate supremum norms do not have this property: the exact Gaussian row +`((1+i)/2,(1-i)/2)` sends `(1,i)` to `1+i`, of modulus sqrt(2). A phase error +may preserve norm one, so a norm certificate cannot certify native phase +correctness. + +## 3. Native prefix and suffix certificate + +For each live native register r carry two nonnegative rational numbers +`m_r,e_r`. Initially m=1 on every public input and m=0 on owned labels; +e=0 everywhere. At each source event use: + +| Source event | Mass update | Defect update | +|---|---|---| +| MOVE r | m_r unchanged | e_r <- e_r+1 | +| ADD/COPY r,s,q | m_r <- m_r+abs(q)m_s | e_r <- e_r+abs(q)e_s+1_(q noninteger) | +| SCALE r,q | m_r <- abs(q)m_r | e_r <- abs(q)e_r+1_(q noninteger) | +| INIT/CLEAR r | m_r <- 0 | e_r <- 0 | + +COPY in this source is additive COPY into freshly initialized zero. The +checker proves that source precondition. It does not erase an arbitrary +target's earlier residual by fiat. Register frames agree at scalar contacts; +each MOVE starts at its declared current frame and uses the declared public +or owned direction. A separate exact span/lifetime scan checks all of these +syntactic premises and the final public frame list. + +By chronological induction, at every source cut the exact ideal value has +norm at most `m_r B`, and the realized-minus-ideal value has norm at most +`e_r epsilon`, for input norms at most B. MOVE preserves norms by the stated +unitary contract. ADD and SCALE use the triangle inequality. INIT/CLEAR kill +all earlier error channels. Also track the product `abs(q)m_s` and its defect +bound before every ADD/COPY; rounded product residuals are bounded by the +corresponding final target bound, whose other summands are nonnegative. + +This positive propagation deliberately forgets all cancellations. It is a +valid, loose bound rather than a claim that these extrema are attained by a +choice of actual unitary inputs. In particular the large constants below do +not contradict the smaller cancellation-aware exact-grid row estimates. + +The exact rational scan of all 71,144 events gives: + +| Bound | Meaning | Strict bound | +|---|---|---:| +| M_W | all stored fields and pre-ADD products | 2^237 | +| Sigma_W | all-cut propagated unit residual mass | 2^235 | +| Gamma_W | returned public residual mass | 2^235 | + +The maximum prefix is register 1443 after event 71119; the returned defect +maximum is the same register after the whole word. `ENVELOPES.json` records +the exact rational values and witnesses, not floating logarithms. There are +6,323 MOVE sites and 25,923 noninteger scalar sites, including 4,143 odd +scalar divisions. There is no multiplication by the number of public fields +because the contract takes a maximum over fields. + +**Separate critical check.** `native_adjoint` starts a covector at each +reported maximum and runs the transpose recurrence backwards. Reverse ADD +adds `abs(q)*lambda_target` to the source covector; reverse SCALE multiplies +its covector; reverse INIT/CLEAR zeros it. A residual site contributes the +current target covector. The sum on initial public inputs reproduces M_W, +and the sum on residual sites reproduces Sigma_W/Gamma_W. There are 24,507 +nonzero residual-site contributions at the worst witness. This is a +separately coded reverse calculation, not an independent physical execution +or formal proof-kernel check. The forward induction is the mathematical +reason a finite exact source scan proves a statement about all inputs. + +## 4. Full caller and every expanded native cut + +Caller scalar operations use the same positive recurrence. SWAP permutes the +two pairs of bounds. LAMBDA and IDLE leave mass unchanged and add one unit +of residual. QUERY adds the source mass/error to the target and adds one +residual. This uses the complete query contract, including restoration; +it does not treat the query copy/erase lifecycle as free. + +For a J contact, the frozen exact local endpoint on the six symbolic main +roles is, with unitary factors suppressed in the positive bound, + + A: (u,v,x,y) -> (u, v+Q^-1 u, x-Q y, y), then D_j; + B: (s,t) -> (s-Q t, (Q^-1 s+t)/2), then D_j. + +Use the positive endpoint matrix + + (u,v,x,y,s,t) -> (u, v+u, x+y, y, s+t, (s+t)/2) + +on old mass/error values simultaneously, then add Gamma_W to each returned +main's defect coefficient. Helpers return their own unitary-transformed +input plus at most Gamma_W epsilon. Each helper family belongs to exactly +one joint stage, so it starts with mass bound 1 and no prior raw-caller +defect. This does not identify distinct helpers or suppose they vanish. + +At that J entrance let `m_in=max(1, the six main mass bounds)` and +`e_in=max(the six main defect bounds)`. Every internal native cut obeys + + ideal norm <= M_W m_in B; + defect norm <= (M_W e_in + Sigma_W) epsilon. + +These inequalities include prior caller errors arriving at a native call; +restarting the native word with zero error on its mains would be invalid. +They also include all fresh arbitrary helper inputs. The source scan checks +J stages 1 through 18 in order, type-local six-role bindings and 400 actual +main fields/1,061 helper fields at each contact. + +For the actual 3,095-event caller, the results are: + +| Bound | Strict bound | +|---|---:| +| Caller-only mass | 2^121 | +| Caller-only all-cut defect coefficient | 2^342 | +| Largest J entrance mass | 2^119 | +| Largest J entrance defect coefficient | 2^340 | +| **M_ctx**, including native interior products | **2^355** | +| **Sigma_ctx**, including native interior products | **2^576** | +| **Gamma_ctx**, all returned public fields | **2^337** | + +The worst J entrance is stage 18, caller event 2958. The caller-only peak is +role 38 at event 3049; the final defect maximum is role 75. Full exact +fractions, cuts and separate caller-adjoint identities are in the receipt. +The reverse J rule adds `sum(lambda_r)*Gamma_W` and transposes the six-role +positive endpoint matrix. It independently reproduces the caller peak, +entrance and final coefficients, separating J residuals from primitive +residuals. No old 67,079-event or previous-caller constant is reused. + +Thus this concrete expanded raw context has the all-input contract + + output defect <= Gamma_ctx epsilon; + every certified source cut <= M_ctx B + Sigma_ctx epsilon. + +The statement is uniform for all positive columns under section 2's operator +and completion premises. It is not a physical tape execution of the caller. + +## 5. Retained recursive precision guard, explicitly conditional + +This section proves a replacement-constant implication for the structural +organization S1--S5 of the pinned rounded note. It does **not** independently +establish those compiler, whole-job, ownership or normalization premises. +In particular retain the following: at most K_star unfinished raw contexts +per ordinary level; at most ell ordinary levels; at most K_star/v flow +classes; at most m(H+1) two-job frames; complete sequential splitting and +completion on disjoint axes with norm-one suffixes; a rank-e sequential base +with e=1, using `ell<=D/N`. + +The inherited split/completion sizes have `R<=153^v`, `J=11^v`, `L=12^v`. +Exactly, + + (R/J+1)(L/J+2) < 2^(6v). + +For example `(153/11)^v+1<2*16^v` and +`(12/11)^v+2<3*2^v`, and `6*32^v<64^v` for v>=3. The verifier also checks +the integer inequality without logarithms. Since Gamma_ctx<2^337, the +per-context equivalent gain after this charge has logarithm less than 343. +The positive noncontext overhead + + m(H+1)+H+log2(m) <= K_star + +follows from the checked stronger bound with `log2(m)<8v`. Since +`log2(M_ctx+1)<356`, the retained path accounting yields + + X(D) = 2 log2(D+3) + 344 t, + L(D) = 1 + 357 t, + E_root <= 2^((D-1)/2 - F + X(D)), + admitted input radius <= B_root * 2^L(D). + +These are convenient strict upper envelopes, not optimal constants. + +**Admission is not circular.** Keep raw contexts as individual nodes in +the defect tree; do not collapse their all-cut coefficients into a silently +larger unreported Sigma. A split/completion node has unitary prefixes and +at most `m+2` sequential child residuals. A frame has two; a base has fewer +than m; a remainder fewer than N. The wrapper, if grouped, has at most D+3. +Therefore for D>=N a valid coarse bound is + + max Sigma_node <= N (D+3). + +This deliberately retains the wrapper's D dependence. A wrapper cannot in +general be bounded by N merely because the local remainder is below N. +For every node the chronological argument is: if earlier child contracts +held, its local error term is at most `Sigma_node E_root`; if this is at +most 1<=B_root, the next child lies in the advertised enlarged radius. +Its total contract applies, allowing the induction to continue. + +Take g=0 for D>=19 and g=5 for 1<=D<19, and set + + F=p+D+g, J=h+D+2, W=F+J+1=p+h+2D+3+g. + +For D>=N, `344t=16, its left side is less +than `4k+7<=2^(k-3)<=D/8`; the elementary integer induction is recorded. +Hence + + X(D)+H+log2(D+3) < D/4 <= (D-1)/2. + +It follows that `E_root*N*(D+3)<=2^(-p-1)<=1`, closing the admission guard, +and in particular `E_root<=2^(-p-1)`. The radius exponent satisfies + + h+(D+1)/2+L(D) < h+D+2 = J, + +so every certified signed component lies strictly inside the W-bit range +on grid 2^-F. + +If ell=0, the retained structure has no raw contexts or upper ordinary +frames; only the sequential base/wrapper estimate remains. The guard is +equivalent to + + (D+3)^4 <= 2^(D+2g-1). + +The verifier checks D=1,...,19 exactly. It continues for D>=19 because +`((D+4)/(D+3))^4<2` there and decreases. The control g=4 at D=3 fails. +Moreover `(D+3)/2<=2^((D+1)/2)`, so the direct sequential stored bound is +at most `2 B_root`, again strictly inside 2^J. This concludes the conditional +common-grid, error and signed-admission implication for all D>=1. + +The output error is a complex-modulus bound because the fibre norm bounds +each coordinate modulus. It does not preserve a strict unit-disk boundary: +the outer shrink/quantizer and analytic recovery changes discussed in the +rounded note still need their own full source and cost admission. + +## 6. Integer temporaries and complete cost boundary + +The actual native source has maximum numerator 14,729,531, at event 252, +and maximum denominator 393,216, at event 2798. It has 864 coefficients +whose numerators exceed 40,864. Thus the old rounded note's 16-bit numerator +premise is false for this source. The new safe bound is + + abs(a)<2^24, b<2^19, temporary signed width W+26. + +Indeed a signed W-bit input has absolute value at most 2^(W-1), so +`abs(a*m)<2^(W+23)`. The rounding offset is below 2^18. Even forming an +ADD numerator `b*target+a*source+floor(b/2)` has absolute value below +`2^(W+25)`, the signed magnitude limit of W+26 bits, with room for sign +extension/carry. Lambda's denominator-two numerator uses fewer such bits. +An output width check is justified by section 5's source-cut bound, not by +merely enlarging its temporary. Variable power-of-two normalization divisors +can be implemented by a bit drop and carry, but their actual service and +schedule remain inherited contracts. + +This width calculation is not a construction of total RDiv on the retained +machine. The existing exact table has different rejection semantics. +The rounded note outlines multiply/offset, a most-significant-first signed +division pass and possible reversals; a literal table must still account +for all those passes, head resets, full source and target access, staging, +restoration, owned allocation/return and erasure of initially dirty and +historically longer backing. Old parked ancestors and simultaneous children +remain live. None of them is removed by a source norm proof. + +An optimistic positive tariff screen is nevertheless useful. Starting from +the published QUERY-only conditional total 826,265,904, keep its 2,734,992 +exact 1125-conversion charge conservatively even though the unscaled rounded +mode does not use it. Declare the additional arithmetic model + + per noninteger a/b: + 4 (bit_length(b)+1) [1 + 3*1_(oddpart(b)>1)]. + +This prices one offset scan at every noninteger scalar and three extra +scans at an odd divisor, in the prior raw tariff's scan unit. It is a +declared model, not a measured physical guarantee. Use it also for outer +caller scalars and once for each denominator-two Lambda offset. The exact +current census is: + +| Positive item | Charge in this declared model | +|---|---:| +| Native surcharge per call | 941,128 | +| All 18 native calls | 16,940,304 | +| Outer scalar offsets at all actual ports | 51,520 | +| Outer Lambda offsets at all actual ports | 173,760 | +| Total extra | 17,165,584 | +| Baseline plus extra | 843,431,488 | +| Remaining below inherited 10^9 cap | 156,568,512 | + +There is no omitted field-replication factor in this **model census**. QUERY +and IDLE completed-child charges are already in the baseline, and the +18 native words, 416 outer QUERY lifetimes, 54 local owned lifetimes per +call and peak 43 local owned banks remain. Their complete positive costs +must remain in an actual implementation invoice. A finite table/code +construction, authenticated source decoding and any denominator setup are +additional fixed-template work, with positive finite constants; they are +not charged as zero by this package. The complete physical runtime has the +form of those fixed setup costs plus the actual full scans and historical +backing terms, each on width W+26. We do not have their certified coefficient +and therefore do **not** infer the cap, recurrence or a new kappa for the +rounded implementation from this optimistic table. + +## 7. An actual source cut where the exact service cannot implement the contract + +The five consecutive zero-based native events are authenticated literally: + + 37476 MOVE 697 1042 -> 591 public + 37477 MOVE 1334 1042 -> 1046 public + 37478 MOVE 901 565 -> 591 public + 37479 SCALE 1334 1/2 frame1046 + 37480 SCALE 697 -2/3 frame591 + +Start all arbitrary public inputs at zero and every earlier primitive +residual at zero. The ideal execution is zero. At the completed MOVE37476, +allow the child to return one quantum Delta in one real component of field +697; all other components and all subsequent child residuals are zero. +This is an allowed format output under a total child contract with +epsilon>=Delta and adequate radius. Such a contract is allowed by the +eta_X model for X>=1. The three intervening events do not access field697. + +At SCALE37480 its numerator is 1. The exact result would have numerator +`-2/3`, which is not an integer. Therefore **for every common grid precision +F**, the retained checked exact SCALE rejects this permitted input. Making +Delta smaller reduces the absolute defect but never removes the +divisibility obstruction. This is a countermodel to an implication from +the abstract rounded-child contract to exact-service admission. It is +**not evidence that a retained MOVE implementation actually produces this +one-quantum defect**. + +The total RDiv alternative returns numerator -1, whose residual is -1/3 +quantum; that is within its half-quantum contract. An exact child, by +contrast, returns zero here and the checked exact scalar succeeds. Thus +the countermodel does not refute the ideal exact-grid theorem or the +S=1125 prefix proof; it locates the extra interface premise needed to move +between exact and rounded modes. + +`boundary.py` compiles the frozen generic `SCALE(-2/3)` finite table and +executes it through the unchanged lifecycle `execute_table`. On widths +3 through 9 it checks zero, ±3, 1, and a late-component `(3,1)` failure: +35 cases, 21 accepts and 14 rejects, with a separate integer +divisibility/range oracle. Rejections leave every public component +unchanged; success restores all heads and erases initially dirty private +work. Rejected work/head positions may be dirty/unrestored: no rollback or +successful caller continuation is claimed. This bounded physical check +tests the existing generic kernel's semantics, not all current native +MOVEs or an installed #6936 occurrence-token binder. + +## 8. Verification, limits and next obligations + +Run `python3 -I -B research/query-only-precision-envelope/verify.py --suite all`. +Expected output is four `PASS_QUERY_ONLY_PRECISION_*` lines followed by +`AUTHENTICATED_SOURCE_FILES 11`. Registered normal and `-O` suites compare +all deterministic receipts. Source guards reject wrong MOVE source/owner, +a dependent frame basis, a public CLEAR, a changed J order and QSELF +reintroduction. Exact norm controls reject coordinate-sup contraction, +the false projector Lambda and omission of the Q^4 premise. A unitary Q +of `(3+4i)/5` gives Lambda squared norm 49/25, so unitarity of Q alone +does not justify the Lambda step. RDiv tie and residual-erasure controls +test other critical distinctions. + +The independent methods here are induction plus exact positive source +propagation, reverse covector checks, exact integer guard inequalities and +a direct integer oracle against an unchanged physical scalar executor. +All were prepared with AI assistance. They are not independent human review +or kernel-checked proofs. A separately supplied lead review, when present, +is recorded with its actual scope and file hashes in `REVIEW.md`. + +Open next questions: + +* Construct and install a total signed RDiv service with the actual source + token/header binding, W+26 temporaries, full lifecycle and historical + backing costs. Checked exact division is not that service. +* Bind all complete-fibre norm/error contracts, including Lambda's chosen + one-rounding semantics and native absolute phases, to literal all-column + providers. A phase error can escape every norm check here. +* Independently discharge the retained compiler S1--S5 and ownership + interfaces, or replace them with verified source-to-physical composition. +* Complete the actual physical tariff and outer shrink/analytic recovery + changes before using a rounded implementation in a complete bound. + +This package closes a source-specific numerical-envelope calculation and +reduces the precision seam to explicit total-service and inherited compiler +premises. It does not claim those premises are established. diff --git a/research/current-rounded-lambda/reference/jclib_6936.py b/research/current-rounded-lambda/reference/jclib_6936.py new file mode 100644 index 0000000000..48a55ab03a --- /dev/null +++ b/research/current-rounded-lambda/reference/jclib_6936.py @@ -0,0 +1,331 @@ +"""Library of check_caller_blocks.py: constant-block rewrite of the joint caller (idea and method: CubeJerry #6912; the code is this package's). + +Mathematics. A constant block is a maximal run of ADD / SCALE(-1) / SWAP events of one port type between two +nonconstant events of that type (LAMBDA, IDLE_ONE, QUERY) or a joint contact J. Applied to the role vector it is +left-multiplication by one integer matrix M in GL_n(Z) (n = 40 for type A, 38 for type B). Replace the block by any other +constant block with the same matrix M: then, by induction over the anchors, the whole caller is the same operator for every +substitution of the anchor operators (the anchors are not touched and each block is a left factor between them). +Type A rows (0..39) and type B rows (40..77) are disjoint, so an A block commutes with every B event: its position inside the +window between the same two A-anchors is immaterial. Nothing but the constant-gate count changes.""" +import json, random +from fractions import Fraction as Q + +CONST = ('ADD', 'SCALE', 'SWAP') +OFF = {'A': 0, 'B': 40} +NR = {'A': 40, 'B': 38} + + +def need(ok, msg): + if not ok: + raise ValueError(msg) + + +def ev_roles(e): + """role indices an event reads or writes (joint indexing); J returns both types' roles""" + if e[0] == 'J': + return list(e[2]) + list(e[3][:2]) + op = e[1] + if op in ('ADD', 'SWAP', 'QUERY'): + return [e[2], e[3]] + return [e[2]] + + +def check_disjoint(C): + """every A event touches only roles 0..39, every B event only 40..77 (J is the only coupling)""" + for e in C['events']: + if e[0] == 'A': + need(all(0 <= r < 40 for r in ev_roles(e)), 'A event leaves its roles: %r' % (e,)) + elif e[0] == 'B': + need(all(40 <= r < 78 for r in ev_roles(e)), 'B event leaves its roles: %r' % (e,)) + else: + need(e[0] == 'J', 'unknown tag') + return True + + +def is_const(e, ty): + return e[0] == ty and e[1] in CONST + + +def is_anchor(e, ty): + """nonconstant event of the type's own stream: its nonconstant events and every joint contact""" + return (e[0] == ty and e[1] not in CONST) or e[0] == 'J' + + +def slots(events, ty): + """list of (indices of the constant events of slot k); slot k lies between anchors k-1 and k. Also returns the + global index of the anchor that closes each slot (len(events) for the last).""" + out, closes, cur = [], [], [] + for i, e in enumerate(events): + if is_const(e, ty): + cur.append(i) + elif is_anchor(e, ty): + out.append(cur); closes.append(i); cur = [] + out.append(cur); closes.append(len(events)) + return out, closes + + +def apply_const(rows, e): + """act on the matrix of accumulated rows exactly as the caller replay does: rows[i] += c*rows[j] etc (joint indices)""" + op = e[1] + if op == 'ADD': + c = Q(e[4]); need(c.denominator == 1, 'integer ADD'); c = int(c) + rows[e[2]] = [a + c * b for a, b in zip(rows[e[2]], rows[e[3]])] + elif op == 'SCALE': + c = Q(e[3]); need(c == -1, 'SCALE -1'); rows[e[2]] = [-a for a in rows[e[2]]] + elif op == 'SWAP': + rows[e[2]], rows[e[3]] = rows[e[3]], rows[e[2]] + else: + raise ValueError('nonconstant') + + +def block_matrix(block, ty): + """exact integer matrix of a constant block (list of full joint events), n x n in type-local indices""" + n, off = NR[ty], OFF[ty] + rows = {off + i: [int(i == j) for j in range(n)] for i in range(n)} + for e in block: + need(e[0] == ty and e[1] in CONST, 'block holds a nonconstant or foreign event') + for r in ([e[2], e[3]] if e[1] != 'SCALE' else [e[2]]): + need(off <= r < off + n, 'role outside type') + apply_const(rows, e) + return [rows[off + i] for i in range(n)] + + +def alphabet_ok(block, limit=2): + for e in block: + if e[1] == 'ADD': + c = Q(e[4]); need(c.denominator == 1 and 0 < abs(c) <= limit, 'ADD coefficient outside alphabet %r' % (e,)) + need(e[2] != e[3], 'self ADD') + elif e[1] == 'SCALE': + need(Q(e[3]) == -1, 'SCALE not -1') + elif e[1] == 'SWAP': + need(e[2] != e[3], 'self SWAP') + return True + + +def splice(C, ty, new_blocks): + """new_blocks[k] = list of full joint events for slot k of type ty. New block is written at the position of the first + old event of its slot (or just before the closing anchor if the old slot was empty). Everything else keeps its order.""" + sl, closes = slots(C['events'], ty) + need(len(new_blocks) == len(sl), 'slot count %d != %d' % (len(new_blocks), len(sl))) + first, drop, ins = {}, set(), {} + for k, idxs in enumerate(sl): + if idxs: + first[idxs[0]] = k; drop.update(idxs[1:]) + elif new_blocks[k]: + ins.setdefault(closes[k], []).append(k) + ev = [] + for i, e in enumerate(C['events']): + for k in ins.get(i, []): + ev.extend(json.loads(json.dumps(x)) for x in new_blocks[k]) + if i in drop: + continue + if i in first: + ev.extend(json.loads(json.dumps(x)) for x in new_blocks[first[i]]) + elif not is_const(e, ty): + ev.append(e) + # a first-index const event is replaced above; other const events of this type are in drop + for k in ins.get(len(C['events']), []): + ev.extend(new_blocks[k]) + out = {k: v for k, v in C.items() if k != 'events'} + out['events'] = ev + return out + + +def old_blocks(C, ty): + sl, _ = slots(C['events'], ty) + return [[C['events'][i] for i in idxs] for idxs in sl] + + +def from_6912(after, ty='A'): + """read #6912's caller-after.json (plain A-stream events, no tag) as data: list of per-slot blocks, tagged joint events. + slots are delimited by its nonconstant events (everything that is not ADD/SCALE/SWAP).""" + blocks, cur, anchors = [], [], [] + for e in after['events']: + if e[0] in CONST: + cur.append([ty] + list(e)) + else: + blocks.append(cur); cur = []; anchors.append(e) + blocks.append(cur) + return blocks, anchors + + +# ---------------------------------------------------------------- exact replay of the joint caller mod p +PM = 2147483629 +IM = next(pow(g, (PM - 1) // 4, PM) for g in range(2, 99) if pow(g, (PM - 1) // 2, PM) == PM - 1) +HALF = (PM + 1) // 2 + + +def fm(x): + f = Q(x); return f.numerator % PM * pow(f.denominator, PM - 2, PM) % PM + + +def replay_matrix(C, qv, Dv): + """the full 78 x 78 matrix of the joint caller at the point (q, D_1..D_18) over F_PM; semantics as in the package + (J = HOST2 on the A roles and HOST on the B roles at one stage).""" + n = C['roles']; R = [[int(i == j) for j in range(n)] for i in range(n)]; qi = pow(qv, PM - 2, PM) + a2 = fm(C['types']['A']['alpha2']) + for e in C['events']: + if e[0] == 'J': + d = Dv[e[1]]; src, dst, x2, y2 = e[2] + R[dst] = [(a + qi * b) % PM for a, b in zip(R[dst], R[src])] + R[x2] = [(a + a2 * qv % PM * b) % PM for a, b in zip(R[x2], R[y2])] + for r in (src, dst, x2, y2): + R[r] = [a * d % PM for a in R[r]] + s, t = e[3][0], e[3][1]; al, be = fm(e[3][2]), fm(e[3][3]); tt = al * be % PM + ns = [(x + al * qv % PM * y) % PM * d % PM for x, y in zip(R[s], R[t])] + nd = [(be * qi % PM * x + (1 + tt) * y) % PM * d % PM for x, y in zip(R[s], R[t])] + R[s], R[t] = ns, nd + continue + op = e[1] + if op == 'ADD': + R[e[2]] = [(a + fm(e[4]) * b) % PM for a, b in zip(R[e[2]], R[e[3]])] + elif op == 'SCALE': + c = fm(e[3]); R[e[2]] = [a * c % PM for a in R[e[2]]] + elif op == 'SWAP': + R[e[2]], R[e[3]] = R[e[3]], R[e[2]] + elif op == 'QUERY': + c = pow(qv, e[4] % 4, PM); R[e[2]] = [(a + c * b) % PM for a, b in zip(R[e[2]], R[e[3]])] + elif op == 'LAMBDA': + s = e[3]; c = ((1 + s * IM) * HALF + (1 - s * IM) * HALF * qv * qv) % PM; R[e[2]] = [a * c % PM for a in R[e[2]]] + elif op == 'IDLE_ONE': + c = 1 + for k in e[3]: + c = c * Dv[k] % PM + R[e[2]] = [a * c % PM for a in R[e[2]]] + else: + raise ValueError('unknown op ' + str(op)) + return R + + +def target_bad(C, R, qv, Dv): + n = C['roles']; bad = 0 + for role in range(n): + t, off = (C['types']['A'], 0) if role < 40 else (C['types']['B'], 40) + dg = t['diagonal'][role - off]; c = pow(qv, dg[0] % 4, PM) + for k, bit in enumerate(dg[2:]): + if bit: + c = c * Dv[k + 1] % PM + bad += sum(R[role][j] != (c if j == role else 0) for j in range(n)) + return bad + + +def random_points(seed=5, k=4): + r = random.Random(seed); pts = [] + for qv in (1, IM, PM - 1, PM - IM): + pts.append((qv, {s: r.randrange(2, PM) for s in range(1, 19)})) + for _ in range(k): + pts.append((r.randrange(2, PM), {s: r.randrange(2, PM) for s in range(1, 19)})) + return pts + + +# ---------------------------------------------------------------- own resynthesis of a constant block (Euclid elimination) +def synth(M, ty): + """own synthesis: reduce M to I by row operations with a Euclidean algorithm per column, ADD coefficients split into + +-1,+-2; the op list that rebuilds M is the reversed list of inverses. Local indices; returns full joint events.""" + n, off = NR[ty], OFF[ty]; M = [r[:] for r in M]; ops = [] + + def add(i, j, c): # row_i += c * row_j (c in {+-1,+-2} after splitting) + while c: + s = 1 if c > 0 else -1; step = s * min(2, abs(c)) + M[i] = [a + step * b for a, b in zip(M[i], M[j])]; ops.append(('ADD', i, j, step)); c -= step + for col in range(n): + while True: + nz = [r for r in range(col, n) if M[r][col]] + need(nz, 'singular block') + if len(nz) == 1 and abs(M[nz[0]][col]) == 1: + break + p = min(nz, key=lambda r: (abs(M[r][col]), r)) + for r in nz: + if r != p: + qq = round(Q(M[r][col], M[p][col])) + if qq: + add(r, p, -qq) + p = nz[0] + if p != col: + M[p], M[col] = M[col], M[p]; ops.append(('SWAP', p, col)) + if M[col][col] == -1: + M[col] = [-a for a in M[col]]; ops.append(('SCALE', col)) + for r in range(n): + if r != col and M[r][col]: + add(r, col, -M[r][col]) + need(all(M[i][j] == int(i == j) for i in range(n) for j in range(n)), 'did not reach identity') + out = [] + for o in reversed(ops): + if o[0] == 'ADD': + out.append([ty, 'ADD', o[1] + off, o[2] + off, str(-o[3])]) + elif o[0] == 'SWAP': + out.append([ty, 'SWAP', o[1] + off, o[2] + off]) + else: + out.append([ty, 'SCALE', o[1] + off, '-1']) + return out + + +# ---------------------------------------------------------------- raw bound (formulas of the package's check.py / ordinary.py) +def swaps(sel): + wanted = set(range(len(sel))); return len(list(zip(sorted(set(sel) - wanted), sorted(wanted - set(sel))))) + + +def shim(J, ty): + t = J['types'][ty]; off = t['offset']; ev = [] + for e in J['events']: + if e[0] == 'J': + ev.append(['HOST', e[1]]) + elif e[0] == ty: + e = list(e[1:]) + if e[0] in ('ADD', 'SWAP', 'QUERY'): + e[1] -= off; e[2] -= off + else: + e[1] -= off + ev.append(e) + return dict(events=ev, roles=t['roles'], ambient_rank=J['ambient_rank'], diagonal=t['diagonal']) + + +def rest_of(C, ports): + ev = C['events']; roles = C['roles']; amb = C['ambient_rank']; mx = mn = mp = 0 + for role, (qp, zero, *sel) in enumerate(C['diagonal']): + axes = ([0] if qp else []) + [a for st, y in enumerate(sel, 1) if y for a in range(9 + 8 * (st - 1), 9 + 8 * st)] + k = swaps(axes); mx += 2 * k * ports; mn += 2 * bool(qp) * ports; mp += int(qp == -1) * ports + ie = 0; qn = qph = 0 + for e in ev: + if e[0] == 'IDLE_ONE': + ie += 2 * swaps([a for st in e[2] for a in range(9 + 8 * (st - 1), 9 + 8 * st)]) * ports + elif e[0] == 'QUERY': + qn += 2 * ports; qph += int(e[3] == -1) * ports + return (32 * roles * ports * len(ev) + sum(e[0] == 'QUERY' for e in ev) * 16 * ports + roles * ports * 26 + + (mx + mn + mp) * 1000 + ie * 1000 + (qn + qph) * 1000) + + +def word_terms(W): + """per-call terms of a word: allowance, reviewed upper, routes, public count, nD""" + from collections import Counter + H = W['hosted']; nD = len(H['Dports']); n = len(W['initial']); live = set(W['live']) + main = live | {r + 112 for r in live} | set(H['X2']) | set(H['Y2']) + dim = [len(b) for b in W['frames']] + paid = Counter(abs(dim[e[3]] - dim[e[2]]) for e in W['program'] if e[0] == 'MOVE') + hel = Counter(dim[W['final'][r]] - dim[W['initial'][r]] for r in range(n) if r not in main) + life = sum(e[0] == 'INIT' for e in W['program']); allow = upper = 0 + for e in W['program']: + if e[0] in ('INIT', 'CLEAR'): + allow += 2 + elif e[0] == 'SCALE': + q = Q(e[2]); a, d = abs(q.numerator), q.denominator + allow += 2 * (abs(a.bit_length() - d.bit_length()) + int(q < 0)); upper += 4 * (a.bit_length() + d.bit_length() + 1) + elif e[0] in ('ADD', 'COPY'): + q = Q(e[3]); a, d = abs(q.numerator), q.denominator + allow += 2 * (3 + a.bit_length() - 1 + bin(a).count('1') + d.bit_length() - 1); upper += 4 * (a.bit_length() + bin(a).count('1') + d.bit_length() + 1) + routes = (sum(paid.values()) + 2 * sum(hel.values()) + 208 + 2 * nD + 4 * 104 + 4 * nD + 4 * life) * 1000 + return dict(allow=allow, upper=upper, routes=routes, n=n, nD=nD, paid=paid, hel=hel) + + +scale_cost = lambda S: 4 * (S.bit_length() + 1 + 1) + 4 * (1 + S.bit_length() + 1) # one SCALE by S at entry and one by 1/S at exit at the reviewed upper rate: 80 for S = 225, 104 for S = 1125 + + +def raw_all(J, W, S): + t = word_terms(W); nA, nB = len(J['types']['A']['ports']), len(J['types']['B']['ports']) + need((nA, nB) == (t['nD'], 104 - t['nD']), 'port split of the caller differs from the word') + rest = rest_of(shim(J, 'A'), nA) + rest_of(shim(J, 'B'), nB) + lam = sum(1 for e in J['events'] if e[0] == 'A' and e[1] == 'LAMBDA') * nA + sum(1 for e in J['events'] if e[0] == 'B' and e[1] == 'LAMBDA') * nB + debit = 1000 * lam; per_in = 18 * t['n'] * scale_cost(S) + lit = 18 * 10 ** 7 + rest; act = 18 * (t['allow'] + t['routes']) + rest; up = 18 * (t['upper'] + t['routes']) + rest + return dict(rest=rest, literal=lit, actual=act, upper=up, recharge=up + debit, per_input=up + per_in, per_input_recharge=up + per_in + debit, + lambda_jobs=lam, debit=debit, per_in=per_in, public=t['n']) diff --git a/research/current-rounded-lambda/reference/physical-review-6936.py b/research/current-rounded-lambda/reference/physical-review-6936.py new file mode 100644 index 0000000000..f41390e024 --- /dev/null +++ b/research/current-rounded-lambda/reference/physical-review-6936.py @@ -0,0 +1,568 @@ +#!/usr/bin/env python3 +"""Independent finite physical/invoice audit of exact #6726. + +Jerry Chen (@CubeJerry), with substantial OpenAI assistance. Apache-2.0. +No construction, pricing, scalar, or physical implementation is imported. +""" +from collections import Counter +from copy import deepcopy +from fractions import Fraction +from functools import reduce +from hashlib import sha1, sha256 +from itertools import combinations +from pathlib import Path +import gzip +import json +import sys + +HERE = Path(__file__).resolve().parent + + +def require(test, reason): + if not test: + raise ValueError(reason) + + +def read(name): + raw = (HERE / 'frozen' / name).read_bytes() + return json.loads(gzip.decompress(raw) if name.endswith('.gz') else raw) + + +def authenticate(): + pins = json.loads((HERE / 'SOURCES.json').read_bytes()) + for pin in pins['files']: + if pin['usage'] != 'input': + continue + relative = Path(pin['path']).relative_to('research/p104-fragment-physical-invoice-audit') + raw = (HERE / relative).read_bytes() + require(len(raw) == pin['bytes'], 'source length: ' + pin['path']) + require(sha256(raw).hexdigest() == pin['sha256'], 'source SHA256: ' + pin['path']) + require(sha1(b'blob ' + str(len(raw)).encode() + b'\0' + raw).hexdigest() == pin['git_blob'], 'source Git blob: ' + pin['path']) + return pins + + +def span(vectors): + values = {0} + for value in vectors: + require(isinstance(value, int) and 0 < value < 512, 'native nine-axis vector') + require(value not in values, 'frame axes independent') + values |= {old ^ value for old in values} + return sum(1 << value for value in values) + + +def native_ledger(word, check_rows=True): + """Scan physical charts and scalar rows; MOVE changes chart, not chart coordinates.""" + frames = word['frames'] + spaces = [span(frame) for frame in frames] + ranks = [len(frame) for frame in frames] + public = word['public'] + total = public + word['owned_fields'] + require(len(word['initial']) == len(word['final']) == public, 'public boundaries') + chart = word['initial'][:] + [None] * word['owned_fields'] + rows = [{i: Fraction(1)} for i in range(public)] + [{} for _ in range(word['owned_fields'])] + live_owned = set() + lifetime = peak = 0 + paid = Counter() + operations = Counter() + paid_records = [] + scalar_units = 0 + for index, event in enumerate(word['program']): + op, *args = event + operations[op] += 1 + if op == 'INIT': + field, frame = args + require(public <= field < total and chart[field] is None, 'owned INIT before use') + chart[field] = frame + rows[field] = {} + live_owned.add(field) + lifetime += 1 + peak = max(peak, len(live_owned)) + elif op == 'CLEAR': + field, frame = args + require(field in live_owned and chart[field] == frame, 'owned CLEAR at current frame') + chart[field] = None + rows[field] = {} + live_owned.remove(field) + elif op == 'MOVE': + field, start, end, backward = args + require(chart[field] == start, 'chronological MOVE source frame') + lo, hi = ((end, start) if ranks[end] < ranks[start] else (start, end)) if backward else (start, end) # DECLARED CHANGE (assumption A6): an owned MOVE may be nested in either direction; it is paid |delta dim| either way. Predecessor line: lo, hi = (end, start) if backward else (start, end) + require(spaces[lo] & spaces[hi] == spaces[lo] and ranks[lo] < ranks[hi], 'strict nested paid MOVE') + rank = ranks[hi] - ranks[lo] + paid[rank] += 1 + paid_records.append((index, field, rank)) + chart[field] = end + elif op in ('ADD', 'COPY'): + dst, src, value, frame = args + require(dst != src and chart[dst] == chart[src] == frame, 'scalar common current chart') + value = Fraction(value) + require(value and value.denominator & (value.denominator - 1) == 0, 'nonzero dyadic scalar') + if op == 'COPY': + require(dst in live_owned and not rows[dst], 'COPY requires cleared owned destination') + if check_rows: + for column, coefficient in rows[src].items(): + new = rows[dst].get(column, 0) + value * coefficient + if new: + rows[dst][column] = new + else: + rows[dst].pop(column, None) + scalar_units += 4 * (abs(value.numerator).bit_length() + abs(value.numerator).bit_count() + value.denominator.bit_length() + 1) + elif op == 'SCALE': + field, value, frame = args + value = Fraction(value) + require(chart[field] == frame and value, 'scale at current live chart') + require(abs(value.numerator) & (abs(value.numerator)-1) == 0 and value.denominator & (value.denominator-1) == 0, 'invertible dyadic scale') + if check_rows: + rows[field] = {column: value * coefficient for column, coefficient in rows[field].items()} + scalar_units += 4 * (abs(value.numerator).bit_length() + value.denominator.bit_length() + 1) + else: + raise ValueError('unknown native opcode ' + op) + require(not live_owned and chart[:public] == word['final'], 'complete native return and owned clearance') + ports = word['ports'] + live = word['live'] + require(len(set(ports)) == len(ports) == len(set(live)) == len(live) == 104, '104 distinct retained ports') + main = set(live) | {112 + i for i in live} + require(len(main) == 208, 'disjoint native X/Y pairs') + helpers = Counter() + helper_labels = [] + for field in range(public): + if check_rows: + expected = {field: Fraction(1)} + if field >= 112 and field - 112 in live: + expected[field - 112] = Fraction(1) + require(rows[field] == expected, 'all arbitrary native input row ' + str(field)) + if field not in main: + start, end = word['initial'][field], word['final'][field] + require(spaces[start] & spaces[end] == spaces[start] and ranks[start] < ranks[end], 'productive helper strict nested endpoint') + rank = ranks[end] - ranks[start] + helpers[rank] += 1 + helper_labels.append((field, rank)) + for i, q in zip(live, ports): + require(frames[word['initial'][i]] == [q] and frames[word['initial'][112+i]] == [], 'native incoming Q/I main interface') + require(frames[word['final'][i]] == list(1 << j for j in range(9)), 'native complete nine-axis X endpoint') + require(ranks[word['final'][112+i]] == 8 and all((q & a).bit_count()%2 == 0 for a in frames[word['final'][112+i]]), 'native rank-eight q-orthogonal Y endpoint') + return dict(paid=paid, helpers=helpers, helper_labels=helper_labels, paid_records=paid_records, + public=public, owned=word['owned_fields'], lifetimes=lifetime, peak=peak, + operations=operations, scalar_upper=scalar_units, + scalar_rows=public if check_rows else 0) + + +def terms(entries): + counts = Counter() + for vector, coefficient in entries: + counts[vector] += coefficient + return {vector: coefficient % 4 for vector, coefficient in counts.items() if vector and coefficient % 4} + + +def difference(a, b): + return terms(list(a.items()) + [(v, -c) for v, c in b.items()]) + + +def phase(coefficients, frequency): + return sum(c * ((vector & frequency).bit_count() & 1) for vector, c in coefficients.items()) % 4 + + +def axes_of(mask): + out = [] + while mask: + bit = mask & -mask + out.append(bit) + mask ^= bit + return out + + +def translation_for(delta): + """Parity is degree <=2 modulo four; weight<=2 frequencies determine it.""" + support = axes_of(reduce(int.__or__, delta, 0)) + shift = 0 + single = {} + for bit in support: + single[bit] = phase(delta, bit) + require(single[bit] in (0, 2), 'contact linear phase must be an ordinary translation') + if single[bit] == 2: + shift |= bit + for a, b in combinations(support, 2): + require(phase(delta, a | b) == (single[a] + single[b]) % 4, 'contact residual quadratic phase') + return shift + + +def route_function(q, basis, stage): + fresh = [1 << (9 + 8*(stage-1) + i) for i in range(8)] + old_mask = 511 + fresh_mask = sum(fresh) + require(q.bit_count() % 2 == 1, 'odd central port') + require(len(basis) == 8 and all(0 < v < 512 for v in basis), 'native eight-dimensional basis') + require(all((a & b).bit_count() % 2 == (i == j) for i, a in enumerate([q]+basis) for j, b in enumerate([q]+basis)), 'complete orthonormal native basis') + def route(value): + old = value & old_mask + result = value & ~(old_mask | fresh_mask) + if (old & q).bit_count() % 2: + result ^= q + for native_axis, fresh_axis in zip(basis, fresh): + if value & fresh_axis: + result ^= native_axis + if (old & native_axis).bit_count() % 2: + result ^= fresh_axis + return result + affected = [1 << i for i in range(9)] + fresh + images = [route(v) for v in affected] + require(all(route(image) == axis for axis, image in zip(affected, images)), 'route involution') + require(all((a & b).bit_count() % 2 == (i == j) for i, a in enumerate(images) for j, b in enumerate(images)), 'route orthogonality') + require(route(q) == q, 'route fixes Q') + return route + + +def contact(before, after, route, omit_translation=False): + moved = terms((route(v), c) for v, c in before.items()) + shift = translation_for(difference(after, moved)) + supplied = 0 if omit_translation else shift + require(translation_for(difference(after, terms(list(moved.items()) + [(supplied, 2)]))) == 0, 'full forward absolute phase') + inverse = route(supplied) + require(translation_for(difference(before, terms([(route(v), c) for v, c in after.items()] + [(inverse, 2)]))) == 0, 'full inverse absolute phase') + require(shift.bit_count() <= 17 and inverse.bit_count() <= 17, 'fixed seventeen-axis translation budget') + return {'translation': shift, 'inverse_translation': inverse} + + +def physical(word, native, recipes, omit_translation=False): + stages = word['stages'] + require(word['ambient_rank'] == 9 + 8*stages, 'declared ambient axes') + axes = [1 << i for i in range(word['ambient_rank'])] + full_events = [(i, e) for i, e in enumerate(word['events']) if e[0] == 'LOCAL'] + require([e[1] for _, e in full_events] == list(range(1, stages+1)), 'fresh native stage chronology') + by_port = {r['q']: r for r in recipes['recipes']} + require(set(native['ports']) <= set(by_port), 'every retained port has a phase recipe') + records = [] + for _, (_, stage, src, dst) in full_events: + require(src != dst and 0 <= src < word['roles'] and 0 <= dst < word['roles'], 'distinct valid native caller fields') + before_axes = axes[:9+8*(stage-1)] + after_axes = axes[:9+8*stage] + spectator = axes[9:9+8*stage] + for q in native['ports']: + basis = by_port[q]['idle_children'][0]['orthogonal_axes'][:8] + route = route_function(q, basis, stage) + x0 = terms((a, 1) for a in before_axes) + y0 = terms(list(x0.items()) + [(q, -1)]) + x1 = terms((a, 1) for a in after_axes) + y1 = terms(list(x1.items()) + [(q, -1)]) + native_x0 = terms([(a, 1) for a in spectator] + [(q, 1)]) + native_y0 = terms((a, 1) for a in spectator) + native_x1 = terms((a, 1) for a in spectator + axes[:9]) + native_y1 = terms(list(native_x1.items()) + [(q, -1)]) + maps = [contact(a, b, route, omit_translation) for a, b in ((x0,native_x0),(y0,native_y0),(native_x1,x1),(native_y1,y1))] + body = terms((a, 1) for a in axes[9+8*(stage-1):9+8*stage]) + require(translation_for(difference(difference(x1,x0),body)) == 0 and translation_for(difference(difference(y1,y0),body)) == 0, 'native diagonal is fresh D_stage with absolute phase') + require(translation_for(difference(difference(y1,x0),terms(list(body.items())+[(q,-1)]))) == 0, 'native cross coefficient is D_stage Q^-1') + records.append([stage,q,maps]) + main = Counter() + output_shifts = 0 + for term in word['diagonal']: + qp, zero, *selected = term + require(qp in (-1,0,1) and zero == 0 and len(selected) == stages and set(selected) <= {0,1}, 'literal physical endpoint exponent domain') + for q in native['ports']: + body_axes = [axis for stage, yes in enumerate(selected,1) if yes for axis in axes[9+8*(stage-1):9+8*stage]] + positive = ([q] if qp else []) + body_axes + require(all((a & b).bit_count()%2 == (i == j) for i,a in enumerate(positive) for j,b in enumerate(positive)), 'all positive endpoint axes orthonormal') + actual = terms([(q,qp)] + [(a,1) for a in body_axes]) + target = terms((a,1) for a in positive) + shift = translation_for(difference(target,actual)) + require(shift == (q if qp == -1 else 0), 'exact endpoint translation') + output_shifts += bool(shift) + main[len(positive)] += 1 + idle = Counter() + idle_records = [] + for index,event in enumerate(word['events']): + if event[0] not in ('IDLE','IDLE_ONE'): + continue + owners, selection = (event[1:3], event[3]) if event[0] == 'IDLE' else ([event[1]],event[2]) + require(len(set(owners)) == len(owners) and all(0 <= r < word['roles'] for r in owners), 'distinct valid idle owners') + require(selection and len(set(selection)) == len(selection) and all(1 <= s <= stages for s in selection), 'distinct valid complete idle axes') + positive = [axis for stage in selection for axis in axes[9+8*(stage-1):9+8*stage]] + require(len(set(positive)) == len(positive), 'whole idle independent Gaussian factors') + idle[len(positive)] += len(native['ports']) * len(owners) + idle_records.extend((index,owner,q,len(positive)) for owner in owners for q in native['ports']) + require(len(word['diagonal']) == word['roles'], 'one target for every arbitrary caller input') + return dict(contacts=4*len(records), contact_digest=sha256(json.dumps(records,separators=(',',':')).encode()).hexdigest(), + nonzero_contact_translations=sum(bool(m['translation']) for _,_,maps in records for m in maps), + main=main, idle=idle, idle_records=idle_records, output_translations=output_shifts, + dimension=word['ambient_rank']) + + +def allocation(word, native, ledger, alias=False): + main = {(role,q) for role in range(word['roles']) for q in native['ports']} + names = {('main',role,q) for role,q in main} + helper_jobs = [] + local_number = 0 + for event_index, event in enumerate(word['events']): + if event[0] != 'LOCAL': + continue + _,stage,src,dst = event + public_map = {} + for i,q in zip(native['live'],native['ports']): + public_map[i] = ('main',src,q) + public_map[112+i] = ('main',dst,q) + for field,rank in ledger['helper_labels']: + key = ('helper',0 if alias else local_number,field) + require(key not in names, 'fresh native helper cannot alias an earlier public input') + names.add(key) + public_map[field] = key + helper_jobs.append((event_index,stage,field,rank,key)) + require(len(public_map) == ledger['public'] and len(set(public_map.values())) == ledger['public'], 'injective local public-input allocation') + local_number += 1 + owned = {('owned',i) for i in range(ledger['owned'])} + thin = {('query_scratch',0)} + require(not (names & owned or names & thin or owned & thin), 'owned/query scratch is disjoint and uncredited') + return dict(main_fields=len(main), helper_fields=len(helper_jobs), productive_fields=len(names), + reserved_native_owned=len(owned), reserved_query_owned=len(thin), + peak_native_owned=ledger['peak'], maximum_live_owned=max(ledger['peak'],1), + invocations=local_number, helper_jobs=helper_jobs) + + +def invoice(word, ledger, physics, fields): + paid = Counter() + targets = Counter(physics['main']) + for _,_,_,rank,_ in fields['helper_jobs']: + targets[rank] += 1 + for event in word['events']: + if event[0] == 'LOCAL': + paid.update(ledger['paid']) + elif event[0] == 'QUERY': + require(event[3] in (-1,1), 'legal thin query orientation') + paid[1] += 104 + paid.update(physics['idle']) + require(sum(targets.values()) == fields['productive_fields'], 'productive count equals distinct arbitrary inputs') + return {'targets':targets, 'paid':paid, 'productive_fields':sum(targets.values()), 'paid_calls':sum(paid.values()), + 'target_mass':sum(r*n for r,n in targets.items()), 'paid_mass':sum(r*n for r,n in paid.items())} + + +def compare_invoice(actual, expected): + require(actual['targets'] == Counter({int(k):v for k,v in expected['targets'].items()}), 'complete productive rank histogram') + require(actual['paid'] == Counter({int(k):v for k,v in expected['paid'].items()}), 'complete paid rank histogram') + require(actual['productive_fields'] == expected['productive_fields'] and actual['paid_calls'] == expected['paid_calls'], 'independent count totals') + require(actual['target_mass'] - actual['paid_mass'] == expected['rank_mass_surplus'], 'independent rank-mass surplus') + + +def chronology(word, witnesses): + slots = {'ADD':(1,2),'SCALE':(1,),'SWAP':(1,2),'LOCAL':(2,3),'QUERY':(1,2),'IDLE':(1,2),'IDLE_ONE':(1,),'LAMBDA':(1,),'Q_POWER':(1,)} + actual_handoffs = [] + for number, witness in enumerate(witnesses): + # Witness zero belongs to the intermediate 33-field word. Later input + # bases precede that whole word and shift its earlier cut chronologically. + offset = sum(len(later['input_basis']) for later in witnesses[number+1:]) + handoff = witness['handoff_after'] + offset + pivot,fresh = witness['pivot'], witness['fresh'] + require(all(event[j] != fresh for event in word['events'][:handoff+1] for j in slots[event[0]]), 'fresh handoff input untouched in entire prefix') + cut_basis = witness['cut_basis'] + require(word['events'][handoff-len(cut_basis)+1:handoff+1] == cut_basis, 'complete cut basis at actual chronological handoff') + require(word['events'][handoff-len(cut_basis)] == ['IDLE_ONE',2,witness['prefix_stages']], 'handoff immediately follows the paid fragment') + require(word['diagonal'][pivot] == witness['prefix_target'] and word['diagonal'][fresh] == witness['suffix_target'], 'retirement endpoint credit matches literal witness') + first_fresh = next(i for i,event in enumerate(word['events']) if any(event[j] == fresh for j in slots[event[0]])) + require(first_fresh == handoff+1, 'fresh suffix starts immediately after completed prefix') + require(all(event[j] != pivot for event in word['events'][handoff+1:] for j in slots[event[0]]), 'retired productive output retained untouched through the full suffix') + actual_handoffs.append(handoff) + return {'fresh_inputs': [w['fresh'] for w in witnesses], 'witness_handoffs':[w['handoff_after'] for w in witnesses], 'literal_final_handoffs':actual_handoffs} + + +def central_normalization(): + def mul(a,b): + return (a[0]*b[0]-a[1]*b[1], a[0]*b[1]+a[1]*b[0]) + values = [(1,0),(0,1),(-1,0),(0,-1)] + for j,q in enumerate(values): + lam = (1,0) if j%2 == 0 else (0,1) + inverse = (lam[0],-lam[1]) + require(mul(lam,inverse)==(1,0), 'ordinary lambda and inverse are exact') + central = mul(lam,(q[0],-q[1])) + require(mul(central,central)==(1,0), 'normalized central S is an involution') + # At two odd factor characters Q_total=-1, lambda(Q_total)=+1, + # whereas tensoring the two factor lambdas would incorrectly give -1. + require((1,0) != mul((0,1),(0,1)), 'global lambda must remain outside tensor powers') + return {'central_characters':4,'two_factor_lambda_disagreement':True, + 'rule':'Physical Gaussian maps tensor factorwise; ordinary scalar coefficients and lambda polynomials act on the total Q outside tensor powers.'} + + +def coordinate_swaps(selected, dimension): + """Map a subset of canonical axes to the first r axes by explicit exchanges.""" + require(len(set(selected)) == len(selected), 'adapter axes distinct') + require(all(0 <= axis < dimension for axis in selected), 'adapter axes in ambient carrier') + wanted = set(range(len(selected))) + swaps = list(zip(sorted(set(selected)-wanted), sorted(wanted-set(selected)))) + def move(axis): + for a,b in swaps: + if axis == a: + axis = b + elif axis == b: + axis = a + return axis + require({move(axis) for axis in selected} == wanted, 'explicit Gaussian axis permutation') + require(all(move(move(axis)) == axis for axis in range(dimension)), 'permutation adapter inverse') + require(len(swaps) <= len(selected), 'rank-many two-axis exchanges suffice') + return swaps + + +def adapter_inventory(word, native, recipes): + """Charge complete canonical-job input/output conversions, including full idles.""" + by_port = {r['q']:r for r in recipes['recipes']} + for q in native['ports']: + basis = [q]+by_port[q]['idle_children'][0]['orthogonal_axes'][:8] + # This nine-axis map sends q to coordinate zero, fixes all spectators, + # and sends its orthonormal complement to coordinates one through eight. + def convert(value): + return (value & ~511) | sum(((value & axis).bit_count()%2) << i for i,axis in enumerate(basis)) + require([convert(axis) for axis in basis] == [1 << i for i in range(9)], 'explicit nine-axis q-to-coordinate adapter') + require(all((a&b).bit_count()%2 == (i==j) for i,a in enumerate(basis) for j,b in enumerate(basis)), 'q adapter orthogonal and invertible') + records = {'main':[], 'idle':[], 'query':[]} + for role,(qp,zero,*selection) in enumerate(word['diagonal']): + axes = ([0] if qp else []) + [axis for stage,yes in enumerate(selection,1) if yes for axis in range(9+8*(stage-1),9+8*stage)] + exchanges = coordinate_swaps(axes,word['ambient_rank']) + for q in native['ports']: + # Both whole-job boundaries are charged, even though a target + # interface may permit some of these maps to remain implicit. + records['main'].append([role,q,len(exchanges),2*bool(qp),int(qp==-1)]) + for index,event in enumerate(word['events']): + if event[0] in ('IDLE','IDLE_ONE'): + owners,stages = (event[1:3],event[3]) if event[0]=='IDLE' else ([event[1]],event[2]) + axes = [axis for stage in stages for axis in range(9+8*(stage-1),9+8*stage)] + exchanges = coordinate_swaps(axes,word['ambient_rank']) + records['idle'].extend([index,owner,q,len(exchanges)] for owner in owners for q in native['ports']) + elif event[0]=='QUERY': + _,dst,src,power = event + require(dst != src and all(0<=r> shift) & 1) + for _ in range(3): + self.tape.move(-1) + + def move(self, direction): + need(direction in (-1, 1), "virtual unit move") + t = self.tape + if direction == 1: + if t.read() == BLANK: + self.write(4) + for _ in range(3): + t.move(1) + else: + t.move(-1) + if t.read() == LEFT: + t.move(1) + raise ValueError("native routine crossed its local origin") + t.move(-1) + t.move(-1) + + +class BinaryContextPort: + """Read-only raw binary descriptor, with its own physical alphabet. + + Unlike CodedPort, read returns physical BLANK=6 at the frontier. A table + may inspect that frontier but cannot pass it or the current LEFT marker. + This supplies runtime e/f/K/rho data through counted local operations. + """ + __slots__ = ("tape",) + + def __init__(self, tape): + self.tape = tape + + def read(self): + symbol = self.tape.read() + need(symbol in (ZERO, ONE, BLANK), "binary context alphabet") + return symbol + + def write(self, value): + raise ValueError("native context is read-only") + + def move(self, direction): + need(direction in (-1, 1), "binary context unit move") + t = self.tape + if direction == 1: + need(t.read() in (ZERO, ONE), "context frontier cannot be crossed") + t.move(1) + else: + t.move(-1) + if t.read() == LEFT: + t.move(1) + raise ValueError("native context crossed its local origin") + + +def read_code(tape): + """Consume a numeric-format code; physical frontier returns None.""" + if tape.read() == BLANK: + return None + value = 0 + for _ in range(3): + bit = tape.read() + need(bit in (ZERO, ONE), "numeric codeword") + value = 2 * value + bit + tape.move(1) + need(value < 7, "unused numeric codeword") + return value + + +def write_code(tape, value): + for shift in (2, 1, 0): + emit(tape, (value >> shift) & 1) + + +def initialize(target, shape): + """Dispose of arbitrary old bytes, then zero the complete common format.""" + need(target is not shape, "private initialization cannot destroy its guide") + retire(target) + origin(shape) + in_component = False + while (symbol := read_code(shape)) is not None: + need(symbol in (ZERO, ONE, COMPONENT), "canonical signed components") + if symbol == COMPONENT: + need(in_component, "positive component width") + write_code(target, COMPONENT) + in_component = False + else: + write_code(target, ZERO) + in_component = True + need(not in_component, "component terminator") + origin(shape) + origin(target) + + +def copy_as_add(target, source): + """Signed addition into the actual destination, including any residue. + + Components are little-endian two's complement followed by COMPONENT. + Carries reset at delimiters; equal-sign signed overflow rejects. + No ideal-zero test or exact-value overwrite substitutes for addition. + """ + need(target is not source, "distinct COPY/ADD ports") + origin(source) + origin(target) + carry = 0 + last_a = last_b = last_out = 0 + in_component = False + while True: + a = read_code(source) + b = read_code(target) + need((a is None) == (b is None), "same complete numerical extent") + if a is None: + need(not in_component, "complete signed component") + break + need(a in (ZERO, ONE, COMPONENT) and b in (ZERO, ONE, COMPONENT), + "canonical signed addition operands") + need((a == COMPONENT) == (b == COMPONENT), "same component boundaries") + if a == COMPONENT: + need(in_component, "positive signed component width") + need(last_a != last_b or last_out == last_a, "signed addition overflow") + carry = 0 + in_component = False + continue + value = a + b + carry + last_a, last_b, last_out = a, b, value & 1 + carry = value >> 1 + for _ in range(3): + target.move(-1) + write_code(target, last_out) + in_component = True + origin(source) + origin(target) + + +def execute_table(table, ports, readonly_context=()): + """Run a supplied finite native table with every port confined. + + These tables retain explicit semantics/time/space premises. Fixture + tables are not advertised as Gaussian implementations. + """ + views = (tuple(CodedPort(t) for t in ports) + + tuple(BinaryContextPort(t) for t in readonly_context)) + pc = 0 + while True: + row = table[pc] + op = row[0] + if op == "halt": + break + if op == "reject": + raise ValueError(row[1]) + if op == "goto": + pc = row[1] + continue + view = views[row[1]] + if op == "branch": + pc = dict(row[2]).get(view.read(), row[3]) + continue + if op == "write": + view.write(row[2]) + elif op == "move": + view.move(row[2]) + else: + raise ValueError("native table opcode") + pc += 1 + for tape in tuple(ports)+tuple(readonly_context): + origin(tape) + + +@dataclass(frozen=True) +class Instruction: + op: str + ports: tuple = () + token: tuple = () + + +class Controller: + """Fixed finite controller of a fixed flat compiled template. + + rows implements the separately priced row/shape interface; all its + dynamic state belongs on the supplied tapes. services contains fixed + finite transition tables. Payload ports include metadata and all scratch. + The only runtime continuation is the physical Stack. + """ + def __init__(self, program, public_count, payloads, control, descriptor, + bridge, child_header, rows, services, stack_class, protected_ports=(), + primitive_work=(), primitive_context=()): + self.program = tuple(program) + self.public_count = public_count + self.payloads = tuple(payloads) + self.control = control + self.descriptor = descriptor + self.bridge = bridge + self.child_header = child_header + self.rows = rows + self.services = services + need(len({id(t) for t in self.payloads+(control,descriptor,bridge,child_header)}) + == len(self.payloads)+4, "all physical ports distinct") + self.stack = stack_class(self.payloads, control, descriptor) + self.protected_ports = tuple(protected_ports) + owned = {e.ports[0] for e in self.program if e.op == "INIT"} + need(all(public_count <= i < len(self.payloads) for i in owned), "INIT only private physical slots") + need(owned.isdisjoint(self.protected_ports), "owned fields cannot be borrowed descriptors") + self.root_cleanup = tuple(i for i in range(public_count,len(self.payloads)) + if i not in self.protected_ports) + self.primitive_work = tuple(primitive_work) + self.primitive_context = tuple(primitive_context) + data_ports = {i for e in self.program for i in e.ports} + need(all(0 <= i < len(self.payloads) for i in data_ports), "compiled port range") + need(all(i >= public_count and i < len(self.payloads) and i not in data_ports + and i not in self.protected_ports for i in self.primitive_work), "separate primitive scratch") + need(len(set(self.primitive_work)) == len(self.primitive_work), "distinct primitive work ports") + need(len(set(self.primitive_context)) == len(self.primitive_context) + and all(i in self.protected_ports and 0 <= i < len(self.payloads) + and i not in data_ports for i in self.primitive_context), "borrowed binary context ports") + self.pc_bits = max(1, (len(self.program) - 1).bit_length()) + self.pc_words = tuple(tuple((pc >> j) & 1 for j in range(self.pc_bits)) + for pc in range(len(self.program))) + need(self.program and self.program[-1].op == "RET", "finite completed program") + + def save_pc(self, pc): + need(self.descriptor.read() == BLANK, "empty active PC descriptor") + for bit in self.pc_words[pc]: + emit(self.descriptor, bit) + origin(self.descriptor, BASE) + + def consume_pc(self): + pc = 0 + for shift in range(self.pc_bits): + bit = self.descriptor.read() + need(bit in (ZERO, ONE), "binary return PC") + pc |= bit << shift + emit(self.descriptor, BLANK) + need(self.descriptor.read() == BLANK, "exact fixed return PC width") + origin(self.descriptor, BASE) + need(pc < len(self.program) and pc > 0 and self.program[pc-1].op == "PAID", + "return PC designates a paid continuation") + return pc + + def has_parent(self): + self.control.move(-1) + symbol = self.control.read() + self.control.move(1) + need(symbol in (BASE, END), "complete continuation top") + return symbol == END + + def descend(self, pc): + event = self.program[pc] + source = self.payloads[event.ports[0]] + transfer(source, self.bridge, target_marker=BASE) + self.rows.prepare(event.token, self.child_header) + self.save_pc(pc + 1) + self.stack.push((True,) * len(self.payloads)) + self.rows.install(self.bridge, self.child_header, + self.payloads[:self.public_count]) + retire(self.bridge, BASE) + retire(self.child_header, BASE) + + def primitive(self, token, fields): + for i in self.primitive_work: + retire(self.payloads[i]) + execute_table(self.services[token], + tuple(self.payloads[i] for i in fields+self.primitive_work), + tuple(self.payloads[i] for i in self.primitive_context)) + for i in self.primitive_work: + retire(self.payloads[i]) + + def ascend(self): + self.rows.collect(self.payloads[:self.public_count], self.bridge) + for tape in self.payloads: + retire(tape) + self.stack.pop() # ignore observer sizes and heads + pc = self.consume_pc() + target = self.payloads[self.program[pc-1].ports[0]] + retire(target) + transfer(self.bridge, target, source_marker=BASE) + retire(self.bridge, BASE) + return pc + + def run(self, observe=None): + pc = 0 + while True: + event = self.program[pc] + if observe is not None: + observe("before", pc, event) # checker only; ignores return value + if event.op == "INIT": + initialize(self.payloads[event.ports[0]], self.payloads[0]) + pc += 1 + elif event.op == "CLEAR": + retire(self.payloads[event.ports[0]]) + pc += 1 + elif event.op == "COPY": + copy_as_add(self.payloads[event.ports[0]], self.payloads[event.ports[1]]) + pc += 1 + elif event.op == "SERVICE": + self.primitive(event.token,event.ports) + pc += 1 + elif event.op == "PAID": + if self.rows.is_leaf(event.token): + self.primitive(("leaf",)+event.token,event.ports) + pc += 1 + else: + self.descend(pc) + pc = 0 + elif event.op == "RET": + if not self.has_parent(): + for i in self.root_cleanup: + retire(self.payloads[i]) + break + pc = self.ascend() + else: + raise ValueError("compiled opcode") + if observe is not None: + observe("after", pc, event) + + +def boundary_actions(q, b, parent_total, child_total, input_length, + output_length, staged_header_length): + """Exact descend+ascend actions, excluding the three row-service calls. + + Also excludes caller leaf/top tests. All heads are at local origins. + Includes PC, all retirement, occupied-target replacement and both relays. + """ + return (4 * parent_total + 5 * child_total + 18 * input_length + + 13 * output_length + 5 * staged_header_length + + 38 * q + 27 * b + 103) diff --git a/research/current-rounded-lambda/vendor/scalar_fixture.py b/research/current-rounded-lambda/vendor/scalar_fixture.py new file mode 100644 index 0000000000..027b563887 --- /dev/null +++ b/research/current-rounded-lambda/vendor/scalar_fixture.py @@ -0,0 +1,147 @@ +"""Metered fixtures execute unchanged Controller.primitive and execute_table. + +Only fixture construction and post-run oracles inspect integer values/storage. +Prepared for @CubeJerry with substantial OpenAI assistance. Apache-2.0. +""" +from types import SimpleNamespace +from fractions import Fraction +from source_binding import need, vendor + +M = vendor("rounded_retained_lifecycle", "vendor/machine.py") + + +class RowCounter: + """Observer-only table lookup counter; returns the unchanged immutable row. + + It never receives a tape, input value or coefficient, and never changes + the instruction stream. Ordinary fixtures use the tuple directly. + """ + def __init__(self, rows): + self.rows, self.steps = rows, 0 + + def __getitem__(self, pc): + self.steps += 1 + return self.rows[pc] + + +class Tape: + def __init__(self, bits=(), origin=17, readonly=False): + self.origin = self.pos = origin + self.cells = {origin-1:M.LEFT, origin-2:91} + self.cells.update({origin+i:s for i,s in enumerate(bits)}) + self.readonly = readonly + self.actions = self.reads = self.writes = self.moves = 0 + self.highwater = origin+len(bits) + + def tick(self): + need(self.pos >= self.origin-1, "no ancestor access") + self.actions += 1; self.highwater = max(self.highwater,self.pos) + + def read(self): + self.tick(); self.reads += 1 + return self.cells.get(self.pos,M.BLANK) + + def write(self,s): + self.tick(); self.writes += 1 + need(not self.readonly and self.pos >= self.origin, "protected source/marker") + need(s in range(7), "physical alphabet") + self.cells[self.pos]=s + + def move(self,step): + self.tick(); self.moves += 1 + need(step in (-1,1), "unit physical movement") + self.pos += step + need(self.pos >= self.origin-1, "no ancestor crossing") + self.highwater=max(self.highwater,self.pos) + + def body(self): + end=self.origin + while self.cells.get(end,M.BLANK)!=M.BLANK: + end+=1 + return tuple(self.cells.get(k,M.BLANK) for k in range(self.origin,end)) + + def blank(self): + return all(v==M.BLANK for k,v in self.cells.items() if k>=self.origin) + + def protected(self): + return self.cells[self.origin-1]==M.LEFT and self.cells[self.origin-2]==91 + + +def encode_symbols(symbols): + return tuple((s>>k)&1 for s in symbols for k in (2,1,0)) + + +def symbols(values,width): + need(width>=1,"positive signed width") + out=[] + for n in values: + need(-(1<<(width-1))<=n<(1<<(width-1)),"signed fixture input") + out.extend((n>>k)&1 for k in range(width));out.append(2) + return tuple(out) + + +def decode(bits,width): + need(len(bits)%3==0,"whole physical codes") + syms=[4*bits[i]+2*bits[i+1]+bits[i+2] for i in range(0,len(bits),3)] + need(len(syms)%(width+1)==0,"whole components") + out=[] + for i in range(0,len(syms),width+1): + b=syms[i:i+width] + need(all(z in (0,1) for z in b) and syms[i+width]==2,"numeric result grammar") + out.append(sum(z<=2, its exact record delimiters and common quantum, supplied +local LEFT markers and aligned origins, and actually disjoint public, context +and private segments. Current private prefixes start physically blank; previous +erased backing remains allocated. These are caller premises, not inferred +from object identity or a short fixture. + +Let a valid parent monomial descriptor have fixed recipe rank m, positive f,K, +0<=rho=A1^6 and (E+1)^4+Q=O(V), this is F_template+O_m(fV). +The larger displayed bill remains if either absorption condition fails. + +This can match a direct PAID-leaf budget when a separate global cutoff admits +the complete source construction, including rf<=cutoff for a rank-r leaf. +No such cutoff, compiled stock/precision substitution, new supplier rate or +assembled kappa is established here. + +## 4. Strict numerical-domain distinction and rejection + +Phases act as signed permutations of the real/imaginary components. Strict +symmetric component headroom is invariant under every such phase and address +permutation, proving all intermediate representability in the sufficient +domain. The unchanged common grid needs no extra arithmetic rounding. + +The original combined-phase admission does not suffice. For a constant-phase-2 +monomial with f=2, the tensor phase is +1, so a most-negative h-bit component +can pass the batched phase. The first serialized column multiplies it by -1, +which cannot fit. Thus the two acceptance domains are provably different. +For the actual selected right recipe, whose constant is1, f=4 and an input +supported on the all-zero selected bits similarly has combined phase +1; +serial quarter rotations can expose an unrepresentable intermediate negation. +This caveat was found by the separate native worker's adversarial review. + +Each retained one-column call preserves its input on its named arithmetic +rejection. Earlier completed columns can nevertheless have changed the serial +field. SerialProvider therefore has no whole-job rollback guarantee. A full +protected stage, such as the separately published atomic MOVE wrapper, must +pay transfer/commit/retirement to obtain that property. No interruption or +malformed-success rollback is claimed. + +Global native source correctness, the full compiler placement, ownership, +precision and analytic multiplication assumptions remain. Finite witnesses +do not discharge those universal premises, and no accepted certificate changes. diff --git a/research/current-rounded-lambda/vendor/serial/column_view.py b/research/current-rounded-lambda/vendor/serial/column_view.py new file mode 100644 index 0000000000..f547ed7a72 --- /dev/null +++ b/research/current-rounded-lambda/vendor/serial/column_view.py @@ -0,0 +1,200 @@ +"""Physically encoded serialization into genuine one-column monomial calls. + +Runtime integers remain on fixed raw binary tapes. Construction depends only +on the finite recipe rank. Prepared for @CubeJerry with substantial OpenAI +assistance. Apache-2.0. +""" +from serial_sources import activate, need + +S = activate() +R = S.rows +ROLES = dict(R.SCHEMA) +PARENT, VIEW = R.HEADER, R.CHILD_HEADER +FBOUND, OLD_K, COLUMN, ACC, SUM, M = range(40, 46) +PORTS = 46 +PRIVATE = tuple(i for i in range(PORTS) if i != PARENT) +FIELDS = tuple(port for _, port in R.SCHEMA) + + +def literal(b, tape, value): + """Only a fixed compile-time integer is supplied here.""" + need(type(value) is int and value >= 0, "fixed nonnegative literal") + b.empty(tape) + for digit in bin(value)[2:][::-1]: + b.write(tape, digit) + b.move(tape, 1) + b.rewind(tape) + + +def compile_prepare(rank): + need(type(rank) is int and 1 <= rank <= 73, "fixed compiled monomial rank") + b = R.Builder() + for port in (PARENT, *PRIVATE): + b.boundary(port) + for port in PRIVATE: + b.empty(port) + b.decode(PARENT, FIELDS) + b.canonical(ROLES["f"], positive=True) + b.canonical(ROLES["K"], positive=True) + b.copy(ROLES["f"], FBOUND) + b.copy(ROLES["K"], OLD_K) + literal(b, COLUMN, 0) + literal(b, ACC, 0) + loop, more, end = (b.fresh("product") for _ in range(3)) + b.mark(loop) + b.compare(COLUMN, FBOUND, more, end, "reject") + b.mark(more) + b.add(ACC, OLD_K, SUM) + b.clear(ACC) + b.copy(SUM, ACC) + b.clear(SUM) + b.increment(COLUMN) + b.go(loop) + b.mark(end) + b.clear(ROLES["K"]) + b.copy(ACC, ROLES["K"]) + b.clear(ACC) + b.clear(ROLES["f"]) + literal(b, ROLES["f"], 1) + b.clear(ROLES["selected_axes"]) + literal(b, M, rank) + b.add(M, ROLES["remainder"], ROLES["selected_axes"]) + b.clear(M) + b.clear(COLUMN) + literal(b, COLUMN, 0) + b.encode(FIELDS, VIEW) + b.code.append(("result", "ready")) + return b.close() + + +def compile_next(): + b = R.Builder() + b.clear(VIEW) + b.increment(COLUMN) + more, end = (b.fresh("column") for _ in range(2)) + b.compare(COLUMN, FBOUND, more, end, "reject") + b.mark(more) + b.add(ROLES["rho"], OLD_K, SUM) + b.clear(ROLES["rho"]) + b.copy(SUM, ROLES["rho"]) + b.clear(SUM) + b.encode(FIELDS, VIEW) + b.code.append(("result", "ready")) + b.mark(end) + b.code.append(("result", "finished")) + return b.close() + + +def compile_release(): + b = R.Builder() + for port in PRIVATE: + b.clear(port) + b.rewind(PARENT) + return b.close() + + +NEXT, RELEASE = compile_next(), compile_release() + + +def validate(table): + for row in table: + need(row[0] in ("read", "write", "move", "goto", "done", "result", "reject", "quarantine"), + "literal local instruction vocabulary") + if row[0] in ("read", "write", "move"): + need(type(row[1]) is int and 0 <= row[1] < PORTS, "fixed role") + if row[0] == "write": + need(row[1] != PARENT and row[2] in (R.ZERO, R.ONE, R.BLANK), + "parent and markers are read-only") + if row[0] == "move": + need(row[2] in (-1, 1), "unit movement") + if row[0] == "result": + need(row[1] in ("ready", "finished"), "finite decision alphabet") + return len(table) + + +class ColumnView: + port_count = len(PRIVATE) + + def __init__(self, rank): + self.prepare_table = compile_prepare(rank) + for table in (self.prepare_table, NEXT, RELEASE): + validate(table) + self.ports = self.parent = self.work = None + self.active = False + + def bind(self, work, context): + need(not self.active and len(work) == self.port_count, + "complete fixed descriptor bank before execution") + need(len(set(map(id, work))) == len(work) + and all(port is not context.tape for port in work), + "distinct descriptor segments; actual disjointness is a caller premise") + self.parent, self.work = context, tuple(work) + self.ports = {PARENT: R.PhysicalPort(context.tape)} + self.ports.update((role, R.PhysicalPort(port)) for role, port in zip(PRIVATE, work)) + + @property + def context(self): + need(self.ports is not None, "bound descriptor bank") + return S.abi.BinaryContextPort(self.ports[VIEW].tape) + + def prepare(self): + need(self.ports is not None and not self.active, "single active descriptor iteration") + self.active = True + try: + result, _steps = R.run_choice(self.prepare_table, self.ports) + need(result == "ready", "first column available") + except Exception: + self.release() + raise + + def advance(self): + need(self.active, "active descriptor iteration") + result, _steps = R.run_choice(NEXT, self.ports) + need(result in ("ready", "finished"), "finite column decision") + return result + + def release(self): + need(self.active, "active descriptor iteration to retire") + try: + R.run(RELEASE, self.ports) + finally: + self.active = False + + +class SerialProvider: + """Actual unchanged monomial, with physically priced descriptor iteration. + +Partial column updates can precede a later named arithmetic rejection. A +protected whole-field wrapper is required for whole-job public atomicity. +No provider is reset, recreated, or given decoded shape values between calls. +""" + def __init__(self, literal_recipe, native_factory, inverse=False): + self.native = S.adapter.Provider(literal_recipe, native_factory, inverse=inverse) + self.view = ColumnView(self.native.rank) + self.field = self.work = None + + @property + def port_count(self): + return self.view.port_count + self.native.port_count + + def bind(self, work, field, context): + need(len(work) == self.port_count and len(set(map(id, work))) == len(work), + "fixed distinct complete inventory") + need(field.tape is not context.tape + and all(field.tape is not p and context.tape is not p for p in work), + "field, parent descriptor and work are disjoint") + self.work, self.field = tuple(work), field + self.view.bind(work[:self.view.port_count], context) + self.native.bind(work[self.view.port_count:]) + + def run(self): + need(self.work is not None, "bound serial monomial") + try: + self.view.prepare() + while True: + self.native.run(self.field, self.view.context) + if self.view.advance() == "finished": + break + finally: + if self.view.active: + self.view.release() diff --git a/research/current-rounded-lambda/vendor/serial/serial_sources.py b/research/current-rounded-lambda/vendor/serial/serial_sources.py new file mode 100644 index 0000000000..54ab34373b --- /dev/null +++ b/research/current-rounded-lambda/vendor/serial/serial_sources.py @@ -0,0 +1,64 @@ +"""Frozen unchanged current monomial and literal descriptor tables. + +Prepared for @CubeJerry with substantial OpenAI assistance. Apache-2.0. +""" +from hashlib import sha1, sha256 +import importlib.util +import json +from pathlib import Path, PurePosixPath +from types import SimpleNamespace +import sys + +HERE = Path(__file__).resolve().parent +_loaded = None + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def authenticate(root=HERE): + rows = json.loads((root / "DEPENDENCIES.json").read_text())["files"] + seen = set() + for row in rows: + path = PurePosixPath(row["path"]) + need(not path.is_absolute() and ".." not in path.parts + and path.parts[0] == "vendor" and str(path) not in seen, + "unique relative frozen source") + seen.add(str(path)) + target = root / str(path) + need(target.is_file() and not target.is_symlink(), "regular frozen source") + raw = target.read_bytes() + need(sha256(raw).hexdigest() == row["sha256"] + and sha1(b"blob " + str(len(raw)).encode() + b"\0" + raw).hexdigest() == row["git_blob"], + "authenticated source " + str(path)) + return len(rows) + + +def load(name, path): + need(name not in sys.modules, "cold source namespace " + name) + spec = importlib.util.spec_from_file_location(name, path) + module = importlib.util.module_from_spec(spec) + sys.modules[name] = module + exec(compile(path.read_bytes(), str(path), "exec"), module.__dict__) + return module + + +def activate(): + global _loaded + if _loaded is not None: + return _loaded + authenticate() + phase = HERE / "vendor/monomial" + sys.path.insert(0, str(phase)) + binding = load("phase_binding", phase / "phase_binding.py") + state = binding.activate() + adapter = load("phase_adapter", phase / "phase_adapter.py") + selected = load("selected_service", phase / "selected_service.py") + dispatch = phase / "vendor/binding/vendor/dispatch" + rows = load("serial_monomial_retained_rows", dispatch / "row_programs.py") + _loaded = SimpleNamespace(binding=binding, state=state, adapter=adapter, + selected=selected, rows=rows, phase=phase, + abi=state.abi, codec=state.codec) + return _loaded diff --git a/research/current-rounded-lambda/vendor/serial/vendor/monomial/DEPENDENCIES.json b/research/current-rounded-lambda/vendor/serial/vendor/monomial/DEPENDENCIES.json new file mode 100644 index 0000000000..cbe38bbf8f --- /dev/null +++ b/research/current-rounded-lambda/vendor/serial/vendor/monomial/DEPENDENCIES.json @@ -0,0 +1,1203 @@ +{ + "files": [ + { + "git_blob": "9e68f7226669eb4b92330023e16a86739aa859ce", + "origin": { + "commit": "5629e7772d1720d6727465e328a45694f8620538", + "original_path": "research/compiled-compact-native-binding/DEPENDENCIES.json", + "repository": "CubeJerry/integer-mult-bounds" + }, + "path": "vendor/binding/DEPENDENCIES.json", + "sha256": "8481fde09d925fe143a604a4924f05bb1ade2d1ac8f9068389680c9406f71507" + }, + { + "git_blob": "859eb593d3b5bb07b3fd8a3b1034b4ac19a8dd6c", + "origin": { + "commit": "5629e7772d1720d6727465e328a45694f8620538", + "original_path": "research/compiled-compact-native-binding/PROOF.md", + "repository": "CubeJerry/integer-mult-bounds" + }, + "path": "vendor/binding/PROOF.md", + "sha256": "acabf664e97b35d5c63998c6f08bbea27369b36db14b203c4ef62180a9535faf" + }, + { + "git_blob": "15469f097247a4627336b9bb77d03b8696533276", + "origin": { + "commit": "5629e7772d1720d6727465e328a45694f8620538", + "original_path": "research/compiled-compact-native-binding/binding_sources.py", + "repository": "CubeJerry/integer-mult-bounds" + }, + "path": "vendor/binding/binding_sources.py", + "sha256": "e3b1cd40a2436381b3688aa3a5a740d402d08d0611dc43a629634bb1a6f7b299" + }, + { + "git_blob": "bf3bd0d5a6fbfa1e7a56c36578c2caaa0130c7c5", + "origin": { + "commit": "5629e7772d1720d6727465e328a45694f8620538", + "original_path": "research/compiled-compact-native-binding/codec.py", + "repository": "CubeJerry/integer-mult-bounds" + }, + "path": "vendor/binding/codec.py", + "sha256": "60f94c991568981c1ae8633bbc9c4d3c259e2df0654e8720d7f4554737d8e136" + }, + { + "git_blob": "481013b988e5ae8189a0dddfcbb2f521e3142cab", + "origin": { + "commit": "5629e7772d1720d6727465e328a45694f8620538", + "original_path": "research/compiled-compact-native-binding/provider.py", + "repository": "CubeJerry/integer-mult-bounds" + }, + "path": "vendor/binding/provider.py", + "sha256": "3b7bb4f7940ffa9fafd34d25bbb1a9225e1b671924ed194ad012cb26251d7460" + }, + { + "git_blob": "de725a73e97496836100aa6e0ed9cd70985373da", + "origin": { + "git_blob": "de725a73e97496836100aa6e0ed9cd70985373da", + "group": "deferred", + "original_path": "research/p104-6030-deferred-layer/PROOF.md", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "3a7ac6dae3b76d5f78849f521635da034fe99b1ea6c942175a3652b53f6262c2" + }, + "path": "vendor/binding/vendor/DEFERRED-PROOF.md", + "sha256": "3a7ac6dae3b76d5f78849f521635da034fe99b1ea6c942175a3652b53f6262c2" + }, + { + "git_blob": "d59b5035e7b4cbaa9d688a1d32dd0d6eb79c466a", + "origin": { + "git_blob": "d59b5035e7b4cbaa9d688a1d32dd0d6eb79c466a", + "group": "selected", + "original_path": "certificates/selected-result.json", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "9b8d0eea95b3bf0dfcb7938a732a6439b87a2685dec2a5ab9e525b3b34debbfa" + }, + "path": "vendor/binding/vendor/SELECTED-RESULT.json", + "sha256": "9b8d0eea95b3bf0dfcb7938a732a6439b87a2685dec2a5ab9e525b3b34debbfa" + }, + { + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "origin": { + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "group": "task", + "original_path": "docs/research/agent-task-catalog.json", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81" + }, + "path": "vendor/binding/vendor/TASK-CATALOG.json", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81" + }, + { + "git_blob": "f65f38123ca0adb02f6ca69351cbfc933506e5cb", + "origin": { + "git_blob": "f65f38123ca0adb02f6ca69351cbfc933506e5cb", + "group": "compact", + "original_path": "research/physical-complex-compact/PROOF.md", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "ec6395822ae500242f3fe5e2cf40caf9a7f9fa259d475d2c14970d951ff4df48" + }, + "path": "vendor/binding/vendor/compact/PROOF.md", + "sha256": "ec6395822ae500242f3fe5e2cf40caf9a7f9fa259d475d2c14970d951ff4df48" + }, + { + "git_blob": "13af719b5844f14f5cf05c919e84204cd21caf6a", + "origin": { + "git_blob": "13af719b5844f14f5cf05c919e84204cd21caf6a", + "group": "compact", + "original_path": "research/physical-complex-compact/compact_control.py", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "73a9ace4f91aeb383fdbc6f7762498fe707b4e4b45b1c63920bb90cc8795e284" + }, + "path": "vendor/binding/vendor/compact/compact_control.py", + "sha256": "73a9ace4f91aeb383fdbc6f7762498fe707b4e4b45b1c63920bb90cc8795e284" + }, + { + "git_blob": "064b508efd12f7d5a33729b2344b6890f0c75d2f", + "origin": { + "git_blob": "064b508efd12f7d5a33729b2344b6890f0c75d2f", + "group": "compact", + "original_path": "research/physical-complex-compact/compact_counts.py", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "71c19cfc186aaf0c159ec64ea1a5d58e1fc5fc093d50c7360247559261fad00d" + }, + "path": "vendor/binding/vendor/compact/compact_counts.py", + "sha256": "71c19cfc186aaf0c159ec64ea1a5d58e1fc5fc093d50c7360247559261fad00d" + }, + { + "git_blob": "5c5ca75567f85b042c156e0ed5a8afe81671b1b8", + "origin": { + "git_blob": "5c5ca75567f85b042c156e0ed5a8afe81671b1b8", + "group": "compact", + "original_path": "research/physical-complex-compact/compact_engine.py", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "2cacff4d36a6e029add115f47cd8ffbf3c61e7ece0900308b98e6032e652f098" + }, + "path": "vendor/binding/vendor/compact/compact_engine.py", + "sha256": "2cacff4d36a6e029add115f47cd8ffbf3c61e7ece0900308b98e6032e652f098" + }, + { + "git_blob": "03ca12aed77741f40d824fcb33cc4eedb85abfd9", + "origin": { + "git_blob": "03ca12aed77741f40d824fcb33cc4eedb85abfd9", + "group": "compact", + "original_path": "research/physical-complex-compact/compact_layout.py", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "5be2be9c32c15742da18fde438a5559a45a86eb661105027b1b233a7c397e0ce" + }, + "path": "vendor/binding/vendor/compact/compact_layout.py", + "sha256": "5be2be9c32c15742da18fde438a5559a45a86eb661105027b1b233a7c397e0ce" + }, + { + "git_blob": "5699cc7f20def3bc873d2da05b13a252246367a1", + "origin": { + "git_blob": "5699cc7f20def3bc873d2da05b13a252246367a1", + "group": "compact", + "original_path": "research/physical-complex-compact/compact_streams.py", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "3b5cce3be9763c6bd7803d6223d2784d1975eeac6c7c99f5e00dfc49bb11d249" + }, + "path": "vendor/binding/vendor/compact/compact_streams.py", + "sha256": "3b5cce3be9763c6bd7803d6223d2784d1975eeac6c7c99f5e00dfc49bb11d249" + }, + { + "git_blob": "3d2834c5fff39481c9a0442a514c10eaf50f98d2", + "origin": { + "git_blob": "3d2834c5fff39481c9a0442a514c10eaf50f98d2", + "group": "compact", + "original_path": "research/physical-complex-compact/native_sources.py", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "865c97c4f261fde37e86eb16a910eaa5b2f26daaa7d2648ae0322ba8c0286572" + }, + "path": "vendor/binding/vendor/compact/native_sources.py", + "sha256": "865c97c4f261fde37e86eb16a910eaa5b2f26daaa7d2648ae0322ba8c0286572" + }, + { + "git_blob": "96b032f662397d496c4d827839441b6794881a53", + "origin": { + "git_blob": "96b032f662397d496c4d827839441b6794881a53", + "group": "dispatch", + "original_path": "research/compiled-row-stock-dispatch/PROOF.md", + "published_commit": "5c59d247d51c6e1fca0dead3ed2139b6802b3a15", + "repository": "CubeJerry/integer-mult-bounds", + "sha256": "b0ed45deb84fa2ce835246d7de3c85ccdacf24ab68235cf1138fe6ff4c4ce5d9" + }, + "path": "vendor/binding/vendor/dispatch/PROOF.md", + "sha256": "b0ed45deb84fa2ce835246d7de3c85ccdacf24ab68235cf1138fe6ff4c4ce5d9" + }, + { + "git_blob": "70bb2c54a6dbf9f17a55bbae8383d9bfde933e52", + "origin": { + "git_blob": "70bb2c54a6dbf9f17a55bbae8383d9bfde933e52", + "group": "task", + "original_path": "research/compiled-row-stock-dispatch/TASK.json", + "published_commit": "5c59d247d51c6e1fca0dead3ed2139b6802b3a15", + "repository": "CubeJerry/integer-mult-bounds", + "sha256": "6b5334d10044644ba646452b0e9e21528061768726d124a4a97af26785aa9ec9" + }, + "path": "vendor/binding/vendor/dispatch/TASK.json", + "sha256": "6b5334d10044644ba646452b0e9e21528061768726d124a4a97af26785aa9ec9" + }, + { + "git_blob": "5752189b8a838596346df8dde89024621b513e41", + "origin": { + "git_blob": "5752189b8a838596346df8dde89024621b513e41", + "group": "dispatch", + "original_path": "research/compiled-row-stock-dispatch/compiler_routes.py", + "published_commit": "5c59d247d51c6e1fca0dead3ed2139b6802b3a15", + "repository": "CubeJerry/integer-mult-bounds", + "sha256": "d375f8c2e666ffd2ebe6de34ccb7756ac9fa4a4cd5f866cb025a781f8538c599" + }, + "path": "vendor/binding/vendor/dispatch/compiler_routes.py", + "sha256": "d375f8c2e666ffd2ebe6de34ccb7756ac9fa4a4cd5f866cb025a781f8538c599" + }, + { + "git_blob": "30ba41725f7e1ba3dd058abd30c66d19820a008d", + "origin": { + "git_blob": "30ba41725f7e1ba3dd058abd30c66d19820a008d", + "group": "dispatch", + "original_path": "research/compiled-row-stock-dispatch/row_programs.py", + "published_commit": "5c59d247d51c6e1fca0dead3ed2139b6802b3a15", + "repository": "CubeJerry/integer-mult-bounds", + "sha256": "a59510516d1397382de6141edc1eb69cf3ba5e6e330198deb5e335e543300be4" + }, + "path": "vendor/binding/vendor/dispatch/row_programs.py", + "sha256": "a59510516d1397382de6141edc1eb69cf3ba5e6e330198deb5e335e543300be4" + }, + { + "git_blob": "9c3c97d86a7bdd7b95944218bf1e6e4a5a1746a1", + "origin": { + "git_blob": "9c3c97d86a7bdd7b95944218bf1e6e4a5a1746a1", + "group": "dispatch", + "original_path": "research/compiled-row-stock-dispatch/vendor/occurrence_geometry.py", + "published_commit": "5c59d247d51c6e1fca0dead3ed2139b6802b3a15", + "repository": "CubeJerry/integer-mult-bounds", + "sha256": "f3504a73803da120040cc62ee8f5e8b849237daf508a7146272d55624c3f8396" + }, + "path": "vendor/binding/vendor/dispatch/vendor/occurrence_geometry.py", + "sha256": "f3504a73803da120040cc62ee8f5e8b849237daf508a7146272d55624c3f8396" + }, + { + "git_blob": "1e3533efa92c3bab35916ae6844290586d18ff27", + "origin": { + "git_blob": "1e3533efa92c3bab35916ae6844290586d18ff27", + "group": "dispatch", + "original_path": "research/compiled-row-stock-dispatch/vendor/row_padding.py", + "published_commit": "5c59d247d51c6e1fca0dead3ed2139b6802b3a15", + "repository": "CubeJerry/integer-mult-bounds", + "sha256": "24270408e87b028791670cd63908adeb03162f0919237e8644065c5898fecf2f" + }, + "path": "vendor/binding/vendor/dispatch/vendor/row_padding.py", + "sha256": "24270408e87b028791670cd63908adeb03162f0919237e8644065c5898fecf2f" + }, + { + "git_blob": "605981247e27de68fe78d3a36e2b454efbd6b11e", + "origin": { + "git_blob": "605981247e27de68fe78d3a36e2b454efbd6b11e", + "group": "lifecycle", + "original_path": "research/compiled-owned-bank-lifecycle/PROOF.md", + "published_commit": "ab239cb6ee884e7a900dd9101c34448077fad0b0", + "repository": "CubeJerry/integer-mult-bounds", + "sha256": "9a088fa00f10e59df48090b67c6ef7c3641bc9cc36b223deb917740372d57993" + }, + "path": "vendor/binding/vendor/lifecycle/PROOF.md", + "sha256": "9a088fa00f10e59df48090b67c6ef7c3641bc9cc36b223deb917740372d57993" + }, + { + "git_blob": "acf475e4fccaff2fb64bd5b0b3f3fc0d246dc592", + "origin": { + "git_blob": "acf475e4fccaff2fb64bd5b0b3f3fc0d246dc592", + "group": "lifecycle", + "original_path": "research/compiled-owned-bank-lifecycle/machine.py", + "published_commit": "ab239cb6ee884e7a900dd9101c34448077fad0b0", + "repository": "CubeJerry/integer-mult-bounds", + "sha256": "ec597bce13275003ff30e4be481c936401826c1d4af642b55eec0c410774d1df" + }, + "path": "vendor/binding/vendor/lifecycle/machine.py", + "sha256": "ec597bce13275003ff30e4be481c936401826c1d4af642b55eec0c410774d1df" + }, + { + "git_blob": "79c95fa79439f3c893de52991173bd3a5eae2729", + "origin": { + "git_blob": "79c95fa79439f3c893de52991173bd3a5eae2729", + "group": "lifecycle", + "original_path": "research/compiled-owned-bank-lifecycle/source_ir.py", + "published_commit": "ab239cb6ee884e7a900dd9101c34448077fad0b0", + "repository": "CubeJerry/integer-mult-bounds", + "sha256": "54dd93bc50bd10e974c70794df1c13da27f0e3d8cdb6cfe6791a63280096f1b1" + }, + "path": "vendor/binding/vendor/lifecycle/source_ir.py", + "sha256": "54dd93bc50bd10e974c70794df1c13da27f0e3d8cdb6cfe6791a63280096f1b1" + }, + { + "git_blob": "9469443a3d7cc6310a7369daf77c7756d5bd3f38", + "origin": { + "git_blob": "9469443a3d7cc6310a7369daf77c7756d5bd3f38", + "group": "compiler", + "original_path": "research/lockstep-completion-pass/executor.py", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "0bda14a3e5f4da348cd5c89ebe29d717e7a5406ec31b164d5b9e1d25f7f38e0e" + }, + "path": "vendor/binding/vendor/lockstep_executor.py", + "sha256": "0bda14a3e5f4da348cd5c89ebe29d717e7a5406ec31b164d5b9e1d25f7f38e0e" + }, + { + "git_blob": "12be1f06062090fcc68e598bae250f185e3d8524", + "origin": { + "git_blob": "12be1f06062090fcc68e598bae250f185e3d8524", + "group": "ordinary", + "original_path": "research/physical-ordinary-interchange/PROOF.md", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "8a1c2145cd8f080026488a571d95813c09679aa323f19aeaef0ea98030136e1c" + }, + "path": "vendor/binding/vendor/ordinary/PROOF.md", + "sha256": "8a1c2145cd8f080026488a571d95813c09679aa323f19aeaef0ea98030136e1c" + }, + { + "git_blob": "651185a9eec51438949580a34e707f6dd1adbd4b", + "origin": { + "git_blob": "651185a9eec51438949580a34e707f6dd1adbd4b", + "group": "ordinary", + "original_path": "research/physical-ordinary-interchange/binary.py", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "578fb5bc793fc544dca8111605bf9f6067b8ba7dc7489a3ac243e1df3cd37953" + }, + "path": "vendor/binding/vendor/ordinary/binary.py", + "sha256": "578fb5bc793fc544dca8111605bf9f6067b8ba7dc7489a3ac243e1df3cd37953" + }, + { + "git_blob": "2280fa98ff5e4da7c4909814ce4a1c405605ada8", + "origin": { + "git_blob": "2280fa98ff5e4da7c4909814ce4a1c405605ada8", + "group": "ordinary", + "original_path": "research/physical-ordinary-interchange/encoded.py", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "10ad2fa5902a48d49cf2b89a30b3f2711d63a6a43b9512a6427affcdf07335a7" + }, + "path": "vendor/binding/vendor/ordinary/encoded.py", + "sha256": "10ad2fa5902a48d49cf2b89a30b3f2711d63a6a43b9512a6427affcdf07335a7" + }, + { + "git_blob": "81b330a4b886a0f4deab7b0811478bab3fbc107a", + "origin": { + "git_blob": "81b330a4b886a0f4deab7b0811478bab3fbc107a", + "group": "ordinary", + "original_path": "research/physical-ordinary-interchange/ordinary.py", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "7f8338e748bcd42fbef1e7cc47b6c5040dfb3aad216e34759bcb12b8e14f7705" + }, + "path": "vendor/binding/vendor/ordinary/ordinary.py", + "sha256": "7f8338e748bcd42fbef1e7cc47b6c5040dfb3aad216e34759bcb12b8e14f7705" + }, + { + "git_blob": "44b464714277786297c8ee7fd04470dc6394896d", + "origin": { + "git_blob": "44b464714277786297c8ee7fd04470dc6394896d", + "group": "ordinary", + "original_path": "research/physical-ordinary-interchange/physical_words.py", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "89ba40442297ec35368e426770f44852b39807ca426710ded2735678651bef61" + }, + "path": "vendor/binding/vendor/ordinary/physical_words.py", + "sha256": "89ba40442297ec35368e426770f44852b39807ca426710ded2735678651bef61" + }, + { + "git_blob": "09f645bbf0c6c3d41d0c03e8031adc4e81744ac1", + "origin": { + "git_blob": "09f645bbf0c6c3d41d0c03e8031adc4e81744ac1", + "group": "ordinary", + "original_path": "research/physical-ordinary-interchange/session.py", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "45ee809b27a69ca5576361922fd2760f568c9a98864d4c55c4fee3003ee3c9ad" + }, + "path": "vendor/binding/vendor/ordinary/session.py", + "sha256": "45ee809b27a69ca5576361922fd2760f568c9a98864d4c55c4fee3003ee3c9ad" + }, + { + "git_blob": "8594fc62cee8a111958561b75045c8ec16ebfa47", + "origin": { + "git_blob": "8594fc62cee8a111958561b75045c8ec16ebfa47", + "group": "ordinary", + "original_path": "research/physical-ordinary-interchange/source.py", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "4bd047a1272374880962d3074f1e50de717518a3a181f11607e820afe50dd4e5" + }, + "path": "vendor/binding/vendor/ordinary/source.py", + "sha256": "4bd047a1272374880962d3074f1e50de717518a3a181f11607e820afe50dd4e5" + }, + { + "git_blob": "69e07e58c5468e2045281335a56f4918b474c79d", + "origin": { + "git_blob": "69e07e58c5468e2045281335a56f4918b474c79d", + "group": "record_lift", + "original_path": "research/selected-monomial-tape-lift/PROOF.md", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "8442243130d4a9932f78eb42419196d2866d4496256e3bb2d6143fd52b44ddb3" + }, + "path": "vendor/binding/vendor/record_lift/PROOF.md", + "sha256": "8442243130d4a9932f78eb42419196d2866d4496256e3bb2d6143fd52b44ddb3" + }, + { + "git_blob": "167d085a9191e3b3545bcf39d5e6edc94e54d514", + "origin": { + "git_blob": "167d085a9191e3b3545bcf39d5e6edc94e54d514", + "group": "record_lift", + "original_path": "research/selected-monomial-tape-lift/lift.py", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "21c77119c004a86a603cca91ce1366629431db18e9e0554942492f1b5afebe4a" + }, + "path": "vendor/binding/vendor/record_lift/lift.py", + "sha256": "21c77119c004a86a603cca91ce1366629431db18e9e0554942492f1b5afebe4a" + }, + { + "git_blob": "e82bfef53054bd753ba0aa8a966f84427faa2293", + "origin": { + "git_blob": "e82bfef53054bd753ba0aa8a966f84427faa2293", + "group": "reference", + "original_path": "research/selected-complex-compact-adapters/NOTICE.md", + "published_commit": "d404b48a1e7b147556b309497d55089c837dddb2", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "74a9f03e9ce467c75f5f7cf1b8465d349ea38ef114afad261824c3bcf13da00f" + }, + "path": "vendor/binding/vendor/reference/NOTICE.md", + "sha256": "74a9f03e9ce467c75f5f7cf1b8465d349ea38ef114afad261824c3bcf13da00f" + }, + { + "git_blob": "60bc206c78150f23563a4775800b0dd32025843d", + "origin": { + "git_blob": "60bc206c78150f23563a4775800b0dd32025843d", + "group": "reference", + "original_path": "research/selected-complex-compact-adapters/compact.py", + "published_commit": "d404b48a1e7b147556b309497d55089c837dddb2", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "0e1027a60f38c21cfd808c8ce44dcc2423810efdab0e15f02b07f261ad48fc3c" + }, + "path": "vendor/binding/vendor/reference/compact.py", + "sha256": "0e1027a60f38c21cfd808c8ce44dcc2423810efdab0e15f02b07f261ad48fc3c" + }, + { + "git_blob": "61542ce4c9eb51bfc113475b4f98649cb90a853e", + "origin": { + "git_blob": "61542ce4c9eb51bfc113475b4f98649cb90a853e", + "group": "reference", + "original_path": "research/selected-complex-compact-adapters/streams.py", + "published_commit": "d404b48a1e7b147556b309497d55089c837dddb2", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "718a582a50aee8f1f04945ed942be1d4162962fe47dbf05c6ff37b7fb8c61257" + }, + "path": "vendor/binding/vendor/reference/streams.py", + "sha256": "718a582a50aee8f1f04945ed942be1d4162962fe47dbf05c6ff37b7fb8c61257" + }, + { + "git_blob": "1341d394481fb13beb826b944409b11083d8e7f8", + "origin": { + "archive_name": "pr2808.tar", + "archive_sha256": "2ab59c6d0ad00c001ecbe44090b66871ec3d2c1fdc51daa503109e56f3285cab", + "git_blob": "1341d394481fb13beb826b944409b11083d8e7f8", + "member": "outer.py", + "sha256": "9a26702a853805da7f97da7272d3b610c4d69767ecc6b450efbc4b6722dc3f19" + }, + "path": "vendor/binding/vendor/runtime/pr2808/outer.py", + "sha256": "9a26702a853805da7f97da7272d3b610c4d69767ecc6b450efbc4b6722dc3f19" + }, + { + "git_blob": "0229304638de6c78ebc519b33a6ce34b1d396ca7", + "origin": { + "archive_name": "pr2808.tar", + "archive_sha256": "2ab59c6d0ad00c001ecbe44090b66871ec3d2c1fdc51daa503109e56f3285cab", + "git_blob": "0229304638de6c78ebc519b33a6ce34b1d396ca7", + "member": "vendor/pr2786/padding.py", + "sha256": "9f58bf2d343e13a70dc765d86c590b912d5987669d507ab14bd36deed94a76ee" + }, + "path": "vendor/binding/vendor/runtime/pr2808/vendor/pr2786/padding.py", + "sha256": "9f58bf2d343e13a70dc765d86c590b912d5987669d507ab14bd36deed94a76ee" + }, + { + "git_blob": "a66d9276f829ce2c619871866816649d5f3687fd", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "a66d9276f829ce2c619871866816649d5f3687fd", + "member": "inputs/pr2753/consumer.py", + "sha256": "2f2a8604c23fb2c81f24320c71ed0142118d98dde3be6086adad28e89954a777" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/consumer.py", + "sha256": "2f2a8604c23fb2c81f24320c71ed0142118d98dde3be6086adad28e89954a777" + }, + { + "git_blob": "5b7846a70aada53d87480b337e1c04217118771b", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "5b7846a70aada53d87480b337e1c04217118771b", + "member": "inputs/pr2753/driver.py", + "sha256": "ceaf8f75de9810a05ebf8f65780b6f8bd7599a5768401d5e4386182afe615cdf" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/driver.py", + "sha256": "ceaf8f75de9810a05ebf8f65780b6f8bd7599a5768401d5e4386182afe615cdf" + }, + { + "git_blob": "d0318d43ed420e21dc52166a19de703aa87fbb3e", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "d0318d43ed420e21dc52166a19de703aa87fbb3e", + "member": "inputs/pr2753/evidence/NOTICE.md", + "sha256": "fd7c42e89878cda6df86dde8720ece34625a337cf5edd795a421e2d3b42919e9" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/evidence/NOTICE.md", + "sha256": "fd7c42e89878cda6df86dde8720ece34625a337cf5edd795a421e2d3b42919e9" + }, + { + "git_blob": "f2b49cdef83a4a685fad32c01fba93e12cfcb5a8", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "f2b49cdef83a4a685fad32c01fba93e12cfcb5a8", + "member": "inputs/pr2753/evidence/pr2688-NOTICE.md", + "sha256": "c899fccf7bd32397f0ddd85e4af35a166cefb3e3ae3407ec40edc3ab2051b617" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/evidence/pr2688-NOTICE.md", + "sha256": "c899fccf7bd32397f0ddd85e4af35a166cefb3e3ae3407ec40edc3ab2051b617" + }, + { + "git_blob": "aa554b14fe0f6b308d9fba0a2afc92e5a28e20cb", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "aa554b14fe0f6b308d9fba0a2afc92e5a28e20cb", + "member": "inputs/pr2753/layout.py", + "sha256": "3beef6534b02c3b011b741f957a7d9fb05a9ac0bba1fed53b2c71834e4ea6bc1" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/layout.py", + "sha256": "3beef6534b02c3b011b741f957a7d9fb05a9ac0bba1fed53b2c71834e4ea6bc1" + }, + { + "git_blob": "6a6e5c02f299fad8c4f7ab724fc36e14a22ab13c", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "6a6e5c02f299fad8c4f7ab724fc36e14a22ab13c", + "member": "inputs/pr2753/linear_sign.py", + "sha256": "73e895fc701a4145cbe89d60f5775128354e7f08d0a45eacf22f423913f54e67" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/linear_sign.py", + "sha256": "73e895fc701a4145cbe89d60f5775128354e7f08d0a45eacf22f423913f54e67" + }, + { + "git_blob": "28c98a3573b458f7a055678d70b602b80e6e959e", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "28c98a3573b458f7a055678d70b602b80e6e959e", + "member": "inputs/pr2753/node.py", + "sha256": "0bd4f640cafb5c8f070c161d86445910f77578a672bf5886936ed89e7f6bd21b" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/node.py", + "sha256": "0bd4f640cafb5c8f070c161d86445910f77578a672bf5886936ed89e7f6bd21b" + }, + { + "git_blob": "72543f684f38fefeacc2ee66d81661f1a2439cf7", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "72543f684f38fefeacc2ee66d81661f1a2439cf7", + "member": "inputs/pr2753/packet_engine.py", + "sha256": "c80fc3aa9092f91cc309b2fb2dbc3618bf96bdb9b8498503993ea161f0ae2134" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/packet_engine.py", + "sha256": "c80fc3aa9092f91cc309b2fb2dbc3618bf96bdb9b8498503993ea161f0ae2134" + }, + { + "git_blob": "38502515afc928082c849cd2cda8578d33a5050a", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "38502515afc928082c849cd2cda8578d33a5050a", + "member": "inputs/pr2753/peel.py", + "sha256": "8b20888f74b4cd814a97b42ec72528fbfb6d2e936c5022df726f0785d0d01a2e" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/peel.py", + "sha256": "8b20888f74b4cd814a97b42ec72528fbfb6d2e936c5022df726f0785d0d01a2e" + }, + { + "git_blob": "ef9f81510db86eaf2f0a7191d85e92a6db30ddc0", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "ef9f81510db86eaf2f0a7191d85e92a6db30ddc0", + "member": "inputs/pr2753/predecessor/NOTICE.md", + "sha256": "c446b32b8a621844fb2fbe654810c8122035bdd43fed2132f1137d98cb6f9943" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/NOTICE.md", + "sha256": "c446b32b8a621844fb2fbe654810c8122035bdd43fed2132f1137d98cb6f9943" + }, + { + "git_blob": "6a14feac45094ae9156e8c2c982d6727544f180e", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "6a14feac45094ae9156e8c2c982d6727544f180e", + "member": "inputs/pr2753/predecessor/cardinal_counts.py", + "sha256": "59ddeac102a0cc51fa49b15aae6aeb68cd68ed217fa974ce916372a177d2ec8f" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/cardinal_counts.py", + "sha256": "59ddeac102a0cc51fa49b15aae6aeb68cd68ed217fa974ce916372a177d2ec8f" + }, + { + "git_blob": "0efc0575a7623ac41c094d2e8772beda5a9fdc29", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "0efc0575a7623ac41c094d2e8772beda5a9fdc29", + "member": "inputs/pr2753/predecessor/catalogue.py", + "sha256": "83ea88f82d4a83c5f889774bfe3519b7ebaa24b6a0e2a969dafff012107a89bf" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/catalogue.py", + "sha256": "83ea88f82d4a83c5f889774bfe3519b7ebaa24b6a0e2a969dafff012107a89bf" + }, + { + "git_blob": "4f6ac09bffab43dbccc470bd0bde2ffbe969a8b2", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "4f6ac09bffab43dbccc470bd0bde2ffbe969a8b2", + "member": "inputs/pr2753/predecessor/control.py", + "sha256": "d3a93e54bb7d333b73917586407d11674d38b5c3fda4fbdc436fb5293ae7786a" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/control.py", + "sha256": "d3a93e54bb7d333b73917586407d11674d38b5c3fda4fbdc436fb5293ae7786a" + }, + { + "git_blob": "aa3a327604308d3a5c7a27b65f5e631d430ab093", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "aa3a327604308d3a5c7a27b65f5e631d430ab093", + "member": "inputs/pr2753/predecessor/fresh_rows.py", + "sha256": "e4ae08fbd658add630eb7754ebe0cbcb42c6f39cf4128f9cb92e27fcf5213a7d" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/fresh_rows.py", + "sha256": "e4ae08fbd658add630eb7754ebe0cbcb42c6f39cf4128f9cb92e27fcf5213a7d" + }, + { + "git_blob": "39a2916c207d04be5efc44750d8606f5da0c2990", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "39a2916c207d04be5efc44750d8606f5da0c2990", + "member": "inputs/pr2753/predecessor/topology.py", + "sha256": "384d456ddba76de137a63b50019d5bba2e9f6daa4177c91643e0565d4cf1d44b" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/topology.py", + "sha256": "384d456ddba76de137a63b50019d5bba2e9f6daa4177c91643e0565d4cf1d44b" + }, + { + "git_blob": "21a5a21220a18ab62a19ac403a9944bc3a8665c8", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "21a5a21220a18ab62a19ac403a9944bc3a8665c8", + "member": "inputs/pr2753/predecessor/vendor/binding.py", + "sha256": "20169a8af6ed2b34069fd353a2bc1c42335ab686c58de8479baef33dd3fb493b" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/binding.py", + "sha256": "20169a8af6ed2b34069fd353a2bc1c42335ab686c58de8479baef33dd3fb493b" + }, + { + "git_blob": "4d1fd4abb0f2aabe833e5cbc9efb51039739e7ca", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "4d1fd4abb0f2aabe833e5cbc9efb51039739e7ca", + "member": "inputs/pr2753/predecessor/vendor/bitstream.py", + "sha256": "f78bac9641007dbd8824984edcac057274fe016ce78bd9cb512d0c0913274783" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/bitstream.py", + "sha256": "f78bac9641007dbd8824984edcac057274fe016ce78bd9cb512d0c0913274783" + }, + { + "git_blob": "b8ba857e32c5903408e1e61ff916300848b4a208", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "b8ba857e32c5903408e1e61ff916300848b4a208", + "member": "inputs/pr2753/predecessor/vendor/cardinality.py", + "sha256": "505d5e560c5a507e6184edcc19a87cf1fed243eb34a5cb21fbe1e4fe017e7f22" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/cardinality.py", + "sha256": "505d5e560c5a507e6184edcc19a87cf1fed243eb34a5cb21fbe1e4fe017e7f22" + }, + { + "git_blob": "ce4935f838516e2b08d13bec767cb803786fbc6b", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "ce4935f838516e2b08d13bec767cb803786fbc6b", + "member": "inputs/pr2753/predecessor/vendor/children.py", + "sha256": "a78866939631214c1d1659203b2b5fc062e3c6255e9f11f975c310046b010bd6" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/children.py", + "sha256": "a78866939631214c1d1659203b2b5fc062e3c6255e9f11f975c310046b010bd6" + }, + { + "git_blob": "c631a9e77fbcccf0e8f448adc22978728aed7b60", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "c631a9e77fbcccf0e8f448adc22978728aed7b60", + "member": "inputs/pr2753/predecessor/vendor/controller.py", + "sha256": "fa09146991f6c04e6f4b6eb9bf0c8e103e70e90a0e402ff3d69814e6aac8ff8c" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/controller.py", + "sha256": "fa09146991f6c04e6f4b6eb9bf0c8e103e70e90a0e402ff3d69814e6aac8ff8c" + }, + { + "git_blob": "81b48940ce222290a40d4fb349ce827f4788469d", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "81b48940ce222290a40d4fb349ce827f4788469d", + "member": "inputs/pr2753/predecessor/vendor/counts.py", + "sha256": "00b476dbda0e8cc99886bf794439e1cb9e775f435f599a3557e99321fe084069" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/counts.py", + "sha256": "00b476dbda0e8cc99886bf794439e1cb9e775f435f599a3557e99321fe084069" + }, + { + "git_blob": "c74cacf5ce809c0561d374f137a52df0992b4226", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "c74cacf5ce809c0561d374f137a52df0992b4226", + "member": "inputs/pr2753/predecessor/vendor/directory.py", + "sha256": "4270e370b2bfe38ef73aadcd97d1b3496b56bd582115d74331eb9e5ceb90bec7" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/directory.py", + "sha256": "4270e370b2bfe38ef73aadcd97d1b3496b56bd582115d74331eb9e5ceb90bec7" + }, + { + "git_blob": "30d11ff4f333813855d36da3eb5a1ab0e154bafe", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "30d11ff4f333813855d36da3eb5a1ab0e154bafe", + "member": "inputs/pr2753/predecessor/vendor/episode.py", + "sha256": "38f79cb2a370548471063952d5f7c74bd795a2a8496fdcf3ce0996d79e3adaff" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/episode.py", + "sha256": "38f79cb2a370548471063952d5f7c74bd795a2a8496fdcf3ce0996d79e3adaff" + }, + { + "git_blob": "6667c0b772a63f0059c7caffec63e0d919a92398", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "6667c0b772a63f0059c7caffec63e0d919a92398", + "member": "inputs/pr2753/predecessor/vendor/forms.py", + "sha256": "1fdf9d31b7eb107c396e33f94dad61c9d3f2c709cae61178268a44ca80dbc0b4" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/forms.py", + "sha256": "1fdf9d31b7eb107c396e33f94dad61c9d3f2c709cae61178268a44ca80dbc0b4" + }, + { + "git_blob": "737edfc4a10f4b7b3b97a7cef4b40864efd806e6", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "737edfc4a10f4b7b3b97a7cef4b40864efd806e6", + "member": "inputs/pr2753/predecessor/vendor/low_codes.py", + "sha256": "f657e17f6088c840e3f7783e662257630f6d2c1e71c217721ffbca4d6ac93e87" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/low_codes.py", + "sha256": "f657e17f6088c840e3f7783e662257630f6d2c1e71c217721ffbca4d6ac93e87" + }, + { + "git_blob": "5d497353efbb9eeaaf4facd96ab40ffb0f3aa20d", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "5d497353efbb9eeaaf4facd96ab40ffb0f3aa20d", + "member": "inputs/pr2753/predecessor/vendor/matrices.py", + "sha256": "00b687434039b54529ee092e34f9435cfcd66e0816eb3bd2a6688c73f4e01459" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/matrices.py", + "sha256": "00b687434039b54529ee092e34f9435cfcd66e0816eb3bd2a6688c73f4e01459" + }, + { + "git_blob": "6d4ebca8398008375b8f4762d1a9f1514e8c2611", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "6d4ebca8398008375b8f4762d1a9f1514e8c2611", + "member": "inputs/pr2753/predecessor/vendor/numeric.py", + "sha256": "7327b05c4ec3e0f6d9c352cc7de85bfd4ebe940482553e77c59a773a8c09c514" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/numeric.py", + "sha256": "7327b05c4ec3e0f6d9c352cc7de85bfd4ebe940482553e77c59a773a8c09c514" + }, + { + "git_blob": "244f131466698a3ace10b657242fe1f65c07fd1f", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "244f131466698a3ace10b657242fe1f65c07fd1f", + "member": "inputs/pr2753/predecessor/vendor/oracle.py", + "sha256": "7bd18089e32ce48085b5e3a75159f6a82cdb2649ec682c53db05e399d97aef67" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/oracle.py", + "sha256": "7bd18089e32ce48085b5e3a75159f6a82cdb2649ec682c53db05e399d97aef67" + }, + { + "git_blob": "ebc9b616514412b80c56d523776e6ba5d6766453", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "ebc9b616514412b80c56d523776e6ba5d6766453", + "member": "inputs/pr2753/predecessor/vendor/packet.py", + "sha256": "970e7fe0719e3dfe122b248941e6f21cd90d7dd62089fa6acbd0e5412ce083a5" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/packet.py", + "sha256": "970e7fe0719e3dfe122b248941e6f21cd90d7dd62089fa6acbd0e5412ce083a5" + }, + { + "git_blob": "48255d5454308c07635fae4e7eb4873b0bd2a4f8", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "48255d5454308c07635fae4e7eb4873b0bd2a4f8", + "member": "inputs/pr2753/predecessor/vendor/plan.py", + "sha256": "d9c8dc93762db4d3a449814aa51e2211460648694469854d89cb48cb04188cf3" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/plan.py", + "sha256": "d9c8dc93762db4d3a449814aa51e2211460648694469854d89cb48cb04188cf3" + }, + { + "git_blob": "4f00467a0ff580954ad2fd0c7380240c753ddef3", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "4f00467a0ff580954ad2fd0c7380240c753ddef3", + "member": "inputs/pr2753/predecessor/vendor/records.py", + "sha256": "0c9c4b23e998597fb877bb1a29da69ac869b68262abe635b162b4dba9c69b372" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/records.py", + "sha256": "0c9c4b23e998597fb877bb1a29da69ac869b68262abe635b162b4dba9c69b372" + }, + { + "git_blob": "35531201dc349a811dfabc6f1f6e64697d665194", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "35531201dc349a811dfabc6f1f6e64697d665194", + "member": "inputs/pr2753/predecessor/vendor/routes.py", + "sha256": "ed7dc3679451696ab1dd841146b215c9515a3eec5e4ff3763f33c315f1696ada" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/routes.py", + "sha256": "ed7dc3679451696ab1dd841146b215c9515a3eec5e4ff3763f33c315f1696ada" + }, + { + "git_blob": "2c28f1aaec104a75c4e6c170b3e6a60300ee6700", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "2c28f1aaec104a75c4e6c170b3e6a60300ee6700", + "member": "inputs/pr2753/predecessor/vendor/selection.py", + "sha256": "bc8e371fb1fa0b41fb05ef0b34d0f4c317b2396f9833d91f44f95c2b54b4052b" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/selection.py", + "sha256": "bc8e371fb1fa0b41fb05ef0b34d0f4c317b2396f9833d91f44f95c2b54b4052b" + }, + { + "git_blob": "16d5e7e6a28018f1e2d76d61efe2d54f6a6941d4", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "16d5e7e6a28018f1e2d76d61efe2d54f6a6941d4", + "member": "inputs/pr2753/predecessor/vendor/sources.py", + "sha256": "f102edc7816d742bd89db8097254c19b843d0ef5cf6758ad42e93bcc0b214c62" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/sources.py", + "sha256": "f102edc7816d742bd89db8097254c19b843d0ef5cf6758ad42e93bcc0b214c62" + }, + { + "git_blob": "5e5a4bb0f98971447043e25d4dd6991bfc070389", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "5e5a4bb0f98971447043e25d4dd6991bfc070389", + "member": "inputs/pr2753/predecessor/vendor/stream.py", + "sha256": "c7dc7da5b00f27016982ada4c0416f8328568b00df16d97012f33d4b372d79b5" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/stream.py", + "sha256": "c7dc7da5b00f27016982ada4c0416f8328568b00df16d97012f33d4b372d79b5" + }, + { + "git_blob": "6d33224145aa04f7fbaf7b6cda7c9c164311a402", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "6d33224145aa04f7fbaf7b6cda7c9c164311a402", + "member": "inputs/pr2753/recursive_call.py", + "sha256": "157deaa5972557893d43494a81151483bdc46373448ec677cb6a738c9b7e6f1e" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/recursive_call.py", + "sha256": "157deaa5972557893d43494a81151483bdc46373448ec677cb6a738c9b7e6f1e" + }, + { + "git_blob": "60c2b6d065eba91dd5e0edb7a77fc087971eca3f", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "60c2b6d065eba91dd5e0edb7a77fc087971eca3f", + "member": "inputs/pr2753/scheduler.py", + "sha256": "0d96f7fbd6f90416167c5a52c0e3de942d1a0cae3d2968831932a9576701699f" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/scheduler.py", + "sha256": "0d96f7fbd6f90416167c5a52c0e3de942d1a0cae3d2968831932a9576701699f" + }, + { + "git_blob": "6ba5df130bb4a0fcb06b6c630830ae3a6922921b", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "6ba5df130bb4a0fcb06b6c630830ae3a6922921b", + "member": "inputs/pr2753/stream_runner.py", + "sha256": "b255feaf6cc6e40413ae73fe302bf8f290bf4dd89f4128b23a91cc9860601801" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/stream_runner.py", + "sha256": "b255feaf6cc6e40413ae73fe302bf8f290bf4dd89f4128b23a91cc9860601801" + }, + { + "git_blob": "4b002201ce54cdecec9acf4e874b7f71cd75fe71", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "4b002201ce54cdecec9acf4e874b7f71cd75fe71", + "member": "inputs/pr2753/trace.py", + "sha256": "3a664224c558244f606b603cad816d75e94a17c9b2620a06a1530e893dfceac2" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2753/trace.py", + "sha256": "3a664224c558244f606b603cad816d75e94a17c9b2620a06a1530e893dfceac2" + }, + { + "git_blob": "307c2da733f7f3a76e97c77e71072e811f40df02", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "307c2da733f7f3a76e97c77e71072e811f40df02", + "member": "inputs/pr2769/NOTICE.md", + "sha256": "8640d1b52fd21e5b20e8109ce9c4957ca1e19a95e26a1c80d019a6e6f4d5f178" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2769/NOTICE.md", + "sha256": "8640d1b52fd21e5b20e8109ce9c4957ca1e19a95e26a1c80d019a6e6f4d5f178" + }, + { + "git_blob": "9cd54d9417eb685dcd3f8293f01299ef9046ad31", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "9cd54d9417eb685dcd3f8293f01299ef9046ad31", + "member": "inputs/pr2769/codec.py", + "sha256": "5b9fda8136f7e60bece54e3fcc74f4ea0bec7145fa60e1ae3a4d252741b81fd3" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2769/codec.py", + "sha256": "5b9fda8136f7e60bece54e3fcc74f4ea0bec7145fa60e1ae3a4d252741b81fd3" + }, + { + "git_blob": "cafd614a3b7bc87b019361fcdf890ed976f26d19", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "cafd614a3b7bc87b019361fcdf890ed976f26d19", + "member": "inputs/pr2769/vendor/parking_machine.py", + "sha256": "68134779debfb795468a1aaecbc2b9d321d7d4e451313ce7dc8fa7092561df4c" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2769/vendor/parking_machine.py", + "sha256": "68134779debfb795468a1aaecbc2b9d321d7d4e451313ce7dc8fa7092561df4c" + }, + { + "git_blob": "8d4ba37e2778acb35b34e0719df2caf138fbeb50", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "8d4ba37e2778acb35b34e0719df2caf138fbeb50", + "member": "inputs/pr2769/vendor/words.py", + "sha256": "5c37f57708ba3131bdcb03139f9dbc29886bee44569c09cbba51b68f75acd7f9" + }, + "path": "vendor/binding/vendor/runtime/pr2809/inputs/pr2769/vendor/words.py", + "sha256": "5c37f57708ba3131bdcb03139f9dbc29886bee44569c09cbba51b68f75acd7f9" + }, + { + "git_blob": "c197eb6458be9374cb4684c654bfc99e619dcaf0", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "c197eb6458be9374cb4684c654bfc99e619dcaf0", + "member": "macro_binding.py", + "sha256": "9ef31765d03d2c54fad9296f2ff0707a190ce169e44de4f0f45214e3c410c01a" + }, + "path": "vendor/binding/vendor/runtime/pr2809/macro_binding.py", + "sha256": "9ef31765d03d2c54fad9296f2ff0707a190ce169e44de4f0f45214e3c410c01a" + }, + { + "git_blob": "2f5f8ecfac6457171707b1b5ff02b5071954fcb7", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "2f5f8ecfac6457171707b1b5ff02b5071954fcb7", + "member": "macro_code.py", + "sha256": "f626b018124747a5f17c1603bea36cd74c00a69a0647fd7b10e9c4e2964caea8" + }, + "path": "vendor/binding/vendor/runtime/pr2809/macro_code.py", + "sha256": "f626b018124747a5f17c1603bea36cd74c00a69a0647fd7b10e9c4e2964caea8" + }, + { + "git_blob": "5a032e8923f7f8b22bb98f3e39b804beb9906c16", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "5a032e8923f7f8b22bb98f3e39b804beb9906c16", + "member": "macro_machine.py", + "sha256": "7bc6e42072a09a08ac961e05c3da01cde012d740d4b4c605f298d994f2ad7c5a" + }, + "path": "vendor/binding/vendor/runtime/pr2809/macro_machine.py", + "sha256": "7bc6e42072a09a08ac961e05c3da01cde012d740d4b4c605f298d994f2ad7c5a" + }, + { + "git_blob": "fba75e7649cf77e352a75324495191bbd7853c22", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "fba75e7649cf77e352a75324495191bbd7853c22", + "member": "residual_blocks.py", + "sha256": "ab7f3df8906decd2efecfb138eac1456c106bb520b2598761f699f80680d8331" + }, + "path": "vendor/binding/vendor/runtime/pr2809/residual_blocks.py", + "sha256": "ab7f3df8906decd2efecfb138eac1456c106bb520b2598761f699f80680d8331" + }, + { + "git_blob": "fc48c244eefdbaa3e320e86c75a7d187cb5765ef", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "fc48c244eefdbaa3e320e86c75a7d187cb5765ef", + "member": "role_parking.py", + "sha256": "1884a3c260d81d5efbc0c33d86a810d6728e55e5764cfcd423f858cc685470f3" + }, + "path": "vendor/binding/vendor/runtime/pr2809/role_parking.py", + "sha256": "1884a3c260d81d5efbc0c33d86a810d6728e55e5764cfcd423f858cc685470f3" + }, + { + "git_blob": "0f22807c65d1bca374b905538512bf8c43702070", + "origin": { + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "git_blob": "0f22807c65d1bca374b905538512bf8c43702070", + "member": "scratch_pool.py", + "sha256": "41f1eb93652b7174c3b02f95f70e1a9ce2e2aed0a729e725167c8f226e65d8db" + }, + "path": "vendor/binding/vendor/runtime/pr2809/scratch_pool.py", + "sha256": "41f1eb93652b7174c3b02f95f70e1a9ce2e2aed0a729e725167c8f226e65d8db" + }, + { + "git_blob": "82e9a8b0b50f26844528af9e07632800679805ea", + "origin": { + "commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/physical-gaussian-monomial/PROOF.md", + "repository": "CrocSwap/integer-mult-bounds" + }, + "path": "vendor/monomial/PROOF.md", + "sha256": "20885a8a137fc670121429625912ceae54db95ac5e574b8c64c90f477aebacb7" + }, + { + "git_blob": "e040a558800e719e2d8b6237bec39e7e10a3641b", + "origin": { + "commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/physical-gaussian-monomial/SOURCES.json", + "repository": "CrocSwap/integer-mult-bounds" + }, + "path": "vendor/monomial/SOURCES.json", + "sha256": "0dd57a4fe4fc97826df0eb215975d013ac0e18f185c73cd93e34c95a9a2b4b16" + }, + { + "git_blob": "2251fd98ba01a171f5d39b25a93c895245f10e55", + "origin": { + "commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/physical-gaussian-monomial/monomial_engine.py", + "repository": "CrocSwap/integer-mult-bounds" + }, + "path": "vendor/monomial/monomial_engine.py", + "sha256": "fc02c6c5159d6c258063a36ef3dc9313a34d7ba9781b650e451cc0ce971e9667" + }, + { + "git_blob": "0e467bdb3727d7f354f98dee54f320f1f072aa2c", + "origin": { + "commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/physical-gaussian-monomial/pair_dispatch.py", + "repository": "CrocSwap/integer-mult-bounds" + }, + "path": "vendor/monomial/pair_dispatch.py", + "sha256": "fc0eaa2a9d0855660b15a15d894137eeebc64c6418f52b6af0d0f79d86f2e0d9" + }, + { + "git_blob": "a2f684fb588257cc182dc88dded59ed70f5c2585", + "origin": { + "commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/physical-gaussian-monomial/phase_recipe.py", + "repository": "CrocSwap/integer-mult-bounds" + }, + "path": "vendor/monomial/phase_recipe.py", + "sha256": "8215e5e55daf019694e55b2acfcd42ecf109a2faf767a2181d664ba9b4957e46" + }, + { + "git_blob": "aaa5c663a4bb6b0ca4d9119c1ae92064509d79c8", + "origin": { + "commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/physical-gaussian-monomial/phase_sources.py", + "repository": "CrocSwap/integer-mult-bounds" + }, + "path": "vendor/monomial/phase_sources.py", + "sha256": "3944ecbffe91fb561b2b8a810461cd2b8229f1f2611ca6a70e3d86451efb220b" + }, + { + "git_blob": "5fa4494167c4ba668993a2b1c902969518728a4c", + "origin": { + "commit": "d404b48a1e7b147556b309497d55089c837dddb2", + "original_path": "research/selected-complex-compact-adapters/monomial.py", + "repository": "CrocSwap/integer-mult-bounds" + }, + "path": "vendor/monomial/reference.py", + "sha256": "394f9a465ac9148af0c20844d375e4befbef17d92b2fcc840d83419480dd4740" + }, + { + "git_blob": "bab32b0c5da7f364d6a79171c09b02d123a05bd9", + "origin": { + "commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/physical-gaussian-monomial/signed_phase.py", + "repository": "CrocSwap/integer-mult-bounds" + }, + "path": "vendor/monomial/signed_phase.py", + "sha256": "e21818674133a2bd7e63fadaf719eb45ce80db4b3806ca8ef99c247be22c2a39" + }, + { + "git_blob": "e4a03118d585fb80c9ac932281b528ac394ccc5f", + "origin": { + "commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/p104-helper470-twin-rung-removal/RESULT.json", + "repository": "CrocSwap/integer-mult-bounds" + }, + "path": "vendor/selected/RESULT.json", + "sha256": "84fcbe2a0b64307b5703c363408042bdd91555b0419509aa50daa43b3b1924ad" + }, + { + "git_blob": "22f9ab02d1b73ea0aa4b07ce445a14cc2602c760", + "origin": { + "commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/p104-helper470-twin-rung-removal/WORD.json.gz", + "repository": "CrocSwap/integer-mult-bounds" + }, + "path": "vendor/selected/WORD.json.gz", + "sha256": "7834725d9e34ee846a9ccc615221ea81e0201613938afa185d2eda0c9a6c232f" + }, + { + "git_blob": "166841a037f069249f6f7f6dedb89248812f59e2", + "origin": { + "commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/p104-native-channel/vendor/clifford_exact.py", + "repository": "CrocSwap/integer-mult-bounds" + }, + "path": "vendor/selected/clifford_exact.py", + "sha256": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962" + }, + { + "git_blob": "2c209dfa9cfade3bc20ac5fc9d876b433a147f8c", + "origin": { + "commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/p104-native-channel/vendor/native_verify.py", + "repository": "CrocSwap/integer-mult-bounds" + }, + "path": "vendor/selected/native_verify.py", + "sha256": "3049471905b47b385c88378a1a3be7a18b8858aadd035b8a6da2f4a03b470f38" + } + ], + "schema_version": 1 +} diff --git a/research/current-rounded-lambda/vendor/serial/vendor/monomial/PROOF.md b/research/current-rounded-lambda/vendor/serial/vendor/monomial/PROOF.md new file mode 100644 index 0000000000..5bd585e03c --- /dev/null +++ b/research/current-rounded-lambda/vendor/serial/vendor/monomial/PROOF.md @@ -0,0 +1,449 @@ +# Current coded Gaussian monomial with complete coefficient fibres + +Prepared for **@CubeJerry**, with substantial OpenAI assistance in source +analysis, implementation, mathematical argument, and adversarial verification. +Apache-2.0; predecessor notices and exact computational sources are retained. + +## 1. Claim and non-overlap + +This package supplies the missing format and context join between the physical +Gaussian monomial of [#3087](https://github.com/CrocSwap/integer-mult-bounds/pull/3087) +and the current three-bit `CodedPort` numeric field and twenty-three-field +descriptor. It produces the old layout and signed coefficients through counted +physical operations, executes the unchanged monomial, and returns the complete +current format in place. It preserves the descriptor and all caller ancestors, +and erases every owned current segment, including encoded logical blanks. + +The theorem below is a **structured finite-control, fixed-inventory source +refinement**, relative to the stated completed ordinary supplier and current +port contracts. It is not an emitted flat transition table for the lifecycle +controller. It does not close a universal selected assumption or change kappa. + +The inherited phase formula, affine compiler, signed-pair theorem, Compact +algorithm, and their cost are not new results. Jose Manuel (`jmbarrancoml`), with +OpenAI assistance, already implemented those in #3087, building on #2250, +#2378, #2422, and #3055. [#6293](https://github.com/CrocSwap/integer-mult-bounds/pull/6293) +already treats the all-width phase convention, including the repeated constant. +[#6930](https://github.com/CrocSwap/integer-mult-bounds/pull/6930), pinned at +`c726399fbdb6d80dd13bed760b56572fb4ea1022`, already audits the primary phase +integer of the selected MOVE used here. We inherit those results. + +Chris R (`Clear1nsight`), with OpenAI assistance, supplied the older prepared +QQ16 common-grid conversion and signed packet join in +[#4129](https://github.com/CrocSwap/integer-mult-bounds/pull/4129). Its raw/tagged +packet and caller contracts differ from this current descriptor, current +`CodedPort`, selected source token, and suffix layout. We neither repeat its +quantum conversion nor identify its old component ABI with the current one. + +The separately credited [current Compact binding](https://github.com/CubeJerry/integer-mult-bounds/tree/5629e7772d1720d6727465e328a45694f8620538/research/compiled-compact-native-binding) supplies the +shared current symbol codec, exact header parser, guarded old-tape refinement, +and complete current-segment retirement. We reuse those exact bytes. Its opaque +record permutation by itself does not establish arithmetic on the three-bit +encoding: the new delimiter stripping, signed-field grouping, and exact return +in this package are necessary for that step. + +## 2. Quantified current interface + +Compile a literal invertible binary monomial of fixed rank `1<=m<=73`, with +matrix `L`, offset `v`, constant `c` modulo four, linear coefficients `l_i` +modulo four, and strict-upper quadratic coefficients `q_ik` in `{0,1}`. +Compile its direction and one completed ordinary supplier before numerical +input. The supplier has the unchanged native interface and the contract used +by #3087; its fixture elementary branch is not an admission of its faster rate. + +`Provider(literal,native_factory,inverse=False).bind(work)` fixes a finite set of +physical work ports. `run(field,context)` receives a current `CodedPort` field +and a read-only `BinaryContextPort` descriptor, both at their local origins. +The caller supplies genuinely disjoint physical segments for field, context, +and all work roles. The object-identity guards reject obvious aliasing but do +not prove disjointness of distinct wrappers over the same physical segment. +All current work segments are initially physically blank. Caller ancestors +precede protected local origin markers and are outside the writable segments. + +The exact descriptor order is + +``` +outer, rows, stock, row_bits, within_bits, record_bits, p, d, K, G, H, +q0, qF, qB, D, f, rho, active_start, back_start, selected_axes, +entry_start, remainder, cutoff. +``` + +Each nonnegative integer is represented by a positive unary digit length, +a zero separator, and that many canonical least-significant-first binary +digits. The exact physical frontier follows field 23. All fields are scanned +and returned unchanged; unused large metadata is not free. In particular, +the address reservation `H` is not the signed component width below. + +Write `a=within_bits`, `b=record_bits`, `u=active_start`, `z=back_start`, +`C=outer*rows`, and let `h>=2` be the uniform signed component width. Each +original numeric record contains `r>=1` complex coefficient fields. Each field +has `h` real bits then a component delimiter, and `h` imaginary bits then a +component delimiter. The bits are little-endian two's-complement integers on +one fixed common grid supplied by the caller. Each virtual bit or delimiter +is encoded by the current three-bit code, so + +``` +b=6*r*(h+1), row_bits=2^a*b, V=C*2^a*b. +``` + +The delimiter is virtual symbol 2, physically `010`. A numeric zero component +therefore retains its delimiter; it is not an unformatted run of physical zeros. +Virtual blank 4 is the stream frontier, while physical blank is symbol 6. +No internal physical blank is admitted inside a canonical complete field. + +The required geometry is + +``` +outer,rows,f,K,G,H > 0, 0<=rho L*x_j+v` in each column, and applies `i^P(x)` to every one +of the `r` original complex coefficients. All other address coordinates, +outer-row labels, coefficient ordering, common quantum, and descriptor values +are preserved. The inverse recovers the original address first and applies +`i^-P(x)` there. No precision conversion or rounding occurs. + +## 3. Encoded geometry and the suffix-fibre identity + +Set `s=a-z-t>=0`. The last `s` unselected address bits are a complete consecutive +suffix fibre. Interpret its `2^s` original records as additional coefficient +fields of a single old-format record: + +``` +r'=2^s*r, R=2*h*r', a'=a-s=z+t, +M0=2^a', M=C*M0, v0=M0*R, Vraw=C*v0=C*2^a*2*h*r. +``` + +For `h>=2`, `Vraw/V=h/(3(h+1))` lies between `2/9` and `1/3`, so raw +and current physical payload volumes differ by a bounded constant factor. + +The old field schema is fixed at construction: + +| Field | Width | Current interval | +|---|---:|---| +| `u` | `t` | first front prefix | +| `u_rest` | `H-t` | remainder of first front field | +| `t` | `t` | second front prefix | +| `t_rest` | `H-t` | remainder of second front field | +| `before` | `u-2H` | all positions before the vector blocks | +| `v_i`, each `0<=i1` set + +``` +delta=min(1,(f-1)*(2*2^(-G)+8*2^(G-K))). +``` + +The completed binary ordinary bill `T_B(v,beta)` includes real padding and +restriction, its native work, borrowed preservation, return consumption and +cleanup. #3087 and #3055 give the unchanged old-symbol invoice + +``` +T_old <= S*sum_(j=1)^C T_B(v0,(f-1)G) + + O_(m)((g+1)*(Vraw+M*A^6) + +g*delta*M*A*(R+A)). (1) +``` + +There are actually `S*C` ordinary calls. At `f=1` there are no ordinary calls +or exceptional term; retain `O_m((g+1)*Vraw+M*A^6)`. The phase-only recipe has +`g=0` and still pays its complete coefficient scan and setup. No fixture timing +is used to derive (1). + +The new wrapper incurs no per-payload-bit long length scan. Ripple counter +initialization and decrements for an h-bit component cost `O(h)` in aggregate, +and each current symbol is visited a bounded number of times by the bridge +and guide. Hence signed format conversion costs `O(V)`. The first component +width scan costs `O(h)` and is included in this bound. Since a valid header's +`row_bits` value has at least `a+log2(b)` digits, and `h<=b`, all one-time +geometry arithmetic has operand lengths `O_m(E+1)`. Repeated doublings build +`2^a` and `2^s` in polynomial time in E. A conservative envelope for the fixed +number of products, divisions, comparisons and such loops is `O_m((E+1)^4)`. + +Let `Z=sum_i z_i` denote **this call's** sum of reached old-symbol extents over +all work, setup, bridge and parking roles. A complete current-physical bill is + +``` +T_current <= F_template + C_codec*T_old + + C_m*(V+(E+1)^4+Q) + 64*(Z+Q). (2) +``` + +The fixed `C_codec` covers the whole guarded source-control refinement, +including local head and parking checks; it is not inferred solely from the +constant for one read/write/move. The explicit last term pays current raw +retirement, including encoded blanks and origin work. Every reached symbol +costs a unit move or initialization in this call, so +`Z=O(T_old+V+(E+1)^4+Q)`. Substitution gives the shape of (1), with a fixed +codec factor and the displayed new setup/conversion bill. In contrast to +#3087's specialized f=1 unused-G observation, this adapter reads the complete +current descriptor and charges its E even when a field is unused. + +For occupied workspace, keep the inherited conservative monomial allowance + +``` +6*Vraw+2*delta*M*a'+M+O_m(A+log(C+1)) + +W_B(v0,(f-1)G)+F_native, +``` + +with ordinary and exceptional terms omitted at f=1. Add the borrowed current +field V, header E, setup/header guides `O(E+A)`, and the current field guide +`O(V)`, multiply old-symbol owned extents by twelve, and include the fixed +parking roles. For fresh backing also retain each inherited parent role's +maximum `O(Vraw+A+log(C+1))`, each Compact role's maximum +`O(v0+delta*M0*a'+A+log(C+1))`, protected output, and the actual ordinary +supplier's per-role allowance. Fixed role capacities are genuine constants. +For reuse use the historical maxima in Section 5 rather than fresh size alone. + +A favorable production specialization must state its hypotheses. If `H=dG`, +`m>=2`, and `mf+remainder<=d`, then `f<=d/2` and + +``` +s>=H-(f-1)G>=dG/2, +R=2*h*r*2^s >= 2*h*r*2^(dG/2). +``` + +For m=1 this automatic inequality is unavailable; long-record growth remains +an explicit extra domain premise. In a root regime with `d->infinity`, +`G=4ceil(log2 p)+6`, `A=O(p)`, and `E=O_m(p+log(C+1))`, R exceeds every fixed +power of p. The selected schedule's `K=128G` satisfies the sufficient retained +guard inequality `K>=G+4ceil(log2 p)+10`, giving `delta=O(p^-3)` for `f<=p`. +Then `M*A^6/Vraw=A^6/R` and +`delta*M*A*(R+A)/Vraw=delta*A*(1+A/R)` are bounded by the claimed lower order +terms. The E-polynomial is absorbed using superpolynomial R and +`log(C+1)^k=O_k(C)` for each fixed k. These are additional stated domain +conditions, not consequences of an arbitrary valid finite header. + +If the admitted ordinary supplier has `T_B(v,beta)<=K_q*v*(1+beta^tau_B)`, +the favorable specialization is +`O_(q,m)(V*(1+((f-1)G)^tau_B))`. The retained historical exponent is +`tau_B=99830289/100000000`. It does not imply the smaller current selected +node exponent. Equations (1) and (2), the source supplier premises, and the +backing envelopes remain the complete all-size statement; no new kappa is +claimed. + +## 7. One actual selected source boundary + +`selected_service.py` authenticates the current selected word and canonical +Clifford source. It locates raw event 9896, +`["MOVE",236,3,7,false]`, through the current lifecycle `current_local` lowering. +The exact service token is `("move-in","local",9896,raw_record)` on owner +236, with the matching `move-out` cut. This raw four-field token is the +established source boundary. The guard also accepts a syntactically flat prefix +before that tuple, but this optional flat-prefix ABI is **not** the nested +token emitted by `source_ir.remap`. The actual `caller-local` token contains +the old token as its last tuple member, and is not accepted by this binder. +An enclosing caller therefore still needs a separate typed token adapter; +no complete nested caller-occurrence binding is claimed. The physical owner is +bound explicitly through the event's field list; it is not an implicit global +array reference. + +The event token alone does not normalize the enclosing occurrence's header. +At this boundary the caller must expose the nine current vector blocks and +their span with `selected_axes=9*f+remainder`, in the coordinates admitted in +Section 2. A larger compiler occurrence needs its existing paid placement and +descriptor service to establish this premise, in addition to the token adapter +above. Matching a raw token or flat suffix is not a proof of that geometry. + +The literal comes from the authenticated canonical frame transition 3 to 7. +The existing #6930 audit supplies the width-one phase interpretation. Its +right monomial has constant 1 and the exact rows + +``` +matrix=(21,17,2,20,8,32,64,128,256), offset=1, +linear=(3,0,3,0,2,0,0,0,0), quadratic=(5,0,5,0,0,0,0,0,0). +``` + +The resulting record hash and complete left literal are in `SELECTED-MOVE.json`. +`Service` compiles the right monomial at `move-in`, and the left at `move-out`. +The intermediate rank-one Fourier child is outside this contribution. This +is not a new primary-phase audit, and not a numerical proof of the full MOVE. + +Four selected physical phase-control calls use the actual 23-field descriptor, +native recipe, and codec with f=2,3,4. The zero-column f=2 case produces phase2, +not a copied one-column phase1. A wrong residue and wrong frame token are +discriminating negative controls. These execute the actual selected control +interface but do not materialize its complete rank-nine packet. The all-size +endpoint follows from Sections 2-5 and inherited monomial correctness; the +finite evidence cannot replace those arguments. + +## 8. Evidence, limits, and remaining work + +The author fixture uses a separately coded signed/address endpoint oracle and +complete current physical packets. It covers f=1 with nontrivial K/rho +orientation, f=2 forward and inverse with real Compact/ordinary calls, all +coefficient fields, multiple outer/inner rows, dirty spectators, folded suffix +fibres, nonzero translated origins, later-field signed-headroom rejection and +valid retry, and historical backing reuse. Both normal and optimized Python +must reproduce the same exact action and endpoint receipts. It uses the actual +ordinary elementary branch, never an oracle supplied to the numerical engine. +Independent review is registered separately when its receipt is frozen. + +The selected rank-nine complete packet is not executed. These tests admit +neither the retained faster ordinary rate nor the selected native exponent. +The current placement/row service, actual complete numerical caller, flat-table +export, global width/headroom allocation, full selected recurrence budget, +coefficient arithmetic and analytic recovery remain outside this scoped join. +All five selected framework assumptions remain listed in the receipt. + +## Open next questions + +1. Export the bounded current adapter control into the lifecycle controller's + literal transition-table syntax. First preserve this exact complete-format + endpoint and signed-error boundary on one occurrence; the existing semantic + service token alone is not a machine table. +2. Supply a completed binary ordinary service at the current required rate, + or a different full invoice. Its source preservation, private cleanup and + output consumption must accompany the rate; this adapter cannot upgrade + the historical exponent. +3. Join the current numerical caller's width/common-grid allocation to these + phase-specific headroom conditions and to the paid rank-one child between + the two MOVE monomials. The first useful check is a complete small actual + caller occurrence with its live descriptor and suspended private bank. diff --git a/research/current-rounded-lambda/vendor/serial/vendor/monomial/README.md b/research/current-rounded-lambda/vendor/serial/vendor/monomial/README.md new file mode 100644 index 0000000000..28d2611cd3 --- /dev/null +++ b/research/current-rounded-lambda/vendor/serial/vendor/monomial/README.md @@ -0,0 +1,179 @@ +# Current signed-format Gaussian monomial + +Prepared for **@CubeJerry**, with substantial OpenAI assistance in source +analysis, mathematics, implementation, verification and prose. Apache-2.0. + +This package connects the retained physical Gaussian monomial to the current +numeric field and twenty-three-field descriptor. It reads the actual coded +signed components, preserves every coefficient and delimiter, builds the +native layout with encoded arithmetic, executes the unchanged phase/affine +engine, and returns the complete field with blank private current segments. + +The result is a **source-level finite-control, fixed-inventory refinement** +under explicit completed ordinary-supplier and physical-port contracts. It is +not a new phase identity, a flat lifecycle transition table, a complete selected +replay, or a new kappa. The quantified endpoint and all-size invoice are in +[PROOF.md](PROOF.md). + +## The actual interface that is closed + +A current numeric component consists of fixed-width signed little-endian bits +followed by virtual delimiter 2, all in the three-physical-bit `CodedPort` code. +For `r` complex coefficient fields of width `h`, a complete original record +contains `6*r*(h+1)` physical bits. Treating those encoded bytes as the old +engine's signed bits would be incorrect. + +`phase_adapter.py` strips only the component delimiters, preserving all signed +bits, and reconstructs the exact current format after the whole native call +returns. It changes no common quantum and rounds no coefficient. A lockstep +guide restores the public head and checks the exact complete return frontier. +Every original coefficient receives the same prescribed address phase. + +The descriptor supplies arbitrary positive outer and row counts, current +within-row coordinates, selected width and residue, complete row/record +lengths, and reserved front/back intervals. These stay as encoded Counts. The +adapter maps the current left-counted residue to the native low-bit position +`K-1-rho` and groups a complete untouched suffix of `s` address bits into +`2^s*r` native coefficient fields. This preserves every suffix fibre and the +long-record cost advantage without a hidden field permutation. + +Successful return preserves all 23 descriptor values and caller ancestors, +restores origins, consumes the protected child output, and physically erases +every owned current segment. On the named signed-headroom error for otherwise +valid input, the public field is unchanged and the same inventory permits a +valid retry. No arbitrary-malformation or interruption rollback is claimed. + +## Actual selected source binding + +`selected_service.py` binds event 9896 of the authenticated selected #6030 +word, `MOVE` on owner 236 from frame 3 to frame 7. It obtains the literal from +the canonical Clifford source and connects the raw `current_local` +`move-in`/`move-out` token to its right/left monomial. Its right constant phase +is 1. The optional flat-prefix guard does not accept `source_ir.remap`'s actual +nested caller token. A separate typed token adapter is still required before +using this binder inside that enclosing caller; no full caller-occurrence +binding is claimed. + +The width-one primary phase audit belongs to +[#6930](https://github.com/CrocSwap/integer-mult-bounds/pull/6930), and the +all-width convention belongs to +[#6293](https://github.com/CrocSwap/integer-mult-bounds/pull/6293). This package +executes four actual current-context phase-control cases with f=2,3,4, including +the f=2 zero-column phase2. It rejects a wrong source frame, and discriminates +an unconverted residue and a copied width-one constant. It does **not** execute +the complete rank-nine selected packet or the intervening paid Fourier child. + +The caller must also expose the normalized nine-vector active span and matching +header at this service cut. Inside a larger compiled occurrence, that remains +the paid placement/descriptor service's contract. Matching the raw token alone +does not establish this geometry. + +## Complete cost, including its limit + +Write `a=within_bits`, `z=back_start`, `t=(f-1)G`, `s=a-z-t`, +`C=outer*rows`, and + +``` +a'=z+t, R=2*h*r*2^s, M=C*2^a', v0=2^a'*R, Vraw=C*v0, +A=2+a'+ceil(log2(R+1)), +delta=min(1,(f-1)*(2*2^(-G)+8*2^(G-K))). +``` + +For the fixed affine word let `g_E` count early XOR/toggle gates and `g_L` late +XOR gates, with `g=g_E+g_L` and `S=4g_E+12g_L`. The inherited complete invoice +for f>1 remains + +``` +T_old <= S*sum_(j=1)^C T_B(v0,(f-1)G) + + O_m((g+1)*(Vraw+M*A^6)+g*delta*M*A*(R+A)). +``` + +There are `S*C` actual ordinary calls. The new wrapper pays a fixed whole-source +codec factor, linear current-format conversion, `O_m((E+1)^4)` encoded setup, +positive fixed construction/inventory cost, and explicit retirement of this +call's reached extent. Here E is the physical descriptor length; even unused +large descriptors are charged. At f=1 the ordinary/exceptional terms disappear, +while the complete phase, setup and format traversals remain. + +The proof keeps the completed ordinary workspace and each role's historical +backing maximum. Erasure does not shrink backing. A smaller later call stops +at its own fresh physical frontier and need not rescan the previous maximum. + +A favorable long-record regime can absorb setup and repair overhead. In the +production geometry `H=dG`, fixed rank m>=2 gives `f<=d/2` and an exponentially +long unselected suffix. For m=1, that growth is an explicit extra premise. +All finite-size invoices remain valid without that absorption. The inherited +ordinary exponent `99830289/100000000` does **not** establish the smaller +current selected node exponent. No selected `.0034` rate or new kappa follows. + +## Executed evidence + +The complete normal and optimized replay must produce the same exact +[RESULT.json](RESULT.json), including physical action counts and cleanup. +The ordinary child uses its actual q2 elementary branch; this is not a +faster-rate certificate. No oracle supplies an engine payload. + +| Complete physical case | Original records | Coefficients per record | Ordinary calls | Physical actions | +|---|---:|---:|---:|---:| +| f=1, K=2, signed phase and affine map | 128 | 2 | 0 | 61,104,394 | +| f=2 forward monomial | 128 | 2 | 4 | 612,628,846 | +| f=2 inverse monomial | 128 | 2 | 4 | 612,628,846 | +| f=2 phase, two outer by two inner rows | 512 | 3 | 0 | 368,463,951 | + +Every fixture checks the complete independently computed signed/address +endpoint, exact field frontier, unchanged context, restored heads, physically +blank historical work bodies, and untouched ancestor bytes. A late coefficient +headroom failure preserves input and allows a valid retry. A smaller reused +phase call and a fresh one both take 12,536,555 actions; the reused one retains +294,704 cells, compared with 67,952 fresh cells. + +The separate sparse-hardware review uses its own serialization and value oracle +and covers both residue orientations, non-power-of-two row count, all folded +coefficient fields, inverse recovery, admissible signed minima, and late +rejection followed by retry. Its exact scope and provenance are recorded in +[VERIFICATION.md](VERIFICATION.md). None of these fixtures independently +reproves the retained monomial or ordinary theorem. + +## Replay and exact sources + +Use Python 3.12 and the standard library. From the repository root: + +```sh +python3 -I -B research/current-coded-gaussian-monomial/verify.py +python3 -I -O -B research/current-coded-gaussian-monomial/verify.py +python3 -B scripts/research_package.py --package research/current-coded-gaussian-monomial --check-only +``` + +The package-local closure is authenticated by both Git blob and SHA256 hashes +in `DEPENDENCIES.json`. The current shared codec/header export is pinned at +[CubeJerry/integer-mult-bounds@5629e777](https://github.com/CubeJerry/integer-mult-bounds/tree/5629e7772d1720d6727465e328a45694f8620538/research/compiled-compact-native-binding). +The original #3087 computational files are unchanged. Their discovery shim +selects the shared authenticated native vocabulary; it does not execute or +admit the old full selected theorem. Replay needs no network or external files. + +Canonical provenance in `SOURCES.json` stays at +`7c49fe32c55de02c2c873655c804b16e4c3fef0a`. Selected kappa remains +`781451/250000000`, and all five assumptions remain explicit: +`native_all_columns`, `owned_erasure`, `compiler`, `precision_tape`, and +`analytic_recovery`. + +Credit for the retained physical Gaussian monomial and its phase implementation +belongs to Jose Manuel (`jmbarrancoml`) and predecessors +[#3087](https://github.com/CrocSwap/integer-mult-bounds/pull/3087), #3055, #2250, +#2378 and #2422. The older prepared common-grid binding by Chris R +(`Clear1nsight`) is [#4129](https://github.com/CrocSwap/integer-mult-bounds/pull/4129). +The current codec, lifecycle and row exports retain their own attribution and +the unchanged runtime NOTICE files. No independent human review or proof-kernel +admission is claimed. + +## Open next questions + +1. Export this bounded source control into the actual lifecycle transition + table format, starting with one current MOVE occurrence and preserving its + full format, origin and named-error contracts. +2. Bind a completed ordinary supplier at the selected tariff, with its actual + padding, time, return, cleanup and retained-backing premises. An interface + adapter cannot strengthen the inherited exponent. +3. Join the real caller's common-grid/headroom allocation and the intervening + paid Fourier child. The next useful complete fixture is a small actual + caller occurrence with its live descriptor and suspended private bank. diff --git a/research/current-rounded-lambda/vendor/serial/vendor/monomial/SOURCES.json b/research/current-rounded-lambda/vendor/serial/vendor/monomial/SOURCES.json new file mode 100644 index 0000000000..43555e2f27 --- /dev/null +++ b/research/current-rounded-lambda/vendor/serial/vendor/monomial/SOURCES.json @@ -0,0 +1,162 @@ +{ + "schema_version": 1, + "base_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "d59b5035e7b4cbaa9d688a1d32dd0d6eb79c466a", + "sha256": "9b8d0eea95b3bf0dfcb7938a732a6439b87a2685dec2a5ab9e525b3b34debbfa" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81" + }, + { + "path": "research/lockstep-completion-pass/executor.py", + "usage": "provenance", + "git_blob": "9469443a3d7cc6310a7369daf77c7756d5bd3f38", + "sha256": "0bda14a3e5f4da348cd5c89ebe29d717e7a5406ec31b164d5b9e1d25f7f38e0e" + }, + { + "path": "research/p104-6030-deferred-layer/PROOF.md", + "usage": "provenance", + "git_blob": "de725a73e97496836100aa6e0ed9cd70985373da", + "sha256": "3a7ac6dae3b76d5f78849f521635da034fe99b1ea6c942175a3652b53f6262c2" + }, + { + "path": "research/p104-helper470-twin-rung-removal/RESULT.json", + "usage": "provenance", + "git_blob": "e4a03118d585fb80c9ac932281b528ac394ccc5f", + "sha256": "84fcbe2a0b64307b5703c363408042bdd91555b0419509aa50daa43b3b1924ad" + }, + { + "path": "research/p104-helper470-twin-rung-removal/WORD.json.gz", + "usage": "provenance", + "git_blob": "22f9ab02d1b73ea0aa4b07ce445a14cc2602c760", + "sha256": "7834725d9e34ee846a9ccc615221ea81e0201613938afa185d2eda0c9a6c232f" + }, + { + "path": "research/p104-native-channel/vendor/clifford_exact.py", + "usage": "provenance", + "git_blob": "166841a037f069249f6f7f6dedb89248812f59e2", + "sha256": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962" + }, + { + "path": "research/p104-native-channel/vendor/native_verify.py", + "usage": "provenance", + "git_blob": "2c209dfa9cfade3bc20ac5fc9d876b433a147f8c", + "sha256": "3049471905b47b385c88378a1a3be7a18b8858aadd035b8a6da2f4a03b470f38" + }, + { + "path": "research/physical-complex-compact/PROOF.md", + "usage": "provenance", + "git_blob": "f65f38123ca0adb02f6ca69351cbfc933506e5cb", + "sha256": "ec6395822ae500242f3fe5e2cf40caf9a7f9fa259d475d2c14970d951ff4df48" + }, + { + "path": "research/physical-complex-compact/compact_control.py", + "usage": "provenance", + "git_blob": "13af719b5844f14f5cf05c919e84204cd21caf6a", + "sha256": "73a9ace4f91aeb383fdbc6f7762498fe707b4e4b45b1c63920bb90cc8795e284" + }, + { + "path": "research/physical-complex-compact/compact_counts.py", + "usage": "provenance", + "git_blob": "064b508efd12f7d5a33729b2344b6890f0c75d2f", + "sha256": "71c19cfc186aaf0c159ec64ea1a5d58e1fc5fc093d50c7360247559261fad00d" + }, + { + "path": "research/physical-complex-compact/compact_engine.py", + "usage": "provenance", + "git_blob": "5c5ca75567f85b042c156e0ed5a8afe81671b1b8", + "sha256": "2cacff4d36a6e029add115f47cd8ffbf3c61e7ece0900308b98e6032e652f098" + }, + { + "path": "research/physical-complex-compact/compact_layout.py", + "usage": "provenance", + "git_blob": "03ca12aed77741f40d824fcb33cc4eedb85abfd9", + "sha256": "5be2be9c32c15742da18fde438a5559a45a86eb661105027b1b233a7c397e0ce" + }, + { + "path": "research/physical-complex-compact/compact_streams.py", + "usage": "provenance", + "git_blob": "5699cc7f20def3bc873d2da05b13a252246367a1", + "sha256": "3b5cce3be9763c6bd7803d6223d2784d1975eeac6c7c99f5e00dfc49bb11d249" + }, + { + "path": "research/physical-complex-compact/native_sources.py", + "usage": "provenance", + "git_blob": "3d2834c5fff39481c9a0442a514c10eaf50f98d2", + "sha256": "865c97c4f261fde37e86eb16a910eaa5b2f26daaa7d2648ae0322ba8c0286572" + }, + { + "path": "research/physical-gaussian-monomial/PROOF.md", + "usage": "provenance", + "git_blob": "82e9a8b0b50f26844528af9e07632800679805ea", + "sha256": "20885a8a137fc670121429625912ceae54db95ac5e574b8c64c90f477aebacb7" + }, + { + "path": "research/physical-gaussian-monomial/SOURCES.json", + "usage": "provenance", + "git_blob": "e040a558800e719e2d8b6237bec39e7e10a3641b", + "sha256": "0dd57a4fe4fc97826df0eb215975d013ac0e18f185c73cd93e34c95a9a2b4b16" + }, + { + "path": "research/physical-gaussian-monomial/monomial_engine.py", + "usage": "provenance", + "git_blob": "2251fd98ba01a171f5d39b25a93c895245f10e55", + "sha256": "fc02c6c5159d6c258063a36ef3dc9313a34d7ba9781b650e451cc0ce971e9667" + }, + { + "path": "research/physical-gaussian-monomial/pair_dispatch.py", + "usage": "provenance", + "git_blob": "0e467bdb3727d7f354f98dee54f320f1f072aa2c", + "sha256": "fc0eaa2a9d0855660b15a15d894137eeebc64c6418f52b6af0d0f79d86f2e0d9" + }, + { + "path": "research/physical-gaussian-monomial/phase_recipe.py", + "usage": "provenance", + "git_blob": "a2f684fb588257cc182dc88dded59ed70f5c2585", + "sha256": "8215e5e55daf019694e55b2acfcd42ecf109a2faf767a2181d664ba9b4957e46" + }, + { + "path": "research/physical-gaussian-monomial/phase_sources.py", + "usage": "provenance", + "git_blob": "aaa5c663a4bb6b0ca4d9119c1ae92064509d79c8", + "sha256": "3944ecbffe91fb561b2b8a810461cd2b8229f1f2611ca6a70e3d86451efb220b" + }, + { + "path": "research/physical-gaussian-monomial/signed_phase.py", + "usage": "provenance", + "git_blob": "bab32b0c5da7f364d6a79171c09b02d123a05bd9", + "sha256": "e21818674133a2bd7e63fadaf719eb45ce80db4b3806ca8ef99c247be22c2a39" + }, + { + "path": "research/qq16-recursive-binding/PROOF.md", + "usage": "provenance", + "git_blob": "5de56af0213bf710ae3e832f21de74cf0ac9c7b0", + "sha256": "b547277ab5380b218893908a3e8e8874efc0cf3f9717b582f8972698d87418a2" + }, + { + "path": "research/selected-complex-compact-adapters/monomial.py", + "usage": "provenance", + "git_blob": "5fa4494167c4ba668993a2b1c902969518728a4c", + "sha256": "394f9a465ac9148af0c20844d375e4befbef17d92b2fcc840d83419480dd4740" + }, + { + "path": "research/selected-monomial-tape-lift/PROOF.md", + "usage": "provenance", + "git_blob": "69e07e58c5468e2045281335a56f4918b474c79d", + "sha256": "8442243130d4a9932f78eb42419196d2866d4496256e3bb2d6143fd52b44ddb3" + }, + { + "path": "research/selected-monomial-tape-lift/lift.py", + "usage": "provenance", + "git_blob": "167d085a9191e3b3545bcf39d5e6edc94e54d514", + "sha256": "21c77119c004a86a603cca91ce1366629431db18e9e0554942492f1b5afebe4a" + } + ] +} diff --git a/research/current-rounded-lambda/vendor/serial/vendor/monomial/TASK.json b/research/current-rounded-lambda/vendor/serial/vendor/monomial/TASK.json new file mode 100644 index 0000000000..4ab3215b61 --- /dev/null +++ b/research/current-rounded-lambda/vendor/serial/vendor/monomial/TASK.json @@ -0,0 +1,93 @@ +{ + "schema_version": 1, + "task_id": "uniform-transfer-audit", + "base_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_card": { + "id": "uniform-transfer-audit", + "question": "Can one of the selected record's five inherited assumptions be proved at its actual caller?", + "starting_points": [ + "docs/research/current-priorities.md", + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md" + ], + "methods": [ + "Construct and independently check one source-bound instance of the stated first experiment.", + "Seek an exact counterexample or target-specific complete-budget obstruction to that same proposed change." + ], + "acceptance_gate": "Identify the proposition and what would change downstream; do not equate a finite replay with a universal proof.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_selected_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read revision 8, the selected review and live exact-source handoffs. Then follow this card's bounded first_experiment.", + "scope": "Source-bound orientation only, not a supplier replay or theorem proof." + }, + "first_experiment": "Choose one assumption ID (native_all_columns, owned_erasure, compiler, precision_tape, analytic_recovery), one quantified implication and exact dependency closure. Check current handoffs, including #5625 row reentry and #5707 root-prefix lowering, without treating their partial scope as the whole theorem. Prove or falsify that implication with a caller-bound argument; stop at the chosen obligation. Finite tests or root digits do not discharge an all-size statement.", + "bottleneck_link": "Judge the actual current supplier contract and complete signed target/paid bill; frozen-profile ceilings require an applicability proof.", + "allowed_variations": [ + "One exact source head, helper/cut region or quantified proposition and changed hypothesis; check live handoffs first. Different seeds are not different scopes." + ], + "scope_change_triggers": [ + "Changing source head, helper/cut domain, operation alphabet or caller boundary without recording the new scope.", + "Treating an archived proposal or local numerical pass as complete supplier admission." + ], + "overlap_terms": [ + "native_all_columns", + "owned_erasure", + "compiler", + "precision_tape", + "analytic_recovery" + ], + "existing_checks": [ + { + "scope": "PR #4100: proposed unconditional construction and finite checks, without independent acceptance.", + "evidence": "research/unconditional-batched-crt/README.md", + "remaining": "Independent proof audit of one caller-bound all-size implication; all other premises remain explicit.", + "status": "author-checked", + "source_commit": "337d04939571a637aeab54a0f58f54fde811663a", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "scope": "Selected PR5599: complete helper-subspace construction and independent caller replay; five framework assumptions remain.", + "evidence": "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md", + "remaining": "The next experiment must identify uncovered source-specific work. Successor archive intake does not transfer this admission.", + "status": "reviewed", + "source_commit": "09dd0965711ca7eeb169057a420abab1c9052137", + "selected_record_sha256": "2a0220e866417774606e0f991e41b9c1d26b1f43b97857238cf478dbc7d330b5" + } + ] + }, + "scope_status": "refined", + "scope_change_reason": "Assigned seed24 current numerical/native interface: join the retained Gaussian monomial to current signed CodedPort fields, all coefficient fibres, and the 23-field context. Phase algebra and primary phase audit are inherited.", + "actual_scope": "Prove and physically verify the paid signed-format/context/suffix-fibre join to unchanged #3087, with complete successful and named headroom-rejection cleanup, honest time/backing costs, and one actual raw current_local MOVE source binding. The existing nested caller token and its normalized local header still require a separate adapter; no full caller-occurrence binding is claimed.", + "bottleneck_link": "Replaces the current-format Gaussian monomial service seam by a source-level fixed-control refinement. The completed ordinary tariff, current numerical width allocation and flat-table exporter remain explicit.", + "stop_rule": "Stop after the current-format signed monomial join, authenticated actual selected record, complete invoice and adversarial physical checks. Do not re-audit phase algebra, claim full selected replay, change kappa, or remove a foundational assumption.", + "evidence": "PROOF.md and exact normal/optimized RESULT.json; independent sparse-hardware review is separately registered.", + "author": "@CubeJerry", + "ai_assistance": "Substantial OpenAI assistance in research, proof development, implementation, tests and documentation; no independent human or proof-kernel admission claimed.", + "outcome": "completed", + "open_questions": [ + { + "question": "Export the current adapter into the literal lifecycle transition-table format.", + "why_it_matters": "The executed source refinement is not a Controller.execute_table native table.", + "first_step": "First adapt the existing nested caller token and establish its normalized local header; then flatten fixed codec, geometry and signed traversal controls while preserving complete field and headroom-return contracts.", + "blocked_by": "A source-equivalent table-format exporter." + }, + { + "question": "Bind an ordinary supplier at the current selected tariff.", + "why_it_matters": "The historical ordinary exponent remains too large for the selected node bound.", + "first_step": "Review a completed exact supplier with time, stock, return and retained-backing contracts on this interface.", + "blocked_by": "A stronger upper-bound implication, not monomial phase algebra." + }, + { + "question": "Join actual numerical headroom and the intervening paid Fourier child.", + "why_it_matters": "A complete MOVE needs both monomials and its paid child on a common live format.", + "first_step": "Run one small complete actual caller occurrence with current descriptor and suspended private bank.", + "blocked_by": "Current numerical width/common-grid allocation and remaining child services." + } + ] +} diff --git a/research/current-rounded-lambda/vendor/serial/vendor/monomial/check_fixture.py b/research/current-rounded-lambda/vendor/serial/vendor/monomial/check_fixture.py new file mode 100644 index 0000000000..1399f50d7b --- /dev/null +++ b/research/current-rounded-lambda/vendor/serial/vendor/monomial/check_fixture.py @@ -0,0 +1,187 @@ +"""Complete current-format physical packets and an independent address oracle. + +Prepared for @CubeJerry with substantial OpenAI assistance. Apache-2.0. +Fixture construction and observation may inspect arrays; the sealed call cannot. +""" +from argparse import ArgumentParser +import json +from types import SimpleNamespace +from phase_adapter import Provider, SCHEMA, S +from phase_binding import need +from codec import DenseTape +from ordinary import Ordinary +from macro_code import Code + + +def factory(): + return Ordinary(2, SimpleNamespace(codes=SimpleNamespace(q=2)), SimpleNamespace(families=0), + (Code((("unreachable",),), 0),), capacity=64) + + +def literal(affine=True): + return dict(matrix_rows=(1, 3) if affine else (1, 2), offset=0, + linear_Z4=(1, 2), quadratic_rows=(2, 0), phase=1) + + +def coded(symbols): + return [((value >> shift) & 1) for value in symbols for shift in (2, 1, 0)] + + +def header_bits(values): + result = [] + for name in SCHEMA: + digits = [int(bit) for bit in bin(values[name])[2:][::-1]] + result.extend([1] * len(digits) + [0] + digits) + return result + + +def load(tape, body): + tape.cells[tape.origin:] = bytearray(body) + tape.head, tape.high = tape.origin, tape.origin + len(body) + + +def body(tape): + out = [] + for value in tape.cells[tape.origin:]: + if value == 6: + break + out.append(value) + return out + + +def rotate(pair, phase): + a, b = pair + return ((a, b), (-b, a), (-a, -b), (b, -a))[phase % 4] + + +def endpoint(address, values, recipe): + f, K, rho, rank = values["f"], values["K"], values["rho"], len(recipe["matrix_rows"]) + bits, start = values["within_bits"], values["active_start"] + phase, destination = f * recipe["phase"], address + for j in range(f): + positions = [bits - 1 - (start + (i * f + j) * K + rho) for i in range(rank)] + column = sum(((address >> position) & 1) << i for i, position in enumerate(positions)) + phase += sum(recipe["linear_Z4"][i] for i in range(rank) if column >> i & 1) + phase += 2 * sum(1 for i in range(rank) for k in range(i + 1, rank) + if column >> i & 1 and column >> k & 1 and recipe["quadratic_rows"][i] >> k & 1) + result = recipe["offset"] ^ sum(((row & column).bit_count() % 2) << i + for i, row in enumerate(recipe["matrix_rows"])) + for i, position in enumerate(positions): + if ((column ^ result) >> i) & 1: + destination ^= 1 << position + return destination, phase % 4 + + +def encode(records, h): + out = [] + for record in records: + for pair in record: + for value in pair: + need(-(1 << (h - 1)) <= value < 1 << (h - 1), "checker signed component range") + out.extend(coded([(value >> bit) & 1 for bit in range(h)] + [2])) + return out + + +def fixture(recipe, *, f=1, K=1, rho=0, H=1, rows=1, outer=1, h=4, coefficients=2, + inverse=False, bad_field=False): + rank = len(recipe["matrix_rows"]) + e, a = rank * f, 3 * H + rank * f * K + b = 6 * coefficients * (h + 1) + values = dict(outer=outer, rows=rows, stock=1, row_bits=(1 << a) * b, within_bits=a, + record_bits=b, p=max(e, 2), d=e, K=K, G=1, H=H, q0=3, qF=0, qB=0, D=e, + f=f, rho=rho, active_start=2 * H, back_start=2 * H + e * K, + selected_axes=e, entry_start=2 * H, remainder=0, cutoff=rank) + total = outer * rows * (1 << a) + maximum = (1 << (h - 1)) - 1 + modulus = 2 * maximum + 1 + records = [tuple(((i + 3 * c) % modulus - maximum, + (i // modulus + 5 * c) % modulus - maximum) + for c in range(coefficients)) for i in range(total)] + expected = [None] * total + for row in range(outer * rows): + for address in range(1 << a): + destination, phase = endpoint(address, values, recipe) + source_index, target_index = ((row * (1 << a) + destination, row * (1 << a) + address) + if inverse else + (row * (1 << a) + address, row * (1 << a) + destination)) + expected[target_index] = tuple(rotate(pair, -phase if inverse else phase) + for pair in records[source_index]) + if bad_field: + need(not inverse, "this guard fixture uses the forward phase boundary") + bad = max(i for i in range(total) if endpoint(i % (1 << a), values, recipe)[1] == 1) + record = list(records[bad]) + record[-1] = (record[-1][0], -(1 << (h - 1))) + records[bad] = tuple(record) + return values, encode(records, h), encode(expected, h) + + +def run_case(*, reuse=None, return_state=False, affine=True, guard=False, **case): + recipe = literal(affine) + values, initial, expected = fixture(recipe, bad_field=guard, **case) + if reuse is None: + owner = Provider(recipe, factory, case.get("inverse", False)) + work = [DenseTape(3 + i % 5) for i in range(owner.port_count)] + field, context = DenseTape(9), DenseTape(11) + for tape in (*work, field, context): + for i in range(tape.origin - 1): + tape.cells[i] = i % 2 + owner.bind(work) + else: + owner, work, field, context = reuse + need(owner.inverse == case.get("inverse", False), "same compiled direction in reused owner") + load(field, initial) + encoded_header = header_bits(values) + load(context, encoded_header) + ancestors = [bytes(t.cells[:t.origin]) for t in (*work, field, context)] + before = sum(t.actions() for t in (*work, field, context)) + calls_before = dict(owner.engine.compact.calls) + rejected = False + try: + owner.run(S.abi.CodedPort(field), S.abi.BinaryContextPort(context)) + except S.phase.SignedHeadroomError: + rejected = True + need(rejected == guard, "expected phase-specific signed guard outcome") + need(body(field) == (initial if guard else expected), "independent full signed-record endpoint") + need(body(context) == encoded_header, "all 23 context fields preserved") + need(field.head == field.origin and context.head == context.origin, "public and context origin restoration") + need(all(t.head == t.origin and all(x == 6 for x in t.cells[t.origin:]) for t in work), + "all native historical bodies physically erased at current origins") + need(all(bytes(t.cells[:t.origin]) == original for t, original in zip((*work, field, context), ancestors)), + "ancestor bytes and local physical origins protected") + need(not owner.pool.live and owner.engine.closed and not owner.engine.pool.live + and owner.engine.compact.closed, "closed reusable owner and child scopes") + report = dict(case=case, affine=affine, signed_guard_rejected=rejected, + records=values["outer"] * values["rows"] * (1 << values["within_bits"]), + coefficients=case.get("coefficients", 2), physical_bits=len(initial), + physical_actions=sum(t.actions() for t in (*work, field, context)) - before, + native_ports=owner.port_count, retained_cells=sum(len(t.cells) for t in work), + compact_calls={key: value - calls_before[key] for key, value in owner.engine.compact.calls.items()}) + return (report, (owner, work, field, context)) if return_state else report + + +def main(): + parser = ArgumentParser() + parser.add_argument("case", choices=("single", "forward", "inverse", "phase", "guard", "reuse")) + args = parser.parse_args() + if args.case == "single": + result = run_case(f=1, K=2, rho=0) + elif args.case in ("forward", "inverse"): + result = run_case(f=2, K=1, inverse=args.case == "inverse") + elif args.case == "phase": + result = run_case(f=2, K=1, affine=False, outer=2, rows=2, coefficients=3) + elif args.case == "guard": + first, owner = run_case(guard=True, affine=False, coefficients=3, return_state=True) + second = run_case(reuse=owner, affine=False, coefficients=3) + result = dict(rejection=first, valid_retry=second) + else: + first, owner = run_case(H=2, affine=False, return_state=True) + second = run_case(H=1, affine=False, reuse=owner) + third = run_case(H=1, affine=False) + need(second["physical_actions"] == third["physical_actions"], "old backing does not increase a fresh short call") + need(second["retained_cells"] >= third["retained_cells"], "retained backing is honestly charged") + result = dict(large=first, reused_small=second, fresh_small=third) + print(json.dumps(result, sort_keys=True)) + + +if __name__ == "__main__": + main() diff --git a/research/current-rounded-lambda/vendor/serial/vendor/monomial/phase_adapter.py b/research/current-rounded-lambda/vendor/serial/vendor/monomial/phase_adapter.py new file mode 100644 index 0000000000..02f0fdc3ba --- /dev/null +++ b/research/current-rounded-lambda/vendor/serial/vendor/monomial/phase_adapter.py @@ -0,0 +1,213 @@ +"""Paid current signed-format and 23-field context join to unchanged #3087. + +Runtime shapes stay on encoded Count tapes. The complete untouched back suffix +is folded into additional coefficient fields, so every one receives its phase. +Prepared for @CubeJerry with substantial OpenAI assistance. Apache-2.0. +""" +from contextlib import ExitStack +from phase_binding import activate, need + +S = activate() +from cardinal_counts import Count, positive +from compact_counts import power_two +from encoded import compare, divide, subtract +from records import Tape +from scratch_pool import ScratchPool +from session import OuterScope, erase_marker +from stream import Counter +from codec import Cohort, collect_tapes, execution + +SCHEMA = S.provider.SCHEMA + + +def scale(value, multiplier): + need(type(multiplier) is int and multiplier >= 0, "fixed template multiplier") + if multiplier == 0: + return Count.literal(0) + out = Count(value) + if multiplier != 1: + out.multiply_small(multiplier) + return out + + +class Provider: + def __init__(self, literal, native_factory, inverse=False): + need(type(inverse) is bool, "compiled monomial direction") + self.rank = len(literal["matrix_rows"]) + need(1 <= self.rank <= 73, "fixed source monomial rank") + self.inverse = inverse + self.vectors = tuple("v" + str(i) for i in range(self.rank)) + self.names = ("u", "u_rest", "t", "t_rest", "before", *self.vectors, "after", "b") + with collect_tapes() as tapes: + native = native_factory() + need(type(native) is S.source.ordinary.Ordinary and native.observe is None + and native.runtime.observe is None, "same closed ordinary supplier without payload callback") + self.engine = S.engine.MonomialEngine(self.names, self.vectors, literal, native) + self.pool = ScratchPool(192) + self.scope = OuterScope(self.pool) + self.bridge, self.field_guide, self.header_guide, self.length_guide = (Tape() for _ in range(4)) + self.cohort = Cohort(tapes, native) + self.calls = 0 + + @property + def port_count(self): + return self.cohort.port_count + + def bind(self, work): + self.cohort.bind(work) + + def read_header(self, context): + return S.provider.Provider.read_header(self, context) + + def component_width(self, field): + """Read only the first component's format length, never its integer.""" + width = Count.literal(0) + while field.read() in (0, 1): + width.increment() + field.move(1) + need(field.read() == 2, "first canonical signed component terminator") + remaining = Counter(width) + try: + while not remaining.finished: + field.move(-1) + remaining.decrement() + finally: + remaining.close() + return width + + def prepare(self, header, h, cleanup): + def own(value): + cleanup.callback(value.close) + return value + for name in ("outer", "rows", "row_bits", "record_bits", "f", "K", "G", "H"): + positive(header[name]) + one, two = own(Count.literal(1)), own(Count.literal(2)) + need(compare(h, two) >= 0 and compare(header["rho"], header["K"]) < 0, + "signed width and selected current residue") + n = own(subtract(header["f"], one)) + compact = own(Count.product(n, header["G"])) + rest = own(subtract(header["H"], compact)) + twice_H = own(scale(header["H"], 2)) + before = own(subtract(header["active_start"], twice_H)) + chunk = own(Count.product(header["f"], header["K"])) + active_end = own(scale(chunk, self.rank)) + active_end.add(header["active_start"]) + after = own(subtract(header["back_start"], active_end)) + tail = own(subtract(header["within_bits"], header["back_start"])) + need(compare(tail, header["H"]) >= 0, "entire current back reservation") + suffix = own(subtract(tail, compact)) + fibre = own(power_two(suffix)) + top = own(subtract(header["K"], one)) + rho = own(subtract(top, header["rho"])) + selected = own(scale(header["f"], self.rank)) + selected.add(header["remainder"]) + rank = own(Count.literal(self.rank)) + need(compare(selected, header["selected_axes"]) == 0 + and compare(header["remainder"], rank) < 0 + and compare(header["selected_axes"], header["d"]) <= 0, + "current active width, fixed rank and untouched ordinary remainder") + complete = own(power_two(header["within_bits"])) + expected = own(Count.product(complete, header["record_bits"])) + need(compare(expected, header["row_bits"]) == 0, "exact complete current physical row") + pair_codes = own(Count(h)) + pair_codes.increment() + pair_codes.multiply_small(6) + base_coefficients, remainder = divide(header["record_bits"], pair_codes) + own(base_coefficients); own(remainder) + need(remainder.zero(), "record_bits equals 6 r (h+1)") + positive(base_coefficients) + coefficients = own(Count.product(base_coefficients, fibre)) + rows = own(Count.product(header["outer"], header["rows"])) + widths = (compact, rest, compact, rest, before, + *(chunk for _ in self.vectors), after, compact) + return widths, rho, coefficients, rows + + def rewind_field(self, field): + self.field_guide.rewind() + while self.field_guide.read() != 4: + need(self.field_guide.read() == 1, "complete current field guide") + field.move(-1) + self.field_guide.step(1) + self.field_guide.rewind() + + def import_field(self, field, h): + """Strip actual component delimiters, preserving every signed bit.""" + while field.read() != 4: + for _ in (0, 1): + remaining = Counter(h) + try: + while not remaining.finished: + value = field.read() + need(value in (0, 1), "uniform complete signed component") + self.bridge.append(value) + self.field_guide.append(1) + field.move(1) + remaining.decrement() + finally: + remaining.close() + need(field.read() == 2, "exact signed component delimiter") + self.field_guide.append(1) + field.move(1) + self.bridge.rewind() + self.rewind_field(field) + + def export_field(self, field, returned, h): + """Reinsert the exact complete format at the unchanged common grid.""" + returned.rewind() + self.field_guide.rewind() + while returned.read() != 4: + for _ in (0, 1): + remaining = Counter(h) + try: + while not remaining.finished: + value = returned.read() + need(value in (0, 1) and field.read() in (0, 1) + and self.field_guide.read() == 1, "exact returned signed component") + field.write(value) + field.move(1) + returned.step(1) + self.field_guide.step(1) + remaining.decrement() + finally: + remaining.close() + need(field.read() == 2 and self.field_guide.read() == 1, + "same complete signed component boundary") + field.write(2) + field.move(1) + self.field_guide.step(1) + need(field.read() == self.field_guide.read() == 4, "exact full-format return frontier") + self.rewind_field(field) + self.field_guide.clear() + returned.rewind() + + def run(self, field, context): + """Current CodedPort field and BinaryContextPort at their local origins. + + SignedHeadroomError preserves field and context and allows a valid + retry. The all-size theorem concerns valid format and descriptors; + arbitrary malformed/interrupted execution has no rollback claim. + """ + need(self.cohort.ports is not None and field.tape is not context.tape + and all(field.tape is not port and context.tape is not port for port in self.cohort.ports), + "distinct public/current-context and private physical segments") + self.cohort.start() + try: + with execution(), self.scope.installed(), ExitStack() as cleanup: + header = self.read_header(context) + for value in header.values(): + cleanup.callback(value.close) + h = self.component_width(field) + cleanup.callback(h.close) + widths, rho, coefficients, rows = self.prepare(header, h, cleanup) + self.import_field(field, h) + with self.scope.suspended(): + returned = self.engine.run(self.bridge, widths, header["f"], header["K"], + header["G"], rho, h, coefficients, rows, self.inverse) + self.export_field(field, returned, h) + returned.clear() + erase_marker(returned) + self.bridge.clear() + self.pool.empty() + self.calls += 1 + finally: + self.cohort.finish() diff --git a/research/current-rounded-lambda/vendor/serial/vendor/monomial/phase_binding.py b/research/current-rounded-lambda/vendor/serial/vendor/monomial/phase_binding.py new file mode 100644 index 0000000000..7f51953eb9 --- /dev/null +++ b/research/current-rounded-lambda/vendor/serial/vendor/monomial/phase_binding.py @@ -0,0 +1,80 @@ +"""Authenticate and bind unchanged #3087 to the current physical vocabulary. + +Only source discovery is replaced. All phase, signed-pair, monomial, Compact, +Count and Tape computational source bodies remain their pinned bytes. +Prepared for @CubeJerry with substantial OpenAI assistance. Apache-2.0. +""" +from hashlib import sha1, sha256 +import importlib.util +import json +from pathlib import Path, PurePosixPath +import sys +from types import ModuleType, SimpleNamespace + +HERE = Path(__file__).resolve().parent +_state = None + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def authenticate(root=HERE): + rows = json.loads((root / "DEPENDENCIES.json").read_text())["files"] + seen = set() + for row in rows: + name = PurePosixPath(row["path"]) + need(not name.is_absolute() and ".." not in name.parts and name.parts[0] == "vendor", + "regular relative frozen source path") + path = root / str(name) + need(str(name) not in seen and path.is_file() and not path.is_symlink(), + "unique regular frozen source") + seen.add(str(name)) + raw = path.read_bytes() + need(sha256(raw).hexdigest() == row["sha256"] + and sha1(b"blob " + str(len(raw)).encode() + b"\0" + raw).hexdigest() == row["git_blob"], + "unchanged source bytes: " + str(name)) + return len(rows) + + +def load(name, path): + need(name not in sys.modules, "cold phase source module " + name) + spec = importlib.util.spec_from_file_location(name, path) + module = importlib.util.module_from_spec(spec) + sys.modules[name] = module + exec(compile(Path(path).read_bytes(), str(path), "exec"), module.__dict__) + return module + + +def activate(): + global _state + if _state is not None: + return _state + authenticate() + binding, monomial = HERE / "vendor/binding", HERE / "vendor/monomial" + sys.path.insert(0, str(binding)) + base = load("binding_sources", binding / "binding_sources.py") + state = base.activate() + reference = sys.modules["compact_reference"] + need("compact" not in sys.modules and "phase_sources" not in sys.modules, + "cold shared monomial source namespace") + sys.modules["compact"] = reference + finite = load("monomial_reference", monomial / "reference.py") + shim = ModuleType("phase_sources") + shim.activate = lambda: (sys.modules["native_sources"], reference, finite) + sys.modules["phase_sources"] = shim + sys.path.insert(0, str(monomial)) + codec = load("codec", binding / "codec.py") + provider = load("provider", binding / "provider.py") + phase = load("signed_phase", monomial / "signed_phase.py") + recipe = load("phase_recipe", monomial / "phase_recipe.py") + pair = load("pair_dispatch", monomial / "pair_dispatch.py") + engine = load("monomial_engine", monomial / "monomial_engine.py") + need(engine.Count is state.counts.Count and engine.Tape is state.records.Tape + and phase.Count is engine.Count and recipe.Count is engine.Count, + "one actual Count/Tape vocabulary across the complete monomial") + _state = SimpleNamespace(source=state, codec=codec, provider=provider, + phase=phase, recipe=recipe, engine=engine, + reference=finite, pair=pair, abi=state.abi) + return _state diff --git a/research/current-rounded-lambda/vendor/serial/vendor/monomial/selected_service.py b/research/current-rounded-lambda/vendor/serial/vendor/monomial/selected_service.py new file mode 100644 index 0000000000..fc3cbdc16b --- /dev/null +++ b/research/current-rounded-lambda/vendor/serial/vendor/monomial/selected_service.py @@ -0,0 +1,76 @@ +"""One current #6030 MOVE boundary, with its actual source monomial. + +The width-one phase record and its tensor convention are inherited from #6293 +and #6930. This file binds the actual source token and owner to the current +signed-format service; it does not re-audit the primary native recorder. +Prepared for @CubeJerry with substantial OpenAI assistance. Apache-2.0. +""" +import gzip +from hashlib import sha256 +import json +from phase_binding import HERE, authenticate, load, need +from phase_adapter import Provider + +_selected = None +EVENT = 9896 +RAW = ("MOVE", 236, 3, 7, False) + + +def source_boundary(): + global _selected + if _selected is not None: + return _selected + authenticate() + root = HERE / "vendor/selected" + word = json.loads(gzip.decompress((root / "WORD.json.gz").read_bytes())) + need(tuple(word["program"][EVENT]) == RAW, "actual selected MOVE source record") + ir = load("selected_phase_current_ir", HERE / "vendor/binding/vendor/lifecycle/source_ir.py") + events, stats = ir.current_local(word) + entry = next(e for e in events if e.op == "SERVICE" and e.token == ("move-in", "local", EVENT, RAW)) + leave = next(e for e in events if e.op == "SERVICE" and e.token == ("move-out", "local", EVENT, RAW)) + need(entry.fields == leave.fields == (236,), "actual selected field owner at both monomial cuts") + clifford = load("selected_phase_clifford", root / "clifford_exact.py") + start = clifford.canonical_frame(9, tuple(word["frames"][3])) + stop = clifford.canonical_frame(9, tuple(word["frames"][7])) + record, _compiled = clifford.lower_child(start.adjoint().then(stop)) + need(record["rank"] == 1 and record["right"]["phase"] == 1 + and record["left"]["phase"] == 0, "inherited #6930 actual chart record") + raw = json.dumps(record, sort_keys=True, separators=(",", ":")).encode() + report = dict(event=EVENT, raw=RAW, owner=236, rank=record["rank"], + right=record["right"], left=record["left"], source_token=entry.token, + record_sha256=sha256(raw).hexdigest(), + source_phase_audit="unpaidmoon/integer-mult-bounds@c726399fbdb6d80dd13bed760b56572fb4ea1022", + phase_algebra_inherited_from=[3087, 6293, 6930], + current_source_events=stats["events"], selected_frontier_changed=False) + _selected = entry, leave, record, report + return _selected + + +class Service: + def __init__(self, event, native_factory): + entry, leave, record, self.report = source_boundary() + need(event.op == "SERVICE" and len(event.fields) == 1 and len(event.token) >= 4, + "actual single-owner current MOVE service") + tail = event.token[-4:] + need(tail in (entry.token, leave.token), "fixed current source chart and occurrence token") + self.token, self.owner = event.token, event.fields[0] + self.side = "right" if tail == entry.token else "left" + self.provider = Provider(record[self.side], native_factory) + self.field = self.context = None + + @property + def port_count(self): + return self.provider.port_count + + def bind(self, work, fields, context): + need(self.owner in fields, "actual current MOVE owner has its physical field") + self.field, self.context = fields[self.owner], context + self.provider.bind(work) + + def run(self): + need(self.field is not None, "fixed current source/field/context binding before input") + self.provider.run(self.field, self.context) + + +if __name__ == "__main__": + print(json.dumps(source_boundary()[3], sort_keys=True)) diff --git a/research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/DEPENDENCIES.json b/research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/DEPENDENCIES.json new file mode 100644 index 0000000000..9e68f72266 --- /dev/null +++ b/research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/DEPENDENCIES.json @@ -0,0 +1,724 @@ +{ + "schema_version": 1, + "files": [ + { + "group": "lifecycle", + "repository": "CubeJerry/integer-mult-bounds", + "published_commit": "ab239cb6ee884e7a900dd9101c34448077fad0b0", + "original_path": "research/compiled-owned-bank-lifecycle/machine.py", + "local_path": "vendor/lifecycle/machine.py", + "git_blob": "acf475e4fccaff2fb64bd5b0b3f3fc0d246dc592", + "sha256": "ec597bce13275003ff30e4be481c936401826c1d4af642b55eec0c410774d1df" + }, + { + "group": "lifecycle", + "repository": "CubeJerry/integer-mult-bounds", + "published_commit": "ab239cb6ee884e7a900dd9101c34448077fad0b0", + "original_path": "research/compiled-owned-bank-lifecycle/source_ir.py", + "local_path": "vendor/lifecycle/source_ir.py", + "git_blob": "79c95fa79439f3c893de52991173bd3a5eae2729", + "sha256": "54dd93bc50bd10e974c70794df1c13da27f0e3d8cdb6cfe6791a63280096f1b1" + }, + { + "group": "lifecycle", + "repository": "CubeJerry/integer-mult-bounds", + "published_commit": "ab239cb6ee884e7a900dd9101c34448077fad0b0", + "original_path": "research/compiled-owned-bank-lifecycle/PROOF.md", + "local_path": "vendor/lifecycle/PROOF.md", + "git_blob": "605981247e27de68fe78d3a36e2b454efbd6b11e", + "sha256": "9a088fa00f10e59df48090b67c6ef7c3641bc9cc36b223deb917740372d57993" + }, + { + "group": "dispatch", + "repository": "CubeJerry/integer-mult-bounds", + "published_commit": "5c59d247d51c6e1fca0dead3ed2139b6802b3a15", + "original_path": "research/compiled-row-stock-dispatch/row_programs.py", + "local_path": "vendor/dispatch/row_programs.py", + "git_blob": "30ba41725f7e1ba3dd058abd30c66d19820a008d", + "sha256": "a59510516d1397382de6141edc1eb69cf3ba5e6e330198deb5e335e543300be4" + }, + { + "group": "dispatch", + "repository": "CubeJerry/integer-mult-bounds", + "published_commit": "5c59d247d51c6e1fca0dead3ed2139b6802b3a15", + "original_path": "research/compiled-row-stock-dispatch/compiler_routes.py", + "local_path": "vendor/dispatch/compiler_routes.py", + "git_blob": "5752189b8a838596346df8dde89024621b513e41", + "sha256": "d375f8c2e666ffd2ebe6de34ccb7756ac9fa4a4cd5f866cb025a781f8538c599" + }, + { + "group": "dispatch", + "repository": "CubeJerry/integer-mult-bounds", + "published_commit": "5c59d247d51c6e1fca0dead3ed2139b6802b3a15", + "original_path": "research/compiled-row-stock-dispatch/PROOF.md", + "local_path": "vendor/dispatch/PROOF.md", + "git_blob": "96b032f662397d496c4d827839441b6794881a53", + "sha256": "b0ed45deb84fa2ce835246d7de3c85ccdacf24ab68235cf1138fe6ff4c4ce5d9" + }, + { + "group": "dispatch", + "repository": "CubeJerry/integer-mult-bounds", + "published_commit": "5c59d247d51c6e1fca0dead3ed2139b6802b3a15", + "original_path": "research/compiled-row-stock-dispatch/vendor/row_padding.py", + "local_path": "vendor/dispatch/vendor/row_padding.py", + "git_blob": "1e3533efa92c3bab35916ae6844290586d18ff27", + "sha256": "24270408e87b028791670cd63908adeb03162f0919237e8644065c5898fecf2f" + }, + { + "group": "dispatch", + "repository": "CubeJerry/integer-mult-bounds", + "published_commit": "5c59d247d51c6e1fca0dead3ed2139b6802b3a15", + "original_path": "research/compiled-row-stock-dispatch/vendor/occurrence_geometry.py", + "local_path": "vendor/dispatch/vendor/occurrence_geometry.py", + "git_blob": "9c3c97d86a7bdd7b95944218bf1e6e4a5a1746a1", + "sha256": "f3504a73803da120040cc62ee8f5e8b849237daf508a7146272d55624c3f8396" + }, + { + "group": "compact", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/physical-complex-compact/compact_engine.py", + "local_path": "vendor/compact/compact_engine.py", + "git_blob": "5c5ca75567f85b042c156e0ed5a8afe81671b1b8", + "sha256": "2cacff4d36a6e029add115f47cd8ffbf3c61e7ece0900308b98e6032e652f098" + }, + { + "group": "compact", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/physical-complex-compact/compact_control.py", + "local_path": "vendor/compact/compact_control.py", + "git_blob": "13af719b5844f14f5cf05c919e84204cd21caf6a", + "sha256": "73a9ace4f91aeb383fdbc6f7762498fe707b4e4b45b1c63920bb90cc8795e284" + }, + { + "group": "compact", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/physical-complex-compact/compact_counts.py", + "local_path": "vendor/compact/compact_counts.py", + "git_blob": "064b508efd12f7d5a33729b2344b6890f0c75d2f", + "sha256": "71c19cfc186aaf0c159ec64ea1a5d58e1fc5fc093d50c7360247559261fad00d" + }, + { + "group": "compact", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/physical-complex-compact/compact_layout.py", + "local_path": "vendor/compact/compact_layout.py", + "git_blob": "03ca12aed77741f40d824fcb33cc4eedb85abfd9", + "sha256": "5be2be9c32c15742da18fde438a5559a45a86eb661105027b1b233a7c397e0ce" + }, + { + "group": "compact", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/physical-complex-compact/compact_streams.py", + "local_path": "vendor/compact/compact_streams.py", + "git_blob": "5699cc7f20def3bc873d2da05b13a252246367a1", + "sha256": "3b5cce3be9763c6bd7803d6223d2784d1975eeac6c7c99f5e00dfc49bb11d249" + }, + { + "group": "compact", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/physical-complex-compact/native_sources.py", + "local_path": "vendor/compact/native_sources.py", + "git_blob": "3d2834c5fff39481c9a0442a514c10eaf50f98d2", + "sha256": "865c97c4f261fde37e86eb16a910eaa5b2f26daaa7d2648ae0322ba8c0286572" + }, + { + "group": "compact", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/physical-complex-compact/PROOF.md", + "local_path": "vendor/compact/PROOF.md", + "git_blob": "f65f38123ca0adb02f6ca69351cbfc933506e5cb", + "sha256": "ec6395822ae500242f3fe5e2cf40caf9a7f9fa259d475d2c14970d951ff4df48" + }, + { + "group": "ordinary", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "original_path": "research/physical-ordinary-interchange/binary.py", + "local_path": "vendor/ordinary/binary.py", + "git_blob": "651185a9eec51438949580a34e707f6dd1adbd4b", + "sha256": "578fb5bc793fc544dca8111605bf9f6067b8ba7dc7489a3ac243e1df3cd37953" + }, + { + "group": "ordinary", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "original_path": "research/physical-ordinary-interchange/encoded.py", + "local_path": "vendor/ordinary/encoded.py", + "git_blob": "2280fa98ff5e4da7c4909814ce4a1c405605ada8", + "sha256": "10ad2fa5902a48d49cf2b89a30b3f2711d63a6a43b9512a6427affcdf07335a7" + }, + { + "group": "ordinary", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "original_path": "research/physical-ordinary-interchange/ordinary.py", + "local_path": "vendor/ordinary/ordinary.py", + "git_blob": "81b330a4b886a0f4deab7b0811478bab3fbc107a", + "sha256": "7f8338e748bcd42fbef1e7cc47b6c5040dfb3aad216e34759bcb12b8e14f7705" + }, + { + "group": "ordinary", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "original_path": "research/physical-ordinary-interchange/physical_words.py", + "local_path": "vendor/ordinary/physical_words.py", + "git_blob": "44b464714277786297c8ee7fd04470dc6394896d", + "sha256": "89ba40442297ec35368e426770f44852b39807ca426710ded2735678651bef61" + }, + { + "group": "ordinary", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "original_path": "research/physical-ordinary-interchange/session.py", + "local_path": "vendor/ordinary/session.py", + "git_blob": "09f645bbf0c6c3d41d0c03e8031adc4e81744ac1", + "sha256": "45ee809b27a69ca5576361922fd2760f568c9a98864d4c55c4fee3003ee3c9ad" + }, + { + "group": "ordinary", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "original_path": "research/physical-ordinary-interchange/source.py", + "local_path": "vendor/ordinary/source.py", + "git_blob": "8594fc62cee8a111958561b75045c8ec16ebfa47", + "sha256": "4bd047a1272374880962d3074f1e50de717518a3a181f11607e820afe50dd4e5" + }, + { + "group": "ordinary", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "original_path": "research/physical-ordinary-interchange/PROOF.md", + "local_path": "vendor/ordinary/PROOF.md", + "git_blob": "12be1f06062090fcc68e598bae250f185e3d8524", + "sha256": "8a1c2145cd8f080026488a571d95813c09679aa323f19aeaef0ea98030136e1c" + }, + { + "group": "reference", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "d404b48a1e7b147556b309497d55089c837dddb2", + "original_path": "research/selected-complex-compact-adapters/streams.py", + "local_path": "vendor/reference/streams.py", + "git_blob": "61542ce4c9eb51bfc113475b4f98649cb90a853e", + "sha256": "718a582a50aee8f1f04945ed942be1d4162962fe47dbf05c6ff37b7fb8c61257" + }, + { + "group": "reference", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "d404b48a1e7b147556b309497d55089c837dddb2", + "original_path": "research/selected-complex-compact-adapters/compact.py", + "local_path": "vendor/reference/compact.py", + "git_blob": "60bc206c78150f23563a4775800b0dd32025843d", + "sha256": "0e1027a60f38c21cfd808c8ce44dcc2423810efdab0e15f02b07f261ad48fc3c" + }, + { + "group": "reference", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "d404b48a1e7b147556b309497d55089c837dddb2", + "original_path": "research/selected-complex-compact-adapters/NOTICE.md", + "local_path": "vendor/reference/NOTICE.md", + "git_blob": "e82bfef53054bd753ba0aa8a966f84427faa2293", + "sha256": "74a9f03e9ce467c75f5f7cf1b8465d349ea38ef114afad261824c3bcf13da00f" + }, + { + "group": "record_lift", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/selected-monomial-tape-lift/lift.py", + "local_path": "vendor/record_lift/lift.py", + "git_blob": "167d085a9191e3b3545bcf39d5e6edc94e54d514", + "sha256": "21c77119c004a86a603cca91ce1366629431db18e9e0554942492f1b5afebe4a" + }, + { + "group": "record_lift", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/selected-monomial-tape-lift/PROOF.md", + "local_path": "vendor/record_lift/PROOF.md", + "git_blob": "69e07e58c5468e2045281335a56f4918b474c79d", + "sha256": "8442243130d4a9932f78eb42419196d2866d4496256e3bb2d6143fd52b44ddb3" + }, + { + "group": "compiler", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/lockstep-completion-pass/executor.py", + "local_path": "vendor/lockstep_executor.py", + "git_blob": "9469443a3d7cc6310a7369daf77c7756d5bd3f38", + "sha256": "0bda14a3e5f4da348cd5c89ebe29d717e7a5406ec31b164d5b9e1d25f7f38e0e" + }, + { + "group": "selected", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "certificates/selected-result.json", + "local_path": "vendor/SELECTED-RESULT.json", + "git_blob": "d59b5035e7b4cbaa9d688a1d32dd0d6eb79c466a", + "sha256": "9b8d0eea95b3bf0dfcb7938a732a6439b87a2685dec2a5ab9e525b3b34debbfa" + }, + { + "group": "deferred", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "research/p104-6030-deferred-layer/PROOF.md", + "local_path": "vendor/DEFERRED-PROOF.md", + "git_blob": "de725a73e97496836100aa6e0ed9cd70985373da", + "sha256": "3a7ac6dae3b76d5f78849f521635da034fe99b1ea6c942175a3652b53f6262c2" + }, + { + "group": "task", + "repository": "CubeJerry/integer-mult-bounds", + "published_commit": "5c59d247d51c6e1fca0dead3ed2139b6802b3a15", + "original_path": "research/compiled-row-stock-dispatch/TASK.json", + "local_path": "vendor/dispatch/TASK.json", + "git_blob": "70bb2c54a6dbf9f17a55bbae8383d9bfde933e52", + "sha256": "6b5334d10044644ba646452b0e9e21528061768726d124a4a97af26785aa9ec9" + }, + { + "group": "task", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "original_path": "docs/research/agent-task-catalog.json", + "local_path": "vendor/TASK-CATALOG.json", + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81" + } + ], + "archive_members": [ + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/consumer.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/consumer.py", + "sha256": "2f2a8604c23fb2c81f24320c71ed0142118d98dde3be6086adad28e89954a777", + "git_blob": "a66d9276f829ce2c619871866816649d5f3687fd" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/driver.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/driver.py", + "sha256": "ceaf8f75de9810a05ebf8f65780b6f8bd7599a5768401d5e4386182afe615cdf", + "git_blob": "5b7846a70aada53d87480b337e1c04217118771b" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/evidence/NOTICE.md", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/evidence/NOTICE.md", + "sha256": "fd7c42e89878cda6df86dde8720ece34625a337cf5edd795a421e2d3b42919e9", + "git_blob": "d0318d43ed420e21dc52166a19de703aa87fbb3e" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/evidence/pr2688-NOTICE.md", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/evidence/pr2688-NOTICE.md", + "sha256": "c899fccf7bd32397f0ddd85e4af35a166cefb3e3ae3407ec40edc3ab2051b617", + "git_blob": "f2b49cdef83a4a685fad32c01fba93e12cfcb5a8" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/layout.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/layout.py", + "sha256": "3beef6534b02c3b011b741f957a7d9fb05a9ac0bba1fed53b2c71834e4ea6bc1", + "git_blob": "aa554b14fe0f6b308d9fba0a2afc92e5a28e20cb" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/linear_sign.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/linear_sign.py", + "sha256": "73e895fc701a4145cbe89d60f5775128354e7f08d0a45eacf22f423913f54e67", + "git_blob": "6a6e5c02f299fad8c4f7ab724fc36e14a22ab13c" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/node.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/node.py", + "sha256": "0bd4f640cafb5c8f070c161d86445910f77578a672bf5886936ed89e7f6bd21b", + "git_blob": "28c98a3573b458f7a055678d70b602b80e6e959e" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/packet_engine.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/packet_engine.py", + "sha256": "c80fc3aa9092f91cc309b2fb2dbc3618bf96bdb9b8498503993ea161f0ae2134", + "git_blob": "72543f684f38fefeacc2ee66d81661f1a2439cf7" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/peel.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/peel.py", + "sha256": "8b20888f74b4cd814a97b42ec72528fbfb6d2e936c5022df726f0785d0d01a2e", + "git_blob": "38502515afc928082c849cd2cda8578d33a5050a" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/NOTICE.md", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/NOTICE.md", + "sha256": "c446b32b8a621844fb2fbe654810c8122035bdd43fed2132f1137d98cb6f9943", + "git_blob": "ef9f81510db86eaf2f0a7191d85e92a6db30ddc0" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/cardinal_counts.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/cardinal_counts.py", + "sha256": "59ddeac102a0cc51fa49b15aae6aeb68cd68ed217fa974ce916372a177d2ec8f", + "git_blob": "6a14feac45094ae9156e8c2c982d6727544f180e" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/catalogue.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/catalogue.py", + "sha256": "83ea88f82d4a83c5f889774bfe3519b7ebaa24b6a0e2a969dafff012107a89bf", + "git_blob": "0efc0575a7623ac41c094d2e8772beda5a9fdc29" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/control.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/control.py", + "sha256": "d3a93e54bb7d333b73917586407d11674d38b5c3fda4fbdc436fb5293ae7786a", + "git_blob": "4f6ac09bffab43dbccc470bd0bde2ffbe969a8b2" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/fresh_rows.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/fresh_rows.py", + "sha256": "e4ae08fbd658add630eb7754ebe0cbcb42c6f39cf4128f9cb92e27fcf5213a7d", + "git_blob": "aa3a327604308d3a5c7a27b65f5e631d430ab093" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/topology.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/topology.py", + "sha256": "384d456ddba76de137a63b50019d5bba2e9f6daa4177c91643e0565d4cf1d44b", + "git_blob": "39a2916c207d04be5efc44750d8606f5da0c2990" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/binding.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/binding.py", + "sha256": "20169a8af6ed2b34069fd353a2bc1c42335ab686c58de8479baef33dd3fb493b", + "git_blob": "21a5a21220a18ab62a19ac403a9944bc3a8665c8" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/bitstream.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/bitstream.py", + "sha256": "f78bac9641007dbd8824984edcac057274fe016ce78bd9cb512d0c0913274783", + "git_blob": "4d1fd4abb0f2aabe833e5cbc9efb51039739e7ca" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/cardinality.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/cardinality.py", + "sha256": "505d5e560c5a507e6184edcc19a87cf1fed243eb34a5cb21fbe1e4fe017e7f22", + "git_blob": "b8ba857e32c5903408e1e61ff916300848b4a208" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/children.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/children.py", + "sha256": "a78866939631214c1d1659203b2b5fc062e3c6255e9f11f975c310046b010bd6", + "git_blob": "ce4935f838516e2b08d13bec767cb803786fbc6b" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/controller.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/controller.py", + "sha256": "fa09146991f6c04e6f4b6eb9bf0c8e103e70e90a0e402ff3d69814e6aac8ff8c", + "git_blob": "c631a9e77fbcccf0e8f448adc22978728aed7b60" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/counts.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/counts.py", + "sha256": "00b476dbda0e8cc99886bf794439e1cb9e775f435f599a3557e99321fe084069", + "git_blob": "81b48940ce222290a40d4fb349ce827f4788469d" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/directory.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/directory.py", + "sha256": "4270e370b2bfe38ef73aadcd97d1b3496b56bd582115d74331eb9e5ceb90bec7", + "git_blob": "c74cacf5ce809c0561d374f137a52df0992b4226" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/episode.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/episode.py", + "sha256": "38f79cb2a370548471063952d5f7c74bd795a2a8496fdcf3ce0996d79e3adaff", + "git_blob": "30d11ff4f333813855d36da3eb5a1ab0e154bafe" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/forms.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/forms.py", + "sha256": "1fdf9d31b7eb107c396e33f94dad61c9d3f2c709cae61178268a44ca80dbc0b4", + "git_blob": "6667c0b772a63f0059c7caffec63e0d919a92398" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/low_codes.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/low_codes.py", + "sha256": "f657e17f6088c840e3f7783e662257630f6d2c1e71c217721ffbca4d6ac93e87", + "git_blob": "737edfc4a10f4b7b3b97a7cef4b40864efd806e6" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/matrices.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/matrices.py", + "sha256": "00b687434039b54529ee092e34f9435cfcd66e0816eb3bd2a6688c73f4e01459", + "git_blob": "5d497353efbb9eeaaf4facd96ab40ffb0f3aa20d" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/numeric.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/numeric.py", + "sha256": "7327b05c4ec3e0f6d9c352cc7de85bfd4ebe940482553e77c59a773a8c09c514", + "git_blob": "6d4ebca8398008375b8f4762d1a9f1514e8c2611" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/oracle.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/oracle.py", + "sha256": "7bd18089e32ce48085b5e3a75159f6a82cdb2649ec682c53db05e399d97aef67", + "git_blob": "244f131466698a3ace10b657242fe1f65c07fd1f" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/packet.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/packet.py", + "sha256": "970e7fe0719e3dfe122b248941e6f21cd90d7dd62089fa6acbd0e5412ce083a5", + "git_blob": "ebc9b616514412b80c56d523776e6ba5d6766453" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/plan.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/plan.py", + "sha256": "d9c8dc93762db4d3a449814aa51e2211460648694469854d89cb48cb04188cf3", + "git_blob": "48255d5454308c07635fae4e7eb4873b0bd2a4f8" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/records.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/records.py", + "sha256": "0c9c4b23e998597fb877bb1a29da69ac869b68262abe635b162b4dba9c69b372", + "git_blob": "4f00467a0ff580954ad2fd0c7380240c753ddef3" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/routes.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/routes.py", + "sha256": "ed7dc3679451696ab1dd841146b215c9515a3eec5e4ff3763f33c315f1696ada", + "git_blob": "35531201dc349a811dfabc6f1f6e64697d665194" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/selection.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/selection.py", + "sha256": "bc8e371fb1fa0b41fb05ef0b34d0f4c317b2396f9833d91f44f95c2b54b4052b", + "git_blob": "2c28f1aaec104a75c4e6c170b3e6a60300ee6700" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/sources.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/sources.py", + "sha256": "f102edc7816d742bd89db8097254c19b843d0ef5cf6758ad42e93bcc0b214c62", + "git_blob": "16d5e7e6a28018f1e2d76d61efe2d54f6a6941d4" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/predecessor/vendor/stream.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/predecessor/vendor/stream.py", + "sha256": "c7dc7da5b00f27016982ada4c0416f8328568b00df16d97012f33d4b372d79b5", + "git_blob": "5e5a4bb0f98971447043e25d4dd6991bfc070389" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/recursive_call.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/recursive_call.py", + "sha256": "157deaa5972557893d43494a81151483bdc46373448ec677cb6a738c9b7e6f1e", + "git_blob": "6d33224145aa04f7fbaf7b6cda7c9c164311a402" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/scheduler.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/scheduler.py", + "sha256": "0d96f7fbd6f90416167c5a52c0e3de942d1a0cae3d2968831932a9576701699f", + "git_blob": "60c2b6d065eba91dd5e0edb7a77fc087971eca3f" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/stream_runner.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/stream_runner.py", + "sha256": "b255feaf6cc6e40413ae73fe302bf8f290bf4dd89f4128b23a91cc9860601801", + "git_blob": "6ba5df130bb4a0fcb06b6c630830ae3a6922921b" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2753/trace.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2753/trace.py", + "sha256": "3a664224c558244f606b603cad816d75e94a17c9b2620a06a1530e893dfceac2", + "git_blob": "4b002201ce54cdecec9acf4e874b7f71cd75fe71" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2769/NOTICE.md", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2769/NOTICE.md", + "sha256": "8640d1b52fd21e5b20e8109ce9c4957ca1e19a95e26a1c80d019a6e6f4d5f178", + "git_blob": "307c2da733f7f3a76e97c77e71072e811f40df02" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2769/codec.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2769/codec.py", + "sha256": "5b9fda8136f7e60bece54e3fcc74f4ea0bec7145fa60e1ae3a4d252741b81fd3", + "git_blob": "9cd54d9417eb685dcd3f8293f01299ef9046ad31" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2769/vendor/parking_machine.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2769/vendor/parking_machine.py", + "sha256": "68134779debfb795468a1aaecbc2b9d321d7d4e451313ce7dc8fa7092561df4c", + "git_blob": "cafd614a3b7bc87b019361fcdf890ed976f26d19" + }, + { + "local_path": "vendor/runtime/pr2809/inputs/pr2769/vendor/words.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "inputs/pr2769/vendor/words.py", + "sha256": "5c37f57708ba3131bdcb03139f9dbc29886bee44569c09cbba51b68f75acd7f9", + "git_blob": "8d4ba37e2778acb35b34e0719df2caf138fbeb50" + }, + { + "local_path": "vendor/runtime/pr2809/macro_binding.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "macro_binding.py", + "sha256": "9ef31765d03d2c54fad9296f2ff0707a190ce169e44de4f0f45214e3c410c01a", + "git_blob": "c197eb6458be9374cb4684c654bfc99e619dcaf0" + }, + { + "local_path": "vendor/runtime/pr2809/macro_code.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "macro_code.py", + "sha256": "f626b018124747a5f17c1603bea36cd74c00a69a0647fd7b10e9c4e2964caea8", + "git_blob": "2f5f8ecfac6457171707b1b5ff02b5071954fcb7" + }, + { + "local_path": "vendor/runtime/pr2809/macro_machine.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "macro_machine.py", + "sha256": "7bc6e42072a09a08ac961e05c3da01cde012d740d4b4c605f298d994f2ad7c5a", + "git_blob": "5a032e8923f7f8b22bb98f3e39b804beb9906c16" + }, + { + "local_path": "vendor/runtime/pr2809/residual_blocks.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "residual_blocks.py", + "sha256": "ab7f3df8906decd2efecfb138eac1456c106bb520b2598761f699f80680d8331", + "git_blob": "fba75e7649cf77e352a75324495191bbd7853c22" + }, + { + "local_path": "vendor/runtime/pr2809/role_parking.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "role_parking.py", + "sha256": "1884a3c260d81d5efbc0c33d86a810d6728e55e5764cfcd423f858cc685470f3", + "git_blob": "fc48c244eefdbaa3e320e86c75a7d187cb5765ef" + }, + { + "local_path": "vendor/runtime/pr2809/scratch_pool.py", + "archive_name": "pr2809.tar", + "archive_sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "member": "scratch_pool.py", + "sha256": "41f1eb93652b7174c3b02f95f70e1a9ce2e2aed0a729e725167c8f226e65d8db", + "git_blob": "0f22807c65d1bca374b905538512bf8c43702070" + }, + { + "local_path": "vendor/runtime/pr2808/outer.py", + "archive_name": "pr2808.tar", + "archive_sha256": "2ab59c6d0ad00c001ecbe44090b66871ec3d2c1fdc51daa503109e56f3285cab", + "member": "outer.py", + "sha256": "9a26702a853805da7f97da7272d3b610c4d69767ecc6b450efbc4b6722dc3f19", + "git_blob": "1341d394481fb13beb826b944409b11083d8e7f8" + }, + { + "local_path": "vendor/runtime/pr2808/vendor/pr2786/padding.py", + "archive_name": "pr2808.tar", + "archive_sha256": "2ab59c6d0ad00c001ecbe44090b66871ec3d2c1fdc51daa503109e56f3285cab", + "member": "vendor/pr2786/padding.py", + "sha256": "9f58bf2d343e13a70dc765d86c590b912d5987669d507ab14bd36deed94a76ee", + "git_blob": "0229304638de6c78ebc519b33a6ce34b1d396ca7" + } + ], + "archives": [ + { + "name": "pr2809.tar", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "original_path": "research/physical-ordinary-interchange/inputs/pr2809.tar", + "git_blob": "21ff4b5b9942dbc82b60b4546d39785daa22ba86", + "sha256": "ee1d4ec05e3c872d264be3b38f71a8c153acf37427f5d3ba87f8e15440c9ccf0", + "bytes": 962560 + }, + { + "name": "pr2808.tar", + "repository": "CrocSwap/integer-mult-bounds", + "published_commit": "2f0911ad735643a069b9790302fbf179e49f74f8", + "original_path": "research/physical-ordinary-interchange/inputs/pr2808.tar", + "git_blob": "191b0b3342d12a630d60643439afa3284641c2d5", + "sha256": "2ab59c6d0ad00c001ecbe44090b66871ec3d2c1fdc51daa503109e56f3285cab", + "bytes": 296960 + } + ], + "extraction": "Full local archive SHA256 matched the freshly fetched public ordinary/source.py anchors. Only the51 computational import-closure/NOTICE members listed here are exported. Member git_blob values are hashes of exact archive-member bytes, not separate API claims." +} diff --git a/research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/PROOF.md b/research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/PROOF.md new file mode 100644 index 0000000000..859eb593d3 --- /dev/null +++ b/research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/binding/PROOF.md @@ -0,0 +1,490 @@ +# Retained Compact on the current complete coded field + +Prepared for **@CubeJerry**, with substantial OpenAI assistance in source +analysis, mathematics, implementation, checking and prose. Apache-2.0. + +## 1. Scoped result and exact predecessors + +This package supplies one selected-bit XOR service for the actual record grammar +emitted by the current compiler/occurrence route binder. It produces the retained +Compact layout from the current twenty-three-field encoded descriptor, executes +the actual retained operation on A's coded ports, and returns the same complete +field and unchanged descriptor, with all private current segments physically +blank. Both source orders and the separate `f=1` case are covered. + +This is a **structured finite-control, fixed-tape source refinement**. It is not +an emitted flat transition table, and its tests do not run this service through +A's `Controller.execute_table`. Section 6 gives the finite-control refinement +argument. A table-format exporter remains an integration task, not an experiment +claimed to have been performed here. + +The exact predecessors are: + +* [#3055](https://github.com/CrocSwap/integer-mult-bounds/pull/3055), + `research/physical-complex-compact`, at canonical + `7c49fe32c55de02c2c873655c804b16e4c3fef0a`: encoded Compact controls, + literal rotations, complete exceptional repair, final bit gate, fixed roles, + and the completed ordinary boundary. These mechanisms are inherited. +* Its ordinary supplier [#2899](https://github.com/CrocSwap/integer-mult-bounds/pull/2899) + at `2f0911ad735643a069b9790302fbf179e49f74f8`, and compact word + [#2250](https://github.com/CrocSwap/integer-mult-bounds/pull/2250) at + `d404b48a1e7b147556b309497d55089c837dddb2`. +* [#5445](https://github.com/CrocSwap/integer-mult-bounds/pull/5445), + `research/selected-monomial-tape-lift`, at the same canonical base: + `XROW(target,source)` acts on every selected column with zero phase. +* [#5443](https://github.com/CrocSwap/integer-mult-bounds/pull/5443)'s executor + and [#6878](https://github.com/CrocSwap/integer-mult-bounds/pull/6878)'s + occurrence interface, through the exact public current-source exports + [A, owned lifecycle](https://github.com/CubeJerry/integer-mult-bounds/tree/ab239cb6ee884e7a900dd9101c34448077fad0b0/research/compiled-owned-bank-lifecycle) + and [B, row/occurrence dispatcher](https://github.com/CubeJerry/integer-mult-bounds/tree/5c59d247d51c6e1fca0dead3ed2139b6802b3a15/research/compiled-row-stock-dispatch). + +The new content is the actual complete-field/descriptor/encoding join and its +whole current-call cleanup. It is not another construction of Compact or a +record-list census. The ordinary supplier's all-size endpoint, rate and backing +contracts remain named predecessors. A valid common numeric record format, +current source placement, root descriptor and ordinary-caller contract are +inherited from A/B. No Gaussian phase, nonpermutation native operation, scalar +precision estimate, root producer or analytic recovery theorem is supplied. + +The pinned historical exponent is `tau_B1=99830289/100000000`. It is not the +selected `.0034` primitive saving. Section 9 gives the exact rate implication +limit. All five selected assumptions and `kappa=781451/250000000` remain unchanged. + +## 2. Complete current input and requested endpoint + +Fix a final template rank `N>=2` and distinct compiled block indices `s,t=1`, `K,G,H>0`, `0<=rho_B

    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

    dXOST_i!{?E9C?=g_9EW6i9h2 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 V`zOhN^*{gWe*vX&w-!WJ836Z^HEaL? literal 0 HcmV?d00001 diff --git a/research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/selected/clifford_exact.py b/research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/selected/clifford_exact.py new file mode 100644 index 0000000000..166841a037 --- /dev/null +++ b/research/current-rounded-lambda/vendor/serial/vendor/monomial/vendor/selected/clifford_exact.py @@ -0,0 +1,149 @@ +"""Small exact Gaussian-dyadic Clifford compiler, independent of gx internals. +Paulis use i^p X^x Z^z. State vectors use integer Gaussian numerators / 2^d. +The tableau is supplemented by a literal circuit, so global phases are kept. +""" +from dataclasses import dataclass + +def parity(x):return x.bit_count()&1 +def rank(rows): + p={} + for x in rows: + while x: + b=x.bit_length()-1 + if b not in p:p[b]=x;break + x^=p[b] + return len(p) +def transpose(rows,n):return tuple(sum(((rows[j]>>i)&1)<>j&1);a[j],a[k]=a[k],a[j] + for i in range(n): + if i!=j and a[i]>>j&1:a[i]^=a[j] + assert [r&((1<>n for r in a) +def basis_extend(cols,n): + out=[] + for x in list(cols)+[1<len(out):out.append(x) + assert len(out)==n + return tuple(out) +def nullspace(rows,n): + a=list(rows);p=[];k=0 + for j in range(n): + t=next((i for i in range(k,len(a)) if a[i]>>j&1),None) + if t is None:continue + a[t],a[k]=a[k],a[t] + for i in range(len(a)): + if i!=k and a[i]>>j&1:a[i]^=a[k] + p.append(j);k+=1 + return tuple((1<>j)&1)<>i&1:out=pmul(out,T[i]) + for i in range(n): + if z>>i&1:out=pmul(out,T[n+i]) + return out +def compose(A,B):return tuple(apply(A,p) for p in B) +def inverse(T): + n=len(T)//2;cols=[x|(z<>n;u,v,p=apply(T,(x,z,0));assert (u,v)==identity(n)[j][:2];out.append((x,z,(-p)%4)) + return tuple(out) +def qvalue(Q,alpha,x,n): + return (sum(alpha[i] for i in range(n) if x>>i&1)+2*sum(parity((Q[i]>>(i+1))&(x>>(i+1))) for i in range(n) if x>>i&1))%4 +def mul_i(a,p): + x,y=a;p%=4 + return [(x,y),(-y,x),(-x,-y),(y,-x)][p] +@dataclass +class Op: + n:int + tab:tuple + circuit:list + def then(self,b): + assert self.n==b.n + return Op(self.n,compose(b.tab,self.tab),self.circuit+b.circuit) + def adjoint(self): + circ=[] + for e in reversed(self.circuit): + if e[0]=='P':circ.append(('P',inv(e[1],self.n))) + elif e[0]=='D':circ.append(('D',e[1],tuple((-x)%4 for x in e[2]))) + elif e[0]=='C':circ.append(('C',e[1],-e[2])) + elif e[0]=='phase':circ.append(('phase',(-e[1])%4)) + else:circ.append(e) + return Op(self.n,inverse(self.tab),circ) + def zero_state(self,basis=0): + N=1<>i)&1 for i in range(n)) + assert all(alpha[i]%2==(Q[i]>>i)&1 for i in range(n)) + return Op(n,tuple([(1<>i&1 else 0,1<>i&1 else 0) for i in range(n)]),[('C',q,sgn)]) +def xgate(n,b):return Op(n,tuple([(1<>i)&1)) for i in range(n)]),[('X',b)]) +def fourier(n,axes=None): + out=ident(n) + for i in range(n) if axes is None else axes:out=out.then(cgate(n,1<len(selected):picks.append(j);selected.append(x) + assert len(picks)==r and all(x>>r==0 for x in Bcols) + Br=transpose(selected,r);Bi=inv(Br,r);Dr=transpose([Dcols[j]&((1<> j) & 1) << i for i, row in enumerate(matrix)) for j in range(len(matrix))) + + +def inverse(matrix): + n = len(matrix) + rows = [row | (1 << (n+i)) for i, row in enumerate(matrix)] + for j in range(n): + pivot = next((i for i in range(j, n) if rows[i] >> j & 1), None) + require(pivot is not None, 'singular binary chart') + rows[j], rows[pivot] = rows[pivot], rows[j] + for i in range(n): + if i != j and rows[i] >> j & 1: + rows[i] ^= rows[j] + require([row & ((1 << n)-1) for row in rows] == [1 << i for i in range(n)], 'binary inverse') + return tuple(row >> n for row in rows) + + +def extend(vectors, n): + columns, pivots = [], {} + for value in tuple(vectors) + tuple(1 << i for i in range(n)): + reduced = value + while reduced: + j = reduced.bit_length()-1 + if j not in pivots: + pivots[j] = reduced + columns.append(value) + break + reduced ^= pivots[j] + require(len(columns) == n, 'frame basis extension') + return tuple(columns) + + +def adjoint(circuit): + out = [] + for gate in reversed(circuit): + if gate[0] == 'P': + out.append(('P', inverse(gate[1]))) + elif gate[0] == 'D': + out.append(('D', gate[1], tuple(-a % 4 for a in gate[2]))) + elif gate[0] == 'C': + out.append(('C', gate[1], -gate[2])) + elif gate[0] == 'phase': + out.append(('phase', -gate[1] % 4)) + else: + require(gate[0] == 'X', 'adjoint gate type') + out.append(gate) + return tuple(out) + + +def fourier(rank): + return tuple(('C', 1 << i, 1) for i in range(rank)) + + +def frame(vectors, n): + rank = len(vectors) + if rank == 0: + return () + if rank == n: + return fourier(n) + matrix = transpose(extend(vectors, n)) + columns = transpose(inverse(matrix)) + quadratic = tuple((1 << i) ^ sum(parity(a & b) << j for j, b in enumerate(columns)) for i, a in enumerate(columns)) + diagonal = tuple((row >> i) & 1 for i, row in enumerate(quadratic)) + chart = (('P', matrix), ('D', quadratic, diagonal)) + return adjoint(chart) + fourier(rank) + chart + + +def monomial(record): + matrix = tuple(record['matrix_rows']) + quadratic = tuple(record['quadratic_rows']) + linear = tuple(record['linear_Z4']) + require(transpose(quadratic) == quadratic, 'quadratic symmetry') + require(len(matrix) == len(quadratic) == len(linear) == 9, 'monomial dimension') + require(all(a % 2 == (quadratic[i] >> i) & 1 for i, a in enumerate(linear)), 'diagonal parity') + inverse(matrix) + return (('D', quadratic, linear), ('P', matrix), ('X', record['offset']), ('phase', record['phase'])) + + +def recipe(record): + rank = record['rank'] + require(isinstance(rank, int) and 0 <= rank <= 9, 'child rank') + if rank == 0: + require(record['right'] is None, 'rank zero right factor') + return monomial(record['left']) + return monomial(record['right']) + fourier(rank) + monomial(record['left']) + + +def tableau(circuit, n=9): + rows = [(1 << i, 0, 0) for i in range(n)] + [(0, 1 << i, 0) for i in range(n)] + for gate in circuit: + tag = gate[0] + out = [] + inverse_transpose = transpose(inverse(gate[1])) if tag == 'P' else None + for x, z, phase in rows: + if tag == 'P': + x, z = mul(gate[1], x), mul(inverse_transpose, z) + elif tag == 'X': + phase += 2 * parity(z & gate[1]) + elif tag == 'C': + if parity(z & gate[1]): + x ^= gate[1] + phase += 3 * gate[2] + elif tag == 'D': + quadratic, linear = gate[1:] + phase += sum(linear[i] for i in range(n) if x >> i & 1) + phase += 2 * sum(parity((quadratic[i] >> (i+1)) & (x >> (i+1))) for i in range(n) if x >> i & 1) + z ^= mul(quadratic, x) + else: + require(tag == 'phase', 'tableau gate type') + out.append((x, z, phase % 4)) + rows = out + return tuple(rows) + + +@lru_cache(maxsize=512) +def action(gate): + if gate[0] == 'P': + return tuple(mul(gate[1], x) for x in range(512)) + require(gate[0] == 'D', 'state action type') + quadratic, linear = gate[1:] + return tuple((sum(linear[i] for i in range(9) if x >> i & 1) + + 2 * sum(parity((quadratic[i] >> (i+1)) & (x >> (i+1))) for i in range(9) if x >> i & 1)) % 4 for x in range(512)) + + +def rotate(pair, power): + a, b = pair + return ((a, b), (-b, a), (-a, -b), (b, -a))[power % 4] + + +def state(circuit, basis=0): + value, denominator = {basis: (1, 0)}, 0 + for gate in circuit: + tag = gate[0] + result = {} + if tag == "C": + direction, sign = gate[1:] + for address, (a, b) in value.items(): + for target, pair in ((address, (a - sign*b, b + sign*a)), + (address ^ direction, (a + sign*b, b - sign*a))): + old = result.get(target, (0, 0)) + result[target] = (old[0] + pair[0], old[1] + pair[1]) + denominator += 1 + else: + for address, pair in value.items(): + if tag == "P": + target = mul(gate[1], address) + elif tag == "X": + target = address ^ gate[1] + else: + target = address + if tag == "D": + pair = rotate(pair, action(gate)[address]) + else: + require(tag == "phase", "Unknown Gaussian state gate") + pair = rotate(pair, gate[1]) + require(target not in result, "A monomial address map is not injective") + result[target] = pair + value = {address: pair for address, pair in result.items() if pair != (0, 0)} + while denominator and all((a | b) % 2 == 0 for a, b in value.values()): + denominator -= 1 + value = {address: (a//2, b//2) for address, (a, b) in value.items()} + return value, denominator + + +def equal(actual, expected, label): + require(tableau(actual) == tableau(expected), label + ": signed Pauli action") + require(state(actual) == state(expected), label + ": exact global phase") + + +def verify(data, certificate): + word = data["word"] + original, clean = data["programs"], data["clean_programs"] + source_recipes = data["recipes"] + residuals = data["residuals"]["recipes"] + native_tags = {"climb", "adapter", "residual_adapter"} + for orientation in ("forward", "backward"): + native = [event for event in clean[orientation] if event[0] in native_tags] + require(native == [event for event in original[orientation] if event[0] in native_tags], + "A retained native event changed") + require(len(native) == 5056, "The retained native event count changed") + frames = [frame(tuple(vectors), 9) for vectors in word["frames"]] + used = {(event[3], event[4]) for program in clean.values() + for event in program if event[0] == "climb"} + children = {(record["old"], record["new"]): record for record in source_recipes["children"]} + require(len(children) == len(source_recipes["children"]) and used <= set(children), + "The retained child recipe coverage is incomplete") + for old, new in sorted(used): + record = children[old, new] + require(record["rank"] == len(word["frames"][new]) - len(word["frames"][old]), + "A retained child has the wrong rank") + equal(recipe(record), adjoint(frames[old]) + frames[new], "Retained child") + endpoints = {(record["role"], record["port"]): record + for record in source_recipes["endpoint_adapters"]} + require(len(endpoints) == len(source_recipes["endpoint_adapters"]) + and set(endpoints) == {(role, p) for role in ("source", "target") for p in range(112)}, + "The endpoint adapter coverage is incomplete") + for (role, port), record in endpoints.items(): + direction = word["ports"][port] + conventional = (("C", direction, 1),) if role == "source" else ( + ("C", direction, -1),) + fourier(9) + index = word["start"][port] if role == "source" else word["final"][112 + port] + require(record["frame"] == index and record["rank"] == 0, "An endpoint frame changed") + equal(recipe(record), adjoint(conventional) + frames[index], "Endpoint adapter") + used_residuals = set() + for program in clean.values(): + for event in program: + if event[0] != "residual_adapter": + continue + _, position, register, entry, *tail = event + terminal = tail[0] if tail else 1 + key = str(entry) if terminal == 1 else str(entry) + ":" + str(terminal) + require(key in residuals and position in ("pre", "post"), "A residual binding changed") + require(entry == word["start"][register] and terminal == word["final"][register], + "A residual endpoint changed") + used_residuals.add(key) + for key in sorted(used_residuals): + record = residuals[key] + equal(recipe(record), adjoint(frames[record["frame"]]) + frames[record.get("terminal", 1)], + "Residual adapter") + records = certificate["input_recipes"] + ports = certificate["compensation_ports"] + require([record["port"] for record in records] == ports and len(records) == 8, + "The eight input recipes changed") + columns = 0 + for item in records: + port, label = item["port"], item["label"] + require(label == word["ports"][port] and item["canonical_start_frame_id"] == word["start"][port], + "An input recipe has the wrong supplier label") + record = item["recipe"] + require(record["rank"] == 1, "An input copy has the wrong child rank") + for side in ("left", "right"): + factor = record[side] + require(factor["quadratic_rows"] == [0] * 9 and factor["linear_Z4"] == [0] * 9 + and factor["offset"] == factor["phase"] == 0, + "An input factor is not an address permutation") + actual, expected = recipe(record), (("C", label, 1),) + equal(actual, expected, "Positive inherited input line") + for basis in range(512): + require(state(actual, basis) == state(expected, basis), "A complete input Gaussian column differs") + columns += 1 + negative = monomial(record["right"]) + (("C", 1, -1),) + monomial(record["left"]) + require(tableau(negative) != tableau(expected) or state(negative) != state(expected), + "An inverse input child was not detected") + phased = actual + (("phase", 1),) + require(tableau(phased) == tableau(actual) and state(phased) != state(expected), + "An input phase-only error was not detected") + return {"status": "PASS_EXACT_INPUT_NATIVE_FRAMES", "retained_native_events_per_orientation": 5056, + "retained_child_recipes": len(used), "endpoint_adapter_recipes": len(endpoints), + "residual_adapter_recipes": len(used_residuals), "new_input_recipes": len(records), + "new_exact_gaussian_columns": columns, "inverse_input_child_controls": len(records), + "phase_only_controls": len(records), "address_permutation_factors": 2 * len(records), + "method": "Independent signed Pauli and exact Gaussian interpretation; no compiler import", + "scope": "Positive inherited input frames before every retained adapter. No recursive hosting claim."} diff --git a/research/current-rounded-lambda/verify.py b/research/current-rounded-lambda/verify.py new file mode 100644 index 0000000000..a6b0ef365e --- /dev/null +++ b/research/current-rounded-lambda/verify.py @@ -0,0 +1,141 @@ +#!/usr/bin/env python3 +"""Bounded source, flat arithmetic, descriptor and full-composition checks.""" +from pathlib import Path +from types import SimpleNamespace +from itertools import product +from collections import Counter +import argparse,json,sys,hashlib,ast +ROOT=Path(__file__).resolve().parent;sys.path.insert(0,str(ROOT)) +from source_binding import authenticate,need,vendor,lambda_sites,inputs +from gaussian_table import compile_stage,COMMIT +P=vendor('lambda_arithmetic_fixture','vendor/scalar_fixture.py') + +def gaussian(table,s,values,partners,w,mutant=False): + x=P.Tape(P.encode_symbols(P.symbols(values,w)),17);y=P.Tape(P.encode_symbols(P.symbols(partners,w)),29) + work=[P.Tape((1,0)*13,41),P.Tape((0,1)*17,63)];work[0].pos+=17;work[1].pos+=34 + contexts=[P.Tape((1,0)*9,85,True)];contexts[0].pos+=7 + ports=(x,y,*work,*contexts);original=x.body();rows=P.RowCounter(table) + commit_rows=P.RowCounter(COMMIT) + c=SimpleNamespace(payloads=ports,primitive_work=(2,3),primitive_context=(4,),services={('stage',):rows,('commit',):commit_rows}) + expected=[] + for i in range(0,len(values),2): + a,b=values[i:i+2];cc,d=partners[i:i+2] + expected.extend(((a-s*b+cc+s*d+1)//2,(b+s*a+d-s*cc+1)//2)) + fits=all(-(1<<(w-1))<=n<(1<<(w-1)) for n in expected);error=None + try:P.M.Controller.primitive(c,('stage',),(0,1)) + except ValueError as exc:error=str(exc) + need(x.body()==original,'public protected throughout whole staging') + need((error is None)==fits,'direct Gaussian integer final-range iff') + if fits: + need(P.decode(y.body(),w)==tuple(expected),'one final mathematical floor per component') + P.M.Controller.primitive(c,('commit',),(0,1));need(P.decode(x.body(),w)==tuple(expected),'literal final commit') + for t in (y,*work):P.M.retire(t) + for t in (x,*contexts):P.M.origin(t) + need(all(t.pos==t.origin for t in ports),'explicit boundary cleanup on success and rejection') + need(all(t.blank() for t in (y,*work)),'owned stage and old numerator bodies retired') + used=sum(t.actions for t in ports)+rows.steps+commit_rows.steps;S=len(values)*(w+1);A=60;D=sum(len(t.body())+1 for t in contexts) + need(used<=4096*(S+1)+14*A+32*D,'positive arithmetic tape/control bound') + return fits,used + +def arithmetic(): + total=accepted=0;extreme=0 + for s in (-1,1): + t=compile_stage(s) + for w in (1,2): + dom=range(-(1<<(w-1)),1<<(w-1)) + for a,b,c,d in product(dom,repeat=4): + ok,_=gaussian(t,s,(a,b),(c,d),w);total+=1;accepted+=ok + for w in (3,8,19): + B=1<<(w-1);dom=(-B,-1,0,B-1) + for a,b,c,d in product(dom,repeat=4): + ok,_=gaussian(t,s,(a,b),(c,d),w);extreme+=1;accepted+=ok + return dict(exhaustive_width_1_2_cases=total,additional_endpoint_cases=extreme,accepted=accepted,stage_rows={str(s):len(compile_stage(s)) for s in (-1,1)},oracle='direct four signed integers; no table recurrence imported') + +def source(): + sites=lambda_sites();c,w=inputs();qset=sorted({r['q'] for r in sites});proof=ROOT/'reference/physical-review-6936.py';v=proof.read_bytes() + need(hashlib.sha1(b'blob '+str(len(v)).encode()+b'\0'+v).hexdigest()=='f41390e0246cd6604a94ef5b418f48a817a4208c','exact retained source phase audit') + from lambda_provider import translation_recipe,LambdaProvider + from check_fixture import factory + from phase_recipe import Recipe + module=ast.parse(v);fn=next(n for n in module.body if isinstance(n,ast.FunctionDef) and n.name=='phase') + ns={};exec(compile(ast.Module(body=[fn],type_ignores=[]),'','exec'),ns) + count=0;gates=0 + for q in qset: + recipe=translation_recipe(q);compiled=Recipe(recipe,tuple('v'+str(i) for i in range(9))) + need(all(op=='flip' and src==-1 for op,dst,src in compiled.word),'actual compiled translation has only flips') + routed=0 + for op,dst,src in compiled.word:routed^=1<>dst&1:character=-character + need(source_square==(character,0),'pinned source phase squared equals independently evaluated compiled flip word') + need(source_square!=((1,0),(0,1),(-1,0),(0,-1))[(2*phase+1)%4],'wrong absolute recipe phase detected') + count+=1 + source_ports={} + for weight in (3,7): + q=next(q for q in qset if q.bit_count()==weight);owner=LambdaProvider(q,1,factory) + source_ports[str(weight)]=owner.port_count + # Independent address character law for the simultaneous all-column shift. + for f in (1,2,3,5): + for q in qset: + hs=[(q&(j*73+11)).bit_count()%2 for j in range(f)] + need(2*sum(hs)%4==2*(sum(hs)%2),'tensor exponent equals global shift character') + # The forbidden tensor-of-Lambda implementation differs at two odd factors. + need((1j*1j)==-1 and 1!=-1,'global Lambda is not tensor factor Lambda') + return dict(source_events=len(c['events']),occurrences=len(sites),directions=len(qset),signs=dict(Counter(str(r['sign']) for r in sites)),type_occurrences=dict(Counter(r['type'] for r in sites)),q_weight_histogram=dict(Counter(str(q.bit_count()) for q in qset)),one_column_exact_character_checks=count,actual_rank9_owned_ports_by_q_weight=source_ports,first_site=sites[0],literal_recipe='identity9, offset=q, phase=0, linear=quadratic=0',current_selected_catalogue_used=False,old_caller_exporter_installed=False,nine_axis_numeric_run=False,source_numeric_screen='16-record reduced composition took0.91s;4096-record source exceeds230s by simple record scaling before extra flips, exceeding120s cap; no source execution claimed') + +def descriptor(): + from lambda_provider import HeaderView,S + from check_fixture import header_bits + from check_numeric import load,body + cases=[] + for f in (1,2,7,31): + for e in (0,8,152): + rank=9;K=3;H=max(1,f-1);u=2*H;z=u+153*f*K;a=z+H+e + values=dict(outer=2,rows=3,stock=1,row_bits=18*(1<