From 6dfd2f40a64d497b97875a767181d84bb684ab41 Mon Sep 17 00:00:00 2001 From: ToikY <27568617+ToikY@users.noreply.github.com> Date: Tue, 10 Nov 2026 16:07:57 -0800 Subject: [PATCH 1/2] Close exact #7131 two-blocker scalar scope --- .../DEPENDENCIES.json | 32 + research/p104-two-blocker-exclusion/README.md | 97 + .../p104-two-blocker-exclusion/SOURCES.json | 18 + research/p104-two-blocker-exclusion/TASK.json | 117 ++ .../p104-two-blocker-exclusion/VERIFY.json | 50 + .../vendor/inputs/CALLER.json | 1 + .../vendor/inputs/RESULT.json | 1561 +++++++++++++++++ .../vendor/inputs/WORD.json.gz | Bin 0 -> 370819 bytes .../evidence/corrected_contacts.py | 302 ++++ .../evidence/constrained.py | 170 ++ .../evidence/release.py | 271 +++ .../evidence/resolve_pair.py | 200 +++ .../evidence/eliminate.py | 229 +++ .../evidence/geometry.py | 75 + .../shared-wire-stop-fusion/audit_price.py | 119 ++ .../evidence/screen.py | 199 +++ .../evidence/closure.py | 162 ++ .../evidence/nonbridge_screen.py | 214 +++ .../evidence/overlap/OVERLAP.json | 513 ++++++ .../evidence/overlap/overlap.py | 67 + .../evidence/overlap/validate.py | 30 + .../evidence/planner/ALL.json | 247 +++ .../evidence/planner/PLANNER.json | 298 ++++ .../evidence/planner/all_terms.py | 48 + .../evidence/planner/free_term.py | 65 + .../evidence/planner/two_blockers.py | 159 ++ .../evidence/planner/validate.py | 129 ++ .../evidence/planner/validate_all.py | 50 + .../evidence/planner/validate_free.py | 74 + .../evidence/price/ALL.json | 82 + .../evidence/price/ALL.jsonl | 293 ++++ .../evidence/price/OVERLAP.json | 74 + .../evidence/price/price_two.py | 204 +++ .../evidence/two_blockers.py | 383 ++++ .../evidence/scalar/port.py | 122 ++ research/p104-two-blocker-exclusion/verify.py | 92 + 36 files changed, 6747 insertions(+) create mode 100644 research/p104-two-blocker-exclusion/DEPENDENCIES.json create mode 100644 research/p104-two-blocker-exclusion/README.md create mode 100644 research/p104-two-blocker-exclusion/SOURCES.json create mode 100644 research/p104-two-blocker-exclusion/TASK.json create mode 100644 research/p104-two-blocker-exclusion/VERIFY.json create mode 100644 research/p104-two-blocker-exclusion/vendor/inputs/CALLER.json create mode 100644 research/p104-two-blocker-exclusion/vendor/inputs/RESULT.json create mode 100644 research/p104-two-blocker-exclusion/vendor/inputs/WORD.json.gz create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-chronology-pivot-20261110T1021Z/evidence/corrected_contacts.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-contact-release-20261110T0922Z/evidence/constrained.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-contact-release-20261110T0922Z/evidence/release.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-contact-release-20261110T0922Z/evidence/resolve_pair.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-coupled-boundaries-20261110T0908Z/evidence/eliminate.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-coupled-boundaries-20261110T0908Z/evidence/geometry.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-coupled-boundaries-20261110T0908Z/replay/research/shared-wire-stop-fusion/audit_price.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-helper-boundary-20261110T0853Z/evidence/screen.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-interior-20261110T0823Z/evidence/closure.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-nonbridge-pairs-20261110T0937Z/evidence/nonbridge_screen.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/overlap/OVERLAP.json create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/overlap/overlap.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/overlap/validate.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/ALL.json create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/PLANNER.json create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/all_terms.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/free_term.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/two_blockers.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/validate.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/validate_all.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/validate_free.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/ALL.json create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/ALL.jsonl create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/OVERLAP.json create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/price_two.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-two-blockers-20261110T1036Z/evidence/two_blockers.py create mode 100644 research/p104-two-blocker-exclusion/vendor/kappa-typea-birth2-20261110T2258Z/evidence/scalar/port.py create mode 100644 research/p104-two-blocker-exclusion/verify.py diff --git a/research/p104-two-blocker-exclusion/DEPENDENCIES.json b/research/p104-two-blocker-exclusion/DEPENDENCIES.json new file mode 100644 index 0000000000..55aa8ba282 --- /dev/null +++ b/research/p104-two-blocker-exclusion/DEPENDENCIES.json @@ -0,0 +1,32 @@ +{ + "inputs/CALLER.json": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "inputs/RESULT.json": "e4ae0c1cfa809cd780a6e22ce32528e7ca4b4e57f90abf91ad0bde97d30446ab", + "inputs/WORD.json.gz": "2b9b9712addc38f441b434e8b2eca0cfefe5b54fdc1e174beed7f0c3435fa42d", + "kappa-chronology-pivot-20261110T1021Z/evidence/corrected_contacts.py": "2866eef44044869905fa39bca94d8800d6b440c724a5ddc774c12e0db92cad18", + "kappa-contact-release-20261110T0922Z/evidence/constrained.py": "fe058a3597acbf939ca6099ac21ae56fd7ab4cc517d4ba8e02413156b490e60e", + "kappa-contact-release-20261110T0922Z/evidence/release.py": "f77ae6f4df5639424d5b520d4fcc4503995e7b901598a174257866ccb868cf8a", + "kappa-contact-release-20261110T0922Z/evidence/resolve_pair.py": "8b469c7880f79850794bed03d044aa6d84c270f6ab873b7c51c52dd5a909ef92", + "kappa-coupled-boundaries-20261110T0908Z/evidence/eliminate.py": "ae07c6e1f8fa52cf7f50597a9e645b6120a51ef9b4b80eb87b232f32021930f3", + "kappa-coupled-boundaries-20261110T0908Z/evidence/geometry.py": "ad1f17f62e7ec320cebaca174a940aed2a8bb7aa90c3f63086d0252fead65169", + "kappa-coupled-boundaries-20261110T0908Z/replay/research/shared-wire-stop-fusion/audit_price.py": "585295aa55846e594c705941002c36ea0b9b6cbfe3a49e6594e1d2e70751b704", + "kappa-helper-boundary-20261110T0853Z/evidence/screen.py": "c3d3f604e5ad480991ebcf87624eb45b85f74714fec9855a9c1fc0c3ca574cf7", + "kappa-interior-20261110T0823Z/evidence/closure.py": "e6b3cdfcb42f4cd22d46e1783a537d147b092634f4cf089e91344e29f0214cf1", + "kappa-nonbridge-pairs-20261110T0937Z/evidence/nonbridge_screen.py": "f83f5877c7ee1258fb052448c7e69d0ec8a4e91179a994cb8054a1ec1c545976", + "kappa-scalar-two-20261110T2315Z/evidence/overlap/OVERLAP.json": "0b4ca293e890266274af572da7f48feb3628d9da7bab93b5c7f6b5c6f249cd3a", + "kappa-scalar-two-20261110T2315Z/evidence/overlap/overlap.py": "3b6a8ee19b7f44e7b968f778b35e447525da93da153ebdedd5e5bb4c247a3949", + "kappa-scalar-two-20261110T2315Z/evidence/overlap/validate.py": "e1322e0a010ac34809b26ab76b0416a4f13a6b29310930b0480776734ee69a0c", + "kappa-scalar-two-20261110T2315Z/evidence/planner/ALL.json": "5bf1ca7041b7fad855ca273992fb2ff0969515c4642ffccbfd9ddce56a598dcc", + "kappa-scalar-two-20261110T2315Z/evidence/planner/PLANNER.json": "7a2b0a7d73426bad5950e7932b43ba30d51a2c359d14bb10276edd424a08a9bc", + "kappa-scalar-two-20261110T2315Z/evidence/planner/all_terms.py": "026050e72cfa2a10a64541f53488b6d3f284bc2194793da926d772eb02b659a4", + "kappa-scalar-two-20261110T2315Z/evidence/planner/free_term.py": "d623743e2beb0f8578487cc1f458a0e15fc5ed10381c57e7984c615200a54a81", + "kappa-scalar-two-20261110T2315Z/evidence/planner/two_blockers.py": "152b0f6c80e0f7a47b078fb35bd91b35fbfd63fa2d2da17cf66ded05f51846f0", + "kappa-scalar-two-20261110T2315Z/evidence/planner/validate.py": "65b1e11ecfc6fec38c70b19d4f1495988c0920d8c0a7434f502f9a6eeba1aac8", + "kappa-scalar-two-20261110T2315Z/evidence/planner/validate_all.py": "42018a0166d4d4d0b220a1e24572b137fe69f41cdb9d381f3d7a6c6e01c4f3bd", + "kappa-scalar-two-20261110T2315Z/evidence/planner/validate_free.py": "252af2f22ae6e7a4b5a3bba10cf52fa08cf583159bdb56cc4308eae92c56f51c", + "kappa-scalar-two-20261110T2315Z/evidence/price/ALL.json": "2d4073ac56b27a623079566128bf5f6020855a84f9181ed85a89597377c8b1ae", + "kappa-scalar-two-20261110T2315Z/evidence/price/ALL.jsonl": "e453216f8ac0125d204fb252769a307114f052f339c9c40d65e9f98095cb4d47", + "kappa-scalar-two-20261110T2315Z/evidence/price/OVERLAP.json": "85298142b0cb4bb0e11bbe99c10dc78f1de11d7acf5e4f615ff0c9104fcd4ec5", + "kappa-scalar-two-20261110T2315Z/evidence/price/price_two.py": "9a15af7348c3ffd77e1225e8b944fe2cdecc69bb487bd2b70c125b2c75e37754", + "kappa-two-blockers-20261110T1036Z/evidence/two_blockers.py": "a5b5855f3016a77d991fb53536cae388221a7cf9529fe58c376141bc7656e0c3", + "kappa-typea-birth2-20261110T2258Z/evidence/scalar/port.py": "d05dcb28604a9bc6305ec90428f5f7fe875333031ecf1705229b0c4605dc3032" +} diff --git a/research/p104-two-blocker-exclusion/README.md b/research/p104-two-blocker-exclusion/README.md new file mode 100644 index 0000000000..9e8ef436a4 --- /dev/null +++ b/research/p104-two-blocker-exclusion/README.md @@ -0,0 +1,97 @@ +# Exact #7131 two-blocker scalar exclusion + +**NO VERIFIED GAIN.** The complete conditional comparison remains +κ = 0.003642408496869 on [#7131](https://github.com/CrocSwap/integer-mult-bounds/pull/7131) +at head `67a6544cf18b2d372fd1d0deee1863e9f6ca9fc5`. This package +closes a finite scalar-chronology search that can be skipped when +investigating the next P104 paid-profile improvement. + +## Scope and result + +The starting native word is the same-word export at +[dillona/666fd749](https://github.com/dillona/integer-mult-bounds/tree/666fd749ec465de7238633a0c2fd5ee3081477e0/research/p104-output-rechart-composition). +Its canonical decompressed SHA-256 is +`9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a`. +The exact signed caller, word and result are committed under +[vendor/inputs](vendor/inputs). They are authenticated both as +stored bytes and against the scientific pins in the replay. These +are vendored exports of pending sources. No local Git object or +remote download of their commits is required. + +The [caller source](https://github.com/CrocSwap/integer-mult-bounds/blob/07a76c5e2738882c0cb322278e56f6cae3c9885d/research/signed-caller-8x9/expected/ODD-TYPE-AB-CALLER.json) +has SHA-256 `255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc`. +The same-word result has SHA-256 +`e4ae0c1cfa809cd780a6e22ce32528e7ca4b4e57f90abf91ad0bde97d30446ab`. + +On this word, remove one public bridge ADD and conjugate across +its next two incompatible public ADD or SCALE blockers in either +direction. Recompute the support after each crossing. Lower +disjoint-support conjugates to at most four commuting ADDs. +Allow each term to visit every distinct chart pair in its own +commuting window with all other original scalar events fixed. +For the seven overlap cases, test the exact five-factor conjugation +packet at one common cut. Owned roles and main endpoints stay fixed. + +The exact local controls verify 4,200 two-blocker conjugations. +The all-term replay checks **73,461** chart-visit products. +There are 66,914 incompatible span bounds, four incompatible rank +equations, 33 nonpositive rank uppers and six nonpositive mixed +rank and exact uppers. The other 6,504 placements restore the +removed equality and cannot release that scalar contact. +The overlap replay checks **eight** placements, with five +incompatible span bounds and three nonpositive rank uppers. +There are zero unresolved price cases in these scopes. + +The full literal #7131 invoice reconstructs 110,400 paid and +22,308 productive calls, surplus 1424. The directed chart price +overgrants zero-rank paid deletion and free added ordinary work. +Its negative result does not establish a global coframe optimum. +No new native or application candidate reached the complete verifier. + +## Reproduce + +Use the CPython 3.12 standard library from a clean checkout. + +```sh +python3.12 -B research/p104-two-blocker-exclusion/verify.py +``` + +The [registered replay](VERIFY.json) runs the same command. +The verifier checks the exact local identities and sampled full +intervals, compares the compressed enumeration with the exhaustive +signature set, and replays both directed price receipts and the +all-term journal. The omission and invalid-cut controls reject. +The [dependency receipt](DEPENDENCIES.json) uses stable paths and +authenticates both distinct two_blockers.py files. Duplicate keys +are rejected. A local prefix of the package location does not enter +either price receipt. + +## Overlap and credit + +The nearest archived [#6290 G20 screen](https://github.com/CrocSwap/integer-mult-bounds/pull/6290) +tests 765 local conjugations on a fixed route table. This package +uses the exact P104 #7131 word and checks separate commuting cuts +and changed chart assignments. The [pending causal-history work](https://github.com/CrocSwap/integer-mult-bounds/discussions/1166#discussioncomment-19520521) +keeps scalar order fixed and changes a helper transfer. The +[canonical Round 2 finding](https://github.com/CrocSwap/integer-mult-bounds/discussions/7111#discussioncomment-19531093) +records the earlier local checkpoint. + +Rohan Arun supplied the [#7113 caller](https://github.com/CrocSwap/integer-mult-bounds/pull/7113), +[#7124 output rechart](https://github.com/CrocSwap/integer-mult-bounds/pull/7124) +and #7131 composition. Dillona supplied the [#7130 pivot split](https://github.com/CrocSwap/integer-mult-bounds/pull/7130) +and the same-word export. This replay retains the exact native, +caller and compiler lineage credited in that export. It rebases +ToikY's earlier local chart solver and adds support-aware conjugation, +independent commuting cuts and the path-keyed replay. Prepared for +ToikY with substantial OpenAI Codex assistance. Apache-2.0. + +## Open next questions + +Can a third incompatible scalar blocker change the constrained +paid profile on this exact word? Start with the planner's sparse +rank-one conjugation and its omitted-term control. Extend the +support-aware contact search by one crossing, cap the first pass +at 500 eligible placements, and require a positive directed paid +profile before lowering any nominee. Ownership contacts and +overlapping-support packets at independently moved cuts need +separate exact operator checks. diff --git a/research/p104-two-blocker-exclusion/SOURCES.json b/research/p104-two-blocker-exclusion/SOURCES.json new file mode 100644 index 0000000000..5335fa97d9 --- /dev/null +++ b/research/p104-two-blocker-exclusion/SOURCES.json @@ -0,0 +1,18 @@ +{ + "schema_version": 1, + "base_commit": "e54523517d0f03e58352e647c403a5af3e525a57", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "75d77b328ea02ded535e7f23aee5b1e55d0bb1a8", + "sha256": "154c3d30455d778fd3343b6b4851f0fa4665f0f7625b0adb3675e2bafbbf6bf1" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81" + } + ] +} diff --git a/research/p104-two-blocker-exclusion/TASK.json b/research/p104-two-blocker-exclusion/TASK.json new file mode 100644 index 0000000000..08c2ab2e1d --- /dev/null +++ b/research/p104-two-blocker-exclusion/TASK.json @@ -0,0 +1,117 @@ +{ + "actual_scope": "On exact #7131, remove one public bridge ADD and conjugate across its next two incompatible public ADD or SCALE blockers. Exhaust separate commuting visits for disjoint terms and a common-cut spelling of overlapping terms.", + "ai_assistance": "Substantial OpenAI Codex assistance for the planner, proof, pricing, independent controls and package.", + "author": "ToikY", + "base_commit": "e54523517d0f03e58352e647c403a5af3e525a57", + "bottleneck_link": "The relaxed directed signed price upper bounds the complete native rank-histogram delta before full lowering. A nonpositive upper rules out the tested paid-profile gain in the retained complex recurrence.", + "budget_minutes": 20, + "evidence": "4,200 exact conjugations, 73,461 all-term placements and eight overlap placements. No positive released-contact price and no unresolved bounds. The portable replay authenticates exact #7131 inputs and distinct path-keyed dependencies.", + "open_questions": [ + { + "blocked_by": "A positive directed price and exact full-interval operator replay are needed before physical lowering.", + "first_step": "Extend the sparse planner by one crossing, validate the omitted-term control and screen at most 500 eligible placements.", + "question": "Can a third incompatible scalar blocker change the constrained paid profile on the same word?", + "why_it_matters": "After another conjugation, the support and available commuting cuts can change again." + } + ], + "original_card": { + "acceptance_gate": "An exact arbitrary-input identity, source/target frame availability and restoration at the chosen cut, plus the complete channel+correction+idle/hosting bill or an explicit favorable bound. The native channel alone is not a supplier. A scoped local result may be retained without a complete supplier. Expanding it into further construction rounds requires the family-level budget and obligation gate in research-family-status.md; an optimistic passing relaxation alone is not acceptance.", + "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." + ], + "bottleneck_link": "Judge the actual current supplier contract and complete signed target/paid bill; frozen-profile ceilings require an applicability proof.", + "existing_checks": [ + { + "evidence": "research/p104-literal-slot-defect/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "scope": "PR #4133: literal-slot defect", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129", + "source_commit": "88666f1dee93fbd85b31fd5d6f91a219e111b5f4", + "status": "author-checked" + }, + { + "evidence": "research/p104-uniform-commutation-gap/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "scope": "PR #4136: uniform commutation gap", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129", + "source_commit": "281ce601a8be9db470de630759179c23e1dfaa88", + "status": "author-checked" + }, + { + "evidence": "research/p104-uniform-encoding-gap/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "scope": "PR #4140: uniform encoding gap", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129", + "source_commit": "de25c6525aa866962309df5d107b32d55e6e5628", + "status": "author-checked" + }, + { + "evidence": "research/p104-source-chart-shortcut/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "scope": "PR #4153: source-chart shortcut exhausts its optimistic allowance", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129", + "source_commit": "9123241fea53df77e51ffe30d9aca1625d4bf3a8", + "status": "author-checked" + }, + { + "evidence": "research/p104-fiber-tag-seam/README.md", + "remaining": "Independently validate the stated scope or change its producer/consumer premise and pay the complete boundary.", + "scope": "PR #4154: fiber-tag seam mismatch", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129", + "source_commit": "4ffcdaee5d6255a9cea1fe53a5424435068089d0", + "status": "author-checked" + }, + { + "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.", + "scope": "Selected PR5599: complete helper-subspace construction and independent caller replay; five framework assumptions remain.", + "selected_record_sha256": "2a0220e866417774606e0f991e41b9c1d26b1f43b97857238cf478dbc7d330b5", + "source_commit": "09dd0965711ca7eeb169057a420abab1c9052137", + "status": "reviewed" + } + ], + "first_experiment": "Start with the selected #5599 emitted word and review pending #5718 distinct input/output bases plus #5717/#5719 coverage before claiming work. Pick one uncovered source word, helper group and cut region. Prove the arbitrary-input relation and legal entry/exit corrections, then compare full target and paid profiles. Reject if completion, owned lifetimes or consumer costs repay the gain. A static pairing rank alone is not a physical split.", + "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." + }, + "id": "p104-side-correction", + "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." + ], + "overlap_terms": [ + "P104", + "helper basis", + "helper split", + "5718", + "dyadic capacity" + ], + "question": "Can joint helper bases and a legal causal split improve the complete P104 productive/paid invoice?", + "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." + ], + "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", + "research/p104-helper-subspace-splits/README.md", + "research/dyadic-helper-channel-capacity/README.md" + ] + }, + "outcome": "negative-result", + "priority_revision": 8, + "schema_version": 1, + "scope_change_reason": "Uses the completed #7131 word and varies scalar chronology instead of inserting a causal helper split on the selected #5599 word. Fixed caller and owned boundaries retain the price comparison.", + "scope_status": "changed", + "stop_rule": "Exhaust the exact bridge/blocker and commuting-cut enumeration, including common-cut overlap spellings. Promote only a strictly positive directed chart-price nominee.", + "task_id": "p104-side-correction" +} diff --git a/research/p104-two-blocker-exclusion/VERIFY.json b/research/p104-two-blocker-exclusion/VERIFY.json new file mode 100644 index 0000000000..2604de4a07 --- /dev/null +++ b/research/p104-two-blocker-exclusion/VERIFY.json @@ -0,0 +1,50 @@ +{ + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "checks": "Exact source and path-keyed dependency authentication, duplicate-key rejection, rational local and full interval controls, complete signature set agreement and both directed price replays.", + "timeout_seconds": 300 + } + ], + "inputs": [ + "research/p104-two-blocker-exclusion/DEPENDENCIES.json", + "research/p104-two-blocker-exclusion/vendor/inputs/CALLER.json", + "research/p104-two-blocker-exclusion/vendor/inputs/RESULT.json", + "research/p104-two-blocker-exclusion/vendor/inputs/WORD.json.gz", + "research/p104-two-blocker-exclusion/vendor/kappa-chronology-pivot-20261110T1021Z/evidence/corrected_contacts.py", + "research/p104-two-blocker-exclusion/vendor/kappa-contact-release-20261110T0922Z/evidence/constrained.py", + "research/p104-two-blocker-exclusion/vendor/kappa-contact-release-20261110T0922Z/evidence/release.py", + "research/p104-two-blocker-exclusion/vendor/kappa-contact-release-20261110T0922Z/evidence/resolve_pair.py", + "research/p104-two-blocker-exclusion/vendor/kappa-coupled-boundaries-20261110T0908Z/evidence/eliminate.py", + "research/p104-two-blocker-exclusion/vendor/kappa-coupled-boundaries-20261110T0908Z/evidence/geometry.py", + "research/p104-two-blocker-exclusion/vendor/kappa-coupled-boundaries-20261110T0908Z/replay/research/shared-wire-stop-fusion/audit_price.py", + "research/p104-two-blocker-exclusion/vendor/kappa-helper-boundary-20261110T0853Z/evidence/screen.py", + "research/p104-two-blocker-exclusion/vendor/kappa-interior-20261110T0823Z/evidence/closure.py", + "research/p104-two-blocker-exclusion/vendor/kappa-nonbridge-pairs-20261110T0937Z/evidence/nonbridge_screen.py", + "research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/overlap/OVERLAP.json", + "research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/overlap/overlap.py", + "research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/overlap/validate.py", + "research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/ALL.json", + "research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/PLANNER.json", + "research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/all_terms.py", + "research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/free_term.py", + "research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/two_blockers.py", + "research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/validate.py", + "research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/validate_all.py", + "research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/validate_free.py", + "research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/ALL.json", + "research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/ALL.jsonl", + "research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/OVERLAP.json", + "research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/price_two.py", + "research/p104-two-blocker-exclusion/vendor/kappa-two-blockers-20261110T1036Z/evidence/two_blockers.py", + "research/p104-two-blocker-exclusion/vendor/kappa-typea-birth2-20261110T2258Z/evidence/scalar/port.py" + ], + "python": "3.12", + "requirements": [], + "schema_version": 1, + "status": "ready" +} diff --git a/research/p104-two-blocker-exclusion/vendor/inputs/CALLER.json b/research/p104-two-blocker-exclusion/vendor/inputs/CALLER.json new file mode 100644 index 0000000000..9451ceaf6e --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/inputs/CALLER.json @@ -0,0 +1 @@ +{"schema":"mixed-root-caller/1","stages":17,"ambient_rank":145,"roles":72,"types":{"A":{"form":"two-chain-HOST2","roles":36,"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,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,0,0,0,0,0,0,0,0,0],[-1,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,0,0,0,0,0,0,0,0,0],[-1,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,0,0,0,0,0,0,0,0,0],[-1,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,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],[-1,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,1,1,1,0,0,0,0,0,0],[-1,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,1,1,1,1,1,0,0,0,0],[-1,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,1,1,1,1,1,1,1,0,0],[-1,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,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,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,0,0,0,0,0,0,0,0,0],[-1,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,0,0,0,0,0,0,0,0,0],[-1,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,0,0,0,0,0,0,0,0,0],[-1,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,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],[-1,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,1,1,1,0,0,0,0,0,0],[-1,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,1,1,1,1,1,0,0,0,0],[-1,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,1,1,1,1,1,1,1,0,0],[-1,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,1,1,1,1,1,1,1,1,1]]},"B":{"form":"hosted-HOST","roles":36,"offset":36,"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,0,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,0,0,0,0,0,0,0,0,0],[-1,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,0,0,0,0,0,0,0,0,0],[-1,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,0,0,0,0,0,0,0,0,0],[-1,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,0,0,0,0,0,0,0,0,0],[-1,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,0,0,0,0,0,0,0,0,0],[-1,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,0,0,0,0,0,0,0,0,0],[-1,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,0,0,0,0,0,0,0,0,0],[-1,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,1,1,1,1,1,1,1,1],[-1,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,1,1,1,1,1,1,1,1,0],[-1,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,1,1,1,1,1,1,1,0,0],[-1,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,1,1,1,1,1,1,0,0,0],[-1,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,1,1,1,1,1,0,0,0,0],[-1,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,1,1,1,1,0,0,0,0,0],[-1,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,1,1,1,0,0,0,0,0,0],[-1,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,1,1,0,0,0,0,0,0,0],[-1,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,1,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],[-1,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,1,0,0,0,0,0,0,0,0]],"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":[["B","ADD",37,36,"7"],["B","ADD",38,36,"-1/2"],["B","ADD",39,36,"3/2"],["B","SCALE",36,"-2"],["B","ADD",36,37,"1"],["B","ADD",36,38,"2"],["B","ADD",36,39,"-2"],["B","IDLE_ONE",36,[1]],["B","ADD",36,39,"2"],["B","ADD",36,38,"-2"],["B","ADD",36,37,"-1"],["B","SCALE",36,"-1/2"],["B","ADD",39,36,"-3/2"],["B","ADD",38,36,"1/2"],["B","ADD",37,36,"-7"],["B","ADD",39,37,"-1/2"],["B","SCALE",37,"-2"],["B","ADD",37,38,"4"],["B","ADD",37,39,"-8"],["B","IDLE_ONE",37,[1]],["B","ADD",37,39,"8"],["B","ADD",37,38,"-4"],["B","SCALE",37,"-1/2"],["B","ADD",39,37,"1/2"],["B","ADD",37,36,"1"],["B","ADD",38,36,"1/2"],["B","ADD",39,36,"1/2"],["B","ADD",36,38,"-1"],["B","ADD",38,37,"1/2"],["B","SCALE",37,"-1/2"],["B","ADD",37,38,"2"],["B","ADD",37,39,"-1"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",1,"-1"],["A","ADD",1,0,"1"],["A","ADD",19,18,"-1"],["A","SCALE",19,"-1"],["A","LAMBDA",1,1],["A","LAMBDA",19,-1],["A","SCALE",19,"-1"],["J",1,[1,0,18,19],[36,37,"-1","1/2"]],["A","LAMBDA",1,-1],["A","LAMBDA",19,1],["A","SCALE",19,"-1"],["A","ADD",0,1,"-1"],["A","ADD",18,19,"-1"],["A","SCALE",19,"-1"],["A","ADD",19,18,"1"],["A","ADD",1,0,"-1"],["A","SCALE",1,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"-2"],["B","ADD",37,39,"1"],["B","ADD",37,38,"-2"],["B","SCALE",37,"-2"],["B","ADD",38,37,"-1/2"],["B","ADD",36,38,"1"],["B","ADD",39,36,"-1/2"],["B","ADD",38,36,"-1/2"],["B","ADD",37,36,"-1"],["B","ADD",37,36,"12/5"],["B","ADD",38,36,"1/5"],["B","ADD",39,36,"3/10"],["B","ADD",40,36,"-1/40"],["B","ADD",41,36,"3/40"],["B","SCALE",36,"-1/10"],["B","ADD",36,37,"-1"],["B","ADD",36,38,"-2"],["B","ADD",36,39,"6"],["B","ADD",36,40,"20"],["B","ADD",36,41,"8"],["B","IDLE_ONE",36,[2]],["B","ADD",36,41,"-8"],["B","ADD",36,40,"-20"],["B","ADD",36,39,"-6"],["B","ADD",36,38,"2"],["B","ADD",36,37,"1"],["B","SCALE",36,"-10"],["B","ADD",41,36,"-3/40"],["B","ADD",40,36,"1/40"],["B","ADD",39,36,"-3/10"],["B","ADD",38,36,"-1/5"],["B","ADD",37,36,"-12/5"],["B","ADD",37,36,"7/3"],["B","ADD",38,36,"1/6"],["B","ADD",39,36,"1/6"],["B","ADD",41,36,"1/12"],["B","SCALE",36,"1/3"],["B","ADD",36,37,"-2"],["B","ADD",36,38,"-8"],["B","ADD",36,39,"20"],["B","ADD",36,40,"68"],["B","ADD",36,41,"28"],["B","IDLE_ONE",36,[2]],["B","ADD",36,41,"-28"],["B","ADD",36,40,"-68"],["B","ADD",36,39,"-20"],["B","ADD",36,38,"8"],["B","ADD",36,37,"2"],["B","SCALE",36,"3"],["B","ADD",41,36,"-1/12"],["B","ADD",39,36,"-1/6"],["B","ADD",38,36,"-1/6"],["B","ADD",37,36,"-7/3"],["B","ADD",37,36,"3"],["B","ADD",38,36,"1/2"],["B","ADD",39,36,"3/2"],["B","ADD",40,36,"-1/2"],["B","ADD",41,36,"1/2"],["B","SCALE",36,"-1"],["B","ADD",36,37,"1/2"],["B","ADD",36,39,"-1"],["B","ADD",36,40,"-4"],["B","ADD",38,37,"-1/2"],["B","ADD",39,37,"-2"],["B","ADD",40,37,"1/2"],["B","SCALE",37,"1/2"],["B","ADD",37,38,"1"],["B","ADD",37,39,"-2"],["B","ADD",37,40,"-8"],["B","ADD",37,41,"-4"],["B","SCALE",37,"1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",2,"-1"],["A","ADD",2,0,"1"],["A","ADD",1,0,"-2"],["A","ADD",19,18,"-2"],["A","ADD",20,18,"-1"],["A","SCALE",20,"-1"],["A","LAMBDA",2,1],["A","LAMBDA",20,-1],["A","SCALE",20,"-1"],["J",2,[2,0,18,20],[36,37,"-1","1/2"]],["A","LAMBDA",2,-1],["A","LAMBDA",20,1],["A","SCALE",20,"-1"],["A","ADD",0,2,"-1"],["A","ADD",18,20,"-1"],["A","SCALE",20,"-1"],["A","ADD",20,18,"1"],["A","ADD",19,18,"2"],["A","ADD",1,0,"2"],["A","ADD",2,0,"-1"],["A","SCALE",2,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"2"],["B","ADD",37,41,"4"],["B","ADD",37,40,"8"],["B","ADD",37,39,"2"],["B","ADD",37,38,"-1"],["B","SCALE",37,"2"],["B","ADD",40,37,"-1/2"],["B","ADD",39,37,"2"],["B","ADD",38,37,"1/2"],["B","ADD",36,40,"4"],["B","ADD",36,39,"1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-1"],["B","ADD",41,36,"-1/2"],["B","ADD",40,36,"1/2"],["B","ADD",39,36,"-3/2"],["B","ADD",38,36,"-1/2"],["B","ADD",37,36,"-3"],["B","ADD",37,36,"7"],["B","ADD",38,36,"5/2"],["B","ADD",39,36,"19/2"],["B","ADD",40,36,"-5/4"],["B","ADD",41,36,"-9/4"],["B","ADD",42,36,"-1/2"],["B","ADD",43,36,"3/2"],["B","SCALE",36,"-2"],["B","ADD",36,37,"7"],["B","ADD",36,38,"26"],["B","ADD",36,39,"-66"],["B","ADD",36,40,"-212"],["B","ADD",36,41,"-132"],["B","ADD",36,42,"14"],["B","ADD",36,43,"-26"],["B","IDLE_ONE",36,[3]],["B","ADD",36,43,"26"],["B","ADD",36,42,"-14"],["B","ADD",36,41,"132"],["B","ADD",36,40,"212"],["B","ADD",36,39,"66"],["B","ADD",36,38,"-26"],["B","ADD",36,37,"-7"],["B","SCALE",36,"-1/2"],["B","ADD",43,36,"-3/2"],["B","ADD",42,36,"1/2"],["B","ADD",41,36,"9/4"],["B","ADD",40,36,"5/4"],["B","ADD",39,36,"-19/2"],["B","ADD",38,36,"-5/2"],["B","ADD",37,36,"-7"],["B","ADD",37,36,"22/3"],["B","ADD",38,36,"8/3"],["B","ADD",39,36,"61/6"],["B","ADD",40,36,"-4/3"],["B","ADD",41,36,"-29/12"],["B","ADD",42,36,"-1/2"],["B","ADD",43,36,"5/3"],["B","SCALE",36,"2/3"],["B","ADD",36,37,"2"],["B","ADD",36,38,"8"],["B","ADD",36,39,"-20"],["B","ADD",36,40,"-64"],["B","ADD",36,41,"-40"],["B","ADD",36,42,"4"],["B","ADD",36,43,"-8"],["B","IDLE_ONE",36,[3]],["B","ADD",36,43,"8"],["B","ADD",36,42,"-4"],["B","ADD",36,41,"40"],["B","ADD",36,40,"64"],["B","ADD",36,39,"20"],["B","ADD",36,38,"-8"],["B","ADD",36,37,"-2"],["B","SCALE",36,"3/2"],["B","ADD",43,36,"-5/3"],["B","ADD",42,36,"1/2"],["B","ADD",41,36,"29/12"],["B","ADD",40,36,"4/3"],["B","ADD",39,36,"-61/6"],["B","ADD",38,36,"-8/3"],["B","ADD",37,36,"-22/3"],["B","ADD",37,36,"1"],["B","ADD",38,36,"-1/2"],["B","ADD",39,36,"-5/2"],["B","ADD",40,36,"1/4"],["B","ADD",41,36,"3/4"],["B","ADD",42,36,"1/2"],["B","ADD",43,36,"1/2"],["B","ADD",36,38,"-1"],["B","ADD",36,39,"2"],["B","ADD",36,40,"6"],["B","ADD",36,41,"4"],["B","ADD",36,42,"-1"],["B","ADD",38,37,"-1/2"],["B","ADD",39,37,"-2"],["B","ADD",40,37,"1/4"],["B","ADD",41,37,"1/2"],["B","ADD",42,37,"1/2"],["B","SCALE",37,"-1/2"],["B","ADD",37,39,"-1"],["B","ADD",37,40,"-4"],["B","ADD",37,41,"-2"],["B","ADD",37,42,"2"],["B","ADD",37,43,"-1"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",3,"-1"],["A","ADD",3,0,"1"],["A","ADD",1,0,"-2"],["A","ADD",2,0,"-2"],["A","ADD",19,18,"-2"],["A","ADD",20,18,"-2"],["A","ADD",21,18,"-1"],["A","SCALE",21,"-1"],["A","LAMBDA",3,1],["A","LAMBDA",21,-1],["A","SCALE",21,"-1"],["J",3,[3,0,18,21],[36,37,"-1","1/2"]],["A","LAMBDA",3,-1],["A","LAMBDA",21,1],["A","SCALE",21,"-1"],["A","ADD",0,3,"-1"],["A","ADD",18,21,"-1"],["A","SCALE",21,"-1"],["A","ADD",21,18,"1"],["A","ADD",20,18,"2"],["A","ADD",19,18,"2"],["A","ADD",2,0,"2"],["A","ADD",1,0,"2"],["A","ADD",3,0,"-1"],["A","SCALE",3,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"-2"],["B","ADD",37,43,"1"],["B","ADD",37,42,"-2"],["B","ADD",37,41,"2"],["B","ADD",37,40,"4"],["B","ADD",37,39,"1"],["B","SCALE",37,"-2"],["B","ADD",42,37,"-1/2"],["B","ADD",41,37,"-1/2"],["B","ADD",40,37,"-1/4"],["B","ADD",39,37,"2"],["B","ADD",38,37,"1/2"],["B","ADD",36,42,"1"],["B","ADD",36,41,"-4"],["B","ADD",36,40,"-6"],["B","ADD",36,39,"-2"],["B","ADD",36,38,"1"],["B","ADD",43,36,"-1/2"],["B","ADD",42,36,"-1/2"],["B","ADD",41,36,"-3/4"],["B","ADD",40,36,"-1/4"],["B","ADD",39,36,"5/2"],["B","ADD",38,36,"1/2"],["B","ADD",37,36,"-1"],["B","ADD",37,36,"12/5"],["B","ADD",38,36,"1/5"],["B","ADD",39,36,"3/10"],["B","ADD",40,36,"-1/10"],["B","ADD",41,36,"1/20"],["B","ADD",42,36,"1/5"],["B","ADD",43,36,"3/10"],["B","ADD",44,36,"-1/40"],["B","ADD",45,36,"3/40"],["B","SCALE",36,"-1/10"],["B","ADD",36,37,"-1"],["B","ADD",36,38,"-2"],["B","ADD",36,39,"6"],["B","ADD",36,40,"20"],["B","ADD",36,41,"12"],["B","ADD",36,42,"-2"],["B","ADD",36,43,"6"],["B","ADD",36,44,"20"],["B","ADD",36,45,"8"],["B","IDLE_ONE",36,[4]],["B","ADD",36,45,"-8"],["B","ADD",36,44,"-20"],["B","ADD",36,43,"-6"],["B","ADD",36,42,"2"],["B","ADD",36,41,"-12"],["B","ADD",36,40,"-20"],["B","ADD",36,39,"-6"],["B","ADD",36,38,"2"],["B","ADD",36,37,"1"],["B","SCALE",36,"-10"],["B","ADD",45,36,"-3/40"],["B","ADD",44,36,"1/40"],["B","ADD",43,36,"-3/10"],["B","ADD",42,36,"-1/5"],["B","ADD",41,36,"-1/20"],["B","ADD",40,36,"1/10"],["B","ADD",39,36,"-3/10"],["B","ADD",38,36,"-1/5"],["B","ADD",37,36,"-12/5"],["B","ADD",37,36,"7/3"],["B","ADD",38,36,"1/6"],["B","ADD",39,36,"1/6"],["B","ADD",40,36,"-1/12"],["B","ADD",41,36,"1/12"],["B","ADD",42,36,"1/6"],["B","ADD",43,36,"1/6"],["B","ADD",45,36,"1/12"],["B","SCALE",36,"1/3"],["B","ADD",36,37,"-2"],["B","ADD",36,38,"-8"],["B","ADD",36,39,"20"],["B","ADD",36,40,"64"],["B","ADD",36,41,"40"],["B","ADD",36,42,"-8"],["B","ADD",36,43,"20"],["B","ADD",36,44,"68"],["B","ADD",36,45,"28"],["B","IDLE_ONE",36,[4]],["B","ADD",36,45,"-28"],["B","ADD",36,44,"-68"],["B","ADD",36,43,"-20"],["B","ADD",36,42,"8"],["B","ADD",36,41,"-40"],["B","ADD",36,40,"-64"],["B","ADD",36,39,"-20"],["B","ADD",36,38,"8"],["B","ADD",36,37,"2"],["B","SCALE",36,"3"],["B","ADD",45,36,"-1/12"],["B","ADD",43,36,"-1/6"],["B","ADD",42,36,"-1/6"],["B","ADD",41,36,"-1/12"],["B","ADD",40,36,"1/12"],["B","ADD",39,36,"-1/6"],["B","ADD",38,36,"-1/6"],["B","ADD",37,36,"-7/3"],["B","ADD",37,36,"3"],["B","ADD",38,36,"1/2"],["B","ADD",39,36,"3/2"],["B","ADD",40,36,"-1/4"],["B","ADD",41,36,"-1/4"],["B","ADD",42,36,"1/2"],["B","ADD",43,36,"3/2"],["B","ADD",44,36,"-1/2"],["B","ADD",45,36,"1/2"],["B","SCALE",36,"-1"],["B","ADD",36,37,"1/2"],["B","ADD",36,39,"-1"],["B","ADD",36,40,"-4"],["B","ADD",36,41,"-2"],["B","ADD",36,43,"-1"],["B","ADD",36,44,"-4"],["B","ADD",38,37,"-1/2"],["B","ADD",39,37,"-2"],["B","ADD",40,37,"1/4"],["B","ADD",41,37,"1/2"],["B","ADD",42,37,"-1/2"],["B","ADD",43,37,"-2"],["B","ADD",44,37,"1/2"],["B","SCALE",37,"1/2"],["B","ADD",37,38,"1"],["B","ADD",37,39,"-2"],["B","ADD",37,40,"-6"],["B","ADD",37,41,"-4"],["B","ADD",37,42,"1"],["B","ADD",37,43,"-2"],["B","ADD",37,44,"-8"],["B","ADD",37,45,"-4"],["B","SCALE",37,"1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",4,"-1"],["A","ADD",4,0,"1"],["A","ADD",1,0,"-2"],["A","ADD",2,0,"-2"],["A","ADD",3,0,"-2"],["A","ADD",19,18,"-2"],["A","ADD",20,18,"-2"],["A","ADD",21,18,"-2"],["A","ADD",22,18,"-1"],["A","SCALE",22,"-1"],["A","LAMBDA",4,1],["A","LAMBDA",22,-1],["A","SCALE",22,"-1"],["J",4,[4,0,18,22],[36,37,"-1","1/2"]],["A","LAMBDA",4,-1],["A","LAMBDA",22,1],["A","SCALE",22,"-1"],["A","ADD",0,4,"-1"],["A","ADD",18,22,"-1"],["A","SCALE",22,"-1"],["A","ADD",22,18,"1"],["A","ADD",21,18,"2"],["A","ADD",20,18,"2"],["A","ADD",19,18,"2"],["A","ADD",3,0,"2"],["A","ADD",2,0,"2"],["A","ADD",1,0,"2"],["A","ADD",4,0,"-1"],["A","SCALE",4,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"2"],["B","ADD",37,45,"4"],["B","ADD",37,44,"8"],["B","ADD",37,43,"2"],["B","ADD",37,42,"-1"],["B","ADD",37,41,"4"],["B","ADD",37,40,"6"],["B","ADD",37,39,"2"],["B","ADD",37,38,"-1"],["B","SCALE",37,"2"],["B","ADD",44,37,"-1/2"],["B","ADD",43,37,"2"],["B","ADD",42,37,"1/2"],["B","ADD",41,37,"-1/2"],["B","ADD",40,37,"-1/4"],["B","ADD",39,37,"2"],["B","ADD",38,37,"1/2"],["B","ADD",36,44,"4"],["B","ADD",36,43,"1"],["B","ADD",36,41,"2"],["B","ADD",36,40,"4"],["B","ADD",36,39,"1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-1"],["B","ADD",45,36,"-1/2"],["B","ADD",44,36,"1/2"],["B","ADD",43,36,"-3/2"],["B","ADD",42,36,"-1/2"],["B","ADD",41,36,"1/4"],["B","ADD",40,36,"1/4"],["B","ADD",39,36,"-3/2"],["B","ADD",38,36,"-1/2"],["B","ADD",37,36,"-3"],["B","ADD",37,36,"7"],["B","ADD",38,36,"5/2"],["B","ADD",39,36,"19/2"],["B","ADD",40,36,"-5/4"],["B","ADD",41,36,"-9/4"],["B","ADD",42,36,"5/2"],["B","ADD",43,36,"19/2"],["B","ADD",44,36,"-5/4"],["B","ADD",45,36,"-9/4"],["B","ADD",46,36,"-1/2"],["B","ADD",47,36,"3/2"],["B","SCALE",36,"-2"],["B","ADD",36,37,"7"],["B","ADD",36,38,"26"],["B","ADD",36,39,"-66"],["B","ADD",36,40,"-212"],["B","ADD",36,41,"-132"],["B","ADD",36,42,"26"],["B","ADD",36,43,"-66"],["B","ADD",36,44,"-212"],["B","ADD",36,45,"-132"],["B","ADD",36,46,"14"],["B","ADD",36,47,"-26"],["B","IDLE_ONE",36,[5]],["B","ADD",36,47,"26"],["B","ADD",36,46,"-14"],["B","ADD",36,45,"132"],["B","ADD",36,44,"212"],["B","ADD",36,43,"66"],["B","ADD",36,42,"-26"],["B","ADD",36,41,"132"],["B","ADD",36,40,"212"],["B","ADD",36,39,"66"],["B","ADD",36,38,"-26"],["B","ADD",36,37,"-7"],["B","SCALE",36,"-1/2"],["B","ADD",47,36,"-3/2"],["B","ADD",46,36,"1/2"],["B","ADD",45,36,"9/4"],["B","ADD",44,36,"5/4"],["B","ADD",43,36,"-19/2"],["B","ADD",42,36,"-5/2"],["B","ADD",41,36,"9/4"],["B","ADD",40,36,"5/4"],["B","ADD",39,36,"-19/2"],["B","ADD",38,36,"-5/2"],["B","ADD",37,36,"-7"],["B","ADD",37,36,"22/3"],["B","ADD",38,36,"8/3"],["B","ADD",39,36,"61/6"],["B","ADD",40,36,"-4/3"],["B","ADD",41,36,"-29/12"],["B","ADD",42,36,"8/3"],["B","ADD",43,36,"61/6"],["B","ADD",44,36,"-4/3"],["B","ADD",45,36,"-29/12"],["B","ADD",46,36,"-1/2"],["B","ADD",47,36,"5/3"],["B","SCALE",36,"2/3"],["B","ADD",36,37,"2"],["B","ADD",36,38,"8"],["B","ADD",36,39,"-20"],["B","ADD",36,40,"-64"],["B","ADD",36,41,"-40"],["B","ADD",36,42,"8"],["B","ADD",36,43,"-20"],["B","ADD",36,44,"-64"],["B","ADD",36,45,"-40"],["B","ADD",36,46,"4"],["B","ADD",36,47,"-8"],["B","IDLE_ONE",36,[5]],["B","ADD",36,47,"8"],["B","ADD",36,46,"-4"],["B","ADD",36,45,"40"],["B","ADD",36,44,"64"],["B","ADD",36,43,"20"],["B","ADD",36,42,"-8"],["B","ADD",36,41,"40"],["B","ADD",36,40,"64"],["B","ADD",36,39,"20"],["B","ADD",36,38,"-8"],["B","ADD",36,37,"-2"],["B","SCALE",36,"3/2"],["B","ADD",47,36,"-5/3"],["B","ADD",46,36,"1/2"],["B","ADD",45,36,"29/12"],["B","ADD",44,36,"4/3"],["B","ADD",43,36,"-61/6"],["B","ADD",42,36,"-8/3"],["B","ADD",41,36,"29/12"],["B","ADD",40,36,"4/3"],["B","ADD",39,36,"-61/6"],["B","ADD",38,36,"-8/3"],["B","ADD",37,36,"-22/3"],["B","ADD",37,36,"1"],["B","ADD",38,36,"-1/2"],["B","ADD",39,36,"-5/2"],["B","ADD",40,36,"1/4"],["B","ADD",41,36,"3/4"],["B","ADD",42,36,"-1/2"],["B","ADD",43,36,"-5/2"],["B","ADD",44,36,"1/4"],["B","ADD",45,36,"3/4"],["B","ADD",46,36,"1/2"],["B","ADD",47,36,"1/2"],["B","ADD",36,38,"-1"],["B","ADD",36,39,"2"],["B","ADD",36,40,"6"],["B","ADD",36,41,"4"],["B","ADD",36,42,"-1"],["B","ADD",36,43,"2"],["B","ADD",36,44,"6"],["B","ADD",36,45,"4"],["B","ADD",36,46,"-1"],["B","ADD",38,37,"-1/2"],["B","ADD",39,37,"-2"],["B","ADD",40,37,"1/4"],["B","ADD",41,37,"1/2"],["B","ADD",42,37,"-1/2"],["B","ADD",43,37,"-2"],["B","ADD",44,37,"1/4"],["B","ADD",45,37,"1/2"],["B","ADD",46,37,"1/2"],["B","SCALE",37,"-1/2"],["B","ADD",37,39,"-1"],["B","ADD",37,40,"-4"],["B","ADD",37,41,"-2"],["B","ADD",37,43,"-1"],["B","ADD",37,44,"-4"],["B","ADD",37,45,"-2"],["B","ADD",37,46,"2"],["B","ADD",37,47,"-1"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",5,"-1"],["A","ADD",5,0,"1"],["A","ADD",1,0,"-2"],["A","ADD",2,0,"-2"],["A","ADD",3,0,"-2"],["A","ADD",4,0,"-2"],["A","ADD",19,18,"-2"],["A","ADD",20,18,"-2"],["A","ADD",21,18,"-2"],["A","ADD",22,18,"-2"],["A","ADD",23,18,"-1"],["A","SCALE",23,"-1"],["A","LAMBDA",5,1],["A","LAMBDA",23,-1],["A","SCALE",23,"-1"],["J",5,[5,0,18,23],[36,37,"-1","1/2"]],["A","LAMBDA",5,-1],["A","LAMBDA",23,1],["A","SCALE",23,"-1"],["A","ADD",0,5,"-1"],["A","ADD",18,23,"-1"],["A","SCALE",23,"-1"],["A","ADD",23,18,"1"],["A","ADD",22,18,"2"],["A","ADD",21,18,"2"],["A","ADD",20,18,"2"],["A","ADD",19,18,"2"],["A","ADD",4,0,"2"],["A","ADD",3,0,"2"],["A","ADD",2,0,"2"],["A","ADD",1,0,"2"],["A","ADD",5,0,"-1"],["A","SCALE",5,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"-2"],["B","ADD",37,47,"1"],["B","ADD",37,46,"-2"],["B","ADD",37,45,"2"],["B","ADD",37,44,"4"],["B","ADD",37,43,"1"],["B","ADD",37,41,"2"],["B","ADD",37,40,"4"],["B","ADD",37,39,"1"],["B","SCALE",37,"-2"],["B","ADD",46,37,"-1/2"],["B","ADD",45,37,"-1/2"],["B","ADD",44,37,"-1/4"],["B","ADD",43,37,"2"],["B","ADD",42,37,"1/2"],["B","ADD",41,37,"-1/2"],["B","ADD",40,37,"-1/4"],["B","ADD",39,37,"2"],["B","ADD",38,37,"1/2"],["B","ADD",36,46,"1"],["B","ADD",36,45,"-4"],["B","ADD",36,44,"-6"],["B","ADD",36,43,"-2"],["B","ADD",36,42,"1"],["B","ADD",36,41,"-4"],["B","ADD",36,40,"-6"],["B","ADD",36,39,"-2"],["B","ADD",36,38,"1"],["B","ADD",47,36,"-1/2"],["B","ADD",46,36,"-1/2"],["B","ADD",45,36,"-3/4"],["B","ADD",44,36,"-1/4"],["B","ADD",43,36,"5/2"],["B","ADD",42,36,"1/2"],["B","ADD",41,36,"-3/4"],["B","ADD",40,36,"-1/4"],["B","ADD",39,36,"5/2"],["B","ADD",38,36,"1/2"],["B","ADD",37,36,"-1"],["B","ADD",37,36,"12/5"],["B","ADD",38,36,"1/5"],["B","ADD",39,36,"3/10"],["B","ADD",40,36,"-1/10"],["B","ADD",41,36,"1/20"],["B","ADD",42,36,"1/5"],["B","ADD",43,36,"3/10"],["B","ADD",44,36,"-1/10"],["B","ADD",45,36,"1/20"],["B","ADD",46,36,"1/5"],["B","ADD",47,36,"3/10"],["B","ADD",48,36,"-1/40"],["B","ADD",49,36,"3/40"],["B","SCALE",36,"-1/10"],["B","ADD",36,37,"-1"],["B","ADD",36,38,"-2"],["B","ADD",36,39,"6"],["B","ADD",36,40,"20"],["B","ADD",36,41,"12"],["B","ADD",36,42,"-2"],["B","ADD",36,43,"6"],["B","ADD",36,44,"20"],["B","ADD",36,45,"12"],["B","ADD",36,46,"-2"],["B","ADD",36,47,"6"],["B","ADD",36,48,"20"],["B","ADD",36,49,"8"],["B","IDLE_ONE",36,[6]],["B","ADD",36,49,"-8"],["B","ADD",36,48,"-20"],["B","ADD",36,47,"-6"],["B","ADD",36,46,"2"],["B","ADD",36,45,"-12"],["B","ADD",36,44,"-20"],["B","ADD",36,43,"-6"],["B","ADD",36,42,"2"],["B","ADD",36,41,"-12"],["B","ADD",36,40,"-20"],["B","ADD",36,39,"-6"],["B","ADD",36,38,"2"],["B","ADD",36,37,"1"],["B","SCALE",36,"-10"],["B","ADD",49,36,"-3/40"],["B","ADD",48,36,"1/40"],["B","ADD",47,36,"-3/10"],["B","ADD",46,36,"-1/5"],["B","ADD",45,36,"-1/20"],["B","ADD",44,36,"1/10"],["B","ADD",43,36,"-3/10"],["B","ADD",42,36,"-1/5"],["B","ADD",41,36,"-1/20"],["B","ADD",40,36,"1/10"],["B","ADD",39,36,"-3/10"],["B","ADD",38,36,"-1/5"],["B","ADD",37,36,"-12/5"],["B","ADD",37,36,"7/3"],["B","ADD",38,36,"1/6"],["B","ADD",39,36,"1/6"],["B","ADD",40,36,"-1/12"],["B","ADD",41,36,"1/12"],["B","ADD",42,36,"1/6"],["B","ADD",43,36,"1/6"],["B","ADD",44,36,"-1/12"],["B","ADD",45,36,"1/12"],["B","ADD",46,36,"1/6"],["B","ADD",47,36,"1/6"],["B","ADD",49,36,"1/12"],["B","SCALE",36,"1/3"],["B","ADD",36,37,"-2"],["B","ADD",36,38,"-8"],["B","ADD",36,39,"20"],["B","ADD",36,40,"64"],["B","ADD",36,41,"40"],["B","ADD",36,42,"-8"],["B","ADD",36,43,"20"],["B","ADD",36,44,"64"],["B","ADD",36,45,"40"],["B","ADD",36,46,"-8"],["B","ADD",36,47,"20"],["B","ADD",36,48,"68"],["B","ADD",36,49,"28"],["B","IDLE_ONE",36,[6]],["B","ADD",36,49,"-28"],["B","ADD",36,48,"-68"],["B","ADD",36,47,"-20"],["B","ADD",36,46,"8"],["B","ADD",36,45,"-40"],["B","ADD",36,44,"-64"],["B","ADD",36,43,"-20"],["B","ADD",36,42,"8"],["B","ADD",36,41,"-40"],["B","ADD",36,40,"-64"],["B","ADD",36,39,"-20"],["B","ADD",36,38,"8"],["B","ADD",36,37,"2"],["B","SCALE",36,"3"],["B","ADD",49,36,"-1/12"],["B","ADD",47,36,"-1/6"],["B","ADD",46,36,"-1/6"],["B","ADD",45,36,"-1/12"],["B","ADD",44,36,"1/12"],["B","ADD",43,36,"-1/6"],["B","ADD",42,36,"-1/6"],["B","ADD",41,36,"-1/12"],["B","ADD",40,36,"1/12"],["B","ADD",39,36,"-1/6"],["B","ADD",38,36,"-1/6"],["B","ADD",37,36,"-7/3"],["B","ADD",37,36,"3"],["B","ADD",38,36,"1/2"],["B","ADD",39,36,"3/2"],["B","ADD",40,36,"-1/4"],["B","ADD",41,36,"-1/4"],["B","ADD",42,36,"1/2"],["B","ADD",43,36,"3/2"],["B","ADD",44,36,"-1/4"],["B","ADD",45,36,"-1/4"],["B","ADD",46,36,"1/2"],["B","ADD",47,36,"3/2"],["B","ADD",48,36,"-1/2"],["B","ADD",49,36,"1/2"],["B","SCALE",36,"-1"],["B","ADD",36,37,"1/2"],["B","ADD",36,39,"-1"],["B","ADD",36,40,"-4"],["B","ADD",36,41,"-2"],["B","ADD",36,43,"-1"],["B","ADD",36,44,"-4"],["B","ADD",36,45,"-2"],["B","ADD",36,47,"-1"],["B","ADD",36,48,"-4"],["B","ADD",38,37,"-1/2"],["B","ADD",39,37,"-2"],["B","ADD",40,37,"1/4"],["B","ADD",41,37,"1/2"],["B","ADD",42,37,"-1/2"],["B","ADD",43,37,"-2"],["B","ADD",44,37,"1/4"],["B","ADD",45,37,"1/2"],["B","ADD",46,37,"-1/2"],["B","ADD",47,37,"-2"],["B","ADD",48,37,"1/2"],["B","SCALE",37,"1/2"],["B","ADD",37,38,"1"],["B","ADD",37,39,"-2"],["B","ADD",37,40,"-6"],["B","ADD",37,41,"-4"],["B","ADD",37,42,"1"],["B","ADD",37,43,"-2"],["B","ADD",37,44,"-6"],["B","ADD",37,45,"-4"],["B","ADD",37,46,"1"],["B","ADD",37,47,"-2"],["B","ADD",37,48,"-8"],["B","ADD",37,49,"-4"],["B","SCALE",37,"1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",6,"-1"],["A","ADD",6,0,"1"],["A","ADD",1,0,"-2"],["A","ADD",2,0,"-2"],["A","ADD",3,0,"-2"],["A","ADD",4,0,"-2"],["A","ADD",5,0,"-2"],["A","ADD",19,18,"-2"],["A","ADD",20,18,"-2"],["A","ADD",21,18,"-2"],["A","ADD",22,18,"-2"],["A","ADD",23,18,"-2"],["A","ADD",24,18,"-1"],["A","SCALE",24,"-1"],["A","LAMBDA",6,1],["A","LAMBDA",24,-1],["A","SCALE",24,"-1"],["J",6,[6,0,18,24],[36,37,"-1","1/2"]],["A","LAMBDA",6,-1],["A","LAMBDA",24,1],["A","SCALE",24,"-1"],["A","ADD",0,6,"-1"],["A","ADD",18,24,"-1"],["A","SCALE",24,"-1"],["A","ADD",24,18,"1"],["A","ADD",23,18,"2"],["A","ADD",22,18,"2"],["A","ADD",21,18,"2"],["A","ADD",20,18,"2"],["A","ADD",19,18,"2"],["A","ADD",5,0,"2"],["A","ADD",4,0,"2"],["A","ADD",3,0,"2"],["A","ADD",2,0,"2"],["A","ADD",1,0,"2"],["A","ADD",6,0,"-1"],["A","SCALE",6,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"2"],["B","ADD",37,49,"4"],["B","ADD",37,48,"8"],["B","ADD",37,47,"2"],["B","ADD",37,46,"-1"],["B","ADD",37,45,"4"],["B","ADD",37,44,"6"],["B","ADD",37,43,"2"],["B","ADD",37,42,"-1"],["B","ADD",37,41,"4"],["B","ADD",37,40,"6"],["B","ADD",37,39,"2"],["B","ADD",37,38,"-1"],["B","SCALE",37,"2"],["B","ADD",48,37,"-1/2"],["B","ADD",47,37,"2"],["B","ADD",46,37,"1/2"],["B","ADD",45,37,"-1/2"],["B","ADD",44,37,"-1/4"],["B","ADD",43,37,"2"],["B","ADD",42,37,"1/2"],["B","ADD",41,37,"-1/2"],["B","ADD",40,37,"-1/4"],["B","ADD",39,37,"2"],["B","ADD",38,37,"1/2"],["B","ADD",36,48,"4"],["B","ADD",36,47,"1"],["B","ADD",36,45,"2"],["B","ADD",36,44,"4"],["B","ADD",36,43,"1"],["B","ADD",36,41,"2"],["B","ADD",36,40,"4"],["B","ADD",36,39,"1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-1"],["B","ADD",49,36,"-1/2"],["B","ADD",48,36,"1/2"],["B","ADD",47,36,"-3/2"],["B","ADD",46,36,"-1/2"],["B","ADD",45,36,"1/4"],["B","ADD",44,36,"1/4"],["B","ADD",43,36,"-3/2"],["B","ADD",42,36,"-1/2"],["B","ADD",41,36,"1/4"],["B","ADD",40,36,"1/4"],["B","ADD",39,36,"-3/2"],["B","ADD",38,36,"-1/2"],["B","ADD",37,36,"-3"],["B","ADD",37,36,"7"],["B","ADD",38,36,"5/2"],["B","ADD",39,36,"19/2"],["B","ADD",40,36,"-5/4"],["B","ADD",41,36,"-9/4"],["B","ADD",42,36,"5/2"],["B","ADD",43,36,"19/2"],["B","ADD",44,36,"-5/4"],["B","ADD",45,36,"-9/4"],["B","ADD",46,36,"5/2"],["B","ADD",47,36,"19/2"],["B","ADD",48,36,"-5/4"],["B","ADD",49,36,"-9/4"],["B","ADD",50,36,"-1/2"],["B","ADD",51,36,"3/2"],["B","SCALE",36,"-2"],["B","ADD",36,37,"7"],["B","ADD",36,38,"26"],["B","ADD",36,39,"-66"],["B","ADD",36,40,"-212"],["B","ADD",36,41,"-132"],["B","ADD",36,42,"26"],["B","ADD",36,43,"-66"],["B","ADD",36,44,"-212"],["B","ADD",36,45,"-132"],["B","ADD",36,46,"26"],["B","ADD",36,47,"-66"],["B","ADD",36,48,"-212"],["B","ADD",36,49,"-132"],["B","ADD",36,50,"14"],["B","ADD",36,51,"-26"],["B","IDLE_ONE",36,[7]],["B","ADD",36,51,"26"],["B","ADD",36,50,"-14"],["B","ADD",36,49,"132"],["B","ADD",36,48,"212"],["B","ADD",36,47,"66"],["B","ADD",36,46,"-26"],["B","ADD",36,45,"132"],["B","ADD",36,44,"212"],["B","ADD",36,43,"66"],["B","ADD",36,42,"-26"],["B","ADD",36,41,"132"],["B","ADD",36,40,"212"],["B","ADD",36,39,"66"],["B","ADD",36,38,"-26"],["B","ADD",36,37,"-7"],["B","SCALE",36,"-1/2"],["B","ADD",51,36,"-3/2"],["B","ADD",50,36,"1/2"],["B","ADD",49,36,"9/4"],["B","ADD",48,36,"5/4"],["B","ADD",47,36,"-19/2"],["B","ADD",46,36,"-5/2"],["B","ADD",45,36,"9/4"],["B","ADD",44,36,"5/4"],["B","ADD",43,36,"-19/2"],["B","ADD",42,36,"-5/2"],["B","ADD",41,36,"9/4"],["B","ADD",40,36,"5/4"],["B","ADD",39,36,"-19/2"],["B","ADD",38,36,"-5/2"],["B","ADD",37,36,"-7"],["B","ADD",37,36,"22/3"],["B","ADD",38,36,"8/3"],["B","ADD",39,36,"61/6"],["B","ADD",40,36,"-4/3"],["B","ADD",41,36,"-29/12"],["B","ADD",42,36,"8/3"],["B","ADD",43,36,"61/6"],["B","ADD",44,36,"-4/3"],["B","ADD",45,36,"-29/12"],["B","ADD",46,36,"8/3"],["B","ADD",47,36,"61/6"],["B","ADD",48,36,"-4/3"],["B","ADD",49,36,"-29/12"],["B","ADD",50,36,"-1/2"],["B","ADD",51,36,"5/3"],["B","SCALE",36,"2/3"],["B","ADD",36,37,"2"],["B","ADD",36,38,"8"],["B","ADD",36,39,"-20"],["B","ADD",36,40,"-64"],["B","ADD",36,41,"-40"],["B","ADD",36,42,"8"],["B","ADD",36,43,"-20"],["B","ADD",36,44,"-64"],["B","ADD",36,45,"-40"],["B","ADD",36,46,"8"],["B","ADD",36,47,"-20"],["B","ADD",36,48,"-64"],["B","ADD",36,49,"-40"],["B","ADD",36,50,"4"],["B","ADD",36,51,"-8"],["B","IDLE_ONE",36,[7]],["B","ADD",36,51,"8"],["B","ADD",36,50,"-4"],["B","ADD",36,49,"40"],["B","ADD",36,48,"64"],["B","ADD",36,47,"20"],["B","ADD",36,46,"-8"],["B","ADD",36,45,"40"],["B","ADD",36,44,"64"],["B","ADD",36,43,"20"],["B","ADD",36,42,"-8"],["B","ADD",36,41,"40"],["B","ADD",36,40,"64"],["B","ADD",36,39,"20"],["B","ADD",36,38,"-8"],["B","ADD",36,37,"-2"],["B","SCALE",36,"3/2"],["B","ADD",51,36,"-5/3"],["B","ADD",50,36,"1/2"],["B","ADD",49,36,"29/12"],["B","ADD",48,36,"4/3"],["B","ADD",47,36,"-61/6"],["B","ADD",46,36,"-8/3"],["B","ADD",45,36,"29/12"],["B","ADD",44,36,"4/3"],["B","ADD",43,36,"-61/6"],["B","ADD",42,36,"-8/3"],["B","ADD",41,36,"29/12"],["B","ADD",40,36,"4/3"],["B","ADD",39,36,"-61/6"],["B","ADD",38,36,"-8/3"],["B","ADD",37,36,"-22/3"],["B","ADD",37,36,"1"],["B","ADD",38,36,"-1/2"],["B","ADD",39,36,"-5/2"],["B","ADD",40,36,"1/4"],["B","ADD",41,36,"3/4"],["B","ADD",42,36,"-1/2"],["B","ADD",43,36,"-5/2"],["B","ADD",44,36,"1/4"],["B","ADD",45,36,"3/4"],["B","ADD",46,36,"-1/2"],["B","ADD",47,36,"-5/2"],["B","ADD",48,36,"1/4"],["B","ADD",49,36,"3/4"],["B","ADD",50,36,"1/2"],["B","ADD",51,36,"1/2"],["B","ADD",36,38,"-1"],["B","ADD",36,39,"2"],["B","ADD",36,40,"6"],["B","ADD",36,41,"4"],["B","ADD",36,42,"-1"],["B","ADD",36,43,"2"],["B","ADD",36,44,"6"],["B","ADD",36,45,"4"],["B","ADD",36,46,"-1"],["B","ADD",36,47,"2"],["B","ADD",36,48,"6"],["B","ADD",36,49,"4"],["B","ADD",36,50,"-1"],["B","ADD",38,37,"-1/2"],["B","ADD",39,37,"-2"],["B","ADD",40,37,"1/4"],["B","ADD",41,37,"1/2"],["B","ADD",42,37,"-1/2"],["B","ADD",43,37,"-2"],["B","ADD",44,37,"1/4"],["B","ADD",45,37,"1/2"],["B","ADD",46,37,"-1/2"],["B","ADD",47,37,"-2"],["B","ADD",48,37,"1/4"],["B","ADD",49,37,"1/2"],["B","ADD",50,37,"1/2"],["B","SCALE",37,"-1/2"],["B","ADD",37,39,"-1"],["B","ADD",37,40,"-4"],["B","ADD",37,41,"-2"],["B","ADD",37,43,"-1"],["B","ADD",37,44,"-4"],["B","ADD",37,45,"-2"],["B","ADD",37,47,"-1"],["B","ADD",37,48,"-4"],["B","ADD",37,49,"-2"],["B","ADD",37,50,"2"],["B","ADD",37,51,"-1"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",7,"-1"],["A","ADD",7,0,"1"],["A","ADD",1,0,"-2"],["A","ADD",2,0,"-2"],["A","ADD",3,0,"-2"],["A","ADD",4,0,"-2"],["A","ADD",5,0,"-2"],["A","ADD",6,0,"-2"],["A","ADD",19,18,"-2"],["A","ADD",20,18,"-2"],["A","ADD",21,18,"-2"],["A","ADD",22,18,"-2"],["A","ADD",23,18,"-2"],["A","ADD",24,18,"-2"],["A","ADD",25,18,"-1"],["A","SCALE",25,"-1"],["A","LAMBDA",7,1],["A","LAMBDA",25,-1],["A","SCALE",25,"-1"],["J",7,[7,0,18,25],[36,37,"-1","1/2"]],["A","LAMBDA",7,-1],["A","LAMBDA",25,1],["A","SCALE",25,"-1"],["A","ADD",0,7,"-1"],["A","ADD",18,25,"-1"],["A","SCALE",25,"-1"],["A","ADD",25,18,"1"],["A","ADD",24,18,"2"],["A","ADD",23,18,"2"],["A","ADD",22,18,"2"],["A","ADD",21,18,"2"],["A","ADD",20,18,"2"],["A","ADD",19,18,"2"],["A","ADD",6,0,"2"],["A","ADD",5,0,"2"],["A","ADD",4,0,"2"],["A","ADD",3,0,"2"],["A","ADD",2,0,"2"],["A","ADD",1,0,"2"],["A","ADD",7,0,"-1"],["A","SCALE",7,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"-2"],["B","ADD",37,51,"1"],["B","ADD",37,50,"-2"],["B","ADD",37,49,"2"],["B","ADD",37,48,"4"],["B","ADD",37,47,"1"],["B","ADD",37,45,"2"],["B","ADD",37,44,"4"],["B","ADD",37,43,"1"],["B","ADD",37,41,"2"],["B","ADD",37,40,"4"],["B","ADD",37,39,"1"],["B","SCALE",37,"-2"],["B","ADD",50,37,"-1/2"],["B","ADD",49,37,"-1/2"],["B","ADD",48,37,"-1/4"],["B","ADD",47,37,"2"],["B","ADD",46,37,"1/2"],["B","ADD",45,37,"-1/2"],["B","ADD",44,37,"-1/4"],["B","ADD",43,37,"2"],["B","ADD",42,37,"1/2"],["B","ADD",41,37,"-1/2"],["B","ADD",40,37,"-1/4"],["B","ADD",39,37,"2"],["B","ADD",38,37,"1/2"],["B","ADD",36,50,"1"],["B","ADD",36,49,"-4"],["B","ADD",36,48,"-6"],["B","ADD",36,47,"-2"],["B","ADD",36,46,"1"],["B","ADD",36,45,"-4"],["B","ADD",36,44,"-6"],["B","ADD",36,43,"-2"],["B","ADD",36,42,"1"],["B","ADD",36,41,"-4"],["B","ADD",36,40,"-6"],["B","ADD",36,39,"-2"],["B","ADD",36,38,"1"],["B","ADD",51,36,"-1/2"],["B","ADD",50,36,"-1/2"],["B","ADD",49,36,"-3/4"],["B","ADD",48,36,"-1/4"],["B","ADD",47,36,"5/2"],["B","ADD",46,36,"1/2"],["B","ADD",45,36,"-3/4"],["B","ADD",44,36,"-1/4"],["B","ADD",43,36,"5/2"],["B","ADD",42,36,"1/2"],["B","ADD",41,36,"-3/4"],["B","ADD",40,36,"-1/4"],["B","ADD",39,36,"5/2"],["B","ADD",38,36,"1/2"],["B","ADD",37,36,"-1"],["B","ADD",37,36,"41/15"],["B","ADD",38,36,"11/30"],["B","ADD",39,36,"29/30"],["B","ADD",40,36,"-11/60"],["B","ADD",41,36,"-7/60"],["B","ADD",42,36,"11/30"],["B","ADD",43,36,"29/30"],["B","ADD",44,36,"-11/60"],["B","ADD",45,36,"-7/60"],["B","ADD",46,36,"11/30"],["B","ADD",47,36,"29/30"],["B","ADD",48,36,"-11/60"],["B","ADD",49,36,"-7/60"],["B","ADD",50,36,"7/30"],["B","ADD",51,36,"11/30"],["B","SCALE",36,"-2/15"],["B","ADD",36,37,"55"],["B","ADD",36,38,"218"],["B","ADD",36,39,"-546"],["B","ADD",36,40,"-1748"],["B","ADD",36,41,"-1092"],["B","ADD",36,42,"218"],["B","ADD",36,43,"-546"],["B","ADD",36,44,"-1748"],["B","ADD",36,45,"-1092"],["B","ADD",36,46,"218"],["B","ADD",36,47,"-546"],["B","ADD",36,48,"-1748"],["B","ADD",36,49,"-1092"],["B","ADD",36,50,"-982"],["B","ADD",36,51,"218"],["B","IDLE_ONE",36,[8]],["B","ADD",36,51,"-218"],["B","ADD",36,50,"982"],["B","ADD",36,49,"1092"],["B","ADD",36,48,"1748"],["B","ADD",36,47,"546"],["B","ADD",36,46,"-218"],["B","ADD",36,45,"1092"],["B","ADD",36,44,"1748"],["B","ADD",36,43,"546"],["B","ADD",36,42,"-218"],["B","ADD",36,41,"1092"],["B","ADD",36,40,"1748"],["B","ADD",36,39,"546"],["B","ADD",36,38,"-218"],["B","ADD",36,37,"-55"],["B","SCALE",36,"-15/2"],["B","ADD",51,36,"-11/30"],["B","ADD",50,36,"-7/30"],["B","ADD",49,36,"7/60"],["B","ADD",48,36,"11/60"],["B","ADD",47,36,"-29/30"],["B","ADD",46,36,"-11/30"],["B","ADD",45,36,"7/60"],["B","ADD",44,36,"11/60"],["B","ADD",43,36,"-29/30"],["B","ADD",42,36,"-11/30"],["B","ADD",41,36,"7/60"],["B","ADD",40,36,"11/60"],["B","ADD",39,36,"-29/30"],["B","ADD",38,36,"-11/30"],["B","ADD",37,36,"-41/15"],["B","ADD",36,38,"409/150"],["B","ADD",37,38,"-559/75"],["B","ADD",39,38,"-791/300"],["B","ADD",40,38,"1/2"],["B","ADD",41,38,"191/600"],["B","ADD",42,38,"-1"],["B","ADD",43,38,"-791/300"],["B","ADD",44,38,"1/2"],["B","ADD",45,38,"191/600"],["B","ADD",46,38,"-1"],["B","ADD",47,38,"-791/300"],["B","ADD",48,38,"1/2"],["B","ADD",49,38,"191/600"],["B","ADD",50,38,"-191/300"],["B","ADD",51,38,"-1"],["B","SCALE",38,"1/75"],["B","ADD",38,37,"-2"],["B","ADD",38,39,"20"],["B","ADD",38,40,"64"],["B","ADD",38,41,"40"],["B","ADD",38,42,"-8"],["B","ADD",38,43,"20"],["B","ADD",38,44,"64"],["B","ADD",38,45,"40"],["B","ADD",38,46,"-8"],["B","ADD",38,47,"20"],["B","ADD",38,48,"64"],["B","ADD",38,49,"40"],["B","ADD",38,50,"36"],["B","ADD",38,51,"-8"],["B","IDLE_ONE",38,[8]],["B","ADD",38,51,"8"],["B","ADD",38,50,"-36"],["B","ADD",38,49,"-40"],["B","ADD",38,48,"-64"],["B","ADD",38,47,"-20"],["B","ADD",38,46,"8"],["B","ADD",38,45,"-40"],["B","ADD",38,44,"-64"],["B","ADD",38,43,"-20"],["B","ADD",38,42,"8"],["B","ADD",38,41,"-40"],["B","ADD",38,40,"-64"],["B","ADD",38,39,"-20"],["B","ADD",38,37,"2"],["B","SCALE",38,"75"],["B","ADD",51,38,"1"],["B","ADD",50,38,"191/300"],["B","ADD",49,38,"-191/600"],["B","ADD",48,38,"-1/2"],["B","ADD",47,38,"791/300"],["B","ADD",46,38,"1"],["B","ADD",45,38,"-191/600"],["B","ADD",44,38,"-1/2"],["B","ADD",43,38,"791/300"],["B","ADD",42,38,"1"],["B","ADD",41,38,"-191/600"],["B","ADD",40,38,"-1/2"],["B","ADD",39,38,"791/300"],["B","ADD",37,38,"559/75"],["B","ADD",36,38,"-409/150"],["B","IDLE_ODD",68,[8],-1],["B","IDLE_ODD",69,[8],-1],["B","ADD",37,36,"11/5"],["B","ADD",38,36,"1/10"],["B","ADD",39,36,"-1/10"],["B","ADD",40,36,"-1/20"],["B","ADD",41,36,"3/20"],["B","ADD",42,36,"1/10"],["B","ADD",43,36,"-1/10"],["B","ADD",44,36,"-1/20"],["B","ADD",45,36,"3/20"],["B","ADD",46,36,"1/10"],["B","ADD",47,36,"-1/10"],["B","ADD",48,36,"-1/20"],["B","ADD",49,36,"3/20"],["B","ADD",50,36,"1/10"],["B","ADD",51,36,"-1/10"],["B","SCALE",36,"1/5"],["B","ADD",36,37,"-1/2"],["B","ADD",36,39,"1"],["B","ADD",36,40,"4"],["B","ADD",36,41,"2"],["B","ADD",36,43,"1"],["B","ADD",36,44,"4"],["B","ADD",36,45,"2"],["B","ADD",36,47,"1"],["B","ADD",36,48,"4"],["B","ADD",36,49,"2"],["B","ADD",36,51,"1"],["B","ADD",38,37,"-1/2"],["B","ADD",39,37,"-2"],["B","ADD",40,37,"1/4"],["B","ADD",41,37,"1/2"],["B","ADD",42,37,"-1/2"],["B","ADD",43,37,"-2"],["B","ADD",44,37,"1/4"],["B","ADD",45,37,"1/2"],["B","ADD",46,37,"-1/2"],["B","ADD",47,37,"-2"],["B","ADD",48,37,"1/4"],["B","ADD",49,37,"1/2"],["B","ADD",50,37,"-1/2"],["B","ADD",51,37,"-2"],["B","SCALE",37,"-5/2"],["B","ADD",37,38,"-1"],["B","ADD",37,39,"-2"],["B","ADD",37,40,"-10"],["B","ADD",37,41,"-4"],["B","ADD",37,42,"-1"],["B","ADD",37,43,"-2"],["B","ADD",37,44,"-10"],["B","ADD",37,45,"-4"],["B","ADD",37,46,"-1"],["B","ADD",37,47,"-2"],["B","ADD",37,48,"-10"],["B","ADD",37,49,"-4"],["B","ADD",37,50,"-1"],["B","ADD",37,51,"-2"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",8,"-1"],["A","ADD",8,0,"1"],["A","ADD",1,0,"-2"],["A","ADD",2,0,"-2"],["A","ADD",3,0,"-2"],["A","ADD",4,0,"-2"],["A","ADD",5,0,"-2"],["A","ADD",6,0,"-2"],["A","ADD",7,0,"-2"],["A","ADD",19,18,"-2"],["A","ADD",20,18,"-2"],["A","ADD",21,18,"-2"],["A","ADD",22,18,"-2"],["A","ADD",23,18,"-2"],["A","ADD",24,18,"-2"],["A","ADD",25,18,"-2"],["A","ADD",26,18,"-1"],["A","SCALE",26,"-1"],["A","LAMBDA",8,1],["A","LAMBDA",26,-1],["A","SCALE",26,"-1"],["J",8,[8,0,18,26],[36,37,"-1","1/2"]],["A","LAMBDA",8,-1],["A","LAMBDA",26,1],["A","SCALE",26,"-1"],["A","ADD",0,8,"-1"],["A","ADD",18,26,"-1"],["A","SCALE",26,"-1"],["A","ADD",26,18,"1"],["A","ADD",25,18,"2"],["A","ADD",24,18,"2"],["A","ADD",23,18,"2"],["A","ADD",22,18,"2"],["A","ADD",21,18,"2"],["A","ADD",20,18,"2"],["A","ADD",19,18,"2"],["A","ADD",7,0,"2"],["A","ADD",6,0,"2"],["A","ADD",5,0,"2"],["A","ADD",4,0,"2"],["A","ADD",3,0,"2"],["A","ADD",2,0,"2"],["A","ADD",1,0,"2"],["A","ADD",8,0,"-1"],["A","SCALE",8,"-1"],["A","ADD",1,0,"-2"],["A","IDLE_ONE",1,[2,3,4,5,6,7,8]],["A","ADD",1,0,"2"],["A","ADD",2,0,"-2"],["A","IDLE_ONE",2,[3,4,5,6,7,8]],["A","ADD",2,0,"2"],["A","ADD",3,0,"-2"],["A","IDLE_ONE",3,[4,5,6,7,8]],["A","ADD",3,0,"2"],["A","ADD",4,0,"-2"],["A","IDLE_ONE",4,[5,6,7,8]],["A","ADD",4,0,"2"],["A","ADD",5,0,"-2"],["A","IDLE_ONE",5,[6,7,8]],["A","ADD",5,0,"2"],["A","ADD",6,0,"-2"],["A","IDLE_ONE",6,[7,8]],["A","ADD",6,0,"2"],["A","ADD",7,0,"-2"],["A","IDLE_ONE",7,[8]],["A","ADD",7,0,"2"],["A","ADD",19,18,"-2"],["A","IDLE_ONE",19,[2,3,4,5,6,7,8]],["A","ADD",19,18,"2"],["A","ADD",20,18,"-2"],["A","IDLE_ONE",20,[3,4,5,6,7,8]],["A","ADD",20,18,"2"],["A","ADD",21,18,"-2"],["A","IDLE_ONE",21,[4,5,6,7,8]],["A","ADD",21,18,"2"],["A","ADD",22,18,"-2"],["A","IDLE_ONE",22,[5,6,7,8]],["A","ADD",22,18,"2"],["A","ADD",23,18,"-2"],["A","IDLE_ONE",23,[6,7,8]],["A","ADD",23,18,"2"],["A","ADD",24,18,"-2"],["A","IDLE_ONE",24,[7,8]],["A","ADD",24,18,"2"],["A","ADD",25,18,"-2"],["A","IDLE_ONE",25,[8]],["A","ADD",25,18,"2"],["A","SWAP",0,18],["A","ADD",19,0,"-2"],["A","ADD",20,0,"-2"],["A","ADD",21,0,"-2"],["A","ADD",22,0,"-2"],["A","ADD",23,0,"-2"],["A","ADD",24,0,"-2"],["A","ADD",25,0,"-2"],["A","ADD",26,0,"-2"],["A","SWAP",1,19],["A","ADD",1,20,"-1"],["A","ADD",1,21,"1"],["A","ADD",1,22,"-1"],["A","ADD",1,23,"1"],["A","ADD",1,24,"-1"],["A","ADD",1,25,"1"],["A","ADD",1,26,"-1"],["A","ADD",1,27,"-1"],["A","ADD",1,28,"1"],["A","ADD",1,29,"-1"],["A","ADD",1,30,"1"],["A","ADD",1,31,"-1"],["A","ADD",1,32,"1"],["A","ADD",1,33,"-1"],["A","ADD",1,34,"1"],["A","ADD",1,35,"-1"],["A","LAMBDA",1,1],["A","QUERY",0,1,-1],["A","LAMBDA",1,-1],["A","ADD",0,1,"-1"],["A","ADD",1,35,"1"],["A","ADD",1,34,"-1"],["A","ADD",1,33,"1"],["A","ADD",1,32,"-1"],["A","ADD",1,31,"1"],["A","ADD",1,30,"-1"],["A","ADD",1,29,"1"],["A","ADD",1,28,"-1"],["A","ADD",1,27,"1"],["A","ADD",1,26,"1"],["A","ADD",1,25,"-1"],["A","ADD",1,24,"1"],["A","ADD",1,23,"-1"],["A","ADD",1,22,"1"],["A","ADD",1,21,"-1"],["A","ADD",1,20,"1"],["A","SWAP",1,19],["A","ADD",26,0,"2"],["A","ADD",25,0,"2"],["A","ADD",24,0,"2"],["A","ADD",23,0,"2"],["A","ADD",22,0,"2"],["A","ADD",21,0,"2"],["A","ADD",20,0,"2"],["A","ADD",19,0,"2"],["A","SWAP",0,18],["A","SWAP",0,19],["A","ADD",20,0,"-1"],["A","ADD",21,0,"-1"],["A","ADD",22,0,"-1"],["A","ADD",23,0,"-1"],["A","ADD",24,0,"-1"],["A","ADD",25,0,"-1"],["A","ADD",26,0,"-1"],["A","ADD",27,0,"-1"],["A","ADD",28,0,"-1"],["A","ADD",29,0,"-1"],["A","ADD",30,0,"-1"],["A","ADD",31,0,"-1"],["A","ADD",32,0,"-1"],["A","ADD",33,0,"-1"],["A","ADD",34,0,"-1"],["A","ADD",35,0,"-1"],["A","ADD",1,2,"-1"],["A","ADD",1,3,"1"],["A","ADD",1,4,"-1"],["A","ADD",1,5,"1"],["A","ADD",1,6,"-1"],["A","ADD",1,7,"1"],["A","ADD",1,8,"-1"],["A","ADD",1,9,"-1"],["A","ADD",1,10,"1"],["A","ADD",1,11,"-1"],["A","ADD",1,12,"1"],["A","ADD",1,13,"-1"],["A","ADD",1,14,"1"],["A","ADD",1,15,"-1"],["A","ADD",1,16,"1"],["A","ADD",1,17,"-1"],["A","ADD",1,18,"1"],["A","LAMBDA",1,1],["A","QUERY",0,1,-1],["A","LAMBDA",1,-1],["A","ADD",0,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","ADD",35,0,"1"],["A","ADD",34,0,"1"],["A","ADD",33,0,"1"],["A","ADD",32,0,"1"],["A","ADD",31,0,"1"],["A","ADD",30,0,"1"],["A","ADD",29,0,"1"],["A","ADD",28,0,"1"],["A","ADD",27,0,"1"],["A","ADD",26,0,"1"],["A","ADD",25,0,"1"],["A","ADD",24,0,"1"],["A","ADD",23,0,"1"],["A","ADD",22,0,"1"],["A","ADD",21,0,"1"],["A","ADD",20,0,"1"],["A","SWAP",0,19],["A","ADD",1,0,"-2"],["A","ADD",2,0,"-2"],["A","ADD",3,0,"-2"],["A","ADD",4,0,"-2"],["A","ADD",5,0,"-2"],["A","ADD",6,0,"-2"],["A","ADD",7,0,"-2"],["A","ADD",8,0,"-2"],["A","ADD",19,0,"1"],["A","ADD",20,0,"1"],["A","ADD",21,0,"1"],["A","ADD",22,0,"1"],["A","ADD",23,0,"1"],["A","ADD",24,0,"1"],["A","ADD",25,0,"1"],["A","ADD",26,0,"1"],["A","ADD",27,0,"1"],["A","ADD",28,0,"1"],["A","ADD",29,0,"1"],["A","ADD",30,0,"1"],["A","ADD",31,0,"1"],["A","ADD",32,0,"1"],["A","ADD",33,0,"1"],["A","ADD",34,0,"1"],["A","ADD",35,0,"1"],["A","ADD",1,2,"-1"],["A","ADD",1,3,"1"],["A","ADD",1,4,"-1"],["A","ADD",1,5,"1"],["A","ADD",1,6,"-1"],["A","ADD",1,7,"1"],["A","ADD",1,8,"-1"],["A","ADD",1,9,"-1"],["A","ADD",1,10,"1"],["A","ADD",1,11,"-1"],["A","ADD",1,12,"1"],["A","ADD",1,13,"-1"],["A","ADD",1,14,"1"],["A","ADD",1,15,"-1"],["A","ADD",1,16,"1"],["A","ADD",1,17,"-1"],["A","LAMBDA",1,1],["A","QUERY",0,1,-1],["A","LAMBDA",1,-1],["A","ADD",0,1,"-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","ADD",35,0,"-1"],["A","ADD",34,0,"-1"],["A","ADD",33,0,"-1"],["A","ADD",32,0,"-1"],["A","ADD",31,0,"-1"],["A","ADD",30,0,"-1"],["A","ADD",29,0,"-1"],["A","ADD",28,0,"-1"],["A","ADD",27,0,"-1"],["A","ADD",26,0,"-1"],["A","ADD",25,0,"-1"],["A","ADD",24,0,"-1"],["A","ADD",23,0,"-1"],["A","ADD",22,0,"-1"],["A","ADD",21,0,"-1"],["A","ADD",20,0,"-1"],["A","ADD",19,0,"-1"],["A","ADD",8,0,"2"],["A","ADD",7,0,"2"],["A","ADD",6,0,"2"],["A","ADD",5,0,"2"],["A","ADD",4,0,"2"],["A","ADD",3,0,"2"],["A","ADD",2,0,"2"],["A","ADD",1,0,"2"],["A","SWAP",0,1],["A","ADD",2,0,"-1"],["A","ADD",3,0,"-1"],["A","ADD",4,0,"-1"],["A","ADD",5,0,"-1"],["A","ADD",6,0,"-1"],["A","ADD",7,0,"-1"],["A","ADD",8,0,"-1"],["A","ADD",9,0,"-1"],["A","ADD",10,0,"-1"],["A","ADD",11,0,"-1"],["A","ADD",12,0,"-1"],["A","ADD",13,0,"-1"],["A","ADD",14,0,"-1"],["A","ADD",15,0,"-1"],["A","ADD",16,0,"-1"],["A","ADD",17,0,"-1"],["A","LAMBDA",1,1],["A","QUERY",0,1,-1],["A","LAMBDA",1,-1],["A","ADD",0,1,"-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","SWAP",0,1],["A","ADD",10,0,"2"],["A","IDLE_ONE",10,[9]],["A","ADD",10,0,"-2"],["A","ADD",11,0,"2"],["A","IDLE_ONE",11,[9,10]],["A","ADD",11,0,"-2"],["A","ADD",12,0,"2"],["A","IDLE_ONE",12,[9,10,11]],["A","ADD",12,0,"-2"],["A","ADD",13,0,"2"],["A","IDLE_ONE",13,[9,10,11,12]],["A","ADD",13,0,"-2"],["A","ADD",14,0,"2"],["A","IDLE_ONE",14,[9,10,11,12,13]],["A","ADD",14,0,"-2"],["A","ADD",15,0,"2"],["A","IDLE_ONE",15,[9,10,11,12,13,14]],["A","ADD",15,0,"-2"],["A","ADD",16,0,"2"],["A","IDLE_ONE",16,[9,10,11,12,13,14,15]],["A","ADD",16,0,"-2"],["A","ADD",17,0,"2"],["A","IDLE_ONE",17,[9,10,11,12,13,14,15,16]],["A","ADD",17,0,"-2"],["A","ADD",28,18,"2"],["A","IDLE_ONE",28,[9]],["A","ADD",28,18,"-2"],["A","ADD",29,18,"2"],["A","IDLE_ONE",29,[9,10]],["A","ADD",29,18,"-2"],["A","ADD",30,18,"2"],["A","IDLE_ONE",30,[9,10,11]],["A","ADD",30,18,"-2"],["A","ADD",31,18,"2"],["A","IDLE_ONE",31,[9,10,11,12]],["A","ADD",31,18,"-2"],["A","ADD",32,18,"2"],["A","IDLE_ONE",32,[9,10,11,12,13]],["A","ADD",32,18,"-2"],["A","ADD",33,18,"2"],["A","IDLE_ONE",33,[9,10,11,12,13,14]],["A","ADD",33,18,"-2"],["A","ADD",34,18,"2"],["A","IDLE_ONE",34,[9,10,11,12,13,14,15]],["A","ADD",34,18,"-2"],["A","ADD",35,18,"2"],["A","IDLE_ONE",35,[9,10,11,12,13,14,15,16]],["A","ADD",35,18,"-2"],["B","LAMBDA",36,-1],["B","ADD",37,36,"1"],["B","SCALE",37,"-2"],["B","ADD",37,51,"2"],["B","ADD",37,50,"1"],["B","ADD",37,49,"4"],["B","ADD",37,48,"10"],["B","ADD",37,47,"2"],["B","ADD",37,46,"1"],["B","ADD",37,45,"4"],["B","ADD",37,44,"10"],["B","ADD",37,43,"2"],["B","ADD",37,42,"1"],["B","ADD",37,41,"4"],["B","ADD",37,40,"10"],["B","ADD",37,39,"2"],["B","ADD",37,38,"1"],["B","SCALE",37,"-2/5"],["B","ADD",51,37,"2"],["B","ADD",50,37,"1/2"],["B","ADD",49,37,"-1/2"],["B","ADD",48,37,"-1/4"],["B","ADD",47,37,"2"],["B","ADD",46,37,"1/2"],["B","ADD",45,37,"-1/2"],["B","ADD",44,37,"-1/4"],["B","ADD",43,37,"2"],["B","ADD",42,37,"1/2"],["B","ADD",41,37,"-1/2"],["B","ADD",40,37,"-1/4"],["B","ADD",39,37,"2"],["B","ADD",38,37,"1/2"],["B","ADD",36,51,"-1"],["B","ADD",36,49,"-2"],["B","ADD",36,48,"-4"],["B","ADD",36,47,"-1"],["B","ADD",36,45,"-2"],["B","ADD",36,44,"-4"],["B","ADD",36,43,"-1"],["B","ADD",36,41,"-2"],["B","ADD",36,40,"-4"],["B","ADD",36,39,"-1"],["B","ADD",36,37,"1/2"],["B","SCALE",36,"5"],["B","ADD",51,36,"1/10"],["B","ADD",50,36,"-1/10"],["B","ADD",49,36,"-3/20"],["B","ADD",48,36,"1/20"],["B","ADD",47,36,"1/10"],["B","ADD",46,36,"-1/10"],["B","ADD",45,36,"-3/20"],["B","ADD",44,36,"1/20"],["B","ADD",43,36,"1/10"],["B","ADD",42,36,"-1/10"],["B","ADD",41,36,"-3/20"],["B","ADD",40,36,"1/20"],["B","ADD",39,36,"1/10"],["B","ADD",38,36,"-1/10"],["B","ADD",37,36,"-11/5"],["B","ADD",37,36,"41/15"],["B","ADD",38,36,"7/30"],["B","ADD",39,36,"11/30"],["B","SCALE",36,"-2/15"],["B","ADD",36,37,"-3"],["B","ADD",36,38,"62"],["B","ADD",36,39,"-14"],["B","IDLE_ONE",36,[2,3,4,5,6,7,8]],["B","ADD",36,39,"14"],["B","ADD",36,38,"-62"],["B","ADD",36,37,"3"],["B","SCALE",36,"-15/2"],["B","ADD",39,36,"-11/30"],["B","ADD",38,36,"-7/30"],["B","ADD",37,36,"-41/15"],["B","ADD",36,38,"13/3"],["B","ADD",37,38,"-71/6"],["B","ADD",39,38,"-19/12"],["B","SCALE",38,"1/3"],["B","ADD",38,37,"2"],["B","ADD",38,39,"8"],["B","IDLE_ONE",38,[2,3,4,5,6,7,8]],["B","ADD",38,39,"-8"],["B","ADD",38,37,"-2"],["B","SCALE",38,"3"],["B","ADD",39,38,"19/12"],["B","ADD",37,38,"71/6"],["B","ADD",36,38,"-13/3"],["B","ADD",37,36,"41/15"],["B","ADD",38,36,"11/30"],["B","ADD",39,36,"29/30"],["B","ADD",40,36,"-1/15"],["B","ADD",41,36,"-1/6"],["B","SCALE",36,"2/15"],["B","ADD",36,37,"6"],["B","ADD",36,38,"22"],["B","ADD",36,39,"-56"],["B","ADD",36,40,"-68"],["B","ADD",36,41,"-156"],["B","IDLE_ONE",36,[3,4,5,6,7,8]],["B","ADD",36,41,"156"],["B","ADD",36,40,"68"],["B","ADD",36,39,"56"],["B","ADD",36,38,"-22"],["B","ADD",36,37,"-6"],["B","SCALE",36,"15/2"],["B","ADD",41,36,"1/6"],["B","ADD",40,36,"1/15"],["B","ADD",39,36,"-29/30"],["B","ADD",38,36,"-11/30"],["B","ADD",37,36,"-41/15"],["B","ADD",36,37,"1"],["B","SWAP",36,37],["B","ADD",36,37,"-1"],["B","SWAP",36,37],["B","ADD",36,37,"-1"],["B","SWAP",36,37],["B","ADD",36,37,"-1"],["B","SWAP",36,37],["B","ADD",36,37,"-2"],["B","SWAP",36,37],["B","ADD",36,37,"-1"],["B","SWAP",36,37],["B","ADD",36,37,"-3"],["B","SWAP",36,37],["B","ADD",36,37,"-2"],["B","SWAP",36,37],["B","ADD",36,37,"-2"],["B","SWAP",36,37],["B","SWAP",36,38],["B","ADD",36,38,"-30"],["B","SWAP",36,38],["B","ADD",36,38,"-2"],["B","SWAP",36,38],["B","SWAP",36,39],["B","ADD",36,39,"-161"],["B","SWAP",36,39],["B","ADD",36,40,"1"],["B","SWAP",36,40],["B","ADD",36,40,"-1"],["B","SWAP",36,40],["B","ADD",36,40,"-10"],["B","SWAP",36,40],["B","SWAP",36,41],["B","ADD",36,41,"-28"],["B","SWAP",36,41],["B","SCALE",36,"4"],["B","ADD",36,37,"-93"],["B","ADD",36,38,"-347"],["B","ADD",36,39,"10"],["B","ADD",36,40,"12"],["B","ADD",36,41,"28"],["B","IDLE_ONE",36,[3,4,5,6,7,8]],["B","ADD",36,41,"-28"],["B","ADD",36,40,"-12"],["B","ADD",36,39,"-10"],["B","ADD",36,38,"347"],["B","ADD",36,37,"93"],["B","SCALE",36,"1/4"],["B","SWAP",36,41],["B","ADD",36,41,"28"],["B","SWAP",36,41],["B","SWAP",36,40],["B","ADD",36,40,"10"],["B","SWAP",36,40],["B","ADD",36,40,"1"],["B","SWAP",36,40],["B","ADD",36,40,"-1"],["B","SWAP",36,39],["B","ADD",36,39,"161"],["B","SWAP",36,39],["B","SWAP",36,38],["B","ADD",36,38,"2"],["B","SWAP",36,38],["B","ADD",36,38,"30"],["B","SWAP",36,38],["B","SWAP",36,37],["B","ADD",36,37,"2"],["B","SWAP",36,37],["B","ADD",36,37,"2"],["B","SWAP",36,37],["B","ADD",36,37,"3"],["B","SWAP",36,37],["B","ADD",36,37,"1"],["B","SWAP",36,37],["B","ADD",36,37,"2"],["B","SWAP",36,37],["B","ADD",36,37,"1"],["B","SWAP",36,37],["B","ADD",36,37,"1"],["B","SWAP",36,37],["B","ADD",36,37,"1"],["B","SWAP",36,37],["B","ADD",36,37,"-1"],["B","ADD",37,36,"41/15"],["B","ADD",38,36,"11/30"],["B","ADD",39,36,"29/30"],["B","ADD",40,36,"-11/60"],["B","ADD",41,36,"-7/60"],["B","ADD",42,36,"7/30"],["B","ADD",43,36,"11/30"],["B","SCALE",36,"-2/15"],["B","ADD",36,37,"55"],["B","ADD",36,38,"218"],["B","ADD",36,39,"-546"],["B","ADD",36,40,"-1748"],["B","ADD",36,41,"-1092"],["B","ADD",36,42,"-982"],["B","ADD",36,43,"218"],["B","IDLE_ONE",36,[4,5,6,7,8]],["B","ADD",36,43,"-218"],["B","ADD",36,42,"982"],["B","ADD",36,41,"1092"],["B","ADD",36,40,"1748"],["B","ADD",36,39,"546"],["B","ADD",36,38,"-218"],["B","ADD",36,37,"-55"],["B","SCALE",36,"-15/2"],["B","ADD",43,36,"-11/30"],["B","ADD",42,36,"-7/30"],["B","ADD",41,36,"7/60"],["B","ADD",40,36,"11/60"],["B","ADD",39,36,"-29/30"],["B","ADD",38,36,"-11/30"],["B","ADD",37,36,"-41/15"],["B","ADD",36,38,"409/150"],["B","ADD",37,38,"-559/75"],["B","ADD",39,38,"-791/300"],["B","ADD",40,38,"1/2"],["B","ADD",41,38,"191/600"],["B","ADD",42,38,"-191/300"],["B","ADD",43,38,"-1"],["B","SCALE",38,"1/75"],["B","ADD",38,37,"-2"],["B","ADD",38,39,"20"],["B","ADD",38,40,"64"],["B","ADD",38,41,"40"],["B","ADD",38,42,"36"],["B","ADD",38,43,"-8"],["B","IDLE_ONE",38,[4,5,6,7,8]],["B","ADD",38,43,"8"],["B","ADD",38,42,"-36"],["B","ADD",38,41,"-40"],["B","ADD",38,40,"-64"],["B","ADD",38,39,"-20"],["B","ADD",38,37,"2"],["B","SCALE",38,"75"],["B","ADD",43,38,"1"],["B","ADD",42,38,"191/300"],["B","ADD",41,38,"-191/600"],["B","ADD",40,38,"-1/2"],["B","ADD",39,38,"791/300"],["B","ADD",37,38,"559/75"],["B","ADD",36,38,"-409/150"],["B","ADD",37,36,"41/15"],["B","ADD",38,36,"11/30"],["B","ADD",39,36,"29/30"],["B","ADD",40,36,"-11/60"],["B","ADD",41,36,"-7/60"],["B","ADD",42,36,"11/30"],["B","ADD",43,36,"29/30"],["B","ADD",44,36,"-1/15"],["B","ADD",45,36,"-1/6"],["B","SCALE",36,"2/15"],["B","ADD",36,37,"55"],["B","ADD",36,38,"218"],["B","ADD",36,39,"-546"],["B","ADD",36,40,"-1748"],["B","ADD",36,41,"-1092"],["B","ADD",36,42,"218"],["B","ADD",36,43,"-546"],["B","ADD",36,44,"-656"],["B","ADD",36,45,"-1528"],["B","IDLE_ONE",36,[5,6,7,8]],["B","ADD",36,45,"1528"],["B","ADD",36,44,"656"],["B","ADD",36,43,"546"],["B","ADD",36,42,"-218"],["B","ADD",36,41,"1092"],["B","ADD",36,40,"1748"],["B","ADD",36,39,"546"],["B","ADD",36,38,"-218"],["B","ADD",36,37,"-55"],["B","SCALE",36,"15/2"],["B","ADD",45,36,"1/6"],["B","ADD",44,36,"1/15"],["B","ADD",43,36,"-29/30"],["B","ADD",42,36,"-11/30"],["B","ADD",41,36,"7/60"],["B","ADD",40,36,"11/60"],["B","ADD",39,36,"-29/30"],["B","ADD",38,36,"-11/30"],["B","ADD",37,36,"-41/15"],["B","ADD",36,38,"409/150"],["B","ADD",37,38,"-559/75"],["B","ADD",39,38,"-791/300"],["B","ADD",40,38,"1/2"],["B","ADD",41,38,"191/600"],["B","ADD",42,38,"-1"],["B","ADD",43,38,"-791/300"],["B","ADD",44,38,"109/600"],["B","ADD",45,38,"91/200"],["B","SCALE",38,"-1/75"],["B","ADD",38,37,"-2"],["B","ADD",38,39,"20"],["B","ADD",38,40,"64"],["B","ADD",38,41,"40"],["B","ADD",38,42,"-8"],["B","ADD",38,43,"20"],["B","ADD",38,44,"24"],["B","ADD",38,45,"56"],["B","IDLE_ONE",38,[5,6,7,8]],["B","ADD",38,45,"-56"],["B","ADD",38,44,"-24"],["B","ADD",38,43,"-20"],["B","ADD",38,42,"8"],["B","ADD",38,41,"-40"],["B","ADD",38,40,"-64"],["B","ADD",38,39,"-20"],["B","ADD",38,37,"2"],["B","SCALE",38,"-75"],["B","ADD",45,38,"-91/200"],["B","ADD",44,38,"-109/600"],["B","ADD",43,38,"791/300"],["B","ADD",42,38,"1"],["B","ADD",41,38,"-191/600"],["B","ADD",40,38,"-1/2"],["B","ADD",39,38,"791/300"],["B","ADD",37,38,"559/75"],["B","ADD",36,38,"-409/150"],["B","ADD",37,36,"41/15"],["B","ADD",38,36,"11/30"],["B","ADD",39,36,"29/30"],["B","ADD",40,36,"-11/60"],["B","ADD",41,36,"-7/60"],["B","ADD",42,36,"11/30"],["B","ADD",43,36,"29/30"],["B","ADD",44,36,"-11/60"],["B","ADD",45,36,"-7/60"],["B","ADD",46,36,"7/30"],["B","ADD",47,36,"11/30"],["B","SCALE",36,"-2/15"],["B","ADD",36,37,"55"],["B","ADD",36,38,"218"],["B","ADD",36,39,"-546"],["B","ADD",36,40,"-1748"],["B","ADD",36,41,"-1092"],["B","ADD",36,42,"218"],["B","ADD",36,43,"-546"],["B","ADD",36,44,"-1748"],["B","ADD",36,45,"-1092"],["B","ADD",36,46,"-982"],["B","ADD",36,47,"218"],["B","IDLE_ONE",36,[6,7,8]],["B","ADD",36,47,"-218"],["B","ADD",36,46,"982"],["B","ADD",36,45,"1092"],["B","ADD",36,44,"1748"],["B","ADD",36,43,"546"],["B","ADD",36,42,"-218"],["B","ADD",36,41,"1092"],["B","ADD",36,40,"1748"],["B","ADD",36,39,"546"],["B","ADD",36,38,"-218"],["B","ADD",36,37,"-55"],["B","SCALE",36,"-15/2"],["B","ADD",47,36,"-11/30"],["B","ADD",46,36,"-7/30"],["B","ADD",45,36,"7/60"],["B","ADD",44,36,"11/60"],["B","ADD",43,36,"-29/30"],["B","ADD",42,36,"-11/30"],["B","ADD",41,36,"7/60"],["B","ADD",40,36,"11/60"],["B","ADD",39,36,"-29/30"],["B","ADD",38,36,"-11/30"],["B","ADD",37,36,"-41/15"],["B","ADD",36,38,"409/150"],["B","ADD",37,38,"-559/75"],["B","ADD",39,38,"-791/300"],["B","ADD",40,38,"1/2"],["B","ADD",41,38,"191/600"],["B","ADD",42,38,"-1"],["B","ADD",43,38,"-791/300"],["B","ADD",44,38,"1/2"],["B","ADD",45,38,"191/600"],["B","ADD",46,38,"-191/300"],["B","ADD",47,38,"-1"],["B","SCALE",38,"1/75"],["B","ADD",38,37,"-2"],["B","ADD",38,39,"20"],["B","ADD",38,40,"64"],["B","ADD",38,41,"40"],["B","ADD",38,42,"-8"],["B","ADD",38,43,"20"],["B","ADD",38,44,"64"],["B","ADD",38,45,"40"],["B","ADD",38,46,"36"],["B","ADD",38,47,"-8"],["B","IDLE_ONE",38,[6,7,8]],["B","ADD",38,47,"8"],["B","ADD",38,46,"-36"],["B","ADD",38,45,"-40"],["B","ADD",38,44,"-64"],["B","ADD",38,43,"-20"],["B","ADD",38,42,"8"],["B","ADD",38,41,"-40"],["B","ADD",38,40,"-64"],["B","ADD",38,39,"-20"],["B","ADD",38,37,"2"],["B","SCALE",38,"75"],["B","ADD",47,38,"1"],["B","ADD",46,38,"191/300"],["B","ADD",45,38,"-191/600"],["B","ADD",44,38,"-1/2"],["B","ADD",43,38,"791/300"],["B","ADD",42,38,"1"],["B","ADD",41,38,"-191/600"],["B","ADD",40,38,"-1/2"],["B","ADD",39,38,"791/300"],["B","ADD",37,38,"559/75"],["B","ADD",36,38,"-409/150"],["B","ADD",37,36,"41/15"],["B","ADD",38,36,"11/30"],["B","ADD",39,36,"29/30"],["B","ADD",40,36,"-11/60"],["B","ADD",41,36,"-7/60"],["B","ADD",42,36,"11/30"],["B","ADD",43,36,"29/30"],["B","ADD",44,36,"-11/60"],["B","ADD",45,36,"-7/60"],["B","ADD",46,36,"11/30"],["B","ADD",47,36,"29/30"],["B","ADD",48,36,"-1/15"],["B","ADD",49,36,"-1/6"],["B","SCALE",36,"2/15"],["B","ADD",36,37,"55"],["B","ADD",36,38,"218"],["B","ADD",36,39,"-546"],["B","ADD",36,40,"-1748"],["B","ADD",36,41,"-1092"],["B","ADD",36,42,"218"],["B","ADD",36,43,"-546"],["B","ADD",36,44,"-1748"],["B","ADD",36,45,"-1092"],["B","ADD",36,46,"218"],["B","ADD",36,47,"-546"],["B","ADD",36,48,"-656"],["B","ADD",36,49,"-1528"],["B","IDLE_ONE",36,[7,8]],["B","ADD",36,49,"1528"],["B","ADD",36,48,"656"],["B","ADD",36,47,"546"],["B","ADD",36,46,"-218"],["B","ADD",36,45,"1092"],["B","ADD",36,44,"1748"],["B","ADD",36,43,"546"],["B","ADD",36,42,"-218"],["B","ADD",36,41,"1092"],["B","ADD",36,40,"1748"],["B","ADD",36,39,"546"],["B","ADD",36,38,"-218"],["B","ADD",36,37,"-55"],["B","SCALE",36,"15/2"],["B","ADD",49,36,"1/6"],["B","ADD",48,36,"1/15"],["B","ADD",47,36,"-29/30"],["B","ADD",46,36,"-11/30"],["B","ADD",45,36,"7/60"],["B","ADD",44,36,"11/60"],["B","ADD",43,36,"-29/30"],["B","ADD",42,36,"-11/30"],["B","ADD",41,36,"7/60"],["B","ADD",40,36,"11/60"],["B","ADD",39,36,"-29/30"],["B","ADD",38,36,"-11/30"],["B","ADD",37,36,"-41/15"],["B","ADD",36,38,"409/150"],["B","ADD",37,38,"-559/75"],["B","ADD",39,38,"-791/300"],["B","ADD",40,38,"1/2"],["B","ADD",41,38,"191/600"],["B","ADD",42,38,"-1"],["B","ADD",43,38,"-791/300"],["B","ADD",44,38,"1/2"],["B","ADD",45,38,"191/600"],["B","ADD",46,38,"-1"],["B","ADD",47,38,"-791/300"],["B","ADD",48,38,"109/600"],["B","ADD",49,38,"91/200"],["B","SCALE",38,"-1/75"],["B","ADD",38,37,"-2"],["B","ADD",38,39,"20"],["B","ADD",38,40,"64"],["B","ADD",38,41,"40"],["B","ADD",38,42,"-8"],["B","ADD",38,43,"20"],["B","ADD",38,44,"64"],["B","ADD",38,45,"40"],["B","ADD",38,46,"-8"],["B","ADD",38,47,"20"],["B","ADD",38,48,"24"],["B","ADD",38,49,"56"],["B","IDLE_ONE",38,[7,8]],["B","ADD",38,49,"-56"],["B","ADD",38,48,"-24"],["B","ADD",38,47,"-20"],["B","ADD",38,46,"8"],["B","ADD",38,45,"-40"],["B","ADD",38,44,"-64"],["B","ADD",38,43,"-20"],["B","ADD",38,42,"8"],["B","ADD",38,41,"-40"],["B","ADD",38,40,"-64"],["B","ADD",38,39,"-20"],["B","ADD",38,37,"2"],["B","SCALE",38,"-75"],["B","ADD",49,38,"-91/200"],["B","ADD",48,38,"-109/600"],["B","ADD",47,38,"791/300"],["B","ADD",46,38,"1"],["B","ADD",45,38,"-191/600"],["B","ADD",44,38,"-1/2"],["B","ADD",43,38,"791/300"],["B","ADD",42,38,"1"],["B","ADD",41,38,"-191/600"],["B","ADD",40,38,"-1/2"],["B","ADD",39,38,"791/300"],["B","ADD",37,38,"559/75"],["B","ADD",36,38,"-409/150"],["B","ADD",37,36,"41/16"],["B","ADD",52,36,"1/16"],["B","ADD",53,36,"9/32"],["B","SCALE",36,"-1/16"],["B","ADD",36,52,"-10"],["B","ADD",36,53,"6"],["B","IDLE_ONE",36,[16,15,14,13,12,11,10,9]],["B","ADD",36,53,"-6"],["B","ADD",36,52,"10"],["B","SCALE",36,"-16"],["B","ADD",53,36,"-9/32"],["B","ADD",52,36,"-1/16"],["B","ADD",37,36,"-41/16"],["B","ADD",36,37,"7/18"],["B","ADD",52,37,"-1/36"],["B","ADD",53,37,"-1/9"],["B","SCALE",37,"-1/18"],["B","ADD",37,52,"-22"],["B","ADD",37,53,"14"],["B","IDLE_ONE",37,[16,15,14,13,12,11,10,9]],["B","ADD",37,53,"-14"],["B","ADD",37,52,"22"],["B","SCALE",37,"-18"],["B","ADD",53,37,"1/9"],["B","ADD",52,37,"1/36"],["B","ADD",36,37,"-7/18"],["B","ADD",37,36,"41/16"],["B","ADD",52,36,"11/64"],["B","ADD",53,36,"29/64"],["B","ADD",54,36,"1/32"],["B","ADD",55,36,"5/64"],["B","SCALE",36,"-1/16"],["B","ADD",36,37,"5"],["B","ADD",36,52,"22"],["B","ADD",36,53,"-54"],["B","ADD",36,54,"32"],["B","ADD",36,55,"76"],["B","IDLE_ONE",36,[15,14,13,12,11,10,9]],["B","ADD",36,55,"-76"],["B","ADD",36,54,"-32"],["B","ADD",36,53,"54"],["B","ADD",36,52,"-22"],["B","ADD",36,37,"-5"],["B","SCALE",36,"-16"],["B","ADD",55,36,"-5/64"],["B","ADD",54,36,"-1/32"],["B","ADD",53,36,"-29/64"],["B","ADD",52,36,"-11/64"],["B","ADD",37,36,"-41/16"],["B","ADD",36,52,"29/5"],["B","ADD",37,52,"-223/15"],["B","ADD",53,52,"-79/30"],["B","ADD",54,52,"-11/60"],["B","ADD",55,52,"-9/20"],["B","SCALE",52,"1/15"],["B","ADD",52,37,"-1"],["B","ADD",52,53,"10"],["B","ADD",52,54,"-6"],["B","ADD",52,55,"-14"],["B","IDLE_ONE",52,[15,14,13,12,11,10,9]],["B","ADD",52,55,"14"],["B","ADD",52,54,"6"],["B","ADD",52,53,"-10"],["B","ADD",52,37,"1"],["B","SCALE",52,"15"],["B","ADD",55,52,"9/20"],["B","ADD",54,52,"11/60"],["B","ADD",53,52,"79/30"],["B","ADD",37,52,"223/15"],["B","ADD",36,52,"-29/5"],["B","ADD",37,36,"41/16"],["B","ADD",52,36,"11/64"],["B","ADD",53,36,"29/64"],["B","ADD",54,36,"9/64"],["B","ADD",55,36,"1/32"],["B","ADD",56,36,"1/16"],["B","ADD",57,36,"9/32"],["B","SCALE",36,"-1/16"],["B","ADD",36,37,"-5"],["B","ADD",36,52,"-22"],["B","ADD",36,53,"54"],["B","ADD",36,54,"-140"],["B","ADD",36,55,"-32"],["B","ADD",36,56,"-120"],["B","ADD",36,57,"76"],["B","IDLE_ONE",36,[14,13,12,11,10,9]],["B","ADD",36,57,"-76"],["B","ADD",36,56,"120"],["B","ADD",36,55,"32"],["B","ADD",36,54,"140"],["B","ADD",36,53,"-54"],["B","ADD",36,52,"22"],["B","ADD",36,37,"5"],["B","SCALE",36,"-16"],["B","ADD",57,36,"-9/32"],["B","ADD",56,36,"-1/16"],["B","ADD",55,36,"-1/32"],["B","ADD",54,36,"-9/64"],["B","ADD",53,36,"-29/64"],["B","ADD",52,36,"-11/64"],["B","ADD",37,36,"-41/16"],["B","ADD",36,52,"29/5"],["B","ADD",37,52,"-223/15"],["B","ADD",53,52,"-79/30"],["B","ADD",54,52,"-49/60"],["B","ADD",55,52,"-11/60"],["B","ADD",56,52,"-11/30"],["B","ADD",57,52,"-49/30"],["B","SCALE",52,"1/15"],["B","ADD",52,37,"1"],["B","ADD",52,53,"-10"],["B","ADD",52,54,"26"],["B","ADD",52,55,"6"],["B","ADD",52,56,"22"],["B","ADD",52,57,"-14"],["B","IDLE_ONE",52,[14,13,12,11,10,9]],["B","ADD",52,57,"14"],["B","ADD",52,56,"-22"],["B","ADD",52,55,"-6"],["B","ADD",52,54,"-26"],["B","ADD",52,53,"10"],["B","ADD",52,37,"-1"],["B","SCALE",52,"15"],["B","ADD",57,52,"49/30"],["B","ADD",56,52,"11/30"],["B","ADD",55,52,"11/60"],["B","ADD",54,52,"49/60"],["B","ADD",53,52,"79/30"],["B","ADD",37,52,"223/15"],["B","ADD",36,52,"-29/5"],["B","ADD",37,36,"41/16"],["B","ADD",52,36,"11/64"],["B","ADD",53,36,"29/64"],["B","ADD",54,36,"9/64"],["B","ADD",55,36,"1/32"],["B","ADD",56,36,"11/64"],["B","ADD",57,36,"29/64"],["B","ADD",58,36,"1/32"],["B","ADD",59,36,"5/64"],["B","SCALE",36,"-1/16"],["B","ADD",36,37,"5"],["B","ADD",36,52,"22"],["B","ADD",36,53,"-54"],["B","ADD",36,54,"140"],["B","ADD",36,55,"32"],["B","ADD",36,56,"22"],["B","ADD",36,57,"-54"],["B","ADD",36,58,"32"],["B","ADD",36,59,"76"],["B","IDLE_ONE",36,[13,12,11,10,9]],["B","ADD",36,59,"-76"],["B","ADD",36,58,"-32"],["B","ADD",36,57,"54"],["B","ADD",36,56,"-22"],["B","ADD",36,55,"-32"],["B","ADD",36,54,"-140"],["B","ADD",36,53,"54"],["B","ADD",36,52,"-22"],["B","ADD",36,37,"-5"],["B","SCALE",36,"-16"],["B","ADD",59,36,"-5/64"],["B","ADD",58,36,"-1/32"],["B","ADD",57,36,"-29/64"],["B","ADD",56,36,"-11/64"],["B","ADD",55,36,"-1/32"],["B","ADD",54,36,"-9/64"],["B","ADD",53,36,"-29/64"],["B","ADD",52,36,"-11/64"],["B","ADD",37,36,"-41/16"],["B","ADD",36,52,"29/5"],["B","ADD",37,52,"-223/15"],["B","ADD",53,52,"-79/30"],["B","ADD",54,52,"-49/60"],["B","ADD",55,52,"-11/60"],["B","ADD",56,52,"-1"],["B","ADD",57,52,"-79/30"],["B","ADD",58,52,"-11/60"],["B","ADD",59,52,"-9/20"],["B","SCALE",52,"1/15"],["B","ADD",52,37,"-1"],["B","ADD",52,53,"10"],["B","ADD",52,54,"-26"],["B","ADD",52,55,"-6"],["B","ADD",52,56,"-4"],["B","ADD",52,57,"10"],["B","ADD",52,58,"-6"],["B","ADD",52,59,"-14"],["B","IDLE_ONE",52,[13,12,11,10,9]],["B","ADD",52,59,"14"],["B","ADD",52,58,"6"],["B","ADD",52,57,"-10"],["B","ADD",52,56,"4"],["B","ADD",52,55,"6"],["B","ADD",52,54,"26"],["B","ADD",52,53,"-10"],["B","ADD",52,37,"1"],["B","SCALE",52,"15"],["B","ADD",59,52,"9/20"],["B","ADD",58,52,"11/60"],["B","ADD",57,52,"79/30"],["B","ADD",56,52,"1"],["B","ADD",55,52,"11/60"],["B","ADD",54,52,"49/60"],["B","ADD",53,52,"79/30"],["B","ADD",37,52,"223/15"],["B","ADD",36,52,"-29/5"],["B","ADD",37,36,"41/16"],["B","ADD",52,36,"11/64"],["B","ADD",53,36,"29/64"],["B","ADD",54,36,"9/64"],["B","ADD",55,36,"1/32"],["B","ADD",56,36,"11/64"],["B","ADD",57,36,"29/64"],["B","ADD",58,36,"9/64"],["B","ADD",59,36,"1/32"],["B","ADD",60,36,"1/16"],["B","ADD",61,36,"9/32"],["B","SCALE",36,"-1/16"],["B","ADD",36,37,"-5"],["B","ADD",36,52,"-22"],["B","ADD",36,53,"54"],["B","ADD",36,54,"-140"],["B","ADD",36,55,"-32"],["B","ADD",36,56,"-22"],["B","ADD",36,57,"54"],["B","ADD",36,58,"-140"],["B","ADD",36,59,"-32"],["B","ADD",36,60,"-120"],["B","ADD",36,61,"76"],["B","IDLE_ONE",36,[12,11,10,9]],["B","ADD",36,61,"-76"],["B","ADD",36,60,"120"],["B","ADD",36,59,"32"],["B","ADD",36,58,"140"],["B","ADD",36,57,"-54"],["B","ADD",36,56,"22"],["B","ADD",36,55,"32"],["B","ADD",36,54,"140"],["B","ADD",36,53,"-54"],["B","ADD",36,52,"22"],["B","ADD",36,37,"5"],["B","SCALE",36,"-16"],["B","ADD",61,36,"-9/32"],["B","ADD",60,36,"-1/16"],["B","ADD",59,36,"-1/32"],["B","ADD",58,36,"-9/64"],["B","ADD",57,36,"-29/64"],["B","ADD",56,36,"-11/64"],["B","ADD",55,36,"-1/32"],["B","ADD",54,36,"-9/64"],["B","ADD",53,36,"-29/64"],["B","ADD",52,36,"-11/64"],["B","ADD",37,36,"-41/16"],["B","ADD",36,52,"29/5"],["B","ADD",37,52,"-223/15"],["B","ADD",53,52,"-79/30"],["B","ADD",54,52,"-49/60"],["B","ADD",55,52,"-11/60"],["B","ADD",56,52,"-1"],["B","ADD",57,52,"-79/30"],["B","ADD",58,52,"-49/60"],["B","ADD",59,52,"-11/60"],["B","ADD",60,52,"-11/30"],["B","ADD",61,52,"-49/30"],["B","SCALE",52,"1/15"],["B","ADD",52,37,"1"],["B","ADD",52,53,"-10"],["B","ADD",52,54,"26"],["B","ADD",52,55,"6"],["B","ADD",52,56,"4"],["B","ADD",52,57,"-10"],["B","ADD",52,58,"26"],["B","ADD",52,59,"6"],["B","ADD",52,60,"22"],["B","ADD",52,61,"-14"],["B","IDLE_ONE",52,[12,11,10,9]],["B","ADD",52,61,"14"],["B","ADD",52,60,"-22"],["B","ADD",52,59,"-6"],["B","ADD",52,58,"-26"],["B","ADD",52,57,"10"],["B","ADD",52,56,"-4"],["B","ADD",52,55,"-6"],["B","ADD",52,54,"-26"],["B","ADD",52,53,"10"],["B","ADD",52,37,"-1"],["B","SCALE",52,"15"],["B","ADD",61,52,"49/30"],["B","ADD",60,52,"11/30"],["B","ADD",59,52,"11/60"],["B","ADD",58,52,"49/60"],["B","ADD",57,52,"79/30"],["B","ADD",56,52,"1"],["B","ADD",55,52,"11/60"],["B","ADD",54,52,"49/60"],["B","ADD",53,52,"79/30"],["B","ADD",37,52,"223/15"],["B","ADD",36,52,"-29/5"],["B","ADD",37,36,"41/16"],["B","ADD",52,36,"11/64"],["B","ADD",53,36,"29/64"],["B","ADD",54,36,"9/64"],["B","ADD",55,36,"1/32"],["B","ADD",56,36,"11/64"],["B","ADD",57,36,"29/64"],["B","ADD",58,36,"9/64"],["B","ADD",59,36,"1/32"],["B","ADD",60,36,"11/64"],["B","ADD",61,36,"29/64"],["B","ADD",62,36,"1/32"],["B","ADD",63,36,"5/64"],["B","SCALE",36,"-1/16"],["B","ADD",36,37,"5"],["B","ADD",36,52,"22"],["B","ADD",36,53,"-54"],["B","ADD",36,54,"140"],["B","ADD",36,55,"32"],["B","ADD",36,56,"22"],["B","ADD",36,57,"-54"],["B","ADD",36,58,"140"],["B","ADD",36,59,"32"],["B","ADD",36,60,"22"],["B","ADD",36,61,"-54"],["B","ADD",36,62,"32"],["B","ADD",36,63,"76"],["B","IDLE_ONE",36,[11,10,9]],["B","ADD",36,63,"-76"],["B","ADD",36,62,"-32"],["B","ADD",36,61,"54"],["B","ADD",36,60,"-22"],["B","ADD",36,59,"-32"],["B","ADD",36,58,"-140"],["B","ADD",36,57,"54"],["B","ADD",36,56,"-22"],["B","ADD",36,55,"-32"],["B","ADD",36,54,"-140"],["B","ADD",36,53,"54"],["B","ADD",36,52,"-22"],["B","ADD",36,37,"-5"],["B","SCALE",36,"-16"],["B","ADD",63,36,"-5/64"],["B","ADD",62,36,"-1/32"],["B","ADD",61,36,"-29/64"],["B","ADD",60,36,"-11/64"],["B","ADD",59,36,"-1/32"],["B","ADD",58,36,"-9/64"],["B","ADD",57,36,"-29/64"],["B","ADD",56,36,"-11/64"],["B","ADD",55,36,"-1/32"],["B","ADD",54,36,"-9/64"],["B","ADD",53,36,"-29/64"],["B","ADD",52,36,"-11/64"],["B","ADD",37,36,"-41/16"],["B","ADD",36,52,"29/5"],["B","ADD",37,52,"-223/15"],["B","ADD",53,52,"-79/30"],["B","ADD",54,52,"-49/60"],["B","ADD",55,52,"-11/60"],["B","ADD",56,52,"-1"],["B","ADD",57,52,"-79/30"],["B","ADD",58,52,"-49/60"],["B","ADD",59,52,"-11/60"],["B","ADD",60,52,"-1"],["B","ADD",61,52,"-79/30"],["B","ADD",62,52,"-11/60"],["B","ADD",63,52,"-9/20"],["B","SCALE",52,"1/15"],["B","ADD",52,37,"-1"],["B","ADD",52,53,"10"],["B","ADD",52,54,"-26"],["B","ADD",52,55,"-6"],["B","ADD",52,56,"-4"],["B","ADD",52,57,"10"],["B","ADD",52,58,"-26"],["B","ADD",52,59,"-6"],["B","ADD",52,60,"-4"],["B","ADD",52,61,"10"],["B","ADD",52,62,"-6"],["B","ADD",52,63,"-14"],["B","IDLE_ONE",52,[11,10,9]],["B","ADD",52,63,"14"],["B","ADD",52,62,"6"],["B","ADD",52,61,"-10"],["B","ADD",52,60,"4"],["B","ADD",52,59,"6"],["B","ADD",52,58,"26"],["B","ADD",52,57,"-10"],["B","ADD",52,56,"4"],["B","ADD",52,55,"6"],["B","ADD",52,54,"26"],["B","ADD",52,53,"-10"],["B","ADD",52,37,"1"],["B","SCALE",52,"15"],["B","ADD",63,52,"9/20"],["B","ADD",62,52,"11/60"],["B","ADD",61,52,"79/30"],["B","ADD",60,52,"1"],["B","ADD",59,52,"11/60"],["B","ADD",58,52,"49/60"],["B","ADD",57,52,"79/30"],["B","ADD",56,52,"1"],["B","ADD",55,52,"11/60"],["B","ADD",54,52,"49/60"],["B","ADD",53,52,"79/30"],["B","ADD",37,52,"223/15"],["B","ADD",36,52,"-29/5"],["B","ADD",37,36,"5/2"],["B","ADD",52,36,"1/8"],["B","ADD",53,36,"3/8"],["B","ADD",54,36,"1/8"],["B","ADD",56,36,"1/8"],["B","ADD",57,36,"3/8"],["B","ADD",58,36,"1/8"],["B","ADD",60,36,"1/8"],["B","ADD",61,36,"3/8"],["B","ADD",62,36,"1/8"],["B","ADD",65,36,"1/4"],["B","SCALE",36,"-5/2"],["B","ADD",36,37,"3"],["B","ADD",36,52,"2"],["B","ADD",36,53,"-10"],["B","ADD",36,54,"28"],["B","ADD",36,55,"8"],["B","ADD",36,56,"2"],["B","ADD",36,57,"-10"],["B","ADD",36,58,"28"],["B","ADD",36,59,"8"],["B","ADD",36,60,"2"],["B","ADD",36,61,"-10"],["B","ADD",36,62,"28"],["B","ADD",36,63,"8"],["B","ADD",36,64,"2"],["B","IDLE_ONE",36,[10,9]],["B","ADD",36,64,"-2"],["B","ADD",36,63,"-8"],["B","ADD",36,62,"-28"],["B","ADD",36,61,"10"],["B","ADD",36,60,"-2"],["B","ADD",36,59,"-8"],["B","ADD",36,58,"-28"],["B","ADD",36,57,"10"],["B","ADD",36,56,"-2"],["B","ADD",36,55,"-8"],["B","ADD",36,54,"-28"],["B","ADD",36,53,"10"],["B","ADD",36,52,"-2"],["B","ADD",36,37,"-3"],["B","SCALE",36,"-2/5"],["B","ADD",65,36,"-1/4"],["B","ADD",62,36,"-1/8"],["B","ADD",61,36,"-3/8"],["B","ADD",60,36,"-1/8"],["B","ADD",58,36,"-1/8"],["B","ADD",57,36,"-3/8"],["B","ADD",56,36,"-1/8"],["B","ADD",54,36,"-1/8"],["B","ADD",53,36,"-3/8"],["B","ADD",52,36,"-1/8"],["B","ADD",37,36,"-5/2"],["B","ADD",37,36,"2"],["B","ADD",52,36,"-1/4"],["B","ADD",53,36,"-1/4"],["B","ADD",55,36,"-1/4"],["B","ADD",56,36,"-1/4"],["B","ADD",57,36,"-1/4"],["B","ADD",59,36,"-1/4"],["B","ADD",60,36,"-1/4"],["B","ADD",61,36,"-1/4"],["B","ADD",63,36,"-1/4"],["B","ADD",64,36,"-1/2"],["B","SCALE",36,"5"],["B","ADD",36,37,"2"],["B","ADD",36,52,"8"],["B","ADD",36,53,"-20"],["B","ADD",36,54,"52"],["B","ADD",36,55,"12"],["B","ADD",36,56,"8"],["B","ADD",36,57,"-20"],["B","ADD",36,58,"52"],["B","ADD",36,59,"12"],["B","ADD",36,60,"8"],["B","ADD",36,61,"-20"],["B","ADD",36,62,"52"],["B","ADD",36,63,"12"],["B","ADD",36,64,"18"],["B","ADD",36,65,"-20"],["B","IDLE_ONE",36,[10,9]],["B","ADD",36,65,"20"],["B","ADD",36,64,"-18"],["B","ADD",36,63,"-12"],["B","ADD",36,62,"-52"],["B","ADD",36,61,"20"],["B","ADD",36,60,"-8"],["B","ADD",36,59,"-12"],["B","ADD",36,58,"-52"],["B","ADD",36,57,"20"],["B","ADD",36,56,"-8"],["B","ADD",36,55,"-12"],["B","ADD",36,54,"-52"],["B","ADD",36,53,"20"],["B","ADD",36,52,"-8"],["B","ADD",36,37,"-2"],["B","SCALE",36,"1/5"],["B","ADD",64,36,"1/2"],["B","ADD",63,36,"1/4"],["B","ADD",61,36,"1/4"],["B","ADD",60,36,"1/4"],["B","ADD",59,36,"1/4"],["B","ADD",57,36,"1/4"],["B","ADD",56,36,"1/4"],["B","ADD",55,36,"1/4"],["B","ADD",53,36,"1/4"],["B","ADD",52,36,"1/4"],["B","ADD",37,36,"-2"],["B","ADD",37,36,"9/5"],["B","ADD",52,36,"-2/5"],["B","ADD",53,36,"-1/2"],["B","ADD",54,36,"-1/20"],["B","ADD",55,36,"-7/20"],["B","ADD",56,36,"-2/5"],["B","ADD",57,36,"-1/2"],["B","ADD",58,36,"-1/20"],["B","ADD",59,36,"-7/20"],["B","ADD",60,36,"-2/5"],["B","ADD",61,36,"-1/2"],["B","ADD",62,36,"-1/20"],["B","ADD",63,36,"-7/20"],["B","ADD",64,36,"-1/5"],["B","ADD",66,36,"-2/5"],["B","ADD",67,36,"7/40"],["B","SCALE",36,"-1/2"],["B","ADD",36,37,"-4"],["B","ADD",36,52,"-6"],["B","ADD",36,53,"20"],["B","ADD",36,54,"-54"],["B","ADD",36,55,"-14"],["B","ADD",36,56,"-6"],["B","ADD",36,57,"20"],["B","ADD",36,58,"-54"],["B","ADD",36,59,"-14"],["B","ADD",36,60,"-6"],["B","ADD",36,61,"20"],["B","ADD",36,62,"-54"],["B","ADD",36,63,"-14"],["B","ADD",36,64,"-6"],["B","ADD",36,65,"20"],["B","ADD",36,66,"40"],["B","ADD",36,67,"100"],["B","IDLE_ONE",36,[9]],["B","ADD",36,67,"-100"],["B","ADD",36,66,"-40"],["B","ADD",36,65,"-20"],["B","ADD",36,64,"6"],["B","ADD",36,63,"14"],["B","ADD",36,62,"54"],["B","ADD",36,61,"-20"],["B","ADD",36,60,"6"],["B","ADD",36,59,"14"],["B","ADD",36,58,"54"],["B","ADD",36,57,"-20"],["B","ADD",36,56,"6"],["B","ADD",36,55,"14"],["B","ADD",36,54,"54"],["B","ADD",36,53,"-20"],["B","ADD",36,52,"6"],["B","ADD",36,37,"4"],["B","SCALE",36,"-2"],["B","ADD",67,36,"-7/40"],["B","ADD",66,36,"2/5"],["B","ADD",64,36,"1/5"],["B","ADD",63,36,"7/20"],["B","ADD",62,36,"1/20"],["B","ADD",61,36,"1/2"],["B","ADD",60,36,"2/5"],["B","ADD",59,36,"7/20"],["B","ADD",58,36,"1/20"],["B","ADD",57,36,"1/2"],["B","ADD",56,36,"2/5"],["B","ADD",55,36,"7/20"],["B","ADD",54,36,"1/20"],["B","ADD",53,36,"1/2"],["B","ADD",52,36,"2/5"],["B","ADD",37,36,"-9/5"],["B","ADD",36,54,"-52/3"],["B","ADD",37,54,"92/3"],["B","ADD",52,54,"-22/3"],["B","ADD",53,54,"-28/3"],["B","ADD",55,54,"-19/3"],["B","ADD",56,54,"-22/3"],["B","ADD",57,54,"-28/3"],["B","ADD",58,54,"-1"],["B","ADD",59,54,"-19/3"],["B","ADD",60,54,"-22/3"],["B","ADD",61,54,"-28/3"],["B","ADD",62,54,"-1"],["B","ADD",63,54,"-19/3"],["B","ADD",64,54,"-8/3"],["B","ADD",65,54,"2/3"],["B","ADD",66,54,"-22/3"],["B","ADD",67,54,"3"],["B","SCALE",54,"-20/3"],["B","ADD",54,37,"2"],["B","ADD",54,52,"8"],["B","ADD",54,53,"-20"],["B","ADD",54,55,"12"],["B","ADD",54,56,"8"],["B","ADD",54,57,"-20"],["B","ADD",54,58,"52"],["B","ADD",54,59,"12"],["B","ADD",54,60,"8"],["B","ADD",54,61,"-20"],["B","ADD",54,62,"52"],["B","ADD",54,63,"12"],["B","ADD",54,64,"8"],["B","ADD",54,65,"-20"],["B","ADD",54,66,"-30"],["B","ADD",54,67,"-80"],["B","IDLE_ONE",54,[9]],["B","ADD",54,67,"80"],["B","ADD",54,66,"30"],["B","ADD",54,65,"20"],["B","ADD",54,64,"-8"],["B","ADD",54,63,"-12"],["B","ADD",54,62,"-52"],["B","ADD",54,61,"20"],["B","ADD",54,60,"-8"],["B","ADD",54,59,"-12"],["B","ADD",54,58,"-52"],["B","ADD",54,57,"20"],["B","ADD",54,56,"-8"],["B","ADD",54,55,"-12"],["B","ADD",54,53,"20"],["B","ADD",54,52,"-8"],["B","ADD",54,37,"-2"],["B","SCALE",54,"-3/20"],["B","ADD",67,54,"-3"],["B","ADD",66,54,"22/3"],["B","ADD",65,54,"-2/3"],["B","ADD",64,54,"8/3"],["B","ADD",63,54,"19/3"],["B","ADD",62,54,"1"],["B","ADD",61,54,"28/3"],["B","ADD",60,54,"22/3"],["B","ADD",59,54,"19/3"],["B","ADD",58,54,"1"],["B","ADD",57,54,"28/3"],["B","ADD",56,54,"22/3"],["B","ADD",55,54,"19/3"],["B","ADD",53,54,"28/3"],["B","ADD",52,54,"22/3"],["B","ADD",37,54,"-92/3"],["B","ADD",36,54,"52/3"],["B","IDLE_ODD",70,[9],-1],["B","IDLE_ODD",71,[9],-1],["B","ADD",37,36,"5/3"],["B","ADD",52,36,"-1/2"],["B","ADD",53,36,"-2/3"],["B","ADD",54,36,"-1/12"],["B","ADD",55,36,"-5/12"],["B","ADD",56,36,"-1/2"],["B","ADD",57,36,"-2/3"],["B","ADD",58,36,"-1/12"],["B","ADD",59,36,"-5/12"],["B","ADD",60,36,"-1/2"],["B","ADD",61,36,"-2/3"],["B","ADD",62,36,"-1/12"],["B","ADD",63,36,"-5/12"],["B","ADD",65,36,"1/6"],["B","ADD",66,36,"-2/3"],["B","ADD",67,36,"1/4"],["B","SCALE",36,"-1/3"],["B","ADD",36,37,"1"],["B","ADD",36,52,"-2"],["B","ADD",36,53,"2"],["B","ADD",36,54,"-4"],["B","ADD",36,56,"-2"],["B","ADD",36,57,"2"],["B","ADD",36,58,"-4"],["B","ADD",36,60,"-2"],["B","ADD",36,61,"2"],["B","ADD",36,62,"-4"],["B","ADD",36,64,"-2"],["B","ADD",36,65,"2"],["B","ADD",36,66,"-2"],["B","ADD",52,37,"-3/4"],["B","ADD",53,37,"-5/4"],["B","ADD",54,37,"-1/4"],["B","ADD",55,37,"-1/2"],["B","ADD",56,37,"-3/4"],["B","ADD",57,37,"-5/4"],["B","ADD",58,37,"-1/4"],["B","ADD",59,37,"-1/2"],["B","ADD",60,37,"-3/4"],["B","ADD",61,37,"-5/4"],["B","ADD",62,37,"-1/4"],["B","ADD",63,37,"-1/2"],["B","ADD",64,37,"3/2"],["B","ADD",65,37,"5/4"],["B","ADD",66,37,"-1/2"],["B","SCALE",37,"-3/4"],["B","ADD",37,53,"1"],["B","ADD",37,54,"-3"],["B","ADD",37,55,"-1"],["B","ADD",37,57,"1"],["B","ADD",37,58,"-3"],["B","ADD",37,59,"-1"],["B","ADD",37,61,"1"],["B","ADD",37,62,"-3"],["B","ADD",37,63,"-1"],["B","ADD",37,65,"1"],["B","ADD",37,66,"2"],["B","ADD",37,67,"4"],["B","SCALE",37,"1"],["B","ADD",37,36,"1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",9,0,"1"],["A","ADD",10,0,"2"],["A","ADD",11,0,"2"],["A","ADD",12,0,"2"],["A","ADD",13,0,"2"],["A","ADD",14,0,"2"],["A","ADD",15,0,"2"],["A","ADD",16,0,"2"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",27,18,"1"],["A","ADD",28,18,"2"],["A","ADD",29,18,"2"],["A","ADD",30,18,"2"],["A","ADD",31,18,"2"],["A","ADD",32,18,"2"],["A","ADD",33,18,"2"],["A","ADD",34,18,"2"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",9,1],["A","LAMBDA",27,-1],["A","SCALE",27,"-1"],["J",9,[9,0,18,27],[36,37,"-1","1/2"]],["A","LAMBDA",9,-1],["A","LAMBDA",27,1],["A","SCALE",27,"-1"],["A","ADD",0,9,"-1"],["A","ADD",18,27,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-2"],["A","ADD",33,18,"-2"],["A","ADD",32,18,"-2"],["A","ADD",31,18,"-2"],["A","ADD",30,18,"-2"],["A","ADD",29,18,"-2"],["A","ADD",28,18,"-2"],["A","ADD",27,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-2"],["A","ADD",15,0,"-2"],["A","ADD",14,0,"-2"],["A","ADD",13,0,"-2"],["A","ADD",12,0,"-2"],["A","ADD",11,0,"-2"],["A","ADD",10,0,"-2"],["A","ADD",9,0,"-1"],["B","LAMBDA",36,-1],["B","ADD",37,36,"-1/2"],["B","SCALE",37,"1"],["B","ADD",37,67,"-4"],["B","ADD",37,66,"-2"],["B","ADD",37,65,"-1"],["B","ADD",37,63,"1"],["B","ADD",37,62,"3"],["B","ADD",37,61,"-1"],["B","ADD",37,59,"1"],["B","ADD",37,58,"3"],["B","ADD",37,57,"-1"],["B","ADD",37,55,"1"],["B","ADD",37,54,"3"],["B","ADD",37,53,"-1"],["B","SCALE",37,"-4/3"],["B","ADD",66,37,"1/2"],["B","ADD",65,37,"-5/4"],["B","ADD",64,37,"-3/2"],["B","ADD",63,37,"1/2"],["B","ADD",62,37,"1/4"],["B","ADD",61,37,"5/4"],["B","ADD",60,37,"3/4"],["B","ADD",59,37,"1/2"],["B","ADD",58,37,"1/4"],["B","ADD",57,37,"5/4"],["B","ADD",56,37,"3/4"],["B","ADD",55,37,"1/2"],["B","ADD",54,37,"1/4"],["B","ADD",53,37,"5/4"],["B","ADD",52,37,"3/4"],["B","ADD",36,66,"2"],["B","ADD",36,65,"-2"],["B","ADD",36,64,"2"],["B","ADD",36,62,"4"],["B","ADD",36,61,"-2"],["B","ADD",36,60,"2"],["B","ADD",36,58,"4"],["B","ADD",36,57,"-2"],["B","ADD",36,56,"2"],["B","ADD",36,54,"4"],["B","ADD",36,53,"-2"],["B","ADD",36,52,"2"],["B","ADD",36,37,"-1"],["B","SCALE",36,"-3"],["B","ADD",67,36,"-1/4"],["B","ADD",66,36,"2/3"],["B","ADD",65,36,"-1/6"],["B","ADD",63,36,"5/12"],["B","ADD",62,36,"1/12"],["B","ADD",61,36,"2/3"],["B","ADD",60,36,"1/2"],["B","ADD",59,36,"5/12"],["B","ADD",58,36,"1/12"],["B","ADD",57,36,"2/3"],["B","ADD",56,36,"1/2"],["B","ADD",55,36,"5/12"],["B","ADD",54,36,"1/12"],["B","ADD",53,36,"2/3"],["B","ADD",52,36,"1/2"],["B","ADD",37,36,"-5/3"],["B","ADD",37,36,"7/5"],["B","ADD",52,36,"-7/10"],["B","ADD",53,36,"-1"],["B","ADD",54,36,"-3/20"],["B","ADD",55,36,"-11/20"],["B","ADD",56,36,"-7/10"],["B","ADD",57,36,"-1"],["B","ADD",58,36,"-3/20"],["B","ADD",59,36,"-11/20"],["B","ADD",60,36,"-7/10"],["B","ADD",61,36,"-1"],["B","ADD",62,36,"-3/20"],["B","ADD",63,36,"-11/20"],["B","ADD",64,36,"2/5"],["B","ADD",65,36,"1/2"],["B","ADD",66,36,"-3/5"],["B","ADD",67,36,"1/5"],["B","SCALE",36,"-2"],["B","ADD",36,37,"-69"],["B","ADD",36,52,"-296"],["B","ADD",36,53,"730"],["B","ADD",36,54,"-1894"],["B","ADD",36,55,"-434"],["B","ADD",36,56,"-296"],["B","ADD",36,57,"730"],["B","ADD",36,58,"-1894"],["B","ADD",36,59,"-434"],["B","ADD",36,60,"-296"],["B","ADD",36,61,"730"],["B","ADD",36,62,"-1894"],["B","ADD",36,63,"-434"],["B","ADD",36,64,"-296"],["B","ADD",36,65,"730"],["B","ADD",36,66,"710"],["B","ADD",36,67,"1440"],["B","IDLE_ONE",36,[10]],["B","ADD",36,67,"-1440"],["B","ADD",36,66,"-710"],["B","ADD",36,65,"-730"],["B","ADD",36,64,"296"],["B","ADD",36,63,"434"],["B","ADD",36,62,"1894"],["B","ADD",36,61,"-730"],["B","ADD",36,60,"296"],["B","ADD",36,59,"434"],["B","ADD",36,58,"1894"],["B","ADD",36,57,"-730"],["B","ADD",36,56,"296"],["B","ADD",36,55,"434"],["B","ADD",36,54,"1894"],["B","ADD",36,53,"-730"],["B","ADD",36,52,"296"],["B","ADD",36,37,"69"],["B","SCALE",36,"-1/2"],["B","ADD",67,36,"-1/5"],["B","ADD",66,36,"3/5"],["B","ADD",65,36,"-1/2"],["B","ADD",64,36,"-2/5"],["B","ADD",63,36,"11/20"],["B","ADD",62,36,"3/20"],["B","ADD",61,36,"1"],["B","ADD",60,36,"7/10"],["B","ADD",59,36,"11/20"],["B","ADD",58,36,"3/20"],["B","ADD",57,36,"1"],["B","ADD",56,36,"7/10"],["B","ADD",55,36,"11/20"],["B","ADD",54,36,"3/20"],["B","ADD",53,36,"1"],["B","ADD",52,36,"7/10"],["B","ADD",37,36,"-7/5"],["B","ADD",36,55,"-11/6"],["B","ADD",37,55,"31/12"],["B","ADD",52,55,"-61/48"],["B","ADD",53,55,"-29/16"],["B","ADD",54,55,"-13/48"],["B","ADD",56,55,"-61/48"],["B","ADD",57,55,"-29/16"],["B","ADD",58,55,"-13/48"],["B","ADD",59,55,"-1"],["B","ADD",60,55,"-61/48"],["B","ADD",61,55,"-29/16"],["B","ADD",62,55,"-13/48"],["B","ADD",63,55,"-1"],["B","ADD",64,55,"17/24"],["B","ADD",65,55,"43/48"],["B","ADD",66,55,"-53/48"],["B","ADD",67,55,"143/384"],["B","SCALE",55,"5/48"],["B","ADD",55,37,"-2"],["B","ADD",55,52,"-8"],["B","ADD",55,53,"20"],["B","ADD",55,54,"-52"],["B","ADD",55,56,"-8"],["B","ADD",55,57,"20"],["B","ADD",55,58,"-52"],["B","ADD",55,59,"-12"],["B","ADD",55,60,"-8"],["B","ADD",55,61,"20"],["B","ADD",55,62,"-52"],["B","ADD",55,63,"-12"],["B","ADD",55,64,"-8"],["B","ADD",55,65,"20"],["B","ADD",55,66,"20"],["B","ADD",55,67,"40"],["B","IDLE_ONE",55,[10]],["B","ADD",55,67,"-40"],["B","ADD",55,66,"-20"],["B","ADD",55,65,"-20"],["B","ADD",55,64,"8"],["B","ADD",55,63,"12"],["B","ADD",55,62,"52"],["B","ADD",55,61,"-20"],["B","ADD",55,60,"8"],["B","ADD",55,59,"12"],["B","ADD",55,58,"52"],["B","ADD",55,57,"-20"],["B","ADD",55,56,"8"],["B","ADD",55,54,"52"],["B","ADD",55,53,"-20"],["B","ADD",55,52,"8"],["B","ADD",55,37,"2"],["B","SCALE",55,"48/5"],["B","ADD",67,55,"-143/384"],["B","ADD",66,55,"53/48"],["B","ADD",65,55,"-43/48"],["B","ADD",64,55,"-17/24"],["B","ADD",63,55,"1"],["B","ADD",62,55,"13/48"],["B","ADD",61,55,"29/16"],["B","ADD",60,55,"61/48"],["B","ADD",59,55,"1"],["B","ADD",58,55,"13/48"],["B","ADD",57,55,"29/16"],["B","ADD",56,55,"61/48"],["B","ADD",54,55,"13/48"],["B","ADD",53,55,"29/16"],["B","ADD",52,55,"61/48"],["B","ADD",37,55,"-31/12"],["B","ADD",36,55,"11/6"],["B","ADD",37,36,"3"],["B","ADD",52,36,"1/2"],["B","ADD",53,36,"1"],["B","ADD",54,36,"1/4"],["B","ADD",55,36,"1/4"],["B","ADD",56,36,"1/2"],["B","ADD",57,36,"1"],["B","ADD",58,36,"1/4"],["B","ADD",59,36,"1/4"],["B","ADD",60,36,"1/2"],["B","ADD",61,36,"1"],["B","ADD",62,36,"1/4"],["B","ADD",63,36,"1/4"],["B","ADD",64,36,"-2"],["B","ADD",65,36,"-3/2"],["B","ADD",67,36,"1/2"],["B","SCALE",36,"2"],["B","ADD",36,52,"4"],["B","ADD",36,53,"-8"],["B","ADD",36,54,"20"],["B","ADD",36,55,"4"],["B","ADD",36,56,"4"],["B","ADD",36,57,"-8"],["B","ADD",36,58,"20"],["B","ADD",36,59,"4"],["B","ADD",36,60,"4"],["B","ADD",36,61,"-8"],["B","ADD",36,62,"20"],["B","ADD",36,63,"4"],["B","ADD",36,64,"4"],["B","ADD",36,65,"-8"],["B","ADD",36,66,"-6"],["B","ADD",36,67,"-16"],["B","ADD",52,37,"-3/4"],["B","ADD",53,37,"-5/4"],["B","ADD",54,37,"-1/4"],["B","ADD",55,37,"-1/2"],["B","ADD",56,37,"-3/4"],["B","ADD",57,37,"-5/4"],["B","ADD",58,37,"-1/4"],["B","ADD",59,37,"-1/2"],["B","ADD",60,37,"-3/4"],["B","ADD",61,37,"-5/4"],["B","ADD",62,37,"-1/4"],["B","ADD",63,37,"-1/2"],["B","ADD",64,37,"3/2"],["B","ADD",65,37,"5/4"],["B","ADD",66,37,"-1/4"],["B","ADD",67,37,"-1/4"],["B","SCALE",37,"1/8"],["B","ADD",37,52,"-2"],["B","ADD",37,53,"7/2"],["B","ADD",37,54,"-17/2"],["B","ADD",37,55,"-3/2"],["B","ADD",37,56,"-2"],["B","ADD",37,57,"7/2"],["B","ADD",37,58,"-17/2"],["B","ADD",37,59,"-3/2"],["B","ADD",37,60,"-2"],["B","ADD",37,61,"7/2"],["B","ADD",37,62,"-17/2"],["B","ADD",37,63,"-3/2"],["B","ADD",37,64,"-2"],["B","ADD",37,65,"7/2"],["B","ADD",37,66,"1"],["B","ADD",37,67,"4"],["B","SCALE",37,"-2"],["B","ADD",37,36,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",10,0,"1"],["A","ADD",11,0,"2"],["A","ADD",12,0,"2"],["A","ADD",13,0,"2"],["A","ADD",14,0,"2"],["A","ADD",15,0,"2"],["A","ADD",16,0,"2"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",28,18,"1"],["A","ADD",29,18,"2"],["A","ADD",30,18,"2"],["A","ADD",31,18,"2"],["A","ADD",32,18,"2"],["A","ADD",33,18,"2"],["A","ADD",34,18,"2"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",10,1],["A","LAMBDA",28,-1],["A","SCALE",28,"-1"],["J",10,[10,0,18,28],[36,37,"-1","1/2"]],["A","LAMBDA",10,-1],["A","LAMBDA",28,1],["A","SCALE",28,"-1"],["A","ADD",0,10,"-1"],["A","ADD",18,28,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-2"],["A","ADD",33,18,"-2"],["A","ADD",32,18,"-2"],["A","ADD",31,18,"-2"],["A","ADD",30,18,"-2"],["A","ADD",29,18,"-2"],["A","ADD",28,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-2"],["A","ADD",15,0,"-2"],["A","ADD",14,0,"-2"],["A","ADD",13,0,"-2"],["A","ADD",12,0,"-2"],["A","ADD",11,0,"-2"],["A","ADD",10,0,"-1"],["B","LAMBDA",36,-1],["B","ADD",37,36,"1/2"],["B","SCALE",37,"-1/2"],["B","ADD",37,67,"-4"],["B","ADD",37,66,"-1"],["B","ADD",37,65,"-7/2"],["B","ADD",37,64,"2"],["B","ADD",37,63,"3/2"],["B","ADD",37,62,"17/2"],["B","ADD",37,61,"-7/2"],["B","ADD",37,60,"2"],["B","ADD",37,59,"3/2"],["B","ADD",37,58,"17/2"],["B","ADD",37,57,"-7/2"],["B","ADD",37,56,"2"],["B","ADD",37,55,"3/2"],["B","ADD",37,54,"17/2"],["B","ADD",37,53,"-7/2"],["B","ADD",37,52,"2"],["B","SCALE",37,"8"],["B","ADD",67,37,"1/4"],["B","ADD",66,37,"1/4"],["B","ADD",65,37,"-5/4"],["B","ADD",64,37,"-3/2"],["B","ADD",63,37,"1/2"],["B","ADD",62,37,"1/4"],["B","ADD",61,37,"5/4"],["B","ADD",60,37,"3/4"],["B","ADD",59,37,"1/2"],["B","ADD",58,37,"1/4"],["B","ADD",57,37,"5/4"],["B","ADD",56,37,"3/4"],["B","ADD",55,37,"1/2"],["B","ADD",54,37,"1/4"],["B","ADD",53,37,"5/4"],["B","ADD",52,37,"3/4"],["B","ADD",36,67,"16"],["B","ADD",36,66,"6"],["B","ADD",36,65,"8"],["B","ADD",36,64,"-4"],["B","ADD",36,63,"-4"],["B","ADD",36,62,"-20"],["B","ADD",36,61,"8"],["B","ADD",36,60,"-4"],["B","ADD",36,59,"-4"],["B","ADD",36,58,"-20"],["B","ADD",36,57,"8"],["B","ADD",36,56,"-4"],["B","ADD",36,55,"-4"],["B","ADD",36,54,"-20"],["B","ADD",36,53,"8"],["B","ADD",36,52,"-4"],["B","SCALE",36,"1/2"],["B","ADD",67,36,"-1/2"],["B","ADD",65,36,"3/2"],["B","ADD",64,36,"2"],["B","ADD",63,36,"-1/4"],["B","ADD",62,36,"-1/4"],["B","ADD",61,36,"-1"],["B","ADD",60,36,"-1/2"],["B","ADD",59,36,"-1/4"],["B","ADD",58,36,"-1/4"],["B","ADD",57,36,"-1"],["B","ADD",56,36,"-1/2"],["B","ADD",55,36,"-1/4"],["B","ADD",54,36,"-1/4"],["B","ADD",53,36,"-1"],["B","ADD",52,36,"-1/2"],["B","ADD",37,36,"-3"],["B","ADD",37,36,"2/3"],["B","ADD",52,36,"-5/4"],["B","ADD",53,36,"-23/12"],["B","ADD",54,36,"-1/3"],["B","ADD",55,36,"-11/12"],["B","ADD",56,36,"-5/4"],["B","ADD",57,36,"-23/12"],["B","ADD",58,36,"-1/3"],["B","ADD",59,36,"-11/12"],["B","ADD",60,36,"-5/4"],["B","ADD",61,36,"-23/12"],["B","ADD",62,36,"-1/3"],["B","ADD",63,36,"-11/12"],["B","ADD",64,36,"-1/3"],["B","SCALE",36,"2/3"],["B","ADD",36,37,"-12"],["B","ADD",36,52,"-52"],["B","ADD",36,53,"128"],["B","ADD",36,54,"-332"],["B","ADD",36,55,"-76"],["B","ADD",36,56,"-52"],["B","ADD",36,57,"128"],["B","ADD",36,58,"-332"],["B","ADD",36,59,"-76"],["B","ADD",36,60,"-52"],["B","ADD",36,61,"128"],["B","ADD",36,62,"-332"],["B","ADD",36,63,"-76"],["B","ADD",36,64,"-28"],["B","ADD",36,65,"76"],["B","IDLE_ONE",36,[11]],["B","ADD",36,65,"-76"],["B","ADD",36,64,"28"],["B","ADD",36,63,"76"],["B","ADD",36,62,"332"],["B","ADD",36,61,"-128"],["B","ADD",36,60,"52"],["B","ADD",36,59,"76"],["B","ADD",36,58,"332"],["B","ADD",36,57,"-128"],["B","ADD",36,56,"52"],["B","ADD",36,55,"76"],["B","ADD",36,54,"332"],["B","ADD",36,53,"-128"],["B","ADD",36,52,"52"],["B","ADD",36,37,"12"],["B","SCALE",36,"3/2"],["B","ADD",64,36,"1/3"],["B","ADD",63,36,"11/12"],["B","ADD",62,36,"1/3"],["B","ADD",61,36,"23/12"],["B","ADD",60,36,"5/4"],["B","ADD",59,36,"11/12"],["B","ADD",58,36,"1/3"],["B","ADD",57,36,"23/12"],["B","ADD",56,36,"5/4"],["B","ADD",55,36,"11/12"],["B","ADD",54,36,"1/3"],["B","ADD",53,36,"23/12"],["B","ADD",52,36,"5/4"],["B","ADD",37,36,"-2/3"],["B","ADD",36,53,"-14/27"],["B","ADD",37,53,"46/135"],["B","ADD",52,53,"-88/135"],["B","ADD",54,53,"-47/270"],["B","ADD",55,53,"-43/90"],["B","ADD",56,53,"-88/135"],["B","ADD",57,53,"-1"],["B","ADD",58,53,"-47/270"],["B","ADD",59,53,"-43/90"],["B","ADD",60,53,"-88/135"],["B","ADD",61,53,"-1"],["B","ADD",62,53,"-47/270"],["B","ADD",63,53,"-43/90"],["B","ADD",64,53,"-22/135"],["B","ADD",65,53,"1/135"],["B","SCALE",53,"-4/135"],["B","ADD",53,37,"-1"],["B","ADD",53,52,"-4"],["B","ADD",53,54,"-26"],["B","ADD",53,55,"-6"],["B","ADD",53,56,"-4"],["B","ADD",53,57,"10"],["B","ADD",53,58,"-26"],["B","ADD",53,59,"-6"],["B","ADD",53,60,"-4"],["B","ADD",53,61,"10"],["B","ADD",53,62,"-26"],["B","ADD",53,63,"-6"],["B","ADD",53,64,"-2"],["B","ADD",53,65,"6"],["B","IDLE_ONE",53,[11]],["B","ADD",53,65,"-6"],["B","ADD",53,64,"2"],["B","ADD",53,63,"6"],["B","ADD",53,62,"26"],["B","ADD",53,61,"-10"],["B","ADD",53,60,"4"],["B","ADD",53,59,"6"],["B","ADD",53,58,"26"],["B","ADD",53,57,"-10"],["B","ADD",53,56,"4"],["B","ADD",53,55,"6"],["B","ADD",53,54,"26"],["B","ADD",53,52,"4"],["B","ADD",53,37,"1"],["B","SCALE",53,"-135/4"],["B","ADD",65,53,"-1/135"],["B","ADD",64,53,"22/135"],["B","ADD",63,53,"43/90"],["B","ADD",62,53,"47/270"],["B","ADD",61,53,"1"],["B","ADD",60,53,"88/135"],["B","ADD",59,53,"43/90"],["B","ADD",58,53,"47/270"],["B","ADD",57,53,"1"],["B","ADD",56,53,"88/135"],["B","ADD",55,53,"43/90"],["B","ADD",54,53,"47/270"],["B","ADD",52,53,"88/135"],["B","ADD",37,53,"-46/135"],["B","ADD",36,53,"14/27"],["B","ADD",37,36,"3"],["B","ADD",52,36,"1/2"],["B","ADD",53,36,"1"],["B","ADD",54,36,"1/4"],["B","ADD",55,36,"1/4"],["B","ADD",56,36,"1/2"],["B","ADD",57,36,"1"],["B","ADD",58,36,"1/4"],["B","ADD",59,36,"1/4"],["B","ADD",60,36,"1/2"],["B","ADD",61,36,"1"],["B","ADD",62,36,"1/4"],["B","ADD",63,36,"1/4"],["B","ADD",65,36,"1/2"],["B","SCALE",36,"-2"],["B","ADD",36,52,"-4"],["B","ADD",36,53,"8"],["B","ADD",36,54,"-20"],["B","ADD",36,55,"-4"],["B","ADD",36,56,"-4"],["B","ADD",36,57,"8"],["B","ADD",36,58,"-20"],["B","ADD",36,59,"-4"],["B","ADD",36,60,"-4"],["B","ADD",36,61,"8"],["B","ADD",36,62,"-20"],["B","ADD",36,63,"-4"],["B","ADD",36,64,"-6"],["B","ADD",36,65,"8"],["B","ADD",52,37,"-3/4"],["B","ADD",53,37,"-5/4"],["B","ADD",54,37,"-1/4"],["B","ADD",55,37,"-1/2"],["B","ADD",56,37,"-3/4"],["B","ADD",57,37,"-5/4"],["B","ADD",58,37,"-1/4"],["B","ADD",59,37,"-1/2"],["B","ADD",60,37,"-3/4"],["B","ADD",61,37,"-5/4"],["B","ADD",62,37,"-1/4"],["B","ADD",63,37,"-1/2"],["B","ADD",64,37,"-1/4"],["B","ADD",65,37,"-1/4"],["B","SCALE",37,"-1/8"],["B","ADD",37,52,"-2"],["B","ADD",37,53,"9/2"],["B","ADD",37,54,"-23/2"],["B","ADD",37,55,"-5/2"],["B","ADD",37,56,"-2"],["B","ADD",37,57,"9/2"],["B","ADD",37,58,"-23/2"],["B","ADD",37,59,"-5/2"],["B","ADD",37,60,"-2"],["B","ADD",37,61,"9/2"],["B","ADD",37,62,"-23/2"],["B","ADD",37,63,"-5/2"],["B","ADD",37,64,"-2"],["B","ADD",37,65,"5/2"],["B","SCALE",37,"2"],["B","ADD",37,36,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",11,0,"1"],["A","ADD",12,0,"2"],["A","ADD",13,0,"2"],["A","ADD",14,0,"2"],["A","ADD",15,0,"2"],["A","ADD",16,0,"2"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",29,18,"1"],["A","ADD",30,18,"2"],["A","ADD",31,18,"2"],["A","ADD",32,18,"2"],["A","ADD",33,18,"2"],["A","ADD",34,18,"2"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",11,1],["A","LAMBDA",29,-1],["A","SCALE",29,"-1"],["J",11,[11,0,18,29],[36,37,"-1","1/2"]],["A","LAMBDA",11,-1],["A","LAMBDA",29,1],["A","SCALE",29,"-1"],["A","ADD",0,11,"-1"],["A","ADD",18,29,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-2"],["A","ADD",33,18,"-2"],["A","ADD",32,18,"-2"],["A","ADD",31,18,"-2"],["A","ADD",30,18,"-2"],["A","ADD",29,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-2"],["A","ADD",15,0,"-2"],["A","ADD",14,0,"-2"],["A","ADD",13,0,"-2"],["A","ADD",12,0,"-2"],["A","ADD",11,0,"-1"],["B","LAMBDA",36,-1],["B","ADD",37,36,"1/2"],["B","SCALE",37,"1/2"],["B","ADD",37,65,"-5/2"],["B","ADD",37,64,"2"],["B","ADD",37,63,"5/2"],["B","ADD",37,62,"23/2"],["B","ADD",37,61,"-9/2"],["B","ADD",37,60,"2"],["B","ADD",37,59,"5/2"],["B","ADD",37,58,"23/2"],["B","ADD",37,57,"-9/2"],["B","ADD",37,56,"2"],["B","ADD",37,55,"5/2"],["B","ADD",37,54,"23/2"],["B","ADD",37,53,"-9/2"],["B","ADD",37,52,"2"],["B","SCALE",37,"-8"],["B","ADD",65,37,"1/4"],["B","ADD",64,37,"1/4"],["B","ADD",63,37,"1/2"],["B","ADD",62,37,"1/4"],["B","ADD",61,37,"5/4"],["B","ADD",60,37,"3/4"],["B","ADD",59,37,"1/2"],["B","ADD",58,37,"1/4"],["B","ADD",57,37,"5/4"],["B","ADD",56,37,"3/4"],["B","ADD",55,37,"1/2"],["B","ADD",54,37,"1/4"],["B","ADD",53,37,"5/4"],["B","ADD",52,37,"3/4"],["B","ADD",36,65,"-8"],["B","ADD",36,64,"6"],["B","ADD",36,63,"4"],["B","ADD",36,62,"20"],["B","ADD",36,61,"-8"],["B","ADD",36,60,"4"],["B","ADD",36,59,"4"],["B","ADD",36,58,"20"],["B","ADD",36,57,"-8"],["B","ADD",36,56,"4"],["B","ADD",36,55,"4"],["B","ADD",36,54,"20"],["B","ADD",36,53,"-8"],["B","ADD",36,52,"4"],["B","SCALE",36,"-1/2"],["B","ADD",65,36,"-1/2"],["B","ADD",63,36,"-1/4"],["B","ADD",62,36,"-1/4"],["B","ADD",61,36,"-1"],["B","ADD",60,36,"-1/2"],["B","ADD",59,36,"-1/4"],["B","ADD",58,36,"-1/4"],["B","ADD",57,36,"-1"],["B","ADD",56,36,"-1/2"],["B","ADD",55,36,"-1/4"],["B","ADD",54,36,"-1/4"],["B","ADD",53,36,"-1"],["B","ADD",52,36,"-1/2"],["B","ADD",37,36,"-3"],["B","ADD",36,52,"14"],["B","ADD",37,52,"-34"],["B","ADD",53,52,"-4"],["B","ADD",54,52,"-3/2"],["B","ADD",55,52,"1/2"],["B","ADD",56,52,"-1"],["B","ADD",57,52,"-4"],["B","ADD",58,52,"-3/2"],["B","ADD",59,52,"1/2"],["B","ADD",60,52,"-1"],["B","ADD",61,52,"-4"],["B","ADD",62,52,"-1/2"],["B","ADD",63,52,"1"],["B","SCALE",52,"-1"],["B","ADD",52,36,"1"],["B","ADD",52,37,"1"],["B","ADD",52,53,"-6"],["B","ADD",52,54,"16"],["B","ADD",52,55,"4"],["B","ADD",52,56,"2"],["B","ADD",52,57,"-6"],["B","ADD",52,58,"16"],["B","ADD",52,59,"4"],["B","ADD",52,60,"2"],["B","ADD",52,61,"-6"],["B","ADD",52,62,"14"],["B","ADD",52,63,"6"],["B","IDLE_ONE",52,[12]],["B","ADD",52,63,"-6"],["B","ADD",52,62,"-14"],["B","ADD",52,61,"6"],["B","ADD",52,60,"-2"],["B","ADD",52,59,"-4"],["B","ADD",52,58,"-16"],["B","ADD",52,57,"6"],["B","ADD",52,56,"-2"],["B","ADD",52,55,"-4"],["B","ADD",52,54,"-16"],["B","ADD",52,53,"6"],["B","ADD",52,37,"-1"],["B","ADD",52,36,"-1"],["B","SCALE",52,"-1"],["B","ADD",63,52,"-1"],["B","ADD",62,52,"1/2"],["B","ADD",61,52,"4"],["B","ADD",60,52,"1"],["B","ADD",59,52,"-1/2"],["B","ADD",58,52,"3/2"],["B","ADD",57,52,"4"],["B","ADD",56,52,"1"],["B","ADD",55,52,"-1/2"],["B","ADD",54,52,"3/2"],["B","ADD",53,52,"4"],["B","ADD",37,52,"34"],["B","ADD",36,52,"-14"],["B","ADD",37,36,"5/2"],["B","ADD",52,36,"1/8"],["B","ADD",53,36,"3/8"],["B","ADD",54,36,"1/8"],["B","ADD",56,36,"1/8"],["B","ADD",57,36,"3/8"],["B","ADD",58,36,"1/8"],["B","ADD",60,36,"1/8"],["B","ADD",61,36,"3/8"],["B","ADD",62,36,"1/16"],["B","ADD",63,36,"-1/16"],["B","SCALE",36,"1/8"],["B","ADD",36,37,"-1"],["B","ADD",36,52,"-4"],["B","ADD",36,53,"10"],["B","ADD",36,54,"-26"],["B","ADD",36,55,"-6"],["B","ADD",36,56,"-4"],["B","ADD",36,57,"10"],["B","ADD",36,58,"-26"],["B","ADD",36,59,"-6"],["B","ADD",36,60,"-4"],["B","ADD",36,61,"10"],["B","ADD",36,62,"-24"],["B","ADD",36,63,"-10"],["B","IDLE_ONE",36,[12]],["B","ADD",36,63,"10"],["B","ADD",36,62,"24"],["B","ADD",36,61,"-10"],["B","ADD",36,60,"4"],["B","ADD",36,59,"6"],["B","ADD",36,58,"26"],["B","ADD",36,57,"-10"],["B","ADD",36,56,"4"],["B","ADD",36,55,"6"],["B","ADD",36,54,"26"],["B","ADD",36,53,"-10"],["B","ADD",36,52,"4"],["B","ADD",36,37,"1"],["B","SCALE",36,"8"],["B","ADD",63,36,"1/16"],["B","ADD",62,36,"-1/16"],["B","ADD",61,36,"-3/8"],["B","ADD",60,36,"-1/8"],["B","ADD",58,36,"-1/8"],["B","ADD",57,36,"-3/8"],["B","ADD",56,36,"-1/8"],["B","ADD",54,36,"-1/8"],["B","ADD",53,36,"-3/8"],["B","ADD",52,36,"-1/8"],["B","ADD",37,36,"-5/2"],["B","SWAP",36,37],["B","ADD",52,36,"-3/4"],["B","ADD",53,36,"-5/4"],["B","ADD",54,36,"-1/4"],["B","ADD",55,36,"-1/2"],["B","ADD",56,36,"-3/4"],["B","ADD",57,36,"-5/4"],["B","ADD",58,36,"-1/4"],["B","ADD",59,36,"-1/2"],["B","ADD",60,36,"-3/4"],["B","ADD",61,36,"-5/4"],["B","ADD",62,36,"-1/4"],["B","ADD",63,36,"-1/4"],["B","SCALE",36,"-1/2"],["B","ADD",36,37,"1/2"],["B","ADD",36,52,"1"],["B","ADD",36,53,"-3"],["B","ADD",36,54,"8"],["B","ADD",36,55,"2"],["B","ADD",36,56,"1"],["B","ADD",36,57,"-3"],["B","ADD",36,58,"8"],["B","ADD",36,59,"2"],["B","ADD",36,60,"1"],["B","ADD",36,61,"-3"],["B","ADD",36,62,"6"],["B","ADD",36,63,"2"],["B","ADD",52,37,"-7/4"],["B","ADD",53,37,"-11/4"],["B","ADD",54,37,"-1/2"],["B","ADD",55,37,"-5/4"],["B","ADD",56,37,"-7/4"],["B","ADD",57,37,"-11/4"],["B","ADD",58,37,"-1/2"],["B","ADD",59,37,"-5/4"],["B","ADD",60,37,"-7/4"],["B","ADD",61,37,"-11/4"],["B","ADD",62,37,"-3/4"],["B","ADD",63,37,"-1/4"],["B","SCALE",37,"1/2"],["B","ADD",37,52,"-1"],["B","ADD",37,53,"1"],["B","ADD",37,54,"-2"],["B","ADD",37,56,"-1"],["B","ADD",37,57,"1"],["B","ADD",37,58,"-2"],["B","ADD",37,60,"-1"],["B","ADD",37,61,"1"],["B","ADD",37,62,"-2"],["B","ADD",37,63,"-2"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",12,0,"1"],["A","ADD",13,0,"2"],["A","ADD",14,0,"2"],["A","ADD",15,0,"2"],["A","ADD",16,0,"2"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",30,18,"1"],["A","ADD",31,18,"2"],["A","ADD",32,18,"2"],["A","ADD",33,18,"2"],["A","ADD",34,18,"2"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",12,1],["A","LAMBDA",30,-1],["A","SCALE",30,"-1"],["J",12,[12,0,18,30],[36,37,"-1","1/2"]],["A","LAMBDA",12,-1],["A","LAMBDA",30,1],["A","SCALE",30,"-1"],["A","ADD",0,12,"-1"],["A","ADD",18,30,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-2"],["A","ADD",33,18,"-2"],["A","ADD",32,18,"-2"],["A","ADD",31,18,"-2"],["A","ADD",30,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-2"],["A","ADD",15,0,"-2"],["A","ADD",14,0,"-2"],["A","ADD",13,0,"-2"],["A","ADD",12,0,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"-2"],["B","ADD",37,63,"2"],["B","ADD",37,62,"2"],["B","ADD",37,61,"-1"],["B","ADD",37,60,"1"],["B","ADD",37,58,"2"],["B","ADD",37,57,"-1"],["B","ADD",37,56,"1"],["B","ADD",37,54,"2"],["B","ADD",37,53,"-1"],["B","ADD",37,52,"1"],["B","SCALE",37,"2"],["B","ADD",63,37,"1/4"],["B","ADD",62,37,"3/4"],["B","ADD",61,37,"11/4"],["B","ADD",60,37,"7/4"],["B","ADD",59,37,"5/4"],["B","ADD",58,37,"1/2"],["B","ADD",57,37,"11/4"],["B","ADD",56,37,"7/4"],["B","ADD",55,37,"5/4"],["B","ADD",54,37,"1/2"],["B","ADD",53,37,"11/4"],["B","ADD",52,37,"7/4"],["B","ADD",36,63,"-2"],["B","ADD",36,62,"-6"],["B","ADD",36,61,"3"],["B","ADD",36,60,"-1"],["B","ADD",36,59,"-2"],["B","ADD",36,58,"-8"],["B","ADD",36,57,"3"],["B","ADD",36,56,"-1"],["B","ADD",36,55,"-2"],["B","ADD",36,54,"-8"],["B","ADD",36,53,"3"],["B","ADD",36,52,"-1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-2"],["B","ADD",63,36,"1/4"],["B","ADD",62,36,"1/4"],["B","ADD",61,36,"5/4"],["B","ADD",60,36,"3/4"],["B","ADD",59,36,"1/2"],["B","ADD",58,36,"1/4"],["B","ADD",57,36,"5/4"],["B","ADD",56,36,"3/4"],["B","ADD",55,36,"1/2"],["B","ADD",54,36,"1/4"],["B","ADD",53,36,"5/4"],["B","ADD",52,36,"3/4"],["B","SWAP",36,37],["B","ADD",37,36,"7/4"],["B","ADD",52,36,"-7/16"],["B","ADD",53,36,"-9/16"],["B","ADD",54,36,"-1/16"],["B","ADD",55,36,"-3/8"],["B","ADD",56,36,"-7/16"],["B","ADD",57,36,"-9/16"],["B","ADD",58,36,"-1/16"],["B","ADD",59,36,"-3/8"],["B","ADD",60,36,"-1/8"],["B","ADD",61,36,"1/4"],["B","SCALE",36,"-1/4"],["B","ADD",36,52,"2"],["B","ADD",36,53,"-4"],["B","ADD",36,54,"10"],["B","ADD",36,55,"2"],["B","ADD",36,56,"2"],["B","ADD",36,57,"-4"],["B","ADD",36,58,"10"],["B","ADD",36,59,"2"],["B","ADD",36,60,"2"],["B","ADD",36,61,"-2"],["B","IDLE_ONE",36,[13]],["B","ADD",36,61,"2"],["B","ADD",36,60,"-2"],["B","ADD",36,59,"-2"],["B","ADD",36,58,"-10"],["B","ADD",36,57,"4"],["B","ADD",36,56,"-2"],["B","ADD",36,55,"-2"],["B","ADD",36,54,"-10"],["B","ADD",36,53,"4"],["B","ADD",36,52,"-2"],["B","SCALE",36,"-4"],["B","ADD",61,36,"-1/4"],["B","ADD",60,36,"1/8"],["B","ADD",59,36,"3/8"],["B","ADD",58,36,"1/16"],["B","ADD",57,36,"9/16"],["B","ADD",56,36,"7/16"],["B","ADD",55,36,"3/8"],["B","ADD",54,36,"1/16"],["B","ADD",53,36,"9/16"],["B","ADD",52,36,"7/16"],["B","ADD",37,36,"-7/4"],["B","ADD",37,36,"2"],["B","ADD",52,36,"-1/4"],["B","ADD",53,36,"-1/4"],["B","ADD",55,36,"-1/4"],["B","ADD",56,36,"-1/4"],["B","ADD",57,36,"-1/4"],["B","ADD",59,36,"-1/4"],["B","ADD",61,36,"1/2"],["B","ADD",36,37,"1"],["B","ADD",36,52,"4"],["B","ADD",36,53,"-10"],["B","ADD",36,54,"26"],["B","ADD",36,55,"6"],["B","ADD",36,56,"4"],["B","ADD",36,57,"-10"],["B","ADD",36,58,"26"],["B","ADD",36,59,"6"],["B","ADD",36,60,"2"],["B","ADD",36,61,"-6"],["B","IDLE_ONE",36,[13]],["B","ADD",36,61,"6"],["B","ADD",36,60,"-2"],["B","ADD",36,59,"-6"],["B","ADD",36,58,"-26"],["B","ADD",36,57,"10"],["B","ADD",36,56,"-4"],["B","ADD",36,55,"-6"],["B","ADD",36,54,"-26"],["B","ADD",36,53,"10"],["B","ADD",36,52,"-4"],["B","ADD",36,37,"-1"],["B","ADD",61,36,"-1/2"],["B","ADD",59,36,"1/4"],["B","ADD",57,36,"1/4"],["B","ADD",56,36,"1/4"],["B","ADD",55,36,"1/4"],["B","ADD",53,36,"1/4"],["B","ADD",52,36,"1/4"],["B","ADD",37,36,"-2"],["B","ADD",37,36,"2"],["B","ADD",52,36,"-1/4"],["B","ADD",53,36,"-1/4"],["B","ADD",55,36,"-1/4"],["B","ADD",56,36,"-1/4"],["B","ADD",57,36,"-1/4"],["B","ADD",59,36,"-1/4"],["B","ADD",60,36,"-1/4"],["B","ADD",61,36,"1/4"],["B","SCALE",36,"-1/2"],["B","ADD",36,37,"1/2"],["B","ADD",36,52,"-1"],["B","ADD",36,53,"1"],["B","ADD",36,54,"-2"],["B","ADD",36,56,"-1"],["B","ADD",36,57,"1"],["B","ADD",36,58,"-2"],["B","ADD",36,60,"-3"],["B","ADD",36,61,"1"],["B","ADD",52,37,"-3/4"],["B","ADD",53,37,"-5/4"],["B","ADD",54,37,"-1/4"],["B","ADD",55,37,"-1/2"],["B","ADD",56,37,"-3/4"],["B","ADD",57,37,"-5/4"],["B","ADD",58,37,"-1/4"],["B","ADD",59,37,"-1/2"],["B","ADD",60,37,"-1/4"],["B","ADD",61,37,"-1/4"],["B","SCALE",37,"-1/2"],["B","ADD",37,52,"-1"],["B","ADD",37,53,"3"],["B","ADD",37,54,"-8"],["B","ADD",37,55,"-2"],["B","ADD",37,56,"-1"],["B","ADD",37,57,"3"],["B","ADD",37,58,"-8"],["B","ADD",37,59,"-2"],["B","ADD",37,60,"-1"],["B","ADD",37,61,"1"],["B","SCALE",37,"1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",13,0,"1"],["A","ADD",14,0,"2"],["A","ADD",15,0,"2"],["A","ADD",16,0,"2"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",31,18,"1"],["A","ADD",32,18,"2"],["A","ADD",33,18,"2"],["A","ADD",34,18,"2"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",13,1],["A","LAMBDA",31,-1],["A","SCALE",31,"-1"],["J",13,[13,0,18,31],[36,37,"-1","1/2"]],["A","LAMBDA",13,-1],["A","LAMBDA",31,1],["A","SCALE",31,"-1"],["A","ADD",0,13,"-1"],["A","ADD",18,31,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-2"],["A","ADD",33,18,"-2"],["A","ADD",32,18,"-2"],["A","ADD",31,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-2"],["A","ADD",15,0,"-2"],["A","ADD",14,0,"-2"],["A","ADD",13,0,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"2"],["B","ADD",37,61,"-1"],["B","ADD",37,60,"1"],["B","ADD",37,59,"2"],["B","ADD",37,58,"8"],["B","ADD",37,57,"-3"],["B","ADD",37,56,"1"],["B","ADD",37,55,"2"],["B","ADD",37,54,"8"],["B","ADD",37,53,"-3"],["B","ADD",37,52,"1"],["B","SCALE",37,"-2"],["B","ADD",61,37,"1/4"],["B","ADD",60,37,"1/4"],["B","ADD",59,37,"1/2"],["B","ADD",58,37,"1/4"],["B","ADD",57,37,"5/4"],["B","ADD",56,37,"3/4"],["B","ADD",55,37,"1/2"],["B","ADD",54,37,"1/4"],["B","ADD",53,37,"5/4"],["B","ADD",52,37,"3/4"],["B","ADD",36,61,"-1"],["B","ADD",36,60,"3"],["B","ADD",36,58,"2"],["B","ADD",36,57,"-1"],["B","ADD",36,56,"1"],["B","ADD",36,54,"2"],["B","ADD",36,53,"-1"],["B","ADD",36,52,"1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-2"],["B","ADD",61,36,"-1/4"],["B","ADD",60,36,"1/4"],["B","ADD",59,36,"1/4"],["B","ADD",57,36,"1/4"],["B","ADD",56,36,"1/4"],["B","ADD",55,36,"1/4"],["B","ADD",53,36,"1/4"],["B","ADD",52,36,"1/4"],["B","ADD",37,36,"-2"],["B","ADD",36,52,"14"],["B","ADD",37,52,"-34"],["B","ADD",53,52,"-4"],["B","ADD",54,52,"-3/2"],["B","ADD",55,52,"1/2"],["B","ADD",56,52,"-1"],["B","ADD",57,52,"-4"],["B","ADD",58,52,"-1/2"],["B","ADD",59,52,"1"],["B","SCALE",52,"-1"],["B","ADD",52,36,"1"],["B","ADD",52,37,"1"],["B","ADD",52,53,"-6"],["B","ADD",52,54,"16"],["B","ADD",52,55,"4"],["B","ADD",52,56,"2"],["B","ADD",52,57,"-6"],["B","ADD",52,58,"14"],["B","ADD",52,59,"6"],["B","IDLE_ONE",52,[14]],["B","ADD",52,59,"-6"],["B","ADD",52,58,"-14"],["B","ADD",52,57,"6"],["B","ADD",52,56,"-2"],["B","ADD",52,55,"-4"],["B","ADD",52,54,"-16"],["B","ADD",52,53,"6"],["B","ADD",52,37,"-1"],["B","ADD",52,36,"-1"],["B","SCALE",52,"-1"],["B","ADD",59,52,"-1"],["B","ADD",58,52,"1/2"],["B","ADD",57,52,"4"],["B","ADD",56,52,"1"],["B","ADD",55,52,"-1/2"],["B","ADD",54,52,"3/2"],["B","ADD",53,52,"4"],["B","ADD",37,52,"34"],["B","ADD",36,52,"-14"],["B","ADD",37,36,"5/2"],["B","ADD",52,36,"1/8"],["B","ADD",53,36,"3/8"],["B","ADD",54,36,"1/8"],["B","ADD",56,36,"1/8"],["B","ADD",57,36,"3/8"],["B","ADD",58,36,"1/16"],["B","ADD",59,36,"-1/16"],["B","SCALE",36,"1/8"],["B","ADD",36,37,"-1"],["B","ADD",36,52,"-4"],["B","ADD",36,53,"10"],["B","ADD",36,54,"-26"],["B","ADD",36,55,"-6"],["B","ADD",36,56,"-4"],["B","ADD",36,57,"10"],["B","ADD",36,58,"-24"],["B","ADD",36,59,"-10"],["B","IDLE_ONE",36,[14]],["B","ADD",36,59,"10"],["B","ADD",36,58,"24"],["B","ADD",36,57,"-10"],["B","ADD",36,56,"4"],["B","ADD",36,55,"6"],["B","ADD",36,54,"26"],["B","ADD",36,53,"-10"],["B","ADD",36,52,"4"],["B","ADD",36,37,"1"],["B","SCALE",36,"8"],["B","ADD",59,36,"1/16"],["B","ADD",58,36,"-1/16"],["B","ADD",57,36,"-3/8"],["B","ADD",56,36,"-1/8"],["B","ADD",54,36,"-1/8"],["B","ADD",53,36,"-3/8"],["B","ADD",52,36,"-1/8"],["B","ADD",37,36,"-5/2"],["B","SWAP",36,37],["B","ADD",52,36,"-3/4"],["B","ADD",53,36,"-5/4"],["B","ADD",54,36,"-1/4"],["B","ADD",55,36,"-1/2"],["B","ADD",56,36,"-3/4"],["B","ADD",57,36,"-5/4"],["B","ADD",58,36,"-1/4"],["B","ADD",59,36,"-1/4"],["B","SCALE",36,"-1/2"],["B","ADD",36,37,"1/2"],["B","ADD",36,52,"1"],["B","ADD",36,53,"-3"],["B","ADD",36,54,"8"],["B","ADD",36,55,"2"],["B","ADD",36,56,"1"],["B","ADD",36,57,"-3"],["B","ADD",36,58,"6"],["B","ADD",36,59,"2"],["B","ADD",52,37,"-7/4"],["B","ADD",53,37,"-11/4"],["B","ADD",54,37,"-1/2"],["B","ADD",55,37,"-5/4"],["B","ADD",56,37,"-7/4"],["B","ADD",57,37,"-11/4"],["B","ADD",58,37,"-3/4"],["B","ADD",59,37,"-1/4"],["B","SCALE",37,"1/2"],["B","ADD",37,52,"-1"],["B","ADD",37,53,"1"],["B","ADD",37,54,"-2"],["B","ADD",37,56,"-1"],["B","ADD",37,57,"1"],["B","ADD",37,58,"-2"],["B","ADD",37,59,"-2"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",14,0,"1"],["A","ADD",15,0,"2"],["A","ADD",16,0,"2"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",32,18,"1"],["A","ADD",33,18,"2"],["A","ADD",34,18,"2"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",14,1],["A","LAMBDA",32,-1],["A","SCALE",32,"-1"],["J",14,[14,0,18,32],[36,37,"-1","1/2"]],["A","LAMBDA",14,-1],["A","LAMBDA",32,1],["A","SCALE",32,"-1"],["A","ADD",0,14,"-1"],["A","ADD",18,32,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-2"],["A","ADD",33,18,"-2"],["A","ADD",32,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-2"],["A","ADD",15,0,"-2"],["A","ADD",14,0,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"-2"],["B","ADD",37,59,"2"],["B","ADD",37,58,"2"],["B","ADD",37,57,"-1"],["B","ADD",37,56,"1"],["B","ADD",37,54,"2"],["B","ADD",37,53,"-1"],["B","ADD",37,52,"1"],["B","SCALE",37,"2"],["B","ADD",59,37,"1/4"],["B","ADD",58,37,"3/4"],["B","ADD",57,37,"11/4"],["B","ADD",56,37,"7/4"],["B","ADD",55,37,"5/4"],["B","ADD",54,37,"1/2"],["B","ADD",53,37,"11/4"],["B","ADD",52,37,"7/4"],["B","ADD",36,59,"-2"],["B","ADD",36,58,"-6"],["B","ADD",36,57,"3"],["B","ADD",36,56,"-1"],["B","ADD",36,55,"-2"],["B","ADD",36,54,"-8"],["B","ADD",36,53,"3"],["B","ADD",36,52,"-1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-2"],["B","ADD",59,36,"1/4"],["B","ADD",58,36,"1/4"],["B","ADD",57,36,"5/4"],["B","ADD",56,36,"3/4"],["B","ADD",55,36,"1/2"],["B","ADD",54,36,"1/4"],["B","ADD",53,36,"5/4"],["B","ADD",52,36,"3/4"],["B","SWAP",36,37],["B","ADD",37,36,"7/4"],["B","ADD",52,36,"-7/16"],["B","ADD",53,36,"-9/16"],["B","ADD",54,36,"-1/16"],["B","ADD",55,36,"-3/8"],["B","ADD",56,36,"-1/8"],["B","ADD",57,36,"1/4"],["B","SCALE",36,"-1/4"],["B","ADD",36,52,"2"],["B","ADD",36,53,"-4"],["B","ADD",36,54,"10"],["B","ADD",36,55,"2"],["B","ADD",36,56,"2"],["B","ADD",36,57,"-2"],["B","IDLE_ONE",36,[15]],["B","ADD",36,57,"2"],["B","ADD",36,56,"-2"],["B","ADD",36,55,"-2"],["B","ADD",36,54,"-10"],["B","ADD",36,53,"4"],["B","ADD",36,52,"-2"],["B","SCALE",36,"-4"],["B","ADD",57,36,"-1/4"],["B","ADD",56,36,"1/8"],["B","ADD",55,36,"3/8"],["B","ADD",54,36,"1/16"],["B","ADD",53,36,"9/16"],["B","ADD",52,36,"7/16"],["B","ADD",37,36,"-7/4"],["B","ADD",37,36,"2"],["B","ADD",52,36,"-1/4"],["B","ADD",53,36,"-1/4"],["B","ADD",55,36,"-1/4"],["B","ADD",57,36,"1/2"],["B","ADD",36,37,"1"],["B","ADD",36,52,"4"],["B","ADD",36,53,"-10"],["B","ADD",36,54,"26"],["B","ADD",36,55,"6"],["B","ADD",36,56,"2"],["B","ADD",36,57,"-6"],["B","IDLE_ONE",36,[15]],["B","ADD",36,57,"6"],["B","ADD",36,56,"-2"],["B","ADD",36,55,"-6"],["B","ADD",36,54,"-26"],["B","ADD",36,53,"10"],["B","ADD",36,52,"-4"],["B","ADD",36,37,"-1"],["B","ADD",57,36,"-1/2"],["B","ADD",55,36,"1/4"],["B","ADD",53,36,"1/4"],["B","ADD",52,36,"1/4"],["B","ADD",37,36,"-2"],["B","ADD",37,36,"2"],["B","ADD",52,36,"-1/4"],["B","ADD",53,36,"-1/4"],["B","ADD",55,36,"-1/4"],["B","ADD",56,36,"-1/4"],["B","ADD",57,36,"1/4"],["B","SCALE",36,"-1/2"],["B","ADD",36,37,"1/2"],["B","ADD",36,52,"-1"],["B","ADD",36,53,"1"],["B","ADD",36,54,"-2"],["B","ADD",36,56,"-3"],["B","ADD",36,57,"1"],["B","ADD",52,37,"-3/4"],["B","ADD",53,37,"-5/4"],["B","ADD",54,37,"-1/4"],["B","ADD",55,37,"-1/2"],["B","ADD",56,37,"-1/4"],["B","ADD",57,37,"-1/4"],["B","SCALE",37,"-1/2"],["B","ADD",37,52,"-1"],["B","ADD",37,53,"3"],["B","ADD",37,54,"-8"],["B","ADD",37,55,"-2"],["B","ADD",37,56,"-1"],["B","ADD",37,57,"1"],["B","SCALE",37,"1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",15,0,"1"],["A","ADD",16,0,"2"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",33,18,"1"],["A","ADD",34,18,"2"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",15,1],["A","LAMBDA",33,-1],["A","SCALE",33,"-1"],["J",15,[15,0,18,33],[36,37,"-1","1/2"]],["A","LAMBDA",15,-1],["A","LAMBDA",33,1],["A","SCALE",33,"-1"],["A","ADD",0,15,"-1"],["A","ADD",18,33,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-2"],["A","ADD",33,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-2"],["A","ADD",15,0,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"2"],["B","ADD",37,57,"-1"],["B","ADD",37,56,"1"],["B","ADD",37,55,"2"],["B","ADD",37,54,"8"],["B","ADD",37,53,"-3"],["B","ADD",37,52,"1"],["B","SCALE",37,"-2"],["B","ADD",57,37,"1/4"],["B","ADD",56,37,"1/4"],["B","ADD",55,37,"1/2"],["B","ADD",54,37,"1/4"],["B","ADD",53,37,"5/4"],["B","ADD",52,37,"3/4"],["B","ADD",36,57,"-1"],["B","ADD",36,56,"3"],["B","ADD",36,54,"2"],["B","ADD",36,53,"-1"],["B","ADD",36,52,"1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-2"],["B","ADD",57,36,"-1/4"],["B","ADD",56,36,"1/4"],["B","ADD",55,36,"1/4"],["B","ADD",53,36,"1/4"],["B","ADD",52,36,"1/4"],["B","ADD",37,36,"-2"],["B","ADD",36,52,"14"],["B","ADD",37,52,"-34"],["B","ADD",53,52,"-4"],["B","ADD",54,52,"-1/2"],["B","ADD",55,52,"1"],["B","SCALE",52,"-1"],["B","ADD",52,36,"1"],["B","ADD",52,37,"1"],["B","ADD",52,53,"-6"],["B","ADD",52,54,"14"],["B","ADD",52,55,"6"],["B","IDLE_ONE",52,[16]],["B","ADD",52,55,"-6"],["B","ADD",52,54,"-14"],["B","ADD",52,53,"6"],["B","ADD",52,37,"-1"],["B","ADD",52,36,"-1"],["B","SCALE",52,"-1"],["B","ADD",55,52,"-1"],["B","ADD",54,52,"1/2"],["B","ADD",53,52,"4"],["B","ADD",37,52,"34"],["B","ADD",36,52,"-14"],["B","ADD",37,36,"5/2"],["B","ADD",52,36,"1/8"],["B","ADD",53,36,"3/8"],["B","ADD",54,36,"1/16"],["B","ADD",55,36,"-1/16"],["B","SCALE",36,"1/8"],["B","ADD",36,37,"-1"],["B","ADD",36,52,"-4"],["B","ADD",36,53,"10"],["B","ADD",36,54,"-24"],["B","ADD",36,55,"-10"],["B","IDLE_ONE",36,[16]],["B","ADD",36,55,"10"],["B","ADD",36,54,"24"],["B","ADD",36,53,"-10"],["B","ADD",36,52,"4"],["B","ADD",36,37,"1"],["B","SCALE",36,"8"],["B","ADD",55,36,"1/16"],["B","ADD",54,36,"-1/16"],["B","ADD",53,36,"-3/8"],["B","ADD",52,36,"-1/8"],["B","ADD",37,36,"-5/2"],["B","SWAP",36,37],["B","ADD",52,36,"-3/4"],["B","ADD",53,36,"-5/4"],["B","ADD",54,36,"-1/4"],["B","ADD",55,36,"-1/4"],["B","SCALE",36,"-1/2"],["B","ADD",36,37,"1/2"],["B","ADD",36,52,"1"],["B","ADD",36,53,"-3"],["B","ADD",36,54,"6"],["B","ADD",36,55,"2"],["B","ADD",52,37,"-7/4"],["B","ADD",53,37,"-11/4"],["B","ADD",54,37,"-3/4"],["B","ADD",55,37,"-1/4"],["B","SCALE",37,"1/2"],["B","ADD",37,52,"-1"],["B","ADD",37,53,"1"],["B","ADD",37,54,"-2"],["B","ADD",37,55,"-2"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",16,0,"1"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",34,18,"1"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",16,1],["A","LAMBDA",34,-1],["A","SCALE",34,"-1"],["J",16,[16,0,18,34],[36,37,"-1","1/2"]],["A","LAMBDA",16,-1],["A","LAMBDA",34,1],["A","SCALE",34,"-1"],["A","ADD",0,16,"-1"],["A","ADD",18,34,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"-2"],["B","ADD",37,55,"2"],["B","ADD",37,54,"2"],["B","ADD",37,53,"-1"],["B","ADD",37,52,"1"],["B","SCALE",37,"2"],["B","ADD",55,37,"1/4"],["B","ADD",54,37,"3/4"],["B","ADD",53,37,"11/4"],["B","ADD",52,37,"7/4"],["B","ADD",36,55,"-2"],["B","ADD",36,54,"-6"],["B","ADD",36,53,"3"],["B","ADD",36,52,"-1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-2"],["B","ADD",55,36,"1/4"],["B","ADD",54,36,"1/4"],["B","ADD",53,36,"5/4"],["B","ADD",52,36,"3/4"],["B","SWAP",36,37],["B","ADD",37,36,"7/4"],["B","ADD",52,36,"-1/8"],["B","ADD",53,36,"1/4"],["B","SCALE",36,"-1/4"],["B","ADD",36,37,"-1"],["B","ADD",36,53,"4"],["B","IDLE_ONE",36,[17]],["B","ADD",36,53,"-4"],["B","ADD",36,37,"1"],["B","SCALE",36,"-4"],["B","ADD",53,36,"-1/4"],["B","ADD",52,36,"1/8"],["B","ADD",37,36,"-7/4"],["B","ADD",37,36,"5/3"],["B","ADD",52,36,"-1/6"],["B","ADD",53,36,"1/6"],["B","SCALE",36,"-1/3"],["B","ADD",36,37,"1"],["B","ADD",36,52,"2"],["B","ADD",36,53,"-6"],["B","IDLE_ONE",36,[17]],["B","ADD",36,53,"6"],["B","ADD",36,52,"-2"],["B","ADD",36,37,"-1"],["B","SCALE",36,"-3"],["B","ADD",53,36,"-1/6"],["B","ADD",52,36,"1/6"],["B","ADD",37,36,"-5/3"],["B","ADD",37,36,"2"],["B","ADD",52,36,"-1/4"],["B","ADD",53,36,"1/4"],["B","SCALE",36,"-1/2"],["B","ADD",36,37,"1/2"],["B","ADD",36,52,"-3"],["B","ADD",36,53,"1"],["B","ADD",52,37,"-1/4"],["B","ADD",53,37,"-1/4"],["B","SCALE",37,"-1/2"],["B","ADD",37,52,"-1"],["B","ADD",37,53,"1"],["B","SCALE",37,"1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",17,0,"1"],["A","SCALE",0,"-1"],["A","ADD",35,18,"1"],["A","SCALE",18,"-1"],["A","LAMBDA",17,1],["A","LAMBDA",35,-1],["A","SCALE",35,"-1"],["J",17,[17,0,18,35],[36,37,"-1","1/2"]],["A","LAMBDA",17,-1],["A","LAMBDA",35,1],["A","SCALE",35,"-1"],["A","ADD",0,17,"-1"],["A","ADD",18,35,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,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","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],["B","LAMBDA",36,-1],["B","SCALE",37,"2"],["B","ADD",37,53,"-1"],["B","ADD",37,52,"1"],["B","SCALE",37,"-2"],["B","ADD",53,37,"1/4"],["B","ADD",52,37,"1/4"],["B","ADD",36,53,"-1"],["B","ADD",36,52,"3"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-2"],["B","ADD",53,36,"-1/4"],["B","ADD",52,36,"1/4"],["B","ADD",37,36,"-2"],["B","LAMBDA",36,-1],["B","LAMBDA",37,-1],["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]],"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"} \ No newline at end of file diff --git a/research/p104-two-blocker-exclusion/vendor/inputs/RESULT.json b/research/p104-two-blocker-exclusion/vendor/inputs/RESULT.json new file mode 100644 index 0000000000..59ab2af00f --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/inputs/RESULT.json @@ -0,0 +1,1561 @@ +{ + "adapter": { + "adapted_sha256": { + "check_odd_partial_admission.py": "fb167cff1e672c33cfe63d4bdcaae07c876f1f711d2533cc35db295b2fe61622", + "check_odd_precision.py": "94be27f8f66981bddb750553f892976c452561df721be766d9ef90fb73e70d9d", + "emit_odd_type_ab.py": "6fd9f61f9ba6c726524d1a585d0201b0eac61829ccae6be598f0f0fc1cb64f1a" + }, + "edits": [ + { + "file": "emit_odd_type_ab.py", + "new": "invoice=json.loads((root/\"COHORT-PRICE.json\").read_text())", + "old": "invoice=next(x for x in json.loads((root/\"SHORT-CALLER-RAW-PRICE.json\").read_text())[\"rows\"] if tuple(x[\"shape\"])==shape)" + }, + { + "file": "check_odd_partial_admission.py", + "new": "actual_native=ind.native(w)\nassert actual_native==N and not N[\"bad_inputs\"], \"Fresh complete native inventory and arbitrary-input adjoint\"", + "old": "previous=json.loads((root/\"SHORT-ADMISSION-PARTIAL.json\").read_text())\nassert previous[\"native_sha256\"]==digest and not N[\"bad_inputs\"]" + }, + { + "file": "check_odd_partial_admission.py", + "new": "claim=Q(\".003642408496869\")", + "old": "claim=Q(\".00363797977\")" + }, + { + "file": "check_odd_partial_admission.py", + "new": "tested=claim+Q(7,10**17)\nwhile tested>=Q(reference[\"raw_bracket\"][0]):\n tested=claim+(tested-claim)/10", + "old": "tested=claim+Q(7,10**17)" + }, + { + "file": "check_odd_partial_admission.py", + "new": "g=gate(invoice,claim,tested,*bracket,r[\"gate\"][\"BIT_pin\"])\ntry:\n gate(invoice,claim,Q(bracket[0]),*bracket,r[\"gate\"][\"BIT_pin\"])\nexcept AssertionError:\n crossing_probe_rejected=True\nelse:\n raise AssertionError(\"Probe at lower crossing unexpectedly accepted\")", + "old": "g=gate(invoice,claim,tested,*bracket,r[\"gate\"][\"BIT_pin\"])" + }, + { + "file": "check_odd_partial_admission.py", + "new": "\"crossing_probe_rejected\":crossing_probe_rejected,\"scope\":\"Reuse exact same native word all-column adjoint;", + "old": "\"scope\":\"Reuse exact same native word all-column adjoint;" + }, + { + "file": "check_odd_precision.py", + "new": "", + "old": "previous=json.loads((root/\"SHORT-PRECISION.json\").read_text())" + }, + { + "file": "check_odd_precision.py", + "new": "assert grid_receipt[\"caller_sha256\"]==sha256(cpath.read_bytes()).hexdigest()", + "old": "assert previous[\"native_sha256\"]==sha and grid_receipt[\"caller_sha256\"]==sha256(cpath.read_bytes()).hexdigest()" + }, + { + "file": "check_odd_precision.py", + "new": "wg=grid.word_run(w, frac=25)\nwp,wr=env.native_envelope(w)\nwg=json.loads(json.dumps(wg,default=str));wr=json.loads(json.dumps(wr,default=str))\nassert wg==r[\"precision\"][\"word\"] and wr==r[\"precision\"][\"rounded_native\"], \"Fresh changed-native grid and envelope\"", + "old": "wg=previous[\"native_grid\"]\nwr=previous[\"rounded_native\"]\nwp={key:(Q(v[\"exact\"]),v[\"witness\"]) for key,v in wr[\"bounds\"].items()}" + } + ] + }, + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "catalogue": [ + { + "catalogue_digest": "028f9f70bb24b83c4540e7e9b9b0e7aa1b37fe20fa05a79fb53c933e2e0edb43", + "catalogue_size": 3038, + "checked_maps": 1000, + "distinct_helper_maps": 186, + "distinct_paid_maps": 2953, + "exact_recipe_digest": "b9cdcbe051edca0b1fb57ede0bc0ba3c8614a4586d18b8946141fc9030ca731e", + "main_boundary_digest": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "main_boundary_pairs": 0, + "phase_control_rejected": true, + "scope": "Complete signed Pauli action plus exact Gaussian global phase; for Clifford maps these determine every matrix column. Generic tensor-product and physical grammar application is written in the review. No random-field substitution.", + "slice_start": 0, + "slice_stop": 1000, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "2b9b9712addc38f441b434e8b2eca0cfefe5b54fdc1e174beed7f0c3435fa42d" + }, + { + "catalogue_digest": "028f9f70bb24b83c4540e7e9b9b0e7aa1b37fe20fa05a79fb53c933e2e0edb43", + "catalogue_size": 3038, + "checked_maps": 1000, + "distinct_helper_maps": 186, + "distinct_paid_maps": 2953, + "exact_recipe_digest": "3e70bf7c9c05d1194c607367fe8e874627d3e2a4ac5a995454b53232f6466859", + "main_boundary_digest": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "main_boundary_pairs": 0, + "phase_control_rejected": true, + "scope": "Complete signed Pauli action plus exact Gaussian global phase; for Clifford maps these determine every matrix column. Generic tensor-product and physical grammar application is written in the review. No random-field substitution.", + "slice_start": 1000, + "slice_stop": 2000, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "2b9b9712addc38f441b434e8b2eca0cfefe5b54fdc1e174beed7f0c3435fa42d" + }, + { + "catalogue_digest": "028f9f70bb24b83c4540e7e9b9b0e7aa1b37fe20fa05a79fb53c933e2e0edb43", + "catalogue_size": 3038, + "checked_maps": 1038, + "distinct_helper_maps": 186, + "distinct_paid_maps": 2953, + "exact_recipe_digest": "b4a07ce5e456bdc9a98005dc01b779018c10b81426f033d00a7f3a5a881e288f", + "main_boundary_digest": "ad959887c990b8862a0e60db3f53d5195a1c9d667c1593f0101adc8db18f27fa", + "main_boundary_pairs": 104, + "phase_control_rejected": true, + "scope": "Complete signed Pauli action plus exact Gaussian global phase; for Clifford maps these determine every matrix column. Generic tensor-product and physical grammar application is written in the review. No random-field substitution.", + "slice_start": 2000, + "slice_stop": 3038, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "2b9b9712addc38f441b434e8b2eca0cfefe5b54fdc1e174beed7f0c3435fa42d" + } + ], + "checks": { + "ODD-8X9-APPLICATION-CHECKS.json": { + "assumptions": [ + "native_all_columns", + "owned_erasure", + "compiler", + "precision_tape", + "analytic_recovery" + ], + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "candidate": "3642408496869/1000000000000000", + "catalogue": [ + { + "catalogue_digest": "028f9f70bb24b83c4540e7e9b9b0e7aa1b37fe20fa05a79fb53c933e2e0edb43", + "catalogue_size": 3038, + "checked_maps": 1000, + "distinct_helper_maps": 186, + "distinct_paid_maps": 2953, + "exact_recipe_digest": "b9cdcbe051edca0b1fb57ede0bc0ba3c8614a4586d18b8946141fc9030ca731e", + "log_sha256": "3daf4f7ba82d68bd4ce6bb6a00bf5ed332ea96ace58b4447e0aab12e30c1f400", + "main_boundary_digest": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "main_boundary_pairs": 0, + "phase_control_rejected": true, + "scope": "Complete signed Pauli action plus exact Gaussian global phase; for Clifford maps these determine every matrix column. Generic tensor-product and physical grammar application is written in the review. No random-field substitution.", + "slice_start": 0, + "slice_stop": 1000, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "2b9b9712addc38f441b434e8b2eca0cfefe5b54fdc1e174beed7f0c3435fa42d" + }, + { + "catalogue_digest": "028f9f70bb24b83c4540e7e9b9b0e7aa1b37fe20fa05a79fb53c933e2e0edb43", + "catalogue_size": 3038, + "checked_maps": 1000, + "distinct_helper_maps": 186, + "distinct_paid_maps": 2953, + "exact_recipe_digest": "3e70bf7c9c05d1194c607367fe8e874627d3e2a4ac5a995454b53232f6466859", + "log_sha256": "055e1da50f6cd66cd6f52e7faa0fa2ff64beffa5a6c3b0ad3f8706359392d3be", + "main_boundary_digest": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "main_boundary_pairs": 0, + "phase_control_rejected": true, + "scope": "Complete signed Pauli action plus exact Gaussian global phase; for Clifford maps these determine every matrix column. Generic tensor-product and physical grammar application is written in the review. No random-field substitution.", + "slice_start": 1000, + "slice_stop": 2000, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "2b9b9712addc38f441b434e8b2eca0cfefe5b54fdc1e174beed7f0c3435fa42d" + }, + { + "catalogue_digest": "028f9f70bb24b83c4540e7e9b9b0e7aa1b37fe20fa05a79fb53c933e2e0edb43", + "catalogue_size": 3038, + "checked_maps": 1038, + "distinct_helper_maps": 186, + "distinct_paid_maps": 2953, + "exact_recipe_digest": "b4a07ce5e456bdc9a98005dc01b779018c10b81426f033d00a7f3a5a881e288f", + "log_sha256": "70969bc8680034d3041f1c94b8a02f0b2c0db793003c526caf9f68852086cdd7", + "main_boundary_digest": "ad959887c990b8862a0e60db3f53d5195a1c9d667c1593f0101adc8db18f27fa", + "main_boundary_pairs": 104, + "phase_control_rejected": true, + "scope": "Complete signed Pauli action plus exact Gaussian global phase; for Clifford maps these determine every matrix column. Generic tensor-product and physical grammar application is written in the review. No random-field substitution.", + "slice_start": 2000, + "slice_stop": 3038, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "2b9b9712addc38f441b434e8b2eca0cfefe5b54fdc1e174beed7f0c3435fa42d" + } + ], + "fixed_tape_counts": { + "H": 16502900000000000000000, + "Kstar_bits": 14093, + "actual_ambient": 145, + "caller_odd_scale": 675, + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "common_grid": { + "fractional": "p+D", + "signed_width": "p+h+2D+3", + "temp_padding": 26 + }, + "compiler_ambient_cap": 153, + "context_bound_bits": 14104, + "context_c": 2362, + "elementary_records_per_map_upper": 85264, + "elementary_records_upper": 25431181696, + "log_power": 2236, + "max_scalar_numerator_bits": 24, + "monomial_map_slots": 298264, + "native_invocations": 17, + "native_sha256": "9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a", + "owned_banks_per_raw_occurrence": 867, + "scalar_macro_inputs": { + "caller": 117856, + "conversions": 58216, + "native": 1161423 + }, + "scalar_services_upper": 42799840, + "scalar_steps_coefficient": 44878885027840, + "scope": "Exact finite-cost and common-format substitutions in the selected #7000 conditional application proof, using the conservative primitive movement and scalar constants there. The premise is the complete signed native/physical binding and retained compiler, BIT, stock, and outer contracts. This script counts the raw occurrence, not an enumerated top-level compiled multiplier.", + "tested_claim": "3642408496869/1000000000000000" + }, + "native_archive_sha256": "2b9b9712addc38f441b434e8b2eca0cfefe5b54fdc1e174beed7f0c3435fa42d", + "native_canonical_sha256": "9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a", + "numeric_gate": { + "BIT_margin": "12428150313093/100000000000000000", + "BIT_pin": "376669/100000000", + "H": "16502900000000000000000", + "alpha": [ + 0.9999999999999997, + 0.9999999999999997 + ], + "claim": "3642408496869/1000000000000000", + "compiler_gap": "1/100000000000000000", + "delta": [ + 0.9019663367095151, + 0.9019663367095151 + ], + "derivative_upper": -381949.8486859147, + "gamma": [ + 0.9408986995419518, + 0.9408986995419518 + ], + "input_lift": { + "derivative_upper_on_required_interval": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "interval_kappa_cap": "376669/100000000", + "margins": { + "3642408496869/1000000000000000": [ + "124275106365520551379855848850723162292503069300292278027520160547922417998319/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "124275106365520551379855848850723162292503069300292278027520160547922418000243/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "364240849686907/100000000000000000": [ + "124275106365522837880548224256348648322779138259472078906655111790416942642193/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "124275106365522837880548224256348648322779138259472078906655111790416942644151/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "source_BIT_wide_crude_bound_would_be": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + "minimum_log_power": 2235, + "moment_margin_float": { + "364240849686907/100000000000000000": [ + 9.584082989012143e-11, + 9.584082989012143e-11 + ], + "36424084968693169933964196366183/10000000000000000000000000000000000": [ + 1.5011073530614094e-29, + 1.5011073530614094e-29 + ], + "4553010621086646241745524545773/1250000000000000000000000000000000": [ + -2.379191929405633e-29, + -2.379191929405633e-29 + ] + }, + "moment_margins": { + "364240849686907/100000000000000000": [ + "2396020747253035581302553685786103857610081739390219623253277840874727/25000000000000000000000000000000000000000000000000000000000000000000000000000000", + "239602074725303558130255368578610385761008173939021962325327785059817/2500000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "36424084968693169933964196366183/10000000000000000000000000000000000": [ + "187638419132676185812036537536839420100383559531923/12500000000000000000000000000000000000000000000000000000000000000000000000000000", + "750553676530704743248146150147357680401534257485899/50000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "4553010621086646241745524545773/1250000000000000000000000000000000": [ + "-475838385881126595975213826899193397895189328050629/20000000000000000000000000000000000000000000000000000000000000000000000000000000", + "-2379191929405632979876069134495966989475946600991499/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "outer": { + "BIT_just_below_effective_rejected": true, + "functional_count": 4, + "minimum_margin": "1/1000000000000000000", + "strict_count": 54 + }, + "raw_bracket": [ + "36424084968693169933964196366183/10000000000000000000000000000000000", + "4553010621086646241745524545773/1250000000000000000000000000000000" + ], + "tested": "364240849686907/100000000000000000", + "written_log_power": 2236 + }, + "physical_binding": { + "ambient": 145, + "complete_paid_position_digest": "0324229f132f6f1f5a8d8fbb49d090a2db0d3090edf9e4b9ca55919fd8432424", + "fresh_helpers": 18564, + "idle_uses": 3392, + "lambda_uses": 11280, + "native_calls": 17, + "native_contact_boundaries": 13600, + "native_public": 1492, + "nonzero_boundary_translations": 13600, + "paid": { + "1": 68265, + "16": 416, + "2": 14518, + "24": 416, + "3": 14059, + "32": 416, + "4": 3808, + "40": 416, + "48": 416, + "5": 5797, + "56": 416, + "6": 272, + "64": 208, + "7": 187, + "8": 758, + "9": 32 + }, + "paid_positions": 110400, + "phase_record_digest": "586ab7499fb677afdd83c397ea0b6d3b25f73ea6cdfa1ec95dd68adccff935ad", + "productive_fields": 22308, + "query_uses": 384, + "rank_surplus": 1424, + "reserved_native_banks": 867, + "reserved_serial_query_lambda_bank": 1, + "targets": { + "1": 272, + "137": 208, + "17": 416, + "2": 340, + "25": 416, + "3": 799, + "33": 416, + "4": 3706, + "41": 416, + "49": 416, + "5": 1258, + "57": 416, + "6": 731, + "65": 416, + "7": 306, + "73": 208, + "8": 595, + "9": 10973 + } + }, + "scope": "Conditional component application to the exact 8+9 source with the selected completed BIT predecessor and inherited five assumptions. Checks every normalized endpoint, every paid/helper nested chart map up to exact signed Pauli and absolute phase, caller occurrence/phase, precision, finite scalar and route bounds, and numeric gates. Does not run a compiled Turing machine, select an upstream frontier, or claim human/formal review.", + "source_unit_ordinary": { + "all_caller_scalar_surcharge": 2248928, + "caller_items": { + "A": { + "envelope": 102076416, + "field_boundary": 89856, + "fused_routes": 0, + "idle_routes": 170112000, + "output_routes": 213120000, + "query_routes": 1152000, + "thin": 6144 + }, + "B": { + "envelope": 35730432, + "field_boundary": 7488, + "fused_routes": 1168000, + "idle_routes": 18016000, + "output_routes": 17760000, + "query_routes": 0, + "thin": 0 + } + }, + "caller_total": 559238336, + "charged_caller_odd_conversions": 479232, + "conservative_total": 778867208, + "init_clear_allowance": 216, + "lambda_paid_rank1_would_reduce_S_by": 11280, + "lambda_second_charge": 11280000, + "margin_to_billion": 221132792, + "odd_divisions": { + "ADD": 5365, + "SCALE": 71 + }, + "per_input_conversion": 2637856, + "raw_upper": 762221192, + "route_items": { + "first_main_adapter": 416, + "first_main_boundary": 208, + "helper_boundary": 2184, + "moves": 6272, + "owned_lifetime": 216, + "second_main_adapter": 384, + "second_main_boundary": 192 + }, + "routing": 9872000, + "scalar_upper": 2068168 + }, + "status": "PASS_8X9_EXACT_COMPONENT_APPLICATION_CHECKS" + }, + "ODD-ADMISSION-PARTIAL.json": { + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "compiler_outer": { + "BIT_margin": "12428150313093/100000000000000000", + "BIT_pin": "376669/100000000", + "H": "16502900000000000000000", + "alpha": [ + 0.9999999999999997, + 0.9999999999999997 + ], + "claim": "3642408496869/1000000000000000", + "compiler_gap": "1/100000000000000000", + "delta": [ + 0.9019663367095151, + 0.9019663367095151 + ], + "derivative_upper": -381949.8486859147, + "gamma": [ + 0.9408986995419518, + 0.9408986995419518 + ], + "input_lift": { + "derivative_upper_on_required_interval": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "interval_kappa_cap": "376669/100000000", + "margins": { + "3642408496869/1000000000000000": [ + "124275106365520551379855848850723162292503069300292278027520160547922417998319/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "124275106365520551379855848850723162292503069300292278027520160547922418000243/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "364240849686907/100000000000000000": [ + "124275106365522837880548224256348648322779138259472078906655111790416942642193/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "124275106365522837880548224256348648322779138259472078906655111790416942644151/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "source_BIT_wide_crude_bound_would_be": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + "minimum_log_power": 2235, + "moment_margin_float": { + "364240849686907/100000000000000000": [ + 9.584082989012143e-11, + 9.584082989012143e-11 + ], + "36424084968693169933964196366183/10000000000000000000000000000000000": [ + 1.5011073530614094e-29, + 1.5011073530614094e-29 + ], + "4553010621086646241745524545773/1250000000000000000000000000000000": [ + -2.379191929405633e-29, + -2.379191929405633e-29 + ] + }, + "moment_margins": { + "364240849686907/100000000000000000": [ + "2396020747253035581302553685786103857610081739390219623253277840874727/25000000000000000000000000000000000000000000000000000000000000000000000000000000", + "239602074725303558130255368578610385761008173939021962325327785059817/2500000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "36424084968693169933964196366183/10000000000000000000000000000000000": [ + "187638419132676185812036537536839420100383559531923/12500000000000000000000000000000000000000000000000000000000000000000000000000000", + "750553676530704743248146150147357680401534257485899/50000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "4553010621086646241745524545773/1250000000000000000000000000000000": [ + "-475838385881126595975213826899193397895189328050629/20000000000000000000000000000000000000000000000000000000000000000000000000000000", + "-2379191929405632979876069134495966989475946600991499/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "outer": { + "BIT_just_below_effective_rejected": true, + "functional_count": 4, + "minimum_margin": "1/1000000000000000000", + "strict_count": 54 + }, + "raw_bracket": [ + "36424084968693169933964196366183/10000000000000000000000000000000000", + "4553010621086646241745524545773/1250000000000000000000000000000000" + ], + "tested": "364240849686907/100000000000000000", + "written_log_power": 2236 + }, + "crossing_probe_rejected": true, + "finite_rank9_fields": [ + { + "child_rank": 9, + "denominator": 512, + "exponent": 1, + "mutated_entries": { + "missing global phase": 8, + "missing multiplicity": 0 + }, + "spectators": 136, + "stage": 8, + "swaps": [ + [ + 1, + 65 + ], + [ + 2, + 66 + ], + [ + 3, + 67 + ], + [ + 4, + 68 + ], + [ + 5, + 69 + ], + [ + 6, + 70 + ], + [ + 7, + 71 + ], + [ + 8, + 72 + ] + ], + "tested_entries": 262144, + "width": 1 + }, + { + "child_rank": 9, + "denominator": 262144, + "exponent": 2, + "mutated_entries": { + "missing global phase": 8, + "missing multiplicity": 8 + }, + "spectators": 272, + "stage": 8, + "swaps": [ + [ + 1, + 65 + ], + [ + 2, + 66 + ], + [ + 3, + 67 + ], + [ + 4, + 68 + ], + [ + 5, + 69 + ], + [ + 6, + 70 + ], + [ + 7, + 71 + ], + [ + 8, + 72 + ] + ], + "tested_entries": 1024, + "width": 2 + }, + { + "child_rank": 9, + "denominator": 134217728, + "exponent": 3, + "mutated_entries": { + "missing global phase": 8, + "missing multiplicity": 8 + }, + "spectators": 408, + "stage": 8, + "swaps": [ + [ + 1, + 65 + ], + [ + 2, + 66 + ], + [ + 3, + 67 + ], + [ + 4, + 68 + ], + [ + 5, + 69 + ], + [ + 6, + 70 + ], + [ + 7, + 71 + ], + [ + 8, + 72 + ] + ], + "tested_entries": 1024, + "width": 3 + }, + { + "child_rank": 9, + "denominator": 512, + "exponent": 1, + "mutated_entries": { + "missing global phase": 8, + "missing multiplicity": 0 + }, + "spectators": 136, + "stage": 9, + "swaps": [ + [ + 1, + 73 + ], + [ + 2, + 74 + ], + [ + 3, + 75 + ], + [ + 4, + 76 + ], + [ + 5, + 77 + ], + [ + 6, + 78 + ], + [ + 7, + 79 + ], + [ + 8, + 80 + ] + ], + "tested_entries": 262144, + "width": 1 + }, + { + "child_rank": 9, + "denominator": 262144, + "exponent": 2, + "mutated_entries": { + "missing global phase": 8, + "missing multiplicity": 8 + }, + "spectators": 272, + "stage": 9, + "swaps": [ + [ + 1, + 73 + ], + [ + 2, + 74 + ], + [ + 3, + 75 + ], + [ + 4, + 76 + ], + [ + 5, + 77 + ], + [ + 6, + 78 + ], + [ + 7, + 79 + ], + [ + 8, + 80 + ] + ], + "tested_entries": 1024, + "width": 2 + }, + { + "child_rank": 9, + "denominator": 134217728, + "exponent": 3, + "mutated_entries": { + "missing global phase": 8, + "missing multiplicity": 8 + }, + "spectators": 408, + "stage": 9, + "swaps": [ + [ + 1, + 73 + ], + [ + 2, + 74 + ], + [ + 3, + 75 + ], + [ + 4, + 76 + ], + [ + 5, + 77 + ], + [ + 6, + 78 + ], + [ + 7, + 79 + ], + [ + 8, + 80 + ] + ], + "tested_entries": 1024, + "width": 3 + } + ], + "invoice": { + "P": { + "1": 68265, + "16": 416, + "2": 14518, + "24": 416, + "3": 14059, + "32": 416, + "4": 3808, + "40": 416, + "48": 416, + "5": 5797, + "56": 416, + "6": 272, + "64": 208, + "7": 187, + "8": 758, + "9": 32 + }, + "S": 1424, + "T": { + "1": 272, + "137": 208, + "17": 416, + "2": 340, + "25": 416, + "3": 799, + "33": 416, + "4": 3706, + "41": 416, + "49": 416, + "5": 1258, + "57": 416, + "6": 731, + "65": 416, + "7": 306, + "73": 208, + "8": 595, + "9": 10973 + }, + "empty_root_credits": 0, + "no_E_credit_crossing": "0.0036424084968693169933964196366183386853498606175933205372534926496", + "raw_crossing": "0.0036424084968693169933964196366183386853498606175933205372534926496" + }, + "native_sha256": "9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a", + "ordinary": { + "all_caller_scalar_surcharge": 2248928, + "caller_items": { + "A": { + "envelope": 102076416, + "field_boundary": 89856, + "fused_routes": 0, + "idle_routes": 170112000, + "output_routes": 213120000, + "query_routes": 1152000, + "thin": 6144 + }, + "B": { + "envelope": 35730432, + "field_boundary": 7488, + "fused_routes": 1168000, + "idle_routes": 18016000, + "output_routes": 17760000, + "query_routes": 0, + "thin": 0 + } + }, + "caller_total": 559238336, + "charged_caller_odd_conversions": 479232, + "conservative_total": 778867208, + "init_clear_allowance": 216, + "lambda_paid_rank1_would_reduce_S_by": 11280, + "lambda_second_charge": 11280000, + "margin_to_billion": 221132792, + "odd_divisions": { + "ADD": 5365, + "SCALE": 71 + }, + "per_input_conversion": 2637856, + "raw_upper": 762221192, + "route_items": { + "first_main_adapter": 416, + "first_main_boundary": 208, + "helper_boundary": 2184, + "moves": 6272, + "owned_lifetime": 216, + "second_main_adapter": 384, + "second_main_boundary": 192 + }, + "routing": 9872000, + "scalar_upper": 2068168 + }, + "scope": "Reuse exact same native word all-column adjoint; fresh exact signed caller and invoice, ordinary source-unit upper bill, inherited numerical compiler and outer inequalities, and signed rank9 child finite field routes. Fresh integrated physical native/caller and changed-word precision/occurrence application remain separate." + }, + "ODD-CALLER-EXACT-GRID.json": { + "caller_odd_scale": "675", + "caller_odd_scale_bits": 10, + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "grid_exponents": [ + 381, + 3, + 2 + ], + "peak_terms": 3752, + "preproduct_exact_divisions": 176874, + "prime_order": [ + 2, + 3, + 5 + ], + "safe_valuation_bound": [ + 381, + 69, + 62 + ], + "scope": "Independent integer Laurent caller endpoint and pre-product divisibility. Valuation bound propagates complete field operators whose Gaussian coefficients have only power-of-two denominators, so odd factors are sourced only from the charged scalar operations. Fixed conversion and storage bounds still needed." + }, + "ODD-FIXED-TAPE-COUNTS.json": { + "H": 16502900000000000000000, + "Kstar_bits": 14093, + "actual_ambient": 145, + "caller_odd_scale": 675, + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "common_grid": { + "fractional": "p+D", + "signed_width": "p+h+2D+3", + "temp_padding": 26 + }, + "compiler_ambient_cap": 153, + "context_bound_bits": 14104, + "context_c": 2362, + "elementary_records_per_map_upper": 85264, + "elementary_records_upper": 25431181696, + "log_power": 2236, + "max_scalar_numerator_bits": 24, + "monomial_map_slots": 298264, + "native_invocations": 17, + "native_sha256": "9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a", + "owned_banks_per_raw_occurrence": 867, + "scalar_macro_inputs": { + "caller": 117856, + "conversions": 58216, + "native": 1161423 + }, + "scalar_services_upper": 42799840, + "scalar_steps_coefficient": 44878885027840, + "scope": "Exact finite-cost and common-format substitutions in the selected #7000 conditional application proof, using the conservative primitive movement and scalar constants there. The premise is the complete signed native/physical binding and retained compiler, BIT, stock, and outer contracts. This script counts the raw occurrence, not an enumerated top-level compiled multiplier.", + "tested_claim": "3642408496869/1000000000000000" + }, + "ODD-PHYSICAL-BINDING.json": { + "aliased_main_rejected": true, + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "native_sha256": "9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a", + "occurrence_and_geometry": { + "ambient": 145, + "complete_paid_position_digest": "0324229f132f6f1f5a8d8fbb49d090a2db0d3090edf9e4b9ca55919fd8432424", + "fresh_helpers": 18564, + "idle_uses": 3392, + "lambda_uses": 11280, + "native_calls": 17, + "native_contact_boundaries": 13600, + "native_public": 1492, + "nonzero_boundary_translations": 13600, + "paid": { + "1": 68265, + "16": 416, + "2": 14518, + "24": 416, + "3": 14059, + "32": 416, + "4": 3808, + "40": 416, + "48": 416, + "5": 5797, + "56": 416, + "6": 272, + "64": 208, + "7": 187, + "8": 758, + "9": 32 + }, + "paid_positions": 110400, + "phase_record_digest": "586ab7499fb677afdd83c397ea0b6d3b25f73ea6cdfa1ec95dd68adccff935ad", + "productive_fields": 22308, + "query_uses": 384, + "rank_surplus": 1424, + "reserved_native_banks": 867, + "reserved_serial_query_lambda_bank": 1, + "targets": { + "1": 272, + "137": 208, + "17": 416, + "2": 340, + "25": 416, + "3": 799, + "33": 416, + "4": 3706, + "41": 416, + "49": 416, + "5": 1258, + "57": 416, + "6": 731, + "65": 416, + "7": 306, + "73": 208, + "8": 595, + "9": 10973 + } + }, + "patched_application_sha256": "733b31b1cee4567b466fdf834a34460b530f1f87ca6dca9270c0fabb2cf89849", + "scope": "Current caller port and ownership substitution, full phase-polynomial native contact identities on disjoint stage axes, whole signed idle/output geometry, and ordered paid positions. Retains the standard nested chart and local operator premises and requires separate full native replay and complete fixed-tape tariff application.", + "source_reviewer_sha256": "d98987db98553dc55bfc80e3ca47abfcd51c57af6f8cda61101391d8eae94184" + }, + "ODD-PRECISION.json": { + "caller_grid": { + "caller_odd_scale": "675", + "caller_odd_scale_bits": 10, + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "grid_exponents": [ + 381, + 3, + 2 + ], + "peak_terms": 3752, + "preproduct_exact_divisions": 176874, + "prime_order": [ + 2, + 3, + 5 + ], + "safe_valuation_bound": [ + 381, + 69, + 62 + ], + "scope": "Independent integer Laurent caller endpoint and pre-product divisibility. Valuation bound propagates complete field operators whose Gaussian coefficients have only power-of-two denominators, so odd factors are sourced only from the charged scalar operations. Fixed conversion and storage bounds still needed." + }, + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "context_c": 2362, + "context_height": 406, + "context_mass_bits": 1181, + "native_grid": { + "coefficient_visits": 15457099, + "dyadic_height": 25, + "mass_witness": [ + 65191, + "stored add" + ], + "maximum_scaled_mass": "814448574117075/8192", + "numerator_bits": 24, + "odd_scale_lcm": 1125 + }, + "native_sha256": "9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a", + "precision_program_sha256": "7696f2e4074ccc9c970670494595e2a973742279a6109d1e60fd551a4611d236", + "rounded_caller": { + "bounds": { + "E_joint_entrance": { + "exact": "5950784596457319646781042109049649395947688220153629498674197626336617060316885269596849625832730735374806187127383474426201690043383414226351676401822266248371626396497159176497230618018984985627894631416777770336973316630522918081790538003107095176070939379435247528107255024380677778281357547271196031692703049986251284571544553863387098068291247569297960490977528765446020526806354533978934594926960216887889822913970010347/2529158213879057302658998941096345600000000000000000000000000000000000000000000000", + "strict_power_of_two": 1148, + "witness": { + "cut": 4691, + "event": 4691, + "factor": "1", + "kind": "stored", + "register": 36 + } + }, + "Gamma_context": { + "exact": "153575481248692675084934569000179123719626342753978231524079938152902054419882048804587227211232275580896736598223501763486667888649096778445608178054042397147312248826786182460579657779719744044963604312245157618863512851107721118949006126841942893783398452734706802900119818847095001316628842826649938287013649344554564346635084768032156596800024826976825509397876465008311994516768680421178301587499262864086679523742236937337/1896868660409292976994249205822259200000000000000000000000000000000000000000000000", + "strict_power_of_two": 1153, + "witness": { + "cut": 4783, + "factor": "1", + "kind": "public-return", + "register": 37 + } + }, + "M_caller": { + "exact": "321214676655933560129782836030951119958622429471431692811117505066079252658303325303661828534046786576018850667853596288128047313819788006911616028348392581085050721023636971054851673799947587501432346122953175312809813833001587100311020687804583808767060460431114911369649528995555025426696059541/456139469146728515625000000", + "strict_power_of_two": 897, + "witness": { + "cut": 4751, + "event": 4750, + "factor": "1", + "kind": "stored", + "register": 37 + } + }, + "M_context": { + "exact": "24898013777100702035967807306091511244662602025139468421656390878219636962702451835397705516562583813714751076075014761541426714578979447457838246883663379540658135110522684890152220850081224266847858467942457034492429205494175440008713667333568524239495616651717634471043696134441138275016076327532667795585567014680211930935502669438837484994915626622950665764620750914798532506936890144034321496304058272553336563831712407929237/1686105475919371535105999294064230400000000000000000000000000000000000000000000000", + "strict_power_of_two": 1160, + "witness": { + "cut": 4692, + "event": 4691, + "factor": "1", + "kind": "stored", + "register": null + } + }, + "M_joint_entrance": { + "exact": "12446513821466013746992171114880354528234540647439407368041740746722705684890095694539586093101687855496797040728247169012299728404791642365323413178973703529222728715961384485250463009966565309368602073434714550373752128374887698957802006867751735225949803848812917591840288770078529478244705471/608185958862304687500000000", + "strict_power_of_two": 892, + "witness": { + "cut": 4691, + "event": 4691, + "factor": "1", + "kind": "stored", + "register": 36 + } + }, + "Sigma_caller": { + "exact": "153575481248692675084934569000179123719626342753978231524079938152902054419882048804587227211232275580896736598223501763486667888649096778445608178054042397147312248826786182460579657779719744044963604312245157618863512851107721118949006126841942893783398452734706802900119818847095001316628842826649938287013649344554564346635084768032156596800024826976825509397876465008311994516768680421178301587499262864086679523742236937337/1896868660409292976994249205822259200000000000000000000000000000000000000000000000", + "strict_power_of_two": 1153, + "witness": { + "cut": 4753, + "event": 4752, + "factor": "1", + "kind": "stored", + "register": 37 + } + }, + "Sigma_context": { + "exact": "11903953106260370278140133773965854814178369875789970127069211335833254020029762950958032406501684756362982199558110111067284921959022159894243287507010133300652812750768558318403742506603695928360095507898506243611703878702768058987510383014581912472684921117868452670901193382202669601603960381345347618883346399397808227042676880708376909156691901002370783477676787997302969130852034235975768515349700950164635348693649136004673837442756347671456328233362577706099692860525587412652509896213240486877884935201306349781824500893354708582553976209502408993846009/7011716485308428615133405458301579549733503737764404511774644319027200000000000000000000000000000000000000000000000000000000000000000000", + "strict_power_of_two": 1416, + "witness": { + "cut": 4692, + "event": 4691, + "factor": "1", + "kind": "stored", + "register": null + } + } + }, + "fresh_arbitrary_helpers": 18564, + "helper_allocation_premise": "distinct (stage, helper) public inputs as in frozen caller proof", + "independent_adjoint": { + "E_joint_entrance": { + "entrance_mass": "12446513821466013746992171114880354528234540647439407368041740746722705684890095694539586093101687855496797040728247169012299728404791642365323413178973703529222728715961384485250463009966565309368602073434714550373752128374887698957802006867751735225949803848812917591840288770078529478244705471/608185958862304687500000000", + "joint_coefficient": "144218124282401204617230263054514744346632405857442589144991781917530152132889870002846209306787762894150543865356389849084238452276894627352790762454037345126994351979907477144401257368423063007427271766117739822282248246858569624239109891511459830034432108241771054783468611278140179030295737/14596463012695312500000000000", + "primitive_coefficient": "1237373204913668966810008103424843603237049842106979534739539344726881600855129275554334885562896567825503574055929527662143657491595081161117482238618339640110136792453314323518006796600687371906278112102741547626404362403105174332310591538741639237757093806525664195341657589882317257470101709011/175157556152343750000000000000", + "residual_mass": "5950784596457319646781042109049649395947688220153629498674197626336617060316885269596849625832730735374806187127383474426201690043383414226351676401822266248371626396497159176497230618018984985627894631416777770336973316630522918081790538003107095176070939379435247528107255024380677778281357547271196031692703049986251284571544553863387098068291247569297960490977528765446020526806354533978934594926960216887889822913970010347/2529158213879057302658998941096345600000000000000000000000000000000000000000000000" + }, + "Gamma_context": { + "entrance_mass": "321214676655933560129782836030951119958622429471431692811117505066079252658303325303661828534046786576018850667853596288128047313819788006911616028348392581085050721023636971054851673799947587501432346122953175312809813833001587100311020687804583808767060460431114911369649528995555025426696059541/456139469146728515625000000", + "joint_coefficient": "3721923971948022264020008386608472289590988528157114268392412469599050143495508978788641788787976594161440706214373829555996384554677122174093932095769106055424540710380314024651007332164525664382203471694821380954416641216321248248752759218861172626274920078125266851782731337714997593665899027/10947347259521484375000000000", + "primitive_coefficient": "31933635363307317503891208167952125518099265598871297188945655447689887409437080424471754322893069036961252717295444311531802702290424391181977246033332095685934810861449534911850277930109610390733877602745069385156892357266512877411313922547610591253415658016844390796379192959369382262182067424881/131368167114257812500000000000", + "residual_mass": "153575481248692675084934569000179123719626342753978231524079938152902054419882048804587227211232275580896736598223501763486667888649096778445608178054042397147312248826786182460579657779719744044963604312245157618863512851107721118949006126841942893783398452734706802900119818847095001316628842826649938287013649344554564346635084768032156596800024826976825509397876465008311994516768680421178301587499262864086679523742236937337/1896868660409292976994249205822259200000000000000000000000000000000000000000000000" + }, + "M_caller": { + "entrance_mass": "321214676655933560129782836030951119958622429471431692811117505066079252658303325303661828534046786576018850667853596288128047313819788006911616028348392581085050721023636971054851673799947587501432346122953175312809813833001587100311020687804583808767060460431114911369649528995555025426696059541/456139469146728515625000000", + "joint_coefficient": "3721923971948022264020008386608472289590988528157114268392412469599050143495508978788641788787976594161440706214373829555996384554677122174093932095769106055424540710380314024651007332164525664382203471694821380954416641216321248248752759218861172626274920078125266851782731337714997593665899027/10947347259521484375000000000", + "primitive_coefficient": "31933635363307317503891208167952125518099265598871297188945655447689887409437080424471754322893069036961252717295444311531802702290424391181977246033332095685934810861449534911850277930109610390733877602745069385156892357266512877411313922547610591253415658016844390796247824792255124449682067424881/131368167114257812500000000000", + "residual_mass": "153575481248692675084934569000179123719626342753978231524079938152902054419882048804587227211232275580896736598223501763486667888649096778445608178054042397147312248826786182460579657779719744044963604312245157618863512851107721118949006126841942893783398452734706802900119818847095001316628842826649938287013649344554564346635084768032156596800022930108165100104899470759106172257568680421178301587499262864086679523742236937337/1896868660409292976994249205822259200000000000000000000000000000000000000000000000" + }, + "M_joint_entrance": { + "entrance_mass": "12446513821466013746992171114880354528234540647439407368041740746722705684890095694539586093101687855496797040728247169012299728404791642365323413178973703529222728715961384485250463009966565309368602073434714550373752128374887698957802006867751735225949803848812917591840288770078529478244705471/608185958862304687500000000", + "joint_coefficient": "144218124282401204617230263054514744346632405857442589144991781917530152132889870002846209306787762894150543865356389849084238452276894627352790762454037345126994351979907477144401257368423063007427271766117739822282248246858569624239109891511459830034432108241771054783468611278140179030295737/14596463012695312500000000000", + "primitive_coefficient": "1237373204913668966810008103424843603237049842106979534739539344726881600855129275554334885562896567825503574055929527662143657491595081161117482238618339640110136792453314323518006796600687371906278112102741547626404362403105174332310591538741639237757093806525664195341657589882317257470101709011/175157556152343750000000000000", + "residual_mass": "5950784596457319646781042109049649395947688220153629498674197626336617060316885269596849625832730735374806187127383474426201690043383414226351676401822266248371626396497159176497230618018984985627894631416777770336973316630522918081790538003107095176070939379435247528107255024380677778281357547271196031692703049986251284571544553863387098068291247569297960490977528765446020526806354533978934594926960216887889822913970010347/2529158213879057302658998941096345600000000000000000000000000000000000000000000000" + }, + "Sigma_caller": { + "entrance_mass": "321214676655933560129782836030951119958622429471431692811117505066079252658303325303661828534046786576018850667853596288128047313819788006911616028348392581085050721023636971054851673799947587501432346122953175312809813833001587100311020687804583808767060460431114911369649528995555025426696059541/456139469146728515625000000", + "joint_coefficient": "3721923971948022264020008386608472289590988528157114268392412469599050143495508978788641788787976594161440706214373829555996384554677122174093932095769106055424540710380314024651007332164525664382203471694821380954416641216321248248752759218861172626274920078125266851782731337714997593665899027/10947347259521484375000000000", + "primitive_coefficient": "31933635363307317503891208167952125518099265598871297188945655447689887409437080424471754322893069036961252717295444311531802702290424391181977246033332095685934810861449534911850277930109610390733877602745069385156892357266512877411313922547610591253415658016844390796379192959369382262182067424881/131368167114257812500000000000", + "residual_mass": "153575481248692675084934569000179123719626342753978231524079938152902054419882048804587227211232275580896736598223501763486667888649096778445608178054042397147312248826786182460579657779719744044963604312245157618863512851107721118949006126841942893783398452734706802900119818847095001316628842826649938287013649344554564346635084768032156596800024826976825509397876465008311994516768680421178301587499262864086679523742236937337/1896868660409292976994249205822259200000000000000000000000000000000000000000000000" + } + }, + "joint_entries": [ + { + "entrance_defect": "1435/4", + "entrance_mass": "2067/2", + "event": 43, + "stage": 1 + }, + { + "entrance_defect": "70781793918399586558213313219166874124348981830476075439299148062985117742742708752008405257047902585707819409051289874650376544308398195117/54147497318342533224087693557760000000000000000000000", + "entrance_mass": "56849465528/5", + "event": 137, + "stage": 2 + }, + { + "entrance_defect": "107545293560019130402683285945609675422266176997625062910617679166125768386588553970345823333213374594954600322300561452336065256257218403742259486545197/5198159742560883189512418581544960000000000000000000000", + "entrance_mass": "899756300051784928313/5", + "event": 268, + "stage": 3 + }, + { + "entrance_defect": "100168175419170962309410485582772128097175345943911048485049079247311101970469254674007013858887681100335136050752472619475943032952212522177791895423529822227821/5198159742560883189512418581544960000000000000000000000", + "entrance_mass": "2514111326902273689027625979152/15", + "event": 432, + "stage": 4 + }, + { + "entrance_defect": "20462096123875919764329906341867017106411055486650041560280880698582596677764998287420900982115803592236177889542061555830443373797416870122899846604084645982386599271376891/5198159742560883189512418581544960000000000000000000000", + "entrance_mass": "513576167499541081817002847690160861158177/15", + "event": 633, + "stage": 5 + }, + { + "entrance_defect": "1959245387687414223546514741657040650281549520224206307948249839895341092219719715063816557063354389670302614621188683726361237172974071031030484281595034167852225539740784671725077119/77972396138413247842686278723174400000000000000000000000", + "entrance_mass": "49174910102467876864090432969907258581035345395534834/225", + "event": 867, + "stage": 6 + }, + { + "entrance_defect": "208963522494459959908564749202344616225858863148692101181188439661247018980831837083537077714468820211188535567354301770571191125819484041984326915523848319352625526707573684781584410768887569969/8663599570934805315854030969241600000000000000000000000", + "entrance_mass": "47202796791779792903787260464709452698419616298153732189406926691/225", + "event": 1138, + "stage": 7 + }, + { + "entrance_defect": "60841691544910830928364282138725800374594826721182509450938386596011486931005190227581333928095460915639243081105041980509203768248315837669160769430287556038709353692186271961087270514708595248388801980927073351/9746549517301655980335784840396800000000000000000000000000", + "entrance_mass": "1527059719525243651854937925515623170877847518562264265010551055991429949116792541/28125", + "event": 1423, + "stage": 8 + }, + { + "entrance_defect": "21697531828625713684740058398136455620365440982997449911407078954694215801300793760772068763786761013278336382216875248436301722977944686542614557481598113756091878698300644837953471117486973242734047026121073293808617260044713793025894027441057152180868289078937417087929316106425038123423385085871614265738010662096210730699698607256176914735971/11240703172795810234039995293761536000000000000000000000000000000000000000000000", + "entrance_mass": "45382020709918266925583064268574418985484021788023395083741971786893952543604385214817042722264713249357732585113211736557042182118473445437784492974844696068231496289005681248244219743195326431922663592509646282903/2703048706054687500000000", + "event": 3058, + "stage": 9 + }, + { + "entrance_defect": "8250516616501954952947521879546170262715903208283456671037321906103325170245107464536561241089763967794517013787779996111361122623301225360437931973621208708162624020027146302436292874899135255798147229041001764906193945412958792393279956531239070838462139517330704385511394047257523532677898368537505181666793977321511434252998072420338928064461976457587447409/281017579319895255850999882344038400000000000000000000000000000000000000000000000", + "entrance_mass": "17256576412236653193246225901973714737195067836439327666112948810725372605325768521068989782195051084826433423902219365061463548934152577319772447024097669813834215493691840531234110147024064996639957180865886380686899413865699437/67576217651367187500000000", + "event": 3377, + "stage": 10 + }, + { + "entrance_defect": "3936204358672694714049639857607941543948385792858929624461273360524627965237929916623514737071982877505582267533025376397105816572271840648600265334105893464673235981104732422870668138032538327022758768801414502573399950167040738254752599727269892498483447304673848002432122549886160040554995496940034138939737093960974718497258156119745401439514571613781407496569931774571/9367252643996508528366662744801280000000000000000000000000000000000000000000000", + "entrance_mass": "8232867642949280967953864719378369729636081542640965177026582834276172086852779069019078166383458700724373015543641299678854718814560615654710102550769670203427726502361438450768012893674227975469242856299447027845030556012745339827937032703/2252540588378906250000000", + "event": 3674, + "stage": 11 + }, + { + "entrance_defect": "49463969802973967325116951425714591118109814884781424090538939802520063192967223247080302984831059907051629962646047414781903629088233820238607810524527659646156121580222106742268971125774270092757154023858944069505056435505141858256814511836313156889484204738704606607678593598749722023642008158499742305562424443145091862828666280537749163072662453266946919802757687749650912526923467/1264579106939528651329499470548172800000000000000000000000000000000000000000000000", + "entrance_mass": "103457615351059805192637231353494210876529187337645013912367786609511281374638184501291799844537790265462481580051228205479278831706979374022592427678836083146990308179368316797029946556942233864286312243671687806427572314354434738422294564686254956597631/304092979431152343750000000", + "event": 3934, + "stage": 12 + }, + { + "entrance_defect": "3258160217148365984270609051672662361598559220821822976206750026494041945354721081932301778977314253741393952027434716688523809537980518501811816943843228148931075356555076753619896050843025928144973389026987990414311969605172653665641593556930077950137864280102788280030225362908536698902601093694682438996425781850314815323743736775030295470077208849971627228717596985041345076246496350067723/316144776734882162832374867637043200000000000000000000000000000000000000000000000", + "entrance_mass": "6814687293408352348961376609223100753789665399854180217091951198766673494955017243489117504312576625705862588971333049204842152193259763726092611947454717867967563820647006231530855513792517852570389360287582421241328472893443552787136426885585158158296407747039/76023244857788085937500000", + "event": 4149, + "stage": 13 + }, + { + "entrance_defect": "130852840842335729232766137021705310563412666964173716780336143585511384068764352121550980332664165476972038082876809878125617542351089264780701097756292189831879420094070186235729625282260142075998380772637679347548316896682084414136189062008043206330797950131728920746162306491404670850992249744742333679948143404118971319638294043960156053452358084865881401674952509155427338540213589482680789812165187/2529158213879057302658998941096345600000000000000000000000000000000000000000000000", + "entrance_mass": "273688564209132230699064882255651065961520374651451250325109091529813162250488973700796593555467744131430272845604649750549608356985710665121874068107850799585492748533787927289567936649257940207702597871193107311090132538524151482351564937285621850171994049078063458209591/608185958862304687500000000", + "event": 4337, + "stage": 14 + }, + { + "entrance_defect": "2500880895806015086378784021061611530864648573542505916839281558662504972835419291099192238869361509869219630796335185560995573432039206385566004493026422287396129389234902101230595976246159537627351344971687865719985818774859474450281039648209649102524823896982115928742867175548371096395274731839234494515296722807711803486322564585561171276038585617967385299774092545648940295952972914933856517768193759502977/1264579106939528651329499470548172800000000000000000000000000000000000000000000000", + "entrance_mass": "5230780602279043381317572379439763694807653157987526423412516241866438709931406455512285461654380762978554988724296151241130161368896505647624919395909388513302452136334767445346454946237326490486725295589968816639097338790755366202380875008783642473174121062695038054202858248061/304092979431152343750000000", + "event": 4485, + "stage": 15 + }, + { + "entrance_defect": "2768451233798323087389731795522238120754259027802011042453481877193682957405891392158863987414969508586367796138941713526105556382342810135115538384838550525273567908563665199103976459067052584488522355077357731213146134459046864716843037944205910783290525348323514641167409318848626571913371695775824143045879341262556079597721457339660378250204885289420922885038937689486130380298163082437626911112503708246627922440091/2529158213879057302658998941096345600000000000000000000000000000000000000000000000", + "entrance_mass": "5790424100720951765768300756324298709533962301792798636386692749870979029496708556989270788662796627612885676197810930990877069943243536093513215980405080279750566239442965631097385199413957318608000177913047677092759213914423460784984181631621622445055356552059259436283593839861423838063/608185958862304687500000000", + "event": 4606, + "stage": 16 + }, + { + "entrance_defect": "5950784596457319646781042109049649395947688220153629498674197626336617060316885269596849625832730735374806187127383474426201690043383414226351676401822266248371626396497159176497230618018984985627894631416777770336973316630522918081790538003107095176070939379435247528107255024380677778281357547271196031692703049986251284571544553863387098068291247569297960490977528765446020526806354533978934594926960216887889822913970010347/2529158213879057302658998941096345600000000000000000000000000000000000000000000000", + "entrance_mass": "12446513821466013746992171114880354528234540647439407368041740746722705684890095694539586093101687855496797040728247169012299728404791642365323413178973703529222728715961384485250463009966565309368602073434714550373752128374887698957802006867751735225949803848812917591840288770078529478244705471/608185958862304687500000000", + "event": 4691, + "stage": 17 + } + ], + "physical_main_inputs": 3744, + "sites": { + "ADD": 4126, + "IDLE_ODD": 4, + "IDLE_ONE": 90, + "J": 17, + "LAMBDA": 178, + "QUERY": 4, + "SCALE": 312, + "SWAP": 52, + "noninteger_scalar": 1752 + } + }, + "rounded_native": { + "bounds": { + "Gamma": { + "exact": "41262390743654180353824668559220566387072561689719160198891078363901463467703289210216786053079186041456655602373382010595955679502531/173271991418696106317080619384832000000000000000000000", + "strict_power_of_two": 268, + "witness": { + "cut": 74591, + "factor": "1", + "kind": "public-return", + "register": 1483 + } + }, + "M": { + "exact": "2000400604879422152099704980701647518621850280449683462754007100601087452800342179425603181544902261909432088137599521038480745462975147/2772351862699137701073289910157312000000000000000000000", + "strict_power_of_two": 269, + "witness": { + "cut": 73415, + "factor": "1", + "kind": "stored", + "register": 1483 + } + }, + "Sigma": { + "exact": "41262390743654180353824668559220566387072561689719160198891078363901463467703289210216786053079186041456655602373382010595955679502531/173271991418696106317080619384832000000000000000000000", + "strict_power_of_two": 268, + "witness": { + "cut": 73415, + "factor": "1", + "kind": "stored", + "register": 1483 + } + } + }, + "census": { + "denominator_bits": 20, + "events": 74591, + "lifetimes": 54, + "max_denominator": 655360, + "max_numerator": 14729531, + "numerator_bits": 24, + "opcodes": { + "ADD": 64504, + "CLEAR": 54, + "COPY": 1, + "INIT": 54, + "MOVE": 6272, + "SCALE": 3706 + }, + "owned_labels": 51, + "peak_owned": 43, + "public": 1492, + "scalars": { + "dyadic": 62775, + "integer": 39336, + "noninteger": 28875, + "odd": 5436 + } + }, + "independent_adjoint": { + "Gamma": { + "active_residual_sites": 26499, + "entrance_mass": "2000400604879422152099704980701647518621850280449683462754007100601087452800342179425603181544902261909432088137599521038480745462975147/2772351862699137701073289910157312000000000000000000000", + "residual_mass": "41262390743654180353824668559220566387072561689719160198891078363901463467703289210216786053079186041456655602373382010595955679502531/173271991418696106317080619384832000000000000000000000" + }, + "M": { + "active_residual_sites": 26499, + "entrance_mass": "2000400604879422152099704980701647518621850280449683462754007100601087452800342179425603181544902261909432088137599521038480745462975147/2772351862699137701073289910157312000000000000000000000", + "residual_mass": "41262390743654180353824668559220566387072561689719160198891078363901463467703289210216786053079186041456655602373382010595955679502531/173271991418696106317080619384832000000000000000000000" + }, + "Sigma": { + "active_residual_sites": 26499, + "entrance_mass": "2000400604879422152099704980701647518621850280449683462754007100601087452800342179425603181544902261909432088137599521038480745462975147/2772351862699137701073289910157312000000000000000000000", + "residual_mass": "41262390743654180353824668559220566387072561689719160198891078363901463467703289210216786053079186041456655602373382010595955679502531/173271991418696106317080619384832000000000000000000000" + } + } + }, + "scope": "Fixed integer Laurent grid with charged odd caller scale, and pinned attributed forward/adjoint all-fibre defect engine applied to the emitted 17-stage caller. Each LAMBDA, QUERY and signed/unsigned idle is one unitary with one child defect. The caller allocation assumes independent stage helpers. Full physical application remains separate." + }, + "ODD-TYPE-AB-REPLAY.json": { + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "paid": { + "1": 68265, + "16": 416, + "2": 14518, + "24": 416, + "3": 14059, + "32": 416, + "4": 3808, + "40": 416, + "48": 416, + "5": 5797, + "56": 416, + "6": 272, + "64": 208, + "7": 187, + "8": 758, + "9": 32 + }, + "raw_bracket": [ + "36424084968693169933964196366183/10000000000000000000000000000000000", + "4553010621086646241745524545773/1250000000000000000000000000000000" + ], + "replay": { + "bad_outputs": [], + "caller_denominator_height_bound": 578, + "caller_mass_bound": "854474036861847560509026474008040300059938928517783661039773198072080884690114508581583887358835968277340425788985297793555303569703690223623950838857161290503004459697662544865276977234864184443860251086668962688762176068520364648820282528496698239206689277049335412289161443623602012468587331439851515703/168151253906250000000000000000000", + "caller_mass_ceiling_bits": 910, + "max_terms": 3752 + }, + "scope": "Exact emitted signed Laurent caller endpoint and recomputed native/caller paid and target profiles. Physical address bindings, independent branch-source composition, ordinary units, precision and outer gates are still required.", + "shape": [ + 8, + 9 + ], + "source_word_sha256": "9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a", + "target": { + "1": 272, + "137": 208, + "17": 416, + "2": 340, + "25": 416, + "3": 799, + "33": 416, + "4": 3706, + "41": 416, + "49": 416, + "5": 1258, + "57": 416, + "6": 731, + "65": 416, + "7": 306, + "73": 208, + "8": 595, + "9": 10973 + } + } + }, + "claim": "3642408496869/1000000000000000", + "price": { + "after": { + "P": { + "1": 68265, + "16": 416, + "2": 14518, + "24": 416, + "3": 14059, + "32": 416, + "4": 3808, + "40": 416, + "48": 416, + "5": 5797, + "56": 416, + "6": 272, + "64": 208, + "7": 187, + "8": 758, + "9": 32 + }, + "S": 1424, + "T": { + "1": 272, + "137": 208, + "17": 416, + "2": 340, + "25": 416, + "3": 799, + "33": 416, + "4": 3706, + "41": 416, + "49": 416, + "5": 1258, + "57": 416, + "6": 731, + "65": 416, + "7": 306, + "73": 208, + "8": 595, + "9": 10973 + }, + "empty_root_credits": 0, + "no_E_credit_crossing": "0.0036424084968693169933964196366183386853498606175933205372534926496", + "raw_crossing": "0.0036424084968693169933964196366183386853498606175933205372534926496" + }, + "before": { + "P": { + "1": 68860, + "16": 416, + "2": 14314, + "24": 416, + "3": 13923, + "32": 416, + "4": 3944, + "40": 416, + "48": 416, + "5": 5661, + "56": 416, + "6": 272, + "64": 208, + "7": 187, + "8": 758, + "9": 32 + }, + "S": 1424, + "T": { + "1": 306, + "137": 208, + "17": 416, + "2": 306, + "25": 416, + "3": 799, + "33": 416, + "4": 3706, + "41": 416, + "49": 416, + "5": 1275, + "57": 416, + "6": 714, + "65": 416, + "7": 306, + "73": 208, + "8": 901, + "9": 10667 + }, + "empty_root_credits": 0, + "no_E_credit_crossing": "0.0036422192846378389792779110762715450733811793013921687470157795111", + "raw_crossing": "0.0036422192846378389792779110762715450733811793013921687470157795111" + }, + "gate": { + "BIT_margin": "12428150313093/100000000000000000", + "BIT_pin": "376669/100000000", + "H": "16502900000000000000000", + "alpha": [ + 0.9999999999999997, + 0.9999999999999997 + ], + "claim": "3642408496869/1000000000000000", + "compiler_gap": "1/100000000000000000", + "delta": [ + 0.9019663367095151, + 0.9019663367095151 + ], + "derivative_upper": -381949.8486859147, + "gamma": [ + 0.9408986995419518, + 0.9408986995419518 + ], + "input_lift": { + "derivative_upper_on_required_interval": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "interval_kappa_cap": "376669/100000000", + "margins": { + "3642408496869/1000000000000000": [ + "124275106365520551379855848850723162292503069300292278027520160547922417998319/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "124275106365520551379855848850723162292503069300292278027520160547922418000243/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "364240849686907/100000000000000000": [ + "124275106365522837880548224256348648322779138259472078906655111790416942642193/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "124275106365522837880548224256348648322779138259472078906655111790416942644151/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "source_BIT_wide_crude_bound_would_be": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + "minimum_log_power": 2235, + "moment_margin_float": { + "364240849686907/100000000000000000": [ + 9.584082989012143e-11, + 9.584082989012143e-11 + ], + "36424084968693169933964196366183/10000000000000000000000000000000000": [ + 1.5011073530614094e-29, + 1.5011073530614094e-29 + ], + "4553010621086646241745524545773/1250000000000000000000000000000000": [ + -2.379191929405633e-29, + -2.379191929405633e-29 + ] + }, + "moment_margins": { + "364240849686907/100000000000000000": [ + "2396020747253035581302553685786103857610081739390219623253277840874727/25000000000000000000000000000000000000000000000000000000000000000000000000000000", + "239602074725303558130255368578610385761008173939021962325327785059817/2500000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "36424084968693169933964196366183/10000000000000000000000000000000000": [ + "187638419132676185812036537536839420100383559531923/12500000000000000000000000000000000000000000000000000000000000000000000000000000", + "750553676530704743248146150147357680401534257485899/50000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "4553010621086646241745524545773/1250000000000000000000000000000000": [ + "-475838385881126595975213826899193397895189328050629/20000000000000000000000000000000000000000000000000000000000000000000000000000000", + "-2379191929405632979876069134495966989475946600991499/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "outer": { + "BIT_just_below_effective_rejected": true, + "functional_count": 4, + "minimum_margin": "1/1000000000000000000", + "strict_count": 54 + }, + "raw_bracket": [ + "36424084968693169933964196366183/10000000000000000000000000000000000", + "4553010621086646241745524545773/1250000000000000000000000000000000" + ], + "tested": "364240849686907/100000000000000000", + "written_log_power": 2236 + }, + "native_baseline_rejects_new_claim": true, + "new_native": "9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a", + "old_native": "a32696e806c5cde0510cdf2f494e1f14ebb01e73d4ec577413fd7e7c0d9d68b2", + "price": { + "baseline_rejects_new_claim": true, + "candidate_margin_at_old_upper": [ + "7342003716227063123481474642367397001715979664055708969839165248446819348758371/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "3671001858113531561740737321183698500857989832027854484919582624223409691731707/50000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "claim_decimal": "0.003642408496869", + "gain": "1.89212232E-7", + "gain_exact": "23651529/125000000000000", + "independent_raw_bracket": [ + "0.00364240849686931699339641963661833", + "0.00364240849686931699339641963661834" + ], + "previous_claim": "3642219284637/1000000000000000", + "raw_bracket": [ + "0.0036424084968693169933964196366183", + "0.0036424084968693169933964196366184" + ] + } + }, + "status": "PASS_P104_OUTPUT_RECHART_COMPOSITION" +} diff --git a/research/p104-two-blocker-exclusion/vendor/inputs/WORD.json.gz b/research/p104-two-blocker-exclusion/vendor/inputs/WORD.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..5e2ae510e532e87a8888c739ab58fd6cba588c70 GIT binary patch literal 370819 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

?KjJi6$jM#CRdIhtkAuwn^OD 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%0AnZ@Tql;H?l5{8u#l|tV);!>RY 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 literal 0 HcmV?d00001 diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-chronology-pivot-20261110T1021Z/evidence/corrected_contacts.py b/research/p104-two-blocker-exclusion/vendor/kappa-chronology-pivot-20261110T1021Z/evidence/corrected_contacts.py new file mode 100644 index 0000000000..e9bb88a2ac --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-chronology-pivot-20261110T1021Z/evidence/corrected_contacts.py @@ -0,0 +1,302 @@ +"""Price corrected one-blocker ADD retimings with collateral public rechart.""" + +from bisect import bisect_left, bisect_right +from collections import Counter, defaultdict +from fractions import Fraction as Q +from hashlib import sha256 +from pathlib import Path +import gzip +import json +import sys + +PREVIOUS = Path(__file__).resolve().parents[2] / 'kappa-nonbridge-pairs-20261110T0937Z' / 'evidence' +sys.path.insert(0, str(PREVIOUS)) +from nonbridge_screen import BRACKET, WORD_SHA, bounds, changed_blocks, chart, load, propagate, quotient_domain, subspace_count, volume +from release import inventory +from constrained import solve_equalities + + +def scalar_history(word): + reads, writes = defaultdict(list), defaultdict(list) + for i, e in enumerate(word['program']): + if e[0] in ('ADD', 'COPY', 'SCALE'): + writes[e[1]].append(i) + reads[e[1] if e[0] == 'SCALE' else e[2]].append(i) + return reads, writes + + +def window(indices, position, skip=None): + j = bisect_left(indices, position) + left = j - 1 + right = j + while left >= 0 and indices[left] in (position, skip): + left -= 1 + while right < len(indices) and indices[right] in (position, skip): + right += 1 + return indices[left] if left >= 0 else -1, indices[right] if right < len(indices) else None + + +def smooth(n): + assert n > 0 + for prime in (2, 3, 5): + while n % prime == 0: + n //= prime + return n == 1 + + +def corrected(a, b, later, public, owned_blocker=False, gauss=False): + _, d, s, x, _ = a + x = Q(x) + op, e = b[:2] + if gauss: + if op != 'ADD' or e != s or b[2] != d: + return None + y = Q(b[3]) + z = 1 + x*y + if not z or not (smooth(abs(z.numerator)) and smooth(z.denominator)): + return None + first, second = (1/z, z) if later else (z, 1/z) + if any(abs(q) + 1 >= 2**16 for q in (x/z, y/z, first, second)): + return None + return x/z, ('GAUSS', d, s, str(z), str(y/z), str(first), str(second)) + if op == 'SCALE': + assert e in (d, s) + y = Q(b[-2]) + coeff = x * y if (e == d) == later else x / y + return coeff, None + if op == 'COPY' and owned_blocker and e >= public and b[2] == d: + y = Q(b[-2]) + return x, ('ADD', e, s, str(x*y if later else -x*y)) + if op != 'ADD' or (not owned_blocker and max(e, b[2]) >= public): + return None + t = b[2] + assert s == e or d == t + if s == e and d == t: + return None + y = Q(b[-2]) + if s == e: + correction = ('ADD', d, t, str(-x*y if later else x*y)) + else: + correction = ('ADD', e, s, str(x*y if later else -x*y)) + return x, correction + + +def choices(word, raw, raw_id, scalar, child, free_correction=False, owned_blocker=False, gauss=False): + program = word['program'] + public = word['public'] + reads, writes = scalar_history(word) + histories = defaultdict(list) + for i, (role, event, _) in enumerate(raw): + histories[role].append((event + 1, i)) + for items in histories.values(): + items.sort() + infinity = len(program) + len(raw) + + def at(r, cut): + items = histories[r] + return items[bisect_right(items, (cut, infinity)) - 1][1] + + def joint_cuts(roles, lo, hi): + cuts = {lo} + for r in roles: + h = histories[r] + first = bisect_right(h, (lo, infinity)) + last = bisect_right(h, (hi, infinity)) + cuts.update(k for k, _ in h[first:last]) + return sorted(cuts) + + for i, (u, v) in scalar.items(): + event = program[i] + if i not in child or event[0] != 'ADD' or max(event[1:3]) >= public: + continue + d, s = event[1:3] + barriers = reads[d], writes[s] + nearby = [window(ls, i) for ls in barriers] + left = max(row[0] for row in nearby) + right = min((row[1] for row in nearby if row[1] is not None), default=len(program)) + for blocker, later in ((left, False), (right, True)): + if blocker < 0 or blocker == len(program): + continue + b = program[blocker] + if owned_blocker and (b[0] not in ('ADD', 'COPY') or max(b[1:3]) < public): + continue + plan = corrected(event, b, later, public, owned_blocker, gauss) + if plan is None: + continue + coefficient, correction = plan + if abs(coefficient) + 1 >= 2**16 or (correction and abs(Q(correction[3])) + 1 >= 2**16): + continue + next_bounds = [window(ls, i, blocker) for ls in barriers] + lo = max(row[0] for row in next_bounds) + 1 + hi = min((row[1] for row in next_bounds if row[1] is not None), default=len(program)) + if later: + lo = max(lo, blocker + 1) + else: + hi = min(hi, blocker) + if lo > hi: + continue + # A COPY must see its still-zero destination before any correction. + added_cut = blocker + int(later or b[0] == 'COPY') + added = tuple(at(r, added_cut) for r in correction[1:3]) if correction else None + additions = [(added_cut, added)] + if free_correction: + if correction is None: + continue + p, q = correction[1:3] + prior, after = [], [] + for conflicts in (reads[p], writes[q]): + j = bisect_left(conflicts, added_cut) + prior.append(conflicts[j - 1] + 1 if j else 0) + after.append(conflicts[j] if j < len(conflicts) else len(program)) + assert max(prior) <= added_cut <= min(after) + additions = [] + for k in joint_cuts((p, q), max(prior), min(after)): + pair = at(p, k), at(q, k) + if pair != added: + additions.append((k, pair)) + for cut in joint_cuts((d, s), lo, hi): + a, b = at(d, cut), at(s, cut) + if (a, b) == (u, v): + continue + for k, pair in additions: + yield i, blocker, cut, str(coefficient), k, correction, (a, b), pair + + +def screen(word, graph, price, journal, free_correction=False, cap=None, owned_blocker=False, gauss=False): + raw, raw_id, comp, raw_paid, raw_target, fixed, scalar, original, enter, end, child = inventory(word, graph) + base = {i: chart(s) for i, s in enumerate(original) if s is not None} + paid0 = Counter((comp[a], comp[b]) for _, a, b in raw_paid) + old_lo, old_hi, _ = bounds(original, paid0, {comp[i] for i in fixed}) + left, right = map(Q, BRACKET) + weights = {r: (price.raw_margin({r: 1}, right)[0], price.raw_margin({r: 1}, left)[1]) + for r in range(1, 10)} + counts = Counter() + hits = [] + last = None + cache = {} + pending = None + for i, blocker, cut, coefficient, correction_cut, correction, moved, added in choices( + word, raw, raw_id, scalar, child, free_correction, owned_blocker, gauss): + if cap is not None and counts['candidate placements'] >= cap: + pending = dict(add=i, blocker=blocker, cut=cut, correction_cut=correction_cut) + break + counts['candidate placements'] += 1 + counts['corrected ' + word['program'][blocker][0]] += 1 + if last != i: + old, new = comp[scalar[i][0]], len(original) + branch = child[i] + split = {j for j, c in enumerate(comp) if c == old and enter[branch] <= enter[j] < end[branch]} + belong = lambda j: new if j in split else comp[j] + space = [*original, original[old]] + paid = Counter((belong(a), belong(b)) for _, a, b in raw_paid) + target = Counter((belong(a), belong(b)) for a, b in raw_target) + low, high, adj = bounds(space, paid, {belong(j) for j in fixed}) + changed = {old, new} | {j for j in range(len(original)) + if (low[j], high[j]) != (old_lo[j], old_hi[j])} + old_state = base | {new: base[old]} + paid_order = sorted(paid, key=lambda e: (old_state[e[0]][1], old_state[e[1]][1], e)) + cache = {} + last = i + counts['ADD bridges with placements'] += 1 + pairs = [tuple(sorted(map(belong, moved)))] + if added is not None: + pairs.append(tuple(sorted(map(belong, added)))) + key = tuple(sorted({(a, b) for a, b in pairs if a != b})) + connected = {old} + for _ in key: + for a, b in key: + if a in connected or b in connected: + connected.update((a, b)) + if new in connected: + counts['reinstates predecessor equality'] += 1 + continue + if key in cache: + counts['duplicate priced equality'] += 1 + counts[cache[key]] += 1 + continue + narrowed = propagate(low, high, key, paid_order) + if narrowed is None: + status = 'incompatible span bounds' + else: + lo, hi = narrowed + neighbors = [s.copy() for s in adj] + touched = changed.copy() + for a, b in key: + touched.update((a, b)) + neighbors[a].add(b) + neighbors[b].add(a) + blocks = changed_blocks(space, low, high, neighbors, target, touched) + rank = [] + exact = [] + for block in blocks: + widths = {j: len(hi[j]).bit_length() - len(lo[j]).bit_length() + 1 for j in block} + if volume({j: range(n) for j, n in widths.items()}, neighbors, 600000) is None: + rank.append(dict(deferred=True, vertices=block)) + else: + rank.append(solve_equalities(block, old_state, lo, hi, paid, target, key, weights, True)) + if any(row.get('infeasible') for row in rank): + status = 'incompatible ranks' + elif any(row.get('deferred') for row in rank): + status = 'rank table deferred' + elif sum(Q(row['upper']) for row in rank) <= 0: + status = 'nonpositive rank upper' + else: + for block in blocks: + qs = {j: len(hi[j]).bit_length() - len(lo[j]).bit_length() for j in block} + sizes = {j: sum(subspace_count(d, r) for r in range(d + 1)) for j, d in qs.items()} + if max(qs.values()) > 7 or volume({j: range(n) for j, n in sizes.items()}, + neighbors, 800000) is None: + exact.append(dict(deferred=True, vertices=block)) + else: + domains = {j: quotient_domain(lo[j], hi[j]) for j in block} + exact.append(solve_equalities(block, old_state, lo, hi, paid, target, key, + weights, False, domains)) + if any(row.get('infeasible') for row in exact): + status = 'incompatible exact charts' + elif any(row.get('deferred') for row in exact): + mixed = sum(Q(p['upper'] if e.get('deferred') else e['upper']) for p, e in zip(rank, exact)) + status = ('nonpositive mixed upper' if (free_correction or owned_blocker or gauss) and mixed <= 0 + else 'exact table deferred') + elif sum(Q(row['upper']) for row in exact) <= 0: + status = 'nonpositive exact upper' + elif sum(Q(row['lower']) for row in exact) > 0: + status = 'positive chart assignment' + else: + status = 'interval unresolved' + if status in ('positive chart assignment', 'rank table deferred', 'exact table deferred', 'interval unresolved'): + row = dict(status=status, add=i, blocker=blocker, cut=cut, coefficient=coefficient, + correction_cut=correction_cut, correction=correction, key=key, + old_component=old, new_component=new, split_visits=[raw[j] for j in sorted(split)], + moved_visits=[raw[j] for j in moved], added_visits=[raw[j] for j in added] if added else None, + rank=rank, exact=exact) + hits.append(row) + print(json.dumps(row, sort_keys=True), file=journal, flush=True) + cache[key] = status + counts[status] += 1 + if counts['candidate placements'] % 200 == 0: + print(json.dumps(dict(progress=dict(counts), add=i)), file=journal, flush=True) + result = dict(word=WORD_SHA, counts=counts, unresolved=len(hits), hits=hits) + if free_correction: + result.update(scope='additional commuting correction visit pairs', pending=pending) + if owned_blocker: + result['scope'] = 'only ADD or COPY blockers touching owned roles, adjacent corrections' + if gauss: + result['scope'] = 'opposite public ADD blocker with retuned coefficient and adjacent diagonal correction' + return result + + +def main(word, graph, price, journal, cap=None, owned_blocker=False, gauss=False): + raw = gzip.decompress(word.read_bytes()) + assert sha256(raw).hexdigest() == WORD_SHA + with journal.open('x') as out: + result = screen(json.loads(raw), load('chronology_graph', graph), load('directed_price', price), out, + cap is not None, cap, owned_blocker, gauss) + print(json.dumps(result, sort_keys=True, indent=2)) + + +if __name__ == '__main__': + assert __debug__ + assert len(sys.argv) in (5, 6) + mode = sys.argv[5] if len(sys.argv) == 6 else None + main(*(Path(p) for p in sys.argv[1:5]), int(mode) if mode not in (None, '--owned', '--gauss') else None, + mode == '--owned', mode == '--gauss') diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-contact-release-20261110T0922Z/evidence/constrained.py b/research/p104-two-blocker-exclusion/vendor/kappa-contact-release-20261110T0922Z/evidence/constrained.py new file mode 100644 index 0000000000..76b87a462e --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-contact-release-20261110T0922Z/evidence/constrained.py @@ -0,0 +1,170 @@ +"""Impose each actual replacement equality on the optimistic release graph.""" + +from collections import Counter +from fractions import Fraction as Q +from hashlib import sha256 +from pathlib import Path +import gzip +import json +import sys + +from release import BRACKET, WORD_SHA, admissible_volume, bounds, changed_blocks, inventory, join +from eliminate import basis, bits, chart, domain, elimination, load + +GRID = 10**45 +IMPOSSIBLE = -10**100 + + +def solve_equal(block, base, low, high, paid, target, equal, weights, ranks_only): + return solve_equalities(block, base, low, high, paid, target, (equal,), weights, ranks_only) + + +def solve_equalities(block, base, low, high, paid, target, equalities, weights, ranks_only, overrides=None): + variables = set(block) + edges = sorted({(a, b) for a, b in paid.keys() | target.keys() if a in variables or b in variables}) + mass = sum(abs(target[a,b]-paid[a,b]) for a, b in edges) + stride_base = max(3, 2*mass+1) + stride = stride_base**9 + mid = {r: int(GRID*(lo+hi)/2) for r, (lo, hi) in weights.items()} + score = {r: n*stride + stride_base**(r-1) for r, n in mid.items()} | {0: 0} + uncertainty = max(max(abs(Q(mid[r], GRID)-a), abs(Q(mid[r], GRID)-b)) + for r, (a, b) in weights.items()) + assert 2*mass*max(score.values()) < -IMPOSSIBLE//4 + all_nodes = {i for edge in (*edges,*equalities) for i in edge} + states = {i: (base[i],) for i in all_nodes if i not in variables} + for i in block: + if ranks_only: + lo, hi = len(low[i]).bit_length()-1, len(high[i]).bit_length()-1 + states[i] = tuple((None, rank) for rank in range(lo, hi+1)) + elif overrides is not None: + states[i] = overrides[i] + else: + states[i] = domain(low[i], high[i]) + if any(not states[i] for i in variables): + return {'infeasible': True} + + factors = [] + edge_specs = [(a,b,False) for a,b in edges] + edge_specs.extend((a,b,True) for a,b in equalities if a != b and variables & {a,b}) + for a, b, equality in edge_specs: + scope = tuple(sorted({a, b} & variables)) + table = {} + old_rank = base[b][1]-base[a][1] + for j, (am, ad) in enumerate(states[a]): + for k, (bm, bd) in enumerate(states[b]): + if equality: + valid = ad == bd if ranks_only else am == bm + value = 0 + else: + valid = ad <= bd if ranks_only else not am & ~bm + valid &= not target[a,b] or ad < bd + value = (target[a,b]-paid[a,b])*(score[bd-ad]-score[old_rank]) if valid else 0 + table[tuple(j if i == a else k for i in scope)] = (value if valid else IMPOSSIBLE, None) + assert table and scope + factors.append((scope, table)) + best, second, assignment, stats = elimination(factors, {i:len(states[i]) for i in block}) + if best < IMPOSSIBLE//2: + return {'infeasible': True, 'stats': stats, 'ranks_only': ranks_only} + selected = base | {i: states[i][j] for i,j in assignment.items()} + profile = Counter() + for a,b in edges: + old_rank = base[b][1]-base[a][1] + new_rank = selected[b][1]-selected[a][1] + c = target[a,b]-paid[a,b] + profile[old_rank] -= c + if new_rank: + profile[new_rank] += c + profile = {r:n for r,n in sorted(profile.items()) if n} + assert sum(r*n for r,n in profile.items()) == 0 and sum(score[r]*n for r,n in profile.items()) == best + gain_lo = sum(n*weights[r][n<0] for r,n in profile.items()) + gain_hi = sum(n*weights[r][n>0] for r,n in profile.items()) + if second is not None and second > IMPOSSIBLE//2: + center = Q((second+stride//2)//stride, GRID) + gain_hi = max(gain_hi, center+2*mass*uncertainty) + result = dict(ranks_only=ranks_only, profile=profile, + lower=str(gain_lo), upper=str(gain_hi), stats=stats) + if not ranks_only: + result['changed_bases'] = {i:basis(frozenset(bits(selected[i][0]))) + for i in sorted(block) if selected[i] != base[i]} + elif overrides is not None: + result['selected_ranks'] = {i:selected[i][1] for i in sorted(block)} + return result + + +def screen(word, previous, graph, price): + raw, ids, comp, raw_paid, raw_target, fixed, scalar, original, entry, end, child = inventory(word, graph) + base = {i:chart(s) for i,s in enumerate(original) if s is not None} + old_lo, old_hi, _ = bounds(original, Counter((comp[a],comp[b]) for _,a,b in raw_paid), {comp[i] for i in fixed}) + left, right = map(Q, BRACKET) + weights = {r:(price.raw_margin({r:1},right)[0],price.raw_margin({r:1},left)[1]) + for r in range(1,10)} + counts = Counter() + results = [] + for row in previous['hits']: + e = row['add'] + old_id = comp[scalar[e][0]] + branch = child[e] + new_id = len(original) + + def belong(i): + return new_id if comp[i] == old_id and entry[branch] <= entry[i] < end[branch] else comp[i] + + assert [raw[i] for i in range(len(raw)) if belong(i)==new_id] == [tuple(x) for x in row['split_raw_visits']] + space = [*original, original[old_id]] + paid = Counter((belong(a),belong(b)) for _,a,b in raw_paid) + target = Counter((belong(a),belong(b)) for a,b in raw_target) + low, high, adjacency = bounds(space, paid, {belong(i) for i in fixed}) + changed = {i for i, (a,b) in enumerate(zip(low, high)) + if i == new_id or (a,b) != (old_lo[i],old_hi[i])} | {old_id} + states = base | {new_id:base[old_id]} + for proposal in row['possible_cuts']: + u,v = [belong(ids[r,start-1]) for r,start,_ in proposal['new_visits']] + assert [u,v] == proposal['cut_components'] + lower, upper = low.copy(), high.copy() + lower[u] = lower[v] = join(low[u],low[v]) + upper[u] = upper[v] = high[u]&high[v] + assert lower[u] <= upper[u] + neighbors = [s.copy() for s in adjacency] + if u != v: + neighbors[u].add(v) + neighbors[v].add(u) + # Preserve the released graph's variable list even when the new + # constraint reduces one of its domains to a forced new chart. + blocks = changed_blocks(space, low, high, neighbors, target, changed|{u,v}) + entries = [] + for block in blocks: + ranks_only = not admissible_volume(block, lower, upper, neighbors) + entries.append(solve_equal(block, states, lower, upper, paid, target, (u,v), weights, ranks_only)) + hit = dict(add=e, cut=proposal['cut'], proposal=proposal, split_raw_visits=row['split_raw_visits'], + old_component=old_id, split_component=new_id, blocks=entries) + if any(x.get('infeasible') for x in entries): + status = 'no feasible chart assignment' + else: + lower_gain = sum(Q(x['lower']) for x in entries) + upper_gain = sum(Q(x['upper']) for x in entries) + hit.update(gain=[str(lower_gain),str(upper_gain)]) + if upper_gain <= 0: + status = 'nonpositive' + elif lower_gain > 0 and not any(x['ranks_only'] for x in entries): + status = 'strict literal chart nominee' + else: + status = 'unresolved upper bound' + hit['status'] = status + counts[status] += 1 + results.append(hit) + return dict(word=WORD_SHA, bracket=BRACKET, counts=counts, cases=results) + + +def main(word_path, release_path, graph_path, price_path): + raw = gzip.decompress(word_path.read_bytes()) + previous = json.loads(release_path.read_bytes()) + assert sha256(raw).hexdigest() == WORD_SHA == previous['word'] + assert not previous['remaining_adds'] + print(json.dumps(screen(json.loads(raw), previous, load('chart_graph',graph_path), + load('directed_price',price_path)), indent=2)) + + +if __name__ == '__main__': + if not __debug__: + raise RuntimeError('Assertions are proof checks') + main(*(Path(p) for p in sys.argv[1:])) diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-contact-release-20261110T0922Z/evidence/release.py b/research/p104-two-blocker-exclusion/vendor/kappa-contact-release-20261110T0922Z/evidence/release.py new file mode 100644 index 0000000000..ea21864ea3 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-contact-release-20261110T0922Z/evidence/release.py @@ -0,0 +1,271 @@ +"""Price each scalar bridge release before imposing its replacement equality.""" + +from collections import Counter, defaultdict +from fractions import Fraction as Q +from functools import lru_cache +from hashlib import sha256 +from math import prod +from pathlib import Path +import gzip +import json +import sys +import time + +PRIOR = Path(__file__).resolve().parents[2] / 'kappa-coupled-boundaries-20261110T0908Z' / 'evidence' +sys.path.append(str(PRIOR)) +from eliminate import chart, load, solve, subspace_count + +WORD_SHA = 'cca66a7ec924bab47ccd1410968d16e071a01dc6110b5c08040bd207f753d066' +BRACKET = ('0.00363432724063755030618121129092973', + '0.00363432724063755030618121129092974') +EMPTY = frozenset((0,)) +FULL = frozenset(range(512)) + + +@lru_cache(None) +def join(a, b): + if a <= b: + return b + if b <= a: + return a + current = set(a) + for v in sorted(b): + if v not in current: + current |= {x ^ v for x in current} + return frozenset(current) + + +def bridge_forest(adj): + index = [-1] * len(adj) + end = [-1] * len(adj) + low = [-1] * len(adj) + children = {} + cursor = 0 + + def dfs(u, parent_edge): + nonlocal cursor + index[u] = low[u] = cursor + cursor += 1 + for v, e in adj[u]: + if e == parent_edge: + continue + if index[v] >= 0: + low[u] = min(low[u], index[v]) + else: + dfs(v, e) + low[u] = min(low[u], low[v]) + if low[v] > index[u]: + children[e] = v + end[u] = cursor + + for u in range(len(adj)): + if index[u] < 0: + dfs(u, -1) + return index, end, children + + +def inventory(word, graph): + groups, frames, _, paid_check, _ = graph.graph(word) + raw = [v for group in groups for v in group] + raw_id = {(r, e): i for i, (r, e, _) in enumerate(raw)} + comp = [i for i, g in enumerate(groups) for _ in g] + adj = [[] for _ in raw] + public = word['public'] + roles = public + word['owned_fields'] + initial = [raw_id[r, -1] for r in range(roles)] + active = initial.copy() + main = set(word['live']) | {r + 112 for r in word['live']} + main |= set(word['hosted']['X2']) | set(word['hosted']['Y2']) + paid, scalar = [], {} + for i, event in enumerate(word['program']): + op, r = event[:2] + if op in ('MOVE', 'INIT', 'CLEAR'): + after = raw_id[r, i] + if op == 'MOVE' and r < public: + paid.append((i, active[r], after)) + active[r] = after + elif op in ('ADD', 'COPY'): + a, b = active[r], active[event[2]] + assert comp[a] == comp[b] and raw[a][2] == raw[b][2] == event[-1] + adj[a].append((b, i)) + adj[b].append((a, i)) + scalar[i] = (a, b) + assert [(i, comp[a], comp[b]) for i, a, b in paid] == paid_check + assert [raw[v][2] for v in active[:public]] == word['final'] + target = [(initial[r], active[r]) for r in range(public) if r not in main] + fixed = {i for i, (r, _, _) in enumerate(raw) if r >= public} + fixed.update(initial[r] for r in main) + fixed.update(active[r] for r in main) + space = [graph.span(word['frames'][f]) if f is not None else None for f in frames] + sys.setrecursionlimit(30000) + entry, finish, child = bridge_forest(adj) + return raw, raw_id, comp, paid, target, fixed, scalar, space, entry, finish, child + + +def bounds(space, paid, frozen): + parents, children = [set() for _ in space], [set() for _ in space] + order = sorted(range(len(space)), key=lambda i: len(space[i]) if space[i] is not None else -1) + for a, b in paid: + assert space[a] < space[b] + parents[b].add(a) + children[a].add(b) + lo, hi = [EMPTY] * len(space), [FULL] * len(space) + for i in order: + if i in frozen and space[i] is not None: + lo[i] = space[i] + for a in parents[i]: + lo[i] = join(lo[i], lo[a]) + for i in reversed(order): + if i in frozen and space[i] is not None: + hi[i] = space[i] + for b in children[i]: + hi[i] &= hi[b] + return lo, hi, [a | b for a, b in zip(parents, children)] + + +def changed_blocks(space, low, high, neighbors, target, affected): + for a, b in target: + neighbors[a].add(b) + neighbors[b].add(a) + variable = {i for i, s in enumerate(space) if s is not None and low[i] != high[i]} + blocks = [] + while variable & affected: + r = min(variable & affected) + variable.remove(r) + stack, block = [r], [r] + while stack: + u = stack.pop() + for v in sorted(neighbors[u] & variable): + variable.remove(v) + stack.append(v) + block.append(v) + blocks.append(sorted(block)) + return blocks + + +def admissible_volume(block, low, high, neighbors, cap=250000): + q = {i: len(high[i]).bit_length()-len(low[i]).bit_length() for i in block} + if max(q.values()) > 5: + return False + sizes = {i: sum(subspace_count(d, r) for r in range(d+1)) for i, d in q.items()} + pending = {i: neighbors[i] & sizes.keys() for i in block} + total = 0 + while pending: + work = {i: sizes[i] * prod(sizes[j] for j in ns) for i, ns in pending.items()} + v = min(pending, key=lambda i: (work[i], i)) + ns = pending.pop(v) + total += work[v] + if total > cap: + return False + for n in ns: + pending[n].remove(v) + pending[n].update(ns - {n}) + return True + + +def screen(word, proposals, graph, price, journal, time_cap): + raw, ids, comp, raw_paid, raw_target, raw_fixed, scalar, original, enter, end, child = inventory(word, graph) + base = {i: chart(s) for i, s in enumerate(original) if s is not None} + p0 = Counter((comp[a], comp[b]) for _, a, b in raw_paid) + old_lo, old_hi, _ = bounds(original, p0, {comp[i] for i in raw_fixed}) + assert all(old_lo[i] <= s <= old_hi[i] for i, s in enumerate(original) if s is not None) + left, right = map(Q, BRACKET) + interval = {r: (price.raw_margin({r:1}, right)[0], price.raw_margin({r:1}, left)[1]) + for r in range(1, 10)} + assert graph.margin({1: 1, 2: -2, 3: 1}, interval)[0] > 0 + by_edge = defaultdict(list) + for row in proposals: + by_edge[row['add']].append(row) + assert len(by_edge) == 2024 and len(proposals) == 4094 + counts = Counter() + all_hits = [] + todo = [] + started = time.monotonic() + deadline = started + time_cap + new_id = len(original) + + for e, rows in sorted(by_edge.items()): + if time.monotonic() >= deadline: + todo.append(e) + continue + a, b = scalar[e] + old_id = comp[a] + branch = child[e] + assert comp[b] == comp[branch] == old_id + enter_branch, end_branch = enter[branch], end[branch] + + def belong(i): + return new_id if comp[i] == old_id and enter_branch <= enter[i] < end_branch else comp[i] + + assert belong(a) != belong(b) + paid = Counter((belong(i), belong(j)) for _, i, j in raw_paid) + target = Counter((belong(i), belong(j)) for i, j in raw_target) + frozen = {belong(i) for i in raw_fixed} + space = [*original, original[old_id]] + low, high, neighbors = bounds(space, paid, frozen) + possible = [] + for row in rows: + u, v = [belong(ids[r, start-1]) for r, start, _ in row['new_visits']] + if join(low[u], low[v]) <= high[u] & high[v]: + possible.append((u, v, row)) + else: + counts['new_equality_interval_impossible'] += 1 + record = {'add': e, 'old_component': old_id, 'split_component': new_id, + 'proposals': len(rows), 'optimistically_feasible_cuts': len(possible)} + if not possible: + record['status'] = 'all new equality cuts impossible' + else: + changed = {i for i, (a, b) in enumerate(zip(low, high)) + if i == new_id or (a,b) != (old_lo[i],old_hi[i])} + changed.add(old_id) + blocks = changed_blocks(space, low, high, neighbors, target, changed) + old_state = base | {new_id: base[old_id]} + records = [] + for block in blocks: + active = any(paid[x] != target[x] for x in paid.keys() | target.keys() + if x[0] in block or x[1] in block) + if active and not admissible_volume(block, low, high, neighbors): + records.append(dict(proof='deferred volume bound', vertices=block)) + else: + records.append(solve(block, old_state, low, high, paid, target, interval, graph)) + hits = [r for r in records if r['proof'] == 'strict positive candidate'] + waits = [r for r in records if r['proof'] in ('deferred volume bound', 'interval inconclusive')] + record['released_components'] = len(blocks) + if hits or waits: + record.update(status='relaxed positive' if hits else 'deferred', + positive=hits, deferred=waits) + replacements = {i: graph.span(basis) for r in hits for i, basis in r['changed_bases'].items()} + matches = [row for u, v, row in possible if replacements.get(u, space[u]) == + replacements.get(v, space[v])] + record['best_assignment_valid_cuts'] = [row['cut'] for row in matches] + record['possible_cuts'] = [dict(row, cut_components=[u, v]) for u, v, row in possible] + record['split_raw_visits'] = [raw[i] for i in range(len(raw)) if belong(i) == new_id] + all_hits.append(record) + else: + record['status'] = 'release upper bound zero' + counts[record['status']] += 1 + counts['tested_cuts'] += len(rows) + journal.write(json.dumps(record, separators=(',', ':')) + '\n') + journal.flush() + if sum(counts[k] for k in ('all new equality cuts impossible','relaxed positive','deferred','release upper bound zero')) % 100 == 0: + print(f"progress at ADD {e}, {counts['tested_cuts']} cuts", file=sys.stderr, flush=True) + return dict(word=WORD_SHA, counts=counts, remaining_adds=todo, hits=all_hits, + seconds=time.monotonic()-started, cap_seconds=time_cap) + + +def main(word_path, proposals_path, graph_path, price_path, journal_path, cap): + raw = gzip.decompress(Path(word_path).read_bytes()) + assert sha256(raw).hexdigest() == WORD_SHA + proposals = json.loads(Path(proposals_path).read_bytes()) + assert proposals['word'] == WORD_SHA + graph = load('chart_graph', Path(graph_path)) + price = load('directed_price', Path(price_path)) + with Path(journal_path).open('x') as journal: + receipt = screen(json.loads(raw), proposals['surviving_pairs'], graph, price, journal, int(cap)) + print(json.dumps(receipt, indent=2)) + + +if __name__ == '__main__': + if not __debug__: + raise RuntimeError('Assertions are proof checks') + main(*sys.argv[1:]) diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-contact-release-20261110T0922Z/evidence/resolve_pair.py b/research/p104-two-blocker-exclusion/vendor/kappa-contact-release-20261110T0922Z/evidence/resolve_pair.py new file mode 100644 index 0000000000..388c6a26ff --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-contact-release-20261110T0922Z/evidence/resolve_pair.py @@ -0,0 +1,200 @@ +"""Recover an actual nested chart witness for the residual positive rank bound.""" + +from collections import Counter, defaultdict, deque +from fractions import Fraction as Q +from hashlib import sha256 +from itertools import combinations, product +from math import prod +from pathlib import Path +import gzip +import json +import sys + +from constrained import solve_equalities +from eliminate import domain +from release import BRACKET, WORD_SHA, bounds, changed_blocks, chart, inventory, join, load, subspace_count + + +def volume(domains, graph, cap): + sizes = {i:len(s) for i,s in domains.items()} + adj = {i:graph[i]&sizes.keys() for i in sizes} + total = 0 + while adj: + work = {i:sizes[i]*prod(sizes[j] for j in ns) for i,ns in adj.items()} + v = min(adj,key=lambda i:(work[i],i)) + ns = adj.pop(v) + total += work[v] + if total > cap: + return None + for n in ns: + adj[n].remove(v) + adj[n].update(ns-{n}) + return total + + +def quotient_domain(lo, hi): + q = len(hi).bit_length()-len(lo).bit_length() + if q <= 5: + return domain(lo,hi) + axes = [] + found = set(lo) + for v in sorted(hi): + if v not in found: + axes.append(v) + found |= {v ^ w for w in found} + assert len(axes)==q and found==hi + states = [] + for rank in range(q+1): + for pivots in combinations(range(q),rank): + slots = [(row,c) for row,p in enumerate(pivots) for c in range(p+1,q) if c not in pivots] + for vals in product((0,1),repeat=len(slots)): + rows = [axes[p] for p in pivots] + for (row,c),value in zip(slots,vals): + if value: + rows[row] ^= axes[c] + space = set(lo) + for v in rows: + space |= {v ^ w for w in space} + states.append(chart(space)) + assert len(states)==len(set(states))==sum(subspace_count(q,r) for r in range(q+1)) + return sorted(states) + + +def rank_conflict(block, base, domains, ranks, paid, target, equalities): + """Find a deterministic geometric arc obstruction at the relaxed ranks.""" + active = set(block) + links = defaultdict(set) + rules = defaultdict(list) + for a,b in paid.keys()|target.keys(): + if a not in active and b not in active: + continue + links[a].add(b) + links[b].add(a) + rules[a,b].append('subset') + rules[b,a].append('superset') + for a,b in equalities: + if a != b and (a in active or b in active): + links[a].add(b) + links[b].add(a) + rules[a,b].append('equal') + rules[b,a].append('equal') + allowed = {i:tuple(m for m,r in domains[i] if r==ranks[i]) if i in active else (base[i][0],) + for i in links} + sizes = {i:len(v) for i,v in allowed.items()} + if not all(sizes.values()): + return dict(status='empty rank domain',vertices=[i for i,n in sizes.items() if not n]) + arcs = deque(sorted(rules)) + changes = [] + while arcs: + a,b = arcs.popleft() + requirements=rules[a,b] + compatible = lambda x,y: all((x==y if rule=='equal' else + not x&~y if rule=='subset' else not y&~x) + for rule in requirements) + revised=tuple(x for x in allowed[a] if any(compatible(x,y) for y in allowed[b])) + if len(revised)==len(allowed[a]): + continue + changes.append(dict(vertex=a,neighbor=b,relations=requirements, + before=len(allowed[a]),after=len(revised))) + if not revised: + return dict(status='empty domain by arc consistency',failed_edge=[a,b], + initial_sizes=sizes,changes=changes) + allowed[a]=revised + arcs.extend((v,a) for v in sorted(links[a]) if v!=b) + return dict(status='arc consistency alone does not exclude',initial_sizes=sizes,changes=changes) + + +def refine(word, row, graph, engine): + raw, ids, comp, raw_paid, raw_target, fixed, scalar, original, entry, end, child = inventory(word, graph) + base = {i:chart(s) for i,s in enumerate(original) if s is not None} + old_lo, old_hi, _ = bounds(original, Counter((comp[a],comp[b]) for _,a,b in raw_paid), {comp[i] for i in fixed}) + left,right = map(Q,BRACKET) + weights = {r:(engine.raw_margin({r:1},right)[0],engine.raw_margin({r:1},left)[1]) for r in range(1,10)} + adds = row['adds'] + roots = {e:comp[scalar[e][0]] for e in adds} + split = {e:len(original)+j for j,e in enumerate(adds)} + ordered = sorted(adds,key=lambda e:entry[child[e]]) + + def belong(i): + c=comp[i] + for e in ordered: + if comp[i]==roots[e] and entry[child[e]]<=entry[i]=len(original) or (l,h)!=(old_lo[i],old_hi[i])} + changed |= set(roots.values()) + for u,v in eq: + changed.update((u,v)) + if u!=v: + neighbors[u].add(v) + neighbors[v].add(u) + blocks = changed_blocks(space,lo,hi,neighbors,target,changed) + frame_spaces = {graph.span(basis) for basis in word['frames']} + results = [] + for block in blocks: + q = {i:len(upper[i]).bit_length()-len(lower[i]).bit_length() for i in block} + sizes = {i:sum(subspace_count(d,r) for r in range(d+1)) for i,d in q.items()} + rank = solve_equalities(block,states,lower,upper,paid,target,eq,weights,True,{}) + packet = dict(vertices=block,quotient_dimensions=q,domain_sizes=sizes,rank_relaxation=rank) + if not rank.get('infeasible') and Q(rank['upper'])>0: + ranks = rank['selected_ranks'] + existing = {i:sorted(chart(s) for s in frame_spaces if lower[i]<=s<=upper[i]) for i in block} + at_rank = {i:[s for s in existing[i] if s[1]==ranks[i]] for i in block} + for key, selected in [('existing_charts_at_best_ranks',at_rank),('all_existing_charts',existing)]: + work=volume(selected,neighbors,1200000) + if work is not None: + packet[key]=solve_equalities(block,states,lower,upper,paid,target,eq,weights,False,selected) + exact_volume = volume({i:range(n) for i,n in sizes.items()},neighbors,2400000) + packet['exact_table_volume']=exact_volume + if max(q.values())<=7 and exact_volume is not None: + whole={i:quotient_domain(lower[i],upper[i]) for i in block} + packet['full_chart_search']=solve_equalities(block,states,lower,upper,paid,target,eq,weights,False,whole) + diagnostic=rank_conflict(block,states,whole,ranks,paid,target,eq) + if 'failed_edge' in diagnostic: + affected=set(diagnostic['failed_edge']) + diagnostic['contact_visits']={i:[raw[j] for j in range(len(raw)) if belong(j)==i] + for i in sorted(affected)} + diagnostic['touching_move_events']=[k for k,a,b in raw_paid + if {belong(a),belong(b)}<=affected] + packet['best_rank_geometric_diagnostic']=diagnostic + results.append(packet) + return dict(status='refined',iterations=iterations,results=results,source_pair=row) + + +def main(word_path,pair_path,graph_path,price_path): + raw=gzip.decompress(word_path.read_bytes()) + source=json.loads(pair_path.read_bytes()) + assert sha256(raw).hexdigest()==WORD_SHA==source['word'] + assert len(source['hits'])==1 + out=refine(json.loads(raw),source['hits'][0],load('chart_graph',graph_path),load('directed_price',price_path)) + print(json.dumps(dict(word=WORD_SHA,**out),indent=2)) + + +if __name__=='__main__': + main(*(Path(p) for p in sys.argv[1:])) diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-coupled-boundaries-20261110T0908Z/evidence/eliminate.py b/research/p104-two-blocker-exclusion/vendor/kappa-coupled-boundaries-20261110T0908Z/evidence/eliminate.py new file mode 100644 index 0000000000..da6d2d84a2 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-coupled-boundaries-20261110T0908Z/evidence/eliminate.py @@ -0,0 +1,229 @@ +"""Exact finite-domain optimization for the remaining coupled chart components.""" + +from collections import Counter +from fractions import Fraction as Q +from functools import lru_cache +from hashlib import sha256 +from itertools import product +from math import prod +from pathlib import Path +import gzip +import json +import sys + +PREVIOUS = Path(__file__).resolve().parents[2] / 'kappa-helper-boundary-20261110T0853Z' / 'evidence' +sys.path.append(str(PREVIOUS)) +from screen import basis, load +from geometry import geometry, subspace_count + +WORD = 'cfdfa3a83cb3714576517b66b56a174c0b83841aee90a828cdb0ae1dfe882970' +BRACKET = ('0.00363381505866791008145080644149513', + '0.00363381505866791008145080644149514') +GRID = 10**45 + + +def bits(mask): + while mask: + bit = mask & -mask + yield bit.bit_length() - 1 + mask ^= bit + + +def chart(space): + return sum(1 << v for v in space), len(space).bit_length() - 1 + + +@lru_cache(None) +def domain(lo, hi): + found = {lo} + todo = [lo] + for s in todo: + for v in sorted(hi - s): + t = s | {v ^ x for x in s} + if t not in found: + found.add(t) + todo.append(t) + d = len(hi).bit_length() - len(lo).bit_length() + assert len(todo) == sum(subspace_count(d, k) for k in range(d+1)) + return sorted(map(chart, todo)) + + +def top_two(values): + first = second = None + for value in values: + if value is None or value == first or value == second: + continue + if first is None or value > first: + first, second = value, first + elif second is None or value > second: + second = value + return first, second + + +def elimination(factors, sizes): + """Maximize additive factors, retaining the top two distinct totals.""" + pending = set(sizes) + history = [] + work = peak = 0 + while pending: + scopes = {i: set().union(*(set(s) for s, _ in factors if i in s)) for i in pending} + vertex = min(pending, key=lambda i: (prod(sizes[j] for j in scopes[i]), i)) + scope = sorted(scopes[vertex]) + assert vertex in scope + context = tuple(j for j in scope if j != vertex) + grouped = [(s, t) for s, t in factors if vertex in s] + factors = [(s, t) for s, t in factors if vertex not in s] + positions = [tuple((context + (vertex,)).index(j) for j in s) for s, _ in grouped] + result, witness = {}, {} + volume = prod(sizes[j] for j in scope) + work += volume + peak = max(peak, volume) + for co in product(*(range(sizes[i]) for i in context)): + best = second = None + for v in range(sizes[vertex]): + state = (*co, v) + values = [t.get(tuple(state[k] for k in idx)) for (_, t), idx in zip(grouped, positions)] + if any(value is None for value in values): + continue + total = sum(value[0] for value in values) + alternatives = [value[1] - value[0] for value in values if value[1] is not None] + other = total + max(alternatives) if alternatives else None + if best is None or total > best: + witness[co] = v + best, second = top_two((best, second, total, other)) + if best is not None: + result[co] = (best, second) + assert result + factors.append((context, result)) + history.append((vertex, context, witness)) + pending.remove(vertex) + finals = [table[()] for scope, table in factors if not scope] + assert len(finals) == len(factors) + best = sum(first for first, _ in finals) + gaps = [second - first for first, second in finals if second is not None] + runner_up = best + max(gaps) if gaps else None + assignment = {} + for vertex, context, witness in reversed(history): + assignment[vertex] = witness[tuple(assignment[i] for i in context)] + return best, runner_up, assignment, {'max_table_volume': peak, 'searched_cells': work} + + +def solve(block, base, lo, hi, paid, target, intervals, graph, compare_winner=False): + vertices = set(block) + edges = sorted({(a, b) for a, b in paid.keys() | target.keys() if a in vertices or b in vertices}) + signed = {e: target[e]-paid[e] for e in edges} + mass = sum(abs(c) for c in signed.values()) + if not mass: + return dict(vertices=block, proof='pointwise target and paid cancellation', signed_edges=0) + + # Scores order midpoint sums first, and then uniquely encode distinct + # signed rank profiles within each midpoint tie. + radix = 2*mass+1 + stride = radix**9 + mid = {r: int(GRID * (a+b)/2) for r, (a, b) in intervals.items()} + score = {r: v*stride + radix**(r-1) for r, v in mid.items()} + score[0] = 0 + uncertainty = max(max(abs(Q(mid[r], GRID)-a), abs(Q(mid[r], GRID)-b)) + for r, (a, b) in intervals.items()) + domains = {i: domain(lo[i], hi[i]) for i in vertices} + all_states = {i: (base[i],) for a, b in edges for i in (a, b) if i not in vertices} + all_states.update(domains) + factors = [] + for a, b in edges: + scope = tuple(sorted({a, b} & vertices)) + table = {} + old_rank = base[b][1] - base[a][1] + for j, (am, ad) in enumerate(all_states[a]): + for k, (bm, bd) in enumerate(all_states[b]): + if am & ~bm or (target[a, b] and am == bm): + continue + key = tuple(j if i == a else k for i in scope) + table[key] = (signed[a, b]*(score[bd-ad]-score[old_rank]), None) + assert table + factors.append((scope, table)) + best, second, assignment, stats = elimination(factors, {i: len(d) for i, d in domains.items()}) + assert best >= 0 + new = base.copy() + for i, j in assignment.items(): + new[i] = domains[i][j] + gain_profile = Counter() + for a, b in edges: + assert not new[a][0] & ~new[b][0] and (not target[a, b] or new[a] != new[b]) + old_rank = base[b][1]-base[a][1] + new_rank = new[b][1]-new[a][1] + gain_profile[old_rank] -= signed[a, b] + if new_rank: + gain_profile[new_rank] += signed[a, b] + gain_profile = {r: c for r, c in sorted(gain_profile.items()) if c} + assert best == sum(score[r]*c for r, c in gain_profile.items()) + assert sum(r*c for r, c in gain_profile.items()) == 0 + record = dict(vertices=block, signed_edges=sum(bool(c) for c in signed.values()), stats=stats, + best_encoded_score=str(best), best_gain_profile=gain_profile) + if best == 0: + assert not gain_profile + if second is None: + record['proof'] = 'all feasible signed profiles identical' + else: + center = Q((second + stride//2)//stride, GRID) + bound = center + 2*mass*uncertainty + record['nonzero_profile_upper'] = str(bound) + if bound < 0: + record['proof'] = 'every other signed profile strictly loses' + else: + record['proof'] = 'interval inconclusive' + else: + lo_gain, hi_gain = graph.margin({r: -c for r, c in gain_profile.items()}, intervals) + record.update(proof='strict positive candidate' if lo_gain > 0 else 'interval inconclusive', + best_gain=[str(lo_gain), str(hi_gain)], + changed_bases={i: basis(frozenset(bits(new[i][0]))) for i in sorted(vertices) + if new[i] != base[i]}) + if compare_winner and second is not None: + center_gap = Q((second + stride//2)//stride - (best + stride//2)//stride, GRID) + record['other_profile_minus_winner_upper'] = str(center_gap + 2*mass*uncertainty) + return record + + +def main(word_path, graph_path, price_path, verified_path=None): + raw = gzip.decompress(word_path.read_bytes()) + assert sha256(raw).hexdigest() == WORD + graph = load('chart_graph', graph_path) + price = load('directed_price', price_path) + space, lo, hi, moves, helpers, islands = geometry(json.loads(raw), graph) + paid = Counter((a,b) for _, a, b in moves) + target = Counter((a,b) for _, a, b in helpers) + base = {i: chart(s) for i, s in enumerate(space) if s is not None} + checked = None if verified_path is None else json.loads(verified_path.read_bytes()) + if checked: + assert checked['base_canonical_sha256'] == WORD + assert checked['candidate_canonical_sha256'] == 'cca66a7ec924bab47ccd1410968d16e071a01dc6110b5c08040bd207f753d066' + bracket = checked['independent_price']['crossing_intervals']['candidate'] + else: + bracket = BRACKET + left, right = map(Q, bracket) + intervals = {r: (price.raw_margin({r:1}, right)[0], price.raw_margin({r:1}, left)[1]) + for r in range(1, 10)} + assert graph.margin({1: 1, 2: -2, 3: 1}, intervals)[0] > 0 + assert top_two((4, 2, 3, 4)) == (4, 3) + records = [solve(block, base, lo, hi, paid, target, intervals, graph, bool(checked)) + for choices, block in sorted(islands) if checked or choices > 50000] + assert len(records) == (99 if checked else 14) + result = dict(word=WORD, crossing=bracket, formerly_open=14, + outcomes=Counter(r['proof'] for r in records), results=records) + if checked: + winners = [r for r in records if r['proof'] == 'strict positive candidate'] + assert len(winners) == 1 + assert not any(r['proof'] == 'interval inconclusive' for r in records) + literal_gain = Counter({int(r): n for r, n in checked['local_target_delta'].items()}) + literal_gain.subtract({int(r): n for r, n in checked['local_paid_delta'].items()}) + assert winners[0]['best_gain_profile'] == {r:n for r,n in literal_gain.items() if n} + assert winners[0]['changed_bases'] == {107: []} + assert Q(winners[0]['other_profile_minus_winner_upper']) < 0 + result['winner_word'] = checked['candidate_canonical_sha256'] + result['fixed_scalar_chart_margin_optimized'] = True + print(json.dumps(result, indent=2)) + + +if __name__ == '__main__': + if not __debug__: + raise RuntimeError('Assertions are proof checks') + main(*(Path(p) for p in sys.argv[1:])) diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-coupled-boundaries-20261110T0908Z/evidence/geometry.py b/research/p104-two-blocker-exclusion/vendor/kappa-coupled-boundaries-20261110T0908Z/evidence/geometry.py new file mode 100644 index 0000000000..370ad26825 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-coupled-boundaries-20261110T0908Z/evidence/geometry.py @@ -0,0 +1,75 @@ +"""Chart intervals and independent invoice components, derived from the 0853 screen.""" + +from functools import lru_cache +from math import prod + +from screen import basis, boundaries + + +@lru_cache(None) +def subspace_count(dimension, rank): + if rank == 0 or rank == dimension: + return 1 + return subspace_count(dimension - 1, rank) + (2**(dimension-rank) + * subspace_count(dimension - 1, rank - 1)) + + +def geometry(word, graph): + groups, frames, _, moves, _ = graph.graph(word) + frozen, helpers = boundaries(word, groups) + space = [graph.span(word['frames'][f]) if f is not None else None for f in frames] + dims = [len(s).bit_length() - 1 if s is not None else -1 for s in space] + order = sorted(range(len(groups)), key=dims.__getitem__) + parents = [set() for _ in groups] + children = [set() for _ in groups] + for _, a, b in moves: + assert space[a] < space[b] + parents[b].add(a) + children[a].add(b) + + @lru_cache(None) + def join(a, b): + if a <= b: + return b + if b <= a: + return a + result = set(a) + for v in basis(b): + if v not in result: + result |= {v ^ x for x in result} + return frozenset(result) + + low = [frozenset((0,)) for _ in groups] + high = [frozenset(range(512)) for _ in groups] + for i in order: + if i in frozen and space[i] is not None: + low[i] = space[i] + for a in parents[i]: + low[i] = join(low[i], low[a]) + for i in reversed(order): + if i in frozen and space[i] is not None: + high[i] = space[i] + for b in children[i]: + high[i] = high[i] & high[b] + assert all(low[i] <= s <= high[i] for i, s in enumerate(space) if s is not None) + variable = {i for i, s in enumerate(space) if s is not None and low[i] != high[i]} + neighbor = [a | b for a, b in zip(parents, children)] + for _, a, b in helpers: + assert space[a] < space[b] + neighbor[a].add(b) + neighbor[b].add(a) + islands = [] + while variable: + pivot = min(variable) + variable.remove(pivot) + pending, block = [pivot], [] + while pending: + i = pending.pop() + block.append(i) + for j in sorted(neighbor[i] & variable): + variable.remove(j) + pending.append(j) + quotients = tuple(sorted(len(high[i]).bit_length()-len(low[i]).bit_length() for i in block)) + choices = prod(sum(subspace_count(q, r) for r in range(q+1)) for q in quotients) + islands.append((choices, block)) + return space, low, high, moves, helpers, islands diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-coupled-boundaries-20261110T0908Z/replay/research/shared-wire-stop-fusion/audit_price.py b/research/p104-two-blocker-exclusion/vendor/kappa-coupled-boundaries-20261110T0908Z/replay/research/shared-wire-stop-fusion/audit_price.py new file mode 100644 index 0000000000..f05fb5522d --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-coupled-boundaries-20261110T0908Z/replay/research/shared-wire-stop-fusion/audit_price.py @@ -0,0 +1,119 @@ +"""Independent directed rational price enclosure of the audited STOP invoice. + +Prepared for ToikY with substantial OpenAI Codex assistance. Apache-2.0. +""" +from collections import Counter +from decimal import Decimal, localcontext +from fractions import Fraction as Q +from functools import lru_cache +from hashlib import sha256 +import json +from pathlib import Path + +HERE = Path(__file__).resolve().parent +PKG = HERE.parent / "shared-wire-split-composition" +GRID = 10**65 +if not __debug__: + raise RuntimeError("Run without -O; assertions are proof checks.") + + +def down(x): + return Q((x * GRID).__floor__(), GRID) + + +def up(x): + return Q((x * GRID).__ceil__(), GRID) + + +def log_series(x): + z = (x-1)/(x+1) + series = sum(2*z**(2*i+1)/(2*i+1) for i in range(80)) + tail = 2*z**161/(161*(1-z*z)) + return series, series + tail + + +@lru_cache(None) +def log(r): + a = r.bit_length() - 1 + l1,h1 = log_series(Q(r, 2**a)) + l2,h2 = log_series(Q(2)) + return down(l1 + a*l2), up(h1 + a*h2) + + +def exp_pos(x): + assert 0 <= x < 1 + term = total = Q(1) + for i in range(1, 48): + term *= x/i + total += term + # Terms after index 48 have ratio < 1/2. + return total, total + 2*term*x/48 + + +def raw_margin(hist, kappa): + lower = upper = Q(0) + for r,c in sorted(hist.items()): + lo,hi = log(r) + x = down(Q(kappa)*lo) + y = up(Q(kappa)*hi) + a,b = down(r/exp_pos(y)[1]), up(r/exp_pos(x)[0]) + lower += c*(a if c >= 0 else b) + upper += c*(b if c >= 0 else a) + return lower, upper + + +def crossing(hist): + with localcontext() as ctx: + ctx.prec = 66 + logs = {r: Decimal(r).ln() for r in hist} + lo,hi = Decimal(0), Decimal(".00376669") + for _ in range(145): + mid = (lo + hi)/2 + m = sum(c*r*(-mid*logs[r]).exp() for r,c in hist.items()) + if m > 0: + lo = mid + else: + hi = mid + diagnostic = (lo+hi)/2 + unit = 10**35 + floored = (Q(diagnostic)*unit).__floor__() + lo,hi = Q(floored,unit), Q(floored+1,unit) + lower_margin = raw_margin(hist, lo) + upper_margin = raw_margin(hist, hi) + assert lower_margin[0] > 0 and upper_margin[1] < 0 + return str(diagnostic), (lo,hi), (lower_margin,upper_margin) + + +def main(): + full = PKG / "FULL-RESULT.json" + raw = full.read_bytes() + assert sha256(raw).hexdigest() == FULL_SHA + source = json.loads(raw) + audit = json.loads((HERE/"RESULT.json").read_text()) + assert source["word_canonical_json_sha256"] == "91429a6b96729292a8764836e00c87a6f7cd3b76f05159033f4867f69a98d097" + assert audit["candidate_canonical_sha256"] == "d0de7804e56b2c8fe6db9d323560e53041810fd0377b91680cbed19b5176ebc0" + assert audit["invoice"]["T"] == source["invoice"]["T"] + hist = Counter({int(r): n for r,n in source["invoice"]["T"].items()}) + hist.subtract({int(r): n for r,n in source["invoice"]["P"].items()}) + new = Counter({int(r): n for r,n in audit["invoice"]["T"].items()}) + new.subtract({int(r): n for r,n in audit["invoice"]["P"].items()}) + assert {r: new[r]-hist[r] for r in new.keys() | hist.keys() if new[r] != hist[r]} == {1:126,2:-36,4:54,5:-54} + old_d, old_interval, old_m = crossing(hist) + new_d, new_interval, new_m = crossing(new) + assert old_interval[1] < Q(audit["gate"]["claim"]) < new_interval[0] + assert sum(r*n for r,n in hist.items()) == sum(r*n for r,n in new.items()) == 1520 + out = { + "status": "PASS_INDEPENDENT_STOP_PRICE", "source_full_result_sha256": FULL_SHA, + "baseline_diagnostic": old_d, "candidate_diagnostic": new_d, + "baseline_bracket": list(map(str,old_interval)), "candidate_bracket": list(map(str,new_interval)), + "baseline_bracket_margins": [list(map(str,row)) for row in old_m], + "candidate_bracket_margins": [list(map(str,row)) for row in new_m], + "strict_improvement_in_raw_crossing": str(new_interval[0] - old_interval[1]), + "complete_signed_rank_mass_surplus": 1520, + } + print(json.dumps(out, indent=2, sort_keys=True)) + + +if __name__ == "__main__": + FULL_SHA = "d9ba709fa5dcefffe3f3abdcf34600ce188224703cfd743e6db8b58ba4816cb7" + main() diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-helper-boundary-20261110T0853Z/evidence/screen.py b/research/p104-two-blocker-exclusion/vendor/kappa-helper-boundary-20261110T0853Z/evidence/screen.py new file mode 100644 index 0000000000..6dc85aba35 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-helper-boundary-20261110T0853Z/evidence/screen.py @@ -0,0 +1,199 @@ +"""One-dimensional closure search with variable productive helper endpoints.""" + +from collections import Counter, defaultdict +from fractions import Fraction as Q +from hashlib import sha256 +from importlib.util import module_from_spec, spec_from_file_location +from pathlib import Path +import gzip +import json +import sys + +WORD_SHA = 'e2db4293ac41720af326d3acddabb580c1781c781b18d50dc81cfc8739f0cc38' +BRACKET = ('0.00363214407269170173702203666413962', + '0.00363214407269170173702203666413963') + + +def load(name, path): + spec = spec_from_file_location(name, path) + module = module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +def boundaries(word, groups): + main = set(word['live']) | {i + 112 for i in word['live']} + main |= set(word['hosted']['X2']) | set(word['hosted']['Y2']) + visits = defaultdict(list) + for a, group in enumerate(groups): + for r, event, _ in group: + visits[r].append((event, a)) + helper_pairs = [] + frozen = set() + for r, history in sorted(visits.items()): + first, last = min(history)[1], max(history)[1] + if r >= word['public']: + frozen.update(a for _, a in history) + elif r in main: + frozen.update((first, last)) + else: + helper_pairs.append((r, first, last)) + return frozen, helper_pairs + + +def edit_span(space, mode, vector): + if mode == 'up': + return space | {v ^ vector for v in space} + return frozenset(v for v in space if not (v & vector).bit_count() % 2) + + +def basis(space): + generated = {0} + result = [] + for v in sorted(space): + if v not in generated: + result.append(v) + generated |= {w ^ v for w in generated} + assert generated == space + return result + + +def screen(word, graph, price): + groups, frames, old_frozen, moves, scalars = graph.graph(word) + fixed, helpers = boundaries(word, groups) + assert fixed < old_frozen + assert len(helpers) == word['public'] - 208 - 192 + spaces = [graph.span(word['frames'][f]) if f is not None else None for f in frames] + dims = [len(word['frames'][f]) if f is not None else -1 for f in frames] + masks = [sum(1 << v for v in s) if s is not None else 0 for s in spaces] + order = sorted(range(len(groups)), key=dims.__getitem__) + frozen_mask = sum(1 << i for i in fixed) + old_frozen_mask = sum(1 << i for i in old_frozen) + parents = [set() for _ in groups] + children = [set() for _ in groups] + paid_at = [[] for _ in groups] + helper_at = [[] for _ in groups] + for j, (_, a, b) in enumerate(moves): + assert spaces[a] < spaces[b] + parents[b].add(a) + children[a].add(b) + paid_at[a].append(j) + paid_at[b].append(j) + for j, (_, a, b) in enumerate(helpers): + assert spaces[a] < spaces[b] + helper_at[a].append(j) + helper_at[b].append(j) + assert old_frozen - fixed <= {a for _, u, v in helpers for a in (u, v)} + + lower, upper = map(Q, BRACKET) + power = {r: (price.raw_margin({r: 1}, upper)[0], price.raw_margin({r: 1}, lower)[1]) + for r in range(1, 10)} + assert graph.margin({1: 1, 2: -2, 3: 1}, power)[0] > 0 + assert graph.margin({1: -1, 2: 2, 3: -1}, power)[1] < 0 + stats = {} + hits = [] + prices = {} + for mode in ('up', 'down'): + counts = Counter() + seen = set() + up = mode == 'up' + inward = children if up else parents + visits = order[::-1] if up else order + step = 1 if up else -1 + for v in range(1, 512): + bad = 1 << v if up else sum(1 << x for x in range(512) if (x & v).bit_count() % 2) + active = [bool(mask & bad) != up and dim >= 0 for mask, dim in zip(masks, dims)] + closures = [0] * len(groups) + for a in visits: + if not active[a]: + continue + closure = 1 << a + for b in inward[a]: + closure |= closures[b] + closures[a] = closure + if not closure & old_frozen_mask: + continue + if closure & frozen_mask: + counts['blocked'] += 1 + continue + if closure in seen: + continue + seen.add(closure) + counts['distinct_eligible_closures'] += 1 + changed = list(graph.bits(closure)) + paid_delta = Counter() + target_delta = Counter() + helper_changes = [] + zero_moves = [] + for j in sorted({j for i in changed for j in helper_at[i]}): + r, u, w = helpers[j] + old = dims[w] - dims[u] + new = old + step * (bool(closure & (1 << w)) - bool(closure & (1 << u))) + if new != old: + helper_changes.append((r, u, w, old, new)) + target_delta[old] -= 1 + target_delta[new] += 1 + if target_delta[0]: + counts['zero_target_rejected'] += 1 + continue + for j in sorted({j for i in changed for j in paid_at[i]}): + event, u, w = moves[j] + old = dims[w] - dims[u] + new = old + step * (bool(closure & (1 << w)) - bool(closure & (1 << u))) + assert new >= 0 + if new != old: + paid_delta[old] -= 1 + if new: + paid_delta[new] += 1 + else: + zero_moves.append(event) + delta = paid_delta.copy() + delta.subtract(target_delta) + assert sum(r*n for r, n in delta.items()) == 0 + signature = tuple((r, n) for r, n in sorted(delta.items()) if n) + if not signature: + counts['exact_ties'] += 1 + continue + if signature not in prices: + prices[signature] = graph.margin(dict(signature), power) + lo, hi = prices[signature] + if hi < 0: + counts['directed_losses'] += 1 + continue + counts['positive_or_unresolved'] += 1 + replacements = {i: edit_span(spaces[i], mode, v) for i in changed} + for _, u, w in moves: + if u in replacements or w in replacements: + assert replacements.get(u, spaces[u]) <= replacements.get(w, spaces[w]) + for _, u, w in helpers: + if u in replacements or w in replacements: + assert replacements.get(u, spaces[u]) < replacements.get(w, spaces[w]) + hits.append({ + 'mode': mode, 'vector': v, 'seed_component': a, + 'changed_bases': {i: basis(s) for i, s in replacements.items()}, + 'visit_count': sum(len(groups[i]) for i in changed), + 'target_delta': {r: n for r, n in sorted(target_delta.items()) if n}, + 'paid_delta': {r: n for r, n in sorted(paid_delta.items()) if n}, + 'zero_moves': zero_moves, + 'helper_rank_changes': helper_changes, + 'gain_bounds': [str(lo), str(hi)], + }) + stats[mode] = dict(counts) + hits.sort(key=lambda h: (Q(h['gain_bounds'][0]), -h['visit_count']), reverse=True) + return dict(scope='single direction single-seed nested chart closure; main boundary and all owned visits fixed; productive helper endpoints relaxed', + original_frozen=len(old_frozen), retained_frozen=len(fixed), helpers=len(helpers), + stats=stats, count=len(hits), best=hits[:20]) + + +def main(word_path, graph_path, price_path): + raw = gzip.decompress(word_path.read_bytes()) + assert sha256(raw).hexdigest() == WORD_SHA + word = json.loads(raw) + result = screen(word, load('chart_graph', graph_path), load('directed_price', price_path)) + print(json.dumps(dict(word=WORD_SHA, crossing_bracket=BRACKET, **result), indent=2)) + + +if __name__ == '__main__': + if not __debug__: + raise RuntimeError('Assertions are proof checks') + main(*(Path(p) for p in sys.argv[1:])) diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-interior-20261110T0823Z/evidence/closure.py b/research/p104-two-blocker-exclusion/vendor/kappa-interior-20261110T0823Z/evidence/closure.py new file mode 100644 index 0000000000..2c3578ce1c --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-interior-20261110T0823Z/evidence/closure.py @@ -0,0 +1,162 @@ +#!/usr/bin/env python3 +"""One-vector upward and one-hyperplane downward closures on the chart graph.""" +from collections import Counter, defaultdict +from fractions import Fraction as Q +from importlib.util import module_from_spec, spec_from_file_location +from hashlib import sha256 +from pathlib import Path +import gzip +import json +import sys + + +def span(basis): + out={0} + for v in basis: + assert v not in out + out|={v^x for x in out} + return frozenset(out) + + +def bits(x): + while x: + b=x&-x + yield b.bit_length()-1 + x^=b + + +def graph(w): + n=w['public'] + charts=w['initial']+[None]*w['owned_fields'] + parent=list(range(len(charts))) + nodes=list(range(len(charts))) + meta=[(i,-1,f) for i,f in enumerate(charts)] + moves=[] + scalars=[] + frozen=set(range(len(charts))) + def find(x): + while parent[x]!=x: + parent[x]=parent[parent[x]]; x=parent[x] + return x + def union(a,b): + a,b=find(a),find(b) + if a!=b: parent[a]=b + for i,e in enumerate(w['program']): + op,r=e[:2] + if op in ('MOVE','INIT','CLEAR'): + f=e[3] if op=='MOVE' else (e[2] if op=='INIT' else None) + j=len(meta) + meta.append((r,i,f)); parent.append(j) + if op=='MOVE' and r=n: frozen.add(j) + nodes[r]=j; charts[r]=f + else: + rr=e[1:3] if op in ('ADD','COPY') else e[1:2] + for v in rr: + assert charts[v]==e[-1] + union(nodes[r],nodes[v]) + scalars.append((i,nodes[r])) + frozen.update(nodes) + comps=defaultdict(list); representatives={} + for i,entry in enumerate(meta): comps[find(i)].append(entry) + groups=list(comps.values()) + for i,x in enumerate(comps): representatives[x]=i + frames=[g[0][2] for g in groups] + assert all(all(f==frames[i] for _,_,f in g) for i,g in enumerate(groups)) + resolve=lambda x:representatives[find(x)] + return groups,frames,{resolve(i) for i in frozen},[(i,resolve(a),resolve(b)) for i,a,b in moves],[(i,resolve(a)) for i,a in scalars] + + +def screen(w, power_bounds): + groups,frames,frozen,moves,scalars=graph(w) + dims=[-1 if f is None else len(w['frames'][f]) for f in frames] + fmask=[0 if f is None else sum(1<=0 for m,d in zip(fmask,dims)] + closures=[0]*len(groups) + for a in visit: + if not active[a]: continue + r=1<=0 + delta[old]-=1 + if new:delta[new]+=1 + delta={k:n for k,n in sorted(delta.items()) if n} + assert sum(k*n for k,n in delta.items())==0 + if not delta: + counts['exact_invoice_tie']+=1 + continue + lo,hi=margin(delta,power_bounds) + if hi<0: + counts['directed_price_losing']+=1 + best_losing_upper=hi if best_losing_upper is None else max(best_losing_upper,hi) + else: + hits.append({'mode':mode,'vector':v,'start':a,'changed':change, + 'gain_bounds':list(map(str,(lo,hi))),'local_delta':delta}) + counts['not_ruled_out']+=1 + stats[mode]=dict(counts) + hits.sort(key=lambda z:Q(z['gain_bounds'][1]),reverse=True) + for hit in hits[:20]: + hit['visits']={i:groups[i] for i in hit['changed']} + hit['scalars']=[(i,a) for i,a in scalars if a in set(hit['changed'])] + return {'components':len(groups),'frozen_components':len(frozen),'public_moves':len(moves),'stats':stats,'n_hits':len(hits),'top':hits[:20], + 'best_losing_upper':str(best_losing_upper)} + + +def margin(delta, bounds): + low=high=Q(0) + for r,paid in delta.items(): + c=-paid + a,b=bounds[r] + low+=c*(a if c>=0 else b) + high+=c*(b if c>=0 else a) + return low,high + + +if __name__=='__main__': + p=Path(sys.argv[1]); raw=gzip.decompress(p.read_bytes()); w=json.loads(raw) + digest=sha256(raw).hexdigest() + assert digest=='e2db4293ac41720af326d3acddabb580c1781c781b18d50dc81cfc8739f0cc38' + lower,upper=map(Q,sys.argv[2:4]); assert 00 + assert margin({r:-n for r,n in control.items()},bounds)[1]<0 + out=screen(w,bounds) + print(json.dumps({'source':digest,'screen_bracket':sys.argv[2:4], + 'directed_price_controls':2,**out},indent=2)) diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-nonbridge-pairs-20261110T0937Z/evidence/nonbridge_screen.py b/research/p104-two-blocker-exclusion/vendor/kappa-nonbridge-pairs-20261110T0937Z/evidence/nonbridge_screen.py new file mode 100644 index 0000000000..e8171acda0 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-nonbridge-pairs-20261110T0937Z/evidence/nonbridge_screen.py @@ -0,0 +1,214 @@ +"""Exact or directed-upper pricing for initially noncoframed cut-pair retimings.""" + +from bisect import bisect_left, bisect_right +from collections import Counter, defaultdict +from fractions import Fraction as Q +from hashlib import sha256 +from itertools import product +from pathlib import Path +import gzip +import json +import sys +import time + +PREVIOUS = Path(__file__).resolve().parents[2] / 'kappa-contact-release-20261110T0922Z' / 'evidence' +sys.path.insert(0,str(PREVIOUS)) +from release import BRACKET, WORD_SHA, bounds, changed_blocks, chart, join, load, subspace_count +from constrained import solve_equalities +from resolve_pair import quotient_domain, volume + + +def options(event_index, event, model, ignored=None): + _, dest, source, *_ = event + lo, hi = 0, model['events'] + for group in (model['writes'].get(str(source),[]), model['reads'].get(str(dest),[])): + if ignored is not None: + group=[i for i in group if i!=ignored] + at = bisect_left(group,event_index) + assert at==len(group) or group[at]!=event_index + if at: + lo=max(lo,group[at-1]+1) + if at0 + old_lo,old_hi,_=bounds(original,p0,{component[u] for u in fixed}) + old_state=original_chart | {len(original):None} + left,right=map(Q,BRACKET) + weights={r:(engine.raw_margin({r:1},right)[0],engine.raw_margin({r:1},left)[1]) for r in range(1,10)} + deadline=time.monotonic()+cap + counts=Counter() + hits,pending=[],[] + for split in splits['relaxed']: + e,f=split['adds'] + if time.monotonic()>=deadline: + pending.append([e,f]) + continue + before_e=tuple(model['edges'][str(e)]) + before_f=tuple(model['edges'][str(f)]) + assert eh2: + local_counts['relative order incompatible']+=1 + continue + if not broad and visits[v1[0]][2]==visits[v1[1]][2] and visits[v2[0]][2]==visits[v2[1]][2]: + local_counts['both coframed on baseline']+=1 + continue + equalities=tuple(tuple(sorted(map(belong,v))) for v in (v1,v2)) + key=tuple(sorted(set(equalities))) + if key in cache: + local_counts[cache[key]]+=1 + continue + narrowed=propagate(low,high,key,paid_order) + if narrowed is None: + status='weak chart feasibility fails' + else: + lo,hi=narrowed + neighbors=[x.copy() for x in adj] + touched=set(changed) + for u,v in key: + touched.update((u,v)) + if u!=v: + neighbors[u].add(v) + neighbors[v].add(u) + blocks=changed_blocks(space,low,high,neighbors,target,touched) + rank_results=[solve_equalities(block,old_state,lo,hi,paid,target,key,weights,True) + for block in blocks] + if any(x.get('infeasible') for x in rank_results): + status='rank feasibility fails' + elif sum(Q(x['upper']) for x in rank_results)<=0: + status='rank upper nonpositive' + else: + answers=[] + for block in blocks: + qs={i:len(hi[i]).bit_length()-len(lo[i]).bit_length() for i in block} + sizes={i:sum(subspace_count(d,r) for r in range(d+1)) for i,d in qs.items()} + if max(qs.values())>7 or volume({i:range(v) for i,v in sizes.items()},neighbors,750000) is None: + answers.append(dict(deferred=True,vertices=block,quotient_dimensions=qs)) + continue + domains={i:quotient_domain(lo[i],hi[i]) for i in block} + answers.append(solve_equalities(block,old_state,lo,hi,paid,target,key,weights,False,domains)) + if any(x.get('infeasible') for x in answers): + status='exact chart feasibility fails' + elif any(x.get('deferred') for x in answers): + status='deferred geometry' + else: + lower=sum(Q(x['lower']) for x in answers) + upper=sum(Q(x['upper']) for x in answers) + status=('strict chart nominee' if lower>0 else 'exact upper nonpositive' if upper<=0 + else 'interval unresolved') + if status in ('strict chart nominee','deferred geometry','interval unresolved'): + packet=dict(adds=[e,f],cuts=[cut1,cut2],raw_new_contacts=[v1,v2], + constraints=key,split_root=root,split_component=new_id, + split_visits=[visits[i] for i in sorted(part)], + status=status,rank_relaxation=rank_results,exact=answers) + hits.append(packet) + journal.write(json.dumps(dict(hit=packet),separators=(',',':'))+'\n') + journal.flush() + cache[key]=status + local_counts[status]+=1 + counts.update(local_counts) + counts['pairs_checked']+=1 + journal.write(json.dumps(dict(adds=[e,f],counts=local_counts),separators=(',',':'))+'\n') + journal.flush() + if counts['pairs_checked']%100==0: + print(f"checked {counts['pairs_checked']} pairs; latest {e},{f}",file=sys.stderr,flush=True) + result=dict(word=WORD_SHA,bracket=BRACKET,counts=counts,hits=hits,pending=pending) + if broad: + result['scope']='partner removed from both crossing-barrier lists, relative order retained' + return result + + +def main(word_path,model_path,splits_path,graph_path,price_path,journal_path,cap,mode=None): + raw=gzip.decompress(Path(word_path).read_bytes()) + model=json.loads(Path(model_path).read_bytes()) + splits=json.loads(Path(splits_path).read_bytes()) + assert sha256(raw).hexdigest()==WORD_SHA==model['source']==splits['source'] + assert len(splits['relaxed'])==1371 + with Path(journal_path).open('x') as out: + result=screen(json.loads(raw),model,splits,load('chart_graph',Path(graph_path)), + load('directed_price',Path(price_path)),out,int(cap),mode=='--partner-free') + print(json.dumps(result,indent=2)) + + +if __name__=='__main__': + if not __debug__: + raise RuntimeError('Assertions are proof checks') + main(*sys.argv[1:]) diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/overlap/OVERLAP.json b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/overlap/OVERLAP.json new file mode 100644 index 0000000000..e9f7354940 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/overlap/OVERLAP.json @@ -0,0 +1,513 @@ +{ + "counts": { + "overlapping plans": 7, + "placements": 8 + }, + "plans": [ + { + "add": 27856, + "blockers": [ + 27853, + 27794 + ], + "cut": 26445, + "interval": 1412, + "ops": [ + [ + "ADD", + 242, + 243, + "-1" + ], + [ + "ADD", + 242, + 71, + "1" + ], + [ + "ADD", + 243, + 242, + "1" + ], + [ + "ADD", + 242, + 71, + "-1" + ], + [ + "ADD", + 242, + 243, + "1" + ] + ], + "pairs": [ + [ + 148, + 149 + ], + [ + 148, + 1310 + ], + [ + 149, + 148 + ], + [ + 148, + 1310 + ], + [ + 148, + 149 + ] + ] + }, + { + "add": 30595, + "blockers": [ + 30592, + 30577 + ], + "cut": 30571, + "interval": 25, + "ops": [ + [ + "ADD", + 274, + 275, + "-1" + ], + [ + "ADD", + 274, + 100, + "1" + ], + [ + "ADD", + 275, + 274, + "1" + ], + [ + "ADD", + 274, + 100, + "-1" + ], + [ + "ADD", + 274, + 275, + "1" + ] + ], + "pairs": [ + [ + 180, + 181 + ], + [ + 180, + 1399 + ], + [ + 181, + 180 + ], + [ + 180, + 1399 + ], + [ + 180, + 181 + ] + ] + }, + { + "add": 35190, + "blockers": [ + 35171, + 35166 + ], + "cut": 33348, + "interval": 1843, + "ops": [ + [ + "ADD", + 863, + 1100, + "-2" + ], + [ + "ADD", + 852, + 1100, + "-1" + ], + [ + "ADD", + 1100, + 863, + "1/2" + ], + [ + "ADD", + 852, + 1100, + "1" + ], + [ + "ADD", + 863, + 1100, + "2" + ] + ], + "pairs": [ + [ + 600, + 819 + ], + [ + 2045, + 819 + ], + [ + 819, + 600 + ], + [ + 2045, + 819 + ], + [ + 600, + 819 + ] + ] + }, + { + "add": 35323, + "blockers": [ + 33688, + 33665 + ], + "cut": 32777, + "interval": 2547, + "ops": [ + [ + "ADD", + 340, + 344, + "2" + ], + [ + "ADD", + 340, + 75, + "1" + ], + [ + "ADD", + 344, + 340, + "-1/2" + ], + [ + "ADD", + 340, + 75, + "-1" + ], + [ + "ADD", + 340, + 344, + "-2" + ] + ], + "pairs": [ + [ + 246, + 250 + ], + [ + 246, + 1322 + ], + [ + 250, + 246 + ], + [ + 246, + 1322 + ], + [ + 246, + 250 + ] + ] + }, + { + "add": 38539, + "blockers": [ + 38536, + 38535 + ], + "cut": 31572, + "interval": 6968, + "ops": [ + [ + "ADD", + 450, + 1466, + "1" + ], + [ + "ADD", + 1466, + 1207, + "1" + ], + [ + "ADD", + 1207, + 450, + "1" + ], + [ + "ADD", + 1466, + 1207, + "-1" + ], + [ + "ADD", + 450, + 1466, + "-1" + ] + ], + "pairs": [ + [ + 356, + 1056 + ], + [ + 1056, + 926 + ], + [ + 926, + 356 + ], + [ + 1056, + 926 + ], + [ + 356, + 1056 + ] + ] + }, + { + "add": 40549, + "blockers": [ + 41003, + 41005 + ], + "cut": 41006, + "interval": 457, + "ops": [ + [ + "ADD", + 1164, + 569, + "1" + ], + [ + "ADD", + 569, + 402, + "-1" + ], + [ + "ADD", + 402, + 1164, + "4" + ], + [ + "ADD", + 569, + 402, + "1" + ], + [ + "ADD", + 1164, + 569, + "-1" + ] + ], + "pairs": [ + [ + 6808, + 6806 + ], + [ + 6806, + 6807 + ], + [ + 6807, + 6808 + ], + [ + 6806, + 6807 + ], + [ + 6808, + 6806 + ] + ] + }, + { + "add": 40549, + "blockers": [ + 41003, + 41005 + ], + "cut": 41108, + "interval": 559, + "ops": [ + [ + "ADD", + 1164, + 569, + "1" + ], + [ + "ADD", + 569, + 402, + "-1" + ], + [ + "ADD", + 402, + 1164, + "4" + ], + [ + "ADD", + 569, + 402, + "1" + ], + [ + "ADD", + 1164, + 569, + "-1" + ] + ], + "pairs": [ + [ + 6854, + 6806 + ], + [ + 6806, + 6807 + ], + [ + 6807, + 6854 + ], + [ + 6806, + 6807 + ], + [ + 6854, + 6806 + ] + ] + }, + { + "add": 44134, + "blockers": [ + 44742, + 44780 + ], + "cut": 44781, + "interval": 647, + "ops": [ + [ + "ADD", + 1478, + 1472, + "-1" + ], + [ + "ADD", + 1472, + 758, + "-1" + ], + [ + "ADD", + 758, + 1478, + "-1" + ], + [ + "ADD", + 1472, + 758, + "1" + ], + [ + "ADD", + 1478, + 1472, + "1" + ] + ], + "pairs": [ + [ + 5068, + 5046 + ], + [ + 5046, + 5047 + ], + [ + 5047, + 5068 + ], + [ + 5046, + 5047 + ], + [ + 5068, + 5046 + ] + ] + } + ], + "source_word_sha256": "9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a" +} diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/overlap/overlap.py b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/overlap/overlap.py new file mode 100644 index 0000000000..54525f3569 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/overlap/overlap.py @@ -0,0 +1,67 @@ +"""Five-factor exact packet for the final overlapping rank-one cases.""" +from bisect import bisect_right +from collections import Counter, defaultdict +from fractions import Fraction as Q +from importlib.util import module_from_spec, spec_from_file_location +from pathlib import Path + +_spec = spec_from_file_location('overlap_two', Path(__file__).parents[1]/'planner/two_blockers.py') +two = module_from_spec(_spec) +_spec.loader.exec_module(two) + + +def normalized(event, inverse=False): + op, *roles = event[:-2] + coefficient = Q(event[-2]) + if inverse: + coefficient = -coefficient if op == 'ADD' else 1/coefficient + return op, *roles, str(coefficient) + + +def choices_overlap(word, raw, scalar, child, stats=None): + stats = Counter() if stats is None else stats + program, public = word['program'], word['public'] + history = two.contacts(program) + visits = defaultdict(list) + for j,(role,event,_) in enumerate(raw): + visits[role].append((event+1,j)) + for h in visits.values(): + h.sort() + end = len(raw) + + def visit(role,cut): + h = visits[role] + return h[bisect_right(h,(cut,end))-1][1] + + for i in scalar: + a = program[i] + if i not in child or a[0]!='ADD' or max(two.axes(a))>=public: + continue + d,s = two.axes(a) + for later in (False,True): + b1,one = two.next_contact(program,history,i,{d:Q(a[3])},{s:Q(1)},later) + if one is None or max(two.axes(program[b1]))>=public: + continue + b2,two_step = two.next_contact(program,history,b1,*one,later) + if two_step is None or max(two.axes(program[b2]))>=public: + continue + if not two_step[0].keys() & two_step[1].keys(): + continue + stats['overlapping plans'] += 1 + p,q = program[b1],program[b2] + ops = (normalized(q,later),normalized(p,later),normalized(a), + normalized(p,not later),normalized(q,not later)) + if not all(two.coefficient_admissible(Q(e[-1])) for e in ops): + stats['inadmissible coefficient plans'] += 1 + continue + stop,_ = two.next_contact(program,history,b2,*two_step,later) + lo,hi = (b2+1,stop) if later else (stop+1,b2) + cuts = {lo} + for role in {r for e in ops for r in two.axes(e)}: + h=visits[role] + x,y=bisect_right(h,(lo,end)),bisect_right(h,(hi,end)) + cuts.update(cut for cut,_ in h[x:y]) + for cut in sorted(cuts): + pairs = tuple((visit(e[1],cut),visit(e[2] if e[0]=='ADD' else e[1],cut)) for e in ops) + stats['placements'] += 1 + yield i,(b1,b2),cut,ops,pairs,(cut,)*len(ops) diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/overlap/validate.py b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/overlap/validate.py new file mode 100644 index 0000000000..c0a17d09d1 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/overlap/validate.py @@ -0,0 +1,30 @@ +"""Replay all overlap packet placements on their complete normalized intervals.""" +from collections import Counter +import json +from pathlib import Path +import sys + +from overlap import choices_overlap, two + +sys.path.insert(0,str(Path(__file__).parents[1]/'planner')) +from validate_free import exact_rows, inventory, local_sequences, read_word + + +def run(path): + w=read_word(path) + raw,scalar,child=inventory(w) + stats=Counter() + rows=[] + for i,bs,cut,ops,pairs,cuts in choices_overlap(w,raw,scalar,child,stats): + before,after=local_sequences(w['program'],i,ops,cuts) + target=exact_rows(before) + assert target==exact_rows(after) + _,bad=local_sequences(w['program'],i,ops[:-1],cuts[:-1]) + assert target!=exact_rows(bad) + rows.append(dict(add=i,blockers=bs,cut=cut,ops=ops,pairs=pairs,interval=len(before))) + assert stats['overlapping plans']==7 + return dict(source_word_sha256=two.WORD_SHA,counts=stats,plans=rows) + + +if __name__=='__main__': + print(json.dumps(run(Path(sys.argv[1])),indent=2,sort_keys=True)) diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/ALL.json b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/ALL.json new file mode 100644 index 0000000000..74f2171643 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/ALL.json @@ -0,0 +1,247 @@ +{ + "all_raw_product_sha256": "56b230b50f0f64f7424d1a4ebd1bb2f000772d007211db5d5ba5ea765c3bd7ec", + "counts": { + "algebraic plans": 4200, + "products": 73461 + }, + "exact_spread_controls": [ + { + "add": 44696, + "anchor": 36581, + "blockers": [ + 37557, + 36583 + ], + "cuts": [ + 0, + 45489, + 0 + ], + "direction": "earlier", + "distinct_cuts": 2, + "ops": [ + [ + "ADD", + 843, + 1480, + "1" + ], + [ + "ADD", + 853, + 1480, + "1" + ], + [ + "ADD", + 854, + 1480, + "1" + ] + ], + "original_events": 45489, + "spread": 45489 + }, + { + "add": 44696, + "anchor": 36581, + "blockers": [ + 37557, + 36583 + ], + "cuts": [ + 0, + 45489, + 36582 + ], + "direction": "earlier", + "distinct_cuts": 3, + "ops": [ + [ + "ADD", + 843, + 1480, + "1" + ], + [ + "ADD", + 853, + 1480, + "1" + ], + [ + "ADD", + 854, + 1480, + "1" + ] + ], + "original_events": 45489, + "spread": 45489 + }, + { + "add": 39286, + "anchor": 36566, + "blockers": [ + 39217, + 36566 + ], + "cuts": [ + 23891, + 0, + 39296, + 36566 + ], + "direction": "earlier", + "distinct_cuts": 4, + "ops": [ + [ + "ADD", + 773, + 962, + "-1" + ], + [ + "ADD", + 773, + 1453, + "-1" + ], + [ + "ADD", + 778, + 962, + "1/2" + ], + [ + "ADD", + 778, + 1453, + "1/2" + ] + ], + "original_events": 39296, + "spread": 39296 + }, + { + "add": 39326, + "anchor": 41895, + "blockers": [ + 39987, + 41894 + ], + "cuts": [ + 42022, + 42022, + 10116 + ], + "direction": "later", + "distinct_cuts": 2, + "ops": [ + [ + "ADD", + 197, + 85, + "-1" + ], + [ + "ADD", + 197, + 319, + "1" + ], + [ + "ADD", + 197, + 1467, + "-1" + ] + ], + "original_events": 31906, + "spread": 31906 + }, + { + "add": 39326, + "anchor": 41895, + "blockers": [ + 39987, + 41894 + ], + "cuts": [ + 42371, + 41895, + 10116 + ], + "direction": "later", + "distinct_cuts": 3, + "ops": [ + [ + "ADD", + 197, + 85, + "-1" + ], + [ + "ADD", + 197, + 319, + "1" + ], + [ + "ADD", + 197, + 1467, + "-1" + ] + ], + "original_events": 32255, + "spread": 32255 + }, + { + "add": 39908, + "anchor": 40244, + "blockers": [ + 39911, + 40243 + ], + "cuts": [ + 40244, + 40245, + 22889, + 42565 + ], + "direction": "later", + "distinct_cuts": 4, + "ops": [ + [ + "ADD", + 452, + 969, + "-1" + ], + [ + "ADD", + 452, + 1250, + "2" + ], + [ + "ADD", + 532, + 969, + "2" + ], + [ + "ADD", + 532, + 1250, + "-4" + ] + ], + "original_events": 19676, + "spread": 19676 + } + ], + "source_word_sha256": "9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a", + "status": "PASS_EXACT_ALL_TERM_PLANNER" +} diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/PLANNER.json b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/PLANNER.json new file mode 100644 index 0000000000..96646ad783 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/PLANNER.json @@ -0,0 +1,298 @@ +{ + "coefficient_controls": [ + "denominator 7", + "denominator 2^26", + "magnitude 2^16" + ], + "controls": { + "earlier missing emitted term": [ + 21988, + 21434, + 20596 + ], + "earlier recomputed second support": [ + 21988, + 21434, + 20596 + ], + "earlier unretuned original": [ + 21988, + 21434, + 20596 + ], + "later missing emitted term": [ + 21988, + 29055, + 29069 + ], + "later recomputed second support": [ + 21988, + 29055, + 29069 + ], + "later unretuned original": [ + 21988, + 29055, + 29069 + ] + }, + "counts": { + "earlier 1-term plans": 29, + "earlier 2-term plans": 479, + "earlier 3-term plans": 1147, + "earlier 4-term plans": 437, + "earlier ADD/ADD plans": 1965, + "earlier ADD/SCALE plans": 73, + "earlier SCALE/ADD plans": 54, + "earlier final overlap": 5, + "earlier stops before first public blocker": 39, + "earlier stops before second public blocker": 34, + "later 1-term plans": 187, + "later 2-term plans": 613, + "later 3-term plans": 1031, + "later 4-term plans": 277, + "later ADD/ADD plans": 1729, + "later ADD/SCALE plans": 264, + "later SCALE/ADD plans": 114, + "later SCALE/SCALE plans": 1, + "later final overlap": 2, + "later stops before first public blocker": 38, + "later stops before second public blocker": 22, + "placements": 7700, + "public ADD bridges": 2170 + }, + "exact_local_matrices": { + "earlier": 2092, + "earlier second commutes with original": 890, + "later": 2108, + "later second commutes with original": 1086 + }, + "maximum_interval_controls": [ + { + "add": 30464, + "blockers": [ + 10707, + 10274 + ], + "cut": 8698, + "direction": "earlier", + "ops": [ + [ + "ADD", + 179, + 115, + "-1/2" + ] + ], + "original_events": 21767, + "terms": 1 + }, + { + "add": 39333, + "blockers": [ + 37758, + 37757 + ], + "cut": 13673, + "direction": "earlier", + "ops": [ + [ + "ADD", + 147, + 85, + "1/2" + ], + [ + "ADD", + 147, + 98, + "-1/2" + ] + ], + "original_events": 25661, + "terms": 2 + }, + { + "add": 42524, + "blockers": [ + 28054, + 27988 + ], + "cut": 27915, + "direction": "earlier", + "ops": [ + [ + "ADD", + 200, + 37, + "-1/2" + ], + [ + "ADD", + 200, + 432, + "-1/2" + ], + [ + "ADD", + 200, + 434, + "-1/2" + ] + ], + "original_events": 14610, + "terms": 3 + }, + { + "add": 37442, + "blockers": [ + 36742, + 16494 + ], + "cut": 8967, + "direction": "earlier", + "ops": [ + [ + "ADD", + 777, + 886, + "-1/4" + ], + [ + "ADD", + 777, + 944, + "1/2" + ], + [ + "ADD", + 839, + 886, + "-1/4" + ], + [ + "ADD", + 839, + 944, + "1/2" + ] + ], + "original_events": 28476, + "terms": 4 + }, + { + "add": 37677, + "blockers": [ + 37684, + 48216 + ], + "cut": 48217, + "direction": "later", + "ops": [ + [ + "ADD", + 805, + 1085, + "1" + ] + ], + "original_events": 10540, + "terms": 1 + }, + { + "add": 37369, + "blockers": [ + 40746, + 40747 + ], + "cut": 57073, + "direction": "later", + "ops": [ + [ + "ADD", + 838, + 887, + "1/2" + ], + [ + "ADD", + 838, + 945, + "1/2" + ] + ], + "original_events": 19704, + "terms": 2 + }, + { + "add": 37671, + "blockers": [ + 59739, + 60605 + ], + "cut": 60606, + "direction": "later", + "ops": [ + [ + "ADD", + 776, + 1147, + "-1" + ], + [ + "ADD", + 835, + 1147, + "1" + ], + [ + "ADD", + 838, + 1147, + "1" + ] + ], + "original_events": 22935, + "terms": 3 + }, + { + "add": 27861, + "blockers": [ + 27865, + 37723 + ], + "cut": 39679, + "direction": "later", + "ops": [ + [ + "ADD", + 247, + 70, + "1/2" + ], + [ + "ADD", + 247, + 91, + "1" + ], + [ + "ADD", + 252, + 70, + "-1/4" + ], + [ + "ADD", + 252, + 91, + "-1/2" + ] + ], + "original_events": 11818, + "terms": 4 + } + ], + "source_word_sha256": "9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a", + "status": "PASS_EXACT_TWO_BLOCKER_PLANNER" +} diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/all_terms.py b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/all_terms.py new file mode 100644 index 0000000000..6f8b79dcaf --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/all_terms.py @@ -0,0 +1,48 @@ +"""Cartesian products of individually safe cuts for the expanded scalar ADD.""" +from bisect import bisect_right +from collections import Counter, defaultdict +from itertools import product +from importlib.util import module_from_spec, spec_from_file_location +from pathlib import Path + +_spec = spec_from_file_location('free_term_core', Path(__file__).with_name('free_term.py')) +free = module_from_spec(_spec) +_spec.loader.exec_module(free) +two = free.two + + +def choices_all(word, raw, scalar, child, stats=None): + """Yield add, blockers, joint anchor, ops, raw pairs, and per-term cuts.""" + stats = Counter() if stats is None else stats + program = word['program'] + history = two.contacts(program) + visits = defaultdict(list) + for j, (role, event, _) in enumerate(raw): + visits[role].append((event+1, j)) + for h in visits.values(): + h.sort() + end = len(raw) + + def visit(role, cut): + h = visits[role] + return h[bisect_right(h,(cut,end))-1][1] + + for add, blockers, anchor, joint_end, ops in two.plans(word,scalar,child): + stats['algebraic plans'] += 1 + options = [] + for op in ops: + _, d, s, _ = op + lo, hi = free.term_window(program, history, add, anchor, op) + # A stationary scalar commuting with the disjoint-support rank-one + # aggregate commutes with each elementary term separately. + assert lo <= anchor <= joint_end <= hi + cuts = {lo} + for role in (d,s): + h = visits[role] + a,b = bisect_right(h,(lo,end)),bisect_right(h,(hi,end)) + cuts.update(cut for cut,_ in h[a:b]) + options.append([(cut,(visit(d,cut),visit(s,cut))) for cut in sorted(cuts)]) + for placements in product(*options): + cuts,pairs = map(tuple,zip(*placements)) + stats['products'] += 1 + yield add, blockers, anchor, ops, pairs, cuts diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/free_term.py b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/free_term.py new file mode 100644 index 0000000000..0acd2bdc43 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/free_term.py @@ -0,0 +1,65 @@ +"""Allow one expanded ADD term to use a separate commuting cut.""" +from bisect import bisect_right +from collections import Counter, defaultdict +from fractions import Fraction as Q +from importlib.util import module_from_spec, spec_from_file_location +from pathlib import Path + +_spec = spec_from_file_location('exact_two_blocker', Path(__file__).with_name('two_blockers.py')) +two = module_from_spec(_spec) +_spec.loader.exec_module(two) + + +def term_window(program, history, add, cut, operation): + _, d, s, text = operation + u, v = {d: Q(text)}, {s: Q(1)} + + def boundary(index, later): + contact, _ = two.next_contact(program, history, index, u, v, later) + if contact == add: + contact, _ = two.next_contact(program, history, add, u, v, later) + return contact + + return boundary(cut, False) + 1, boundary(cut-1, True) + + +def choices_free(word, raw, scalar, child, stats=None): + """Yield one free term, with its cut appended in an aligned per-term tuple.""" + stats = Counter() if stats is None else stats + program = word['program'] + contacts = two.contacts(program) + histories = defaultdict(list) + for j, (role, event, _) in enumerate(raw): + histories[role].append((event+1, j)) + for history in histories.values(): + history.sort() + end = len(raw) + + def visit(role, cut): + h = histories[role] + return h[bisect_right(h, (cut, end))-1][1] + + for add, blockers, joint_cut, ops, pairs in two.choices(word, raw, scalar, child): + if len(ops) == 1: + continue + stats['eligible joint placements'] += 1 + for term, op in enumerate(ops): + _, d, s, _ = op + lo, hi = term_window(program, contacts, add, joint_cut, op) + assert lo <= joint_cut <= hi + cuts = {lo} + for role in (d, s): + h = histories[role] + a, b = bisect_right(h, (lo, end)), bisect_right(h, (hi, end)) + cuts.update(cut for cut, _ in h[a:b]) + for cut in sorted(cuts): + pair = visit(d, cut), visit(s, cut) + if pair == pairs[term]: + continue + new_pairs = (*pairs[:term], pair, *pairs[term+1:]) + new_cuts = (joint_cut,)*term + (cut,) + (joint_cut,)*(len(ops)-term-1) + stats['one-free placements'] += 1 + stats['term earlier than joint cut' if cut < joint_cut else 'term later than joint cut'] += 1 + if min(cut,joint_cut) <= add < max(cut,joint_cut): + stats['term crosses original removed ADD'] += 1 + yield add, blockers, joint_cut, ops, new_pairs, new_cuts diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/two_blockers.py b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/two_blockers.py new file mode 100644 index 0000000000..76f904f7d6 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/two_blockers.py @@ -0,0 +1,159 @@ +"""Exact transport of one public ADD across two successive scalar blockers.""" +from bisect import bisect_left, bisect_right +from collections import Counter, defaultdict +from fractions import Fraction as Q +import gzip +from hashlib import sha256 +from importlib.util import module_from_spec, spec_from_file_location +import json +from pathlib import Path +import sys + +WORD_SHA = '9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a' +GRID = 1125 * 2**25 +ROOT = Path(__file__).resolve().parents[3] + + +def axes(event): + return event[1:3] if event[0] in ('ADD', 'COPY') else event[1:2] + + +def update(vector, destination, change): + if change: + value = vector.get(destination, 0) + change + if value: + vector[destination] = value + else: + vector.pop(destination) + + +def conjugate(u, v, event, later): + """Later means B(I+uv)B^-1. Earlier means B^-1(I+uv)B.""" + op, destination = event[:2] + coefficient = Q(event[-2]) + x, y = u.copy(), v.copy() + if op == 'SCALE': + factor = coefficient if later else 1 / coefficient + if destination in x: + x[destination] *= factor + if destination in y: + y[destination] /= factor + else: + assert op == 'ADD' + source = event[2] + factor = coefficient if later else -coefficient + update(x, destination, factor * u.get(source, 0)) + update(y, source, -factor * v.get(destination, 0)) + return x, y + + +def outer(u, v): + return {(d, s): x * y for d, x in u.items() for s, y in v.items()} + + +def contacts(program): + reads, writes, copies = defaultdict(list), defaultdict(list), defaultdict(list) + for i, event in enumerate(program): + op, destination = event[:2] + if op in ('ADD', 'COPY', 'SCALE'): + writes[destination].append(i) + reads[destination if op == 'SCALE' else event[2]].append(i) + if op == 'COPY': + copies[destination].append(i) + return reads, writes, copies + + +def next_contact(program, history, index, u, v, later): + """Search all possible noncommutations with the current rank-one map.""" + reads, writes, copies = history + lists = [reads[r] for r in u] + [writes[r] for r in v] + [copies[r] for r in u] + current = outer(u, v) + while True: + if later: + positions = (bisect_right(row, index) for row in lists) + index = min((row[k] for row, k in zip(lists, positions) if k < len(row)), + default=len(program)) + if index == len(program): + return index, None + else: + positions = (bisect_left(row, index) for row in lists) + index = max((row[k-1] for row, k in zip(lists, positions) if k), default=-1) + if index == -1: + return index, None + event = program[index] + if event[0] == 'COPY': + # An ADD affecting the zero destination also blocks COPY. + return index, None + changed = conjugate(u, v, event, later) + if outer(*changed) != current: + return index, changed + + +def coefficient_admissible(value): + return GRID % value.denominator == 0 and abs(value) + 1 < 2**16 + + +def plans(word, scalar, child, stats=None): + """Yield ADD index, blockers in crossing order, inclusive cut window and ops.""" + stats = Counter() if stats is None else stats + program, public = word['program'], word['public'] + history = contacts(program) + for i in scalar: + event = program[i] + if i not in child or event[0] != 'ADD' or max(axes(event)) >= public: + continue + stats['public ADD bridges'] += 1 + d, s = axes(event) + for later in (False, True): + direction = 'later' if later else 'earlier' + first, changed = next_contact(program, history, i, {d: Q(event[3])}, {s: Q(1)}, later) + if changed is None or max(axes(program[first])) >= public: + stats[f'{direction} stops before first public blocker'] += 1 + continue + if changed[0].keys() & changed[1].keys(): + stats[f'{direction} first conjugate has overlap'] += 1 + second, final = next_contact(program, history, first, *changed, later) + if final is None or max(axes(program[second])) >= public: + stats[f'{direction} stops before second public blocker'] += 1 + continue + if final[0].keys() & final[1].keys(): + stats[f'{direction} final overlap'] += 1 + continue + terms = sorted(outer(*final).items()) + if not all(coefficient_admissible(x) for _, x in terms): + stats[f'{direction} coefficient grid or magnitude excluded'] += 1 + continue + ops = tuple(('ADD', d, s, str(x)) for (d, s), x in terms) + next_stop, _ = next_contact(program, history, second, *final, later) + lo, hi = (second+1, next_stop) if later else (next_stop+1, second) + assert lo <= hi + stats[f'{direction} {program[first][0]}/{program[second][0]} plans'] += 1 + stats[f'{direction} {len(ops)}-term plans'] += 1 + yield i, (first, second), lo, hi, ops + + +def choices(word, raw, scalar, child, stats=None): + """Yield one representative per distinct raw chart tuple in each safe window.""" + histories = defaultdict(list) + for j, (role, event, _) in enumerate(raw): + histories[role].append((event+1, j)) + for history in histories.values(): + history.sort() + end = len(raw) + + def visit(role, cut): + h = histories[role] + return h[bisect_right(h, (cut, end))-1][1] + + for i, blockers, lo, hi, ops in plans(word, scalar, child, stats): + roles = {role for event in ops for role in axes(event)} + cuts = {lo} + for role in roles: + h = histories[role] + a, b = bisect_right(h, (lo, end)), bisect_right(h, (hi, end)) + cuts.update(cut for cut, _ in h[a:b]) + for cut in sorted(cuts): + pairs = tuple((visit(d, cut), visit(s, cut)) for _, d, s, _ in ops) + if stats is not None: + stats['placements'] += 1 + yield i, blockers, cut, ops, pairs diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/validate.py b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/validate.py new file mode 100644 index 0000000000..4b0e19a2bf --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/validate.py @@ -0,0 +1,129 @@ +"""Independent exact scalar matrices and controls for the two-blocker planner.""" +from collections import Counter +from fractions import Fraction as Q +from hashlib import sha256 +import gzip +import json +from importlib.util import module_from_spec, spec_from_file_location +from pathlib import Path +import sys + +from two_blockers import ROOT, WORD_SHA, axes, choices, coefficient_admissible, plans + + +def load(name, path): + spec = spec_from_file_location(name, path) + module = module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +def read_word(path): + payload = gzip.decompress(path.read_bytes()) + assert sha256(payload).hexdigest() == WORD_SHA + return json.loads(payload) + + +def inventory(word): + port = load('pinned_port', ROOT/'kappa-typea-birth2-20261110T2258Z/evidence/scalar/port.py') + graph = port.module('current_graph', port.GRAPH) + retained = port.module('retained_adjacent_blocker', port.BASE) + raw, _, _, _, _, _, scalar, _, _, _, child = retained.inventory(word, graph) + return raw, scalar, child + + +def exact_rows(events): + rows = {} + for event in events: + op, r = event[:2] + if op == 'MOVE': + continue + prior = rows.get(r, {r: Q(1)}) + if op == 'SCALE': + row = {a: x * Q(event[2]) for a, x in prior.items()} + elif op in ('ADD', 'COPY'): + s, factor = event[2], Q(event[3]) + row = prior.copy() + for a, x in rows.get(s, {s: Q(1)}).items(): + value = row.get(a, 0) + factor * x + if value: + row[a] = value + else: + row.pop(a, None) + else: + assert op in ('INIT', 'CLEAR') + row = {} + rows[r] = row + return {r: row for r, row in rows.items() if row != {r: Q(1)}} + + +def rewrite(program, add, cut, ops): + assert cut not in (add, add+1) + if cut <= add: + before = program[cut:add+1] + after = [*ops, *program[cut:add]] + else: + before = program[add:cut] + after = [*program[add+1:cut], *ops] + return before, after + + +def run(word_path): + w = read_word(word_path) + raw, scalar, child = inventory(w) + prog = w['program'] + matrix_counts, stats = Counter(), Counter() + controls, longest = {}, {} + for i, blockers, _, _, ops in plans(w, scalar, child): + b1, b2 = blockers + a, p, q = prog[i], prog[b1], prog[b2] + later = b1 > i + if later: + assert i < b1 < b2 + before, after = (a, p, q), (p, q, *ops) + else: + assert b2 < b1 < i + before, after = (q, p, a), (*ops, q, p) + target = exact_rows(before) + assert target == exact_rows(after), (i, blockers, ops) + assert exact_rows((a, p)) != exact_rows((p, a)), (i, b1) + assert {e[1] for e in ops}.isdisjoint({e[2] for e in ops}) + assert exact_rows(ops) == exact_rows(reversed(ops)) + direction = 'later' if later else 'earlier' + matrix_counts[direction] += 1 + if exact_rows((a, q)) == exact_rows((q, a)): + matrix_counts[f'{direction} second commutes with original'] += 1 + controls.setdefault(f'{direction} recomputed second support', [i, *blockers]) + bad = ((p, q, *ops[:-1]) if later else (*ops[:-1], q, p)) + if target != exact_rows(bad): + controls.setdefault(f'{direction} missing emitted term', [i, *blockers]) + unchanged = ((p, q, a) if later else (a, q, p)) + if target != exact_rows(unchanged): + controls.setdefault(f'{direction} unretuned original', [i, *blockers]) + for candidate in choices(w, raw, scalar, child, stats): + i, blockers, cut, ops, pairs = candidate + for event, pair in zip(ops, pairs): + assert tuple(raw[j][0] for j in pair) == tuple(axes(event)) + assert all(raw[j][1] < cut for j in pair) + key = ('later' if blockers[0] > i else 'earlier', len(ops)) + if key not in longest or abs(cut-i) > abs(longest[key][2]-longest[key][0]): + longest[key] = candidate + windows = [] + for (direction, count), (i, blockers, cut, ops, _) in sorted(longest.items()): + before, after = rewrite(prog, i, cut, ops) + assert exact_rows(before) == exact_rows(after), (i, blockers, cut) + windows.append(dict(direction=direction, terms=count, add=i, blockers=blockers, + cut=cut, original_events=len(before), ops=ops)) + assert len(controls) == 6 and len(windows) == 8 + assert coefficient_admissible(Q(1,1125*2**25)) + assert not coefficient_admissible(Q(1,7)) + assert not coefficient_admissible(Q(1,2**26)) + assert not coefficient_admissible(Q(2**16)) + return dict(status='PASS_EXACT_TWO_BLOCKER_PLANNER', source_word_sha256=WORD_SHA, + counts=stats, exact_local_matrices=matrix_counts, controls=controls, + maximum_interval_controls=windows, coefficient_controls=['denominator 7', + 'denominator 2^26', 'magnitude 2^16']) + + +if __name__ == '__main__': + print(json.dumps(run(Path(sys.argv[1])), indent=2, sort_keys=True)) diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/validate_all.py b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/validate_all.py new file mode 100644 index 0000000000..f187923229 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/validate_all.py @@ -0,0 +1,50 @@ +"""Compare the compressed Cartesian iterator to every joint-cut representative.""" +from collections import Counter +from hashlib import sha256 +from itertools import product +import json +from pathlib import Path +import sys + +from all_terms import choices_all +from free_term import choices_free, two +from validate import exact_rows, inventory, read_word +from validate_free import local_sequences + + +def run(path): + w = read_word(path) + raw, scalar, child = inventory(w) + joint = {(i,bs,cut): [{pair} for pair in pairs] + for i,bs,cut,_,pairs in two.choices(w,raw,scalar,child)} + for i,bs,cut,_,pairs,cuts in choices_free(w,raw,scalar,child): + term, = [j for j,k in enumerate(cuts) if k != cut] + joint[i,bs,cut][term].add(pairs[term]) + exhaustive = {(i,bs,pairs) for (i,bs,_), options in joint.items() for pairs in product(*options)} + actual, max_spread, counts = set(), {}, Counter() + for i,bs,anchor,ops,pairs,cuts in choices_all(w,raw,scalar,child,counts): + key = i,bs,pairs + assert key not in actual + actual.add(key) + distinct = len(set(cuts)) + category = ('later' if bs[0]>i else 'earlier',distinct) + spread = max(cuts)-min(cuts) + if category not in max_spread or spread>max_spread[category][0]: + max_spread[category] = spread,i,bs,anchor,ops,cuts + assert actual==exhaustive + controls=[] + for (direction,distinct),(spread,i,bs,anchor,ops,cuts) in sorted(max_spread.items()): + if distinct<2: + continue + before,after=local_sequences(w['program'],i,ops,cuts) + assert exact_rows(before)==exact_rows(after), (i,bs,cuts) + controls.append(dict(direction=direction,distinct_cuts=distinct,add=i,blockers=bs, + anchor=anchor,ops=ops,cuts=cuts,spread=spread,original_events=len(before))) + assert len(controls)==6 + digest=sha256(json.dumps(sorted(actual),separators=(',',':')).encode()).hexdigest() + return dict(status='PASS_EXACT_ALL_TERM_PLANNER',source_word_sha256=two.WORD_SHA, + counts=counts,all_raw_product_sha256=digest,exact_spread_controls=controls) + + +if __name__=='__main__': + print(json.dumps(run(Path(sys.argv[1])),indent=2,sort_keys=True)) diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/validate_free.py b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/validate_free.py new file mode 100644 index 0000000000..d35d40d067 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/planner/validate_free.py @@ -0,0 +1,74 @@ +"""Exact full-interval controls for the separately placed elementary term.""" +from collections import Counter, defaultdict +import json +from pathlib import Path +import sys + +from free_term import choices_free, term_window, two +from validate import exact_rows, inventory, read_word + + +def local_sequences(program, original, operations, cuts): + insert = defaultdict(list) + for cut, op in zip(cuts, operations): + insert[cut].append(op) + lo = min(original, *cuts) + hi = max(original+1, *cuts) + after = [] + for i in range(lo, hi+1): + after.extend(insert[i]) + if i < hi and i != original: + after.append(program[i]) + return program[lo:hi], after + + +def run(path): + w = read_word(path) + raw, scalar, child = inventory(w) + program = w['program'] + history = two.contacts(program) + stats, longest = Counter(), {} + bad = None + for candidate in choices_free(w, raw, scalar, child, stats): + add, blockers, joint, ops, pairs, cuts = candidate + terms = [j for j, cut in enumerate(cuts) if cut != joint] + assert len(terms) == 1 + term, = terms + k = cuts[term] + for op, (a, b), cut in zip(ops, pairs, cuts): + assert (raw[a][0], raw[b][0]) == op[1:3] + assert max(raw[a][1], raw[b][1]) < cut + direction = 'later' if blockers[0] > add else 'earlier' + mode = 'term later' if k > joint else 'term earlier' + before_len = max(add+1, *cuts)-min(add, *cuts) + categories = [(direction, mode)] + if min(k,joint) <= add < max(k,joint): + categories.append((direction, 'crosses removed ADD')) + for key in categories: + if key not in longest or before_len > longest[key][0]: + longest[key] = before_len, candidate + if bad is None: + lo, hi = term_window(program, history, add, joint, ops[term]) + for wrong_cut, blocker in ((lo-1,lo-1),(hi+1,hi)): + if not 0 <= blocker < len(program) or program[blocker][0] not in ('ADD','SCALE'): + continue + wrong = list(cuts) + wrong[term] = wrong_cut + before, after = local_sequences(program, add, ops, wrong) + if exact_rows(before) != exact_rows(after): + bad = dict(add=add, joint=joint, term=term, blocker=blocker, + excluded_cut=wrong_cut, correct_cut=k) + break + controls = [] + for (direction, mode), (n, (add, blockers, joint, ops, _, cuts)) in sorted(longest.items()): + before, after = local_sequences(program, add, ops, cuts) + assert len(before) == n and exact_rows(before) == exact_rows(after) + controls.append(dict(direction=direction, mode=mode, add=add, blockers=blockers, + joint_cut=joint, cuts=cuts, original_events=n, ops=ops)) + assert bad is not None and len(controls) == 6 + return dict(status='PASS_EXACT_ONE_FREE_TERM_PLANNER', source_word_sha256=two.WORD_SHA, + counts=stats, exact_full_intervals=controls, retained_blocker_control=bad) + + +if __name__ == '__main__': + print(json.dumps(run(Path(sys.argv[1])), indent=2, sort_keys=True)) diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/ALL.json b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/ALL.json new file mode 100644 index 0000000000..1eab6d2447 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/ALL.json @@ -0,0 +1,82 @@ +{ + "baseline_P": { + "1": 68265, + "2": 14518, + "3": 14059, + "4": 3808, + "5": 5797, + "6": 272, + "7": 187, + "8": 758, + "9": 32, + "16": 416, + "24": 416, + "32": 416, + "40": 416, + "48": 416, + "56": 416, + "64": 208 + }, + "baseline_T": { + "1": 272, + "2": 340, + "3": 799, + "4": 3706, + "5": 1258, + "6": 731, + "7": 306, + "8": 595, + "9": 10973, + "17": 416, + "25": 416, + "33": 416, + "41": 416, + "49": 416, + "57": 416, + "65": 416, + "73": 208, + "137": 208 + }, + "blockers": { + "ADD+ADD": 71512, + "ADD+SCALE": 1499, + "SCALE+ADD": 449, + "SCALE+SCALE": 1 + }, + "caller": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "cap": null, + "counts": { + "ADD bridges": 2157, + "duplicate price constraints": 19360, + "incompatible rank equations": 4, + "incompatible span bounds": 66914, + "nonpositive mixed upper": 6, + "nonpositive rank upper": 33, + "placements": 73461, + "reinstates original scalar equality": 6504 + }, + "dependencies": { + "kappa-coupled-boundaries-20261110T0908Z/replay/research/shared-wire-stop-fusion/audit_price.py": "585295aa55846e594c705941002c36ea0b9b6cbfe3a49e6594e1d2e70751b704", + "kappa-interior-20261110T0823Z/evidence/closure.py": "e6b3cdfcb42f4cd22d46e1783a537d147b092634f4cf089e91344e29f0214cf1", + "kappa-scalar-two-20261110T2315Z/evidence/planner/all_terms.py": "026050e72cfa2a10a64541f53488b6d3f284bc2194793da926d772eb02b659a4", + "kappa-scalar-two-20261110T2315Z/evidence/planner/free_term.py": "d623743e2beb0f8578487cc1f458a0e15fc5ed10381c57e7984c615200a54a81", + "kappa-scalar-two-20261110T2315Z/evidence/planner/two_blockers.py": "152b0f6c80e0f7a47b078fb35bd91b35fbfd63fa2d2da17cf66ded05f51846f0", + "kappa-two-blockers-20261110T1036Z/evidence/two_blockers.py": "a5b5855f3016a77d991fb53536cae388221a7cf9529fe58c376141bc7656e0c3", + "kappa-typea-birth2-20261110T2258Z/evidence/scalar/port.py": "d05dcb28604a9bc6305ec90428f5f7fe875333031ecf1705229b0c4605dc3032" + }, + "hits": [], + "mode": "all-terms", + "pending": null, + "planner_stats": { + "algebraic plans": 4200, + "products": 73461 + }, + "result": "e4ae0c1cfa809cd780a6e22ce32528e7ca4b4e57f90abf91ad0bde97d30446ab", + "source_bracket": [ + "36424084968693169933964196366183/10000000000000000000000000000000000", + "4553010621086646241745524545773/1250000000000000000000000000000000" + ], + "start": 0, + "unresolved": 0, + "word": "9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a" +} diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/ALL.jsonl b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/ALL.jsonl new file mode 100644 index 0000000000..ce7c15cb6b --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/ALL.jsonl @@ -0,0 +1,293 @@ +{"add": 27416, "counts": {"ADD bridges": 25, "duplicate price constraints": 31, "incompatible span bounds": 201, "nonpositive rank upper": 1, "placements": 250, "reinstates original scalar equality": 48}, "index": 249} +{"add": 27535, "counts": {"ADD bridges": 42, "duplicate price constraints": 104, "incompatible span bounds": 415, "nonpositive rank upper": 1, "placements": 500, "reinstates original scalar equality": 84}, "index": 499} +{"add": 27737, "counts": {"ADD bridges": 61, "duplicate price constraints": 145, "incompatible span bounds": 642, "nonpositive rank upper": 1, "placements": 750, "reinstates original scalar equality": 107}, "index": 749} +{"add": 27825, "counts": {"ADD bridges": 79, "duplicate price constraints": 189, "incompatible span bounds": 887, "nonpositive rank upper": 1, "placements": 1000, "reinstates original scalar equality": 112}, "index": 999} +{"add": 27861, "counts": {"ADD bridges": 88, "duplicate price constraints": 273, "incompatible span bounds": 1131, "nonpositive rank upper": 1, "placements": 1250, "reinstates original scalar equality": 118}, "index": 1249} +{"add": 27956, "counts": {"ADD bridges": 103, "duplicate price constraints": 320, "incompatible span bounds": 1375, "nonpositive rank upper": 1, "placements": 1500, "reinstates original scalar equality": 124}, "index": 1499} +{"add": 28297, "counts": {"ADD bridges": 125, "duplicate price constraints": 371, "incompatible span bounds": 1617, "nonpositive rank upper": 1, "placements": 1750, "reinstates original scalar equality": 132}, "index": 1749} +{"add": 29106, "counts": {"ADD bridges": 152, "duplicate price constraints": 400, "incompatible span bounds": 1854, "nonpositive rank upper": 1, "placements": 2000, "reinstates original scalar equality": 145}, "index": 1999} +{"add": 30469, "counts": {"ADD bridges": 181, "duplicate price constraints": 463, "incompatible rank equations": 1, "incompatible span bounds": 2086, "nonpositive mixed upper": 2, "nonpositive rank upper": 4, "placements": 2250, "reinstates original scalar equality": 157}, "index": 2249} +{"add": 30696, "counts": {"ADD bridges": 204, "duplicate price constraints": 478, "incompatible rank equations": 1, "incompatible span bounds": 2241, "nonpositive mixed upper": 2, "nonpositive rank upper": 5, "placements": 2500, "reinstates original scalar equality": 251}, "index": 2499} +{"add": 30739, "counts": {"ADD bridges": 212, "duplicate price constraints": 535, "incompatible rank equations": 1, "incompatible span bounds": 2487, "nonpositive mixed upper": 2, "nonpositive rank upper": 5, "placements": 2750, "reinstates original scalar equality": 255}, "index": 2749} +{"add": 30851, "counts": {"ADD bridges": 228, "duplicate price constraints": 577, "incompatible rank equations": 1, "incompatible span bounds": 2731, "nonpositive mixed upper": 2, "nonpositive rank upper": 5, "placements": 3000, "reinstates original scalar equality": 261}, "index": 2999} +{"add": 31008, "counts": {"ADD bridges": 244, "duplicate price constraints": 631, "incompatible rank equations": 1, "incompatible span bounds": 2959, "nonpositive mixed upper": 2, "nonpositive rank upper": 5, "placements": 3250, "reinstates original scalar equality": 283}, "index": 3249} +{"add": 31244, "counts": {"ADD bridges": 264, "duplicate price constraints": 666, "incompatible rank equations": 1, "incompatible span bounds": 3162, "nonpositive mixed upper": 2, "nonpositive rank upper": 5, "placements": 3500, "reinstates original scalar equality": 330}, "index": 3499} +{"add": 31585, "counts": {"ADD bridges": 285, "duplicate price constraints": 724, "incompatible rank equations": 1, "incompatible span bounds": 3386, "nonpositive mixed upper": 2, "nonpositive rank upper": 5, "placements": 3750, "reinstates original scalar equality": 356}, "index": 3749} +{"add": 31746, "counts": {"ADD bridges": 301, "duplicate price constraints": 771, "incompatible rank equations": 1, "incompatible span bounds": 3617, "nonpositive mixed upper": 2, "nonpositive rank upper": 5, "placements": 4000, "reinstates original scalar equality": 375}, "index": 3999} +{"add": 31800, "counts": {"ADD bridges": 314, "duplicate price constraints": 814, "incompatible rank equations": 1, "incompatible span bounds": 3824, "nonpositive mixed upper": 2, "nonpositive rank upper": 5, "placements": 4250, "reinstates original scalar equality": 418}, "index": 4249} +{"add": 32126, "counts": {"ADD bridges": 331, "duplicate price constraints": 879, "incompatible rank equations": 1, "incompatible span bounds": 4056, "nonpositive mixed upper": 2, "nonpositive rank upper": 5, "placements": 4500, "reinstates original scalar equality": 436}, "index": 4499} +{"add": 32163, "counts": {"ADD bridges": 338, "duplicate price constraints": 896, "incompatible rank equations": 1, "incompatible span bounds": 4276, "nonpositive mixed upper": 2, "nonpositive rank upper": 5, "placements": 4750, "reinstates original scalar equality": 466}, "index": 4749} +{"add": 32195, "counts": {"ADD bridges": 347, "duplicate price constraints": 928, "incompatible rank equations": 1, "incompatible span bounds": 4476, "nonpositive mixed upper": 2, "nonpositive rank upper": 5, "placements": 5000, "reinstates original scalar equality": 516}, "index": 4999} +{"add": 32230, "counts": {"ADD bridges": 356, "duplicate price constraints": 981, "incompatible rank equations": 1, "incompatible span bounds": 4686, "nonpositive mixed upper": 2, "nonpositive rank upper": 5, "placements": 5250, "reinstates original scalar equality": 556}, "index": 5249} +{"add": 32691, "counts": {"ADD bridges": 370, "duplicate price constraints": 1028, "incompatible rank equations": 1, "incompatible span bounds": 4902, "nonpositive mixed upper": 2, "nonpositive rank upper": 6, "placements": 5500, "reinstates original scalar equality": 589}, "index": 5499} +{"add": 32768, "counts": {"ADD bridges": 383, "duplicate price constraints": 1064, "incompatible rank equations": 1, "incompatible span bounds": 5066, "nonpositive mixed upper": 2, "nonpositive rank upper": 6, "placements": 5750, "reinstates original scalar equality": 675}, "index": 5749} +{"add": 32985, "counts": {"ADD bridges": 398, "duplicate price constraints": 1081, "incompatible rank equations": 1, "incompatible span bounds": 5210, "nonpositive mixed upper": 2, "nonpositive rank upper": 6, "placements": 6000, "reinstates original scalar equality": 781}, "index": 5999} +{"add": 33141, "counts": {"ADD bridges": 413, "duplicate price constraints": 1116, "incompatible rank equations": 1, "incompatible span bounds": 5365, "nonpositive mixed upper": 2, "nonpositive rank upper": 6, "placements": 6250, "reinstates original scalar equality": 876}, "index": 6249} +{"add": 33198, "counts": {"ADD bridges": 426, "duplicate price constraints": 1167, "incompatible rank equations": 1, "incompatible span bounds": 5552, "nonpositive mixed upper": 2, "nonpositive rank upper": 6, "placements": 6500, "reinstates original scalar equality": 939}, "index": 6499} +{"add": 33320, "counts": {"ADD bridges": 446, "duplicate price constraints": 1174, "incompatible rank equations": 1, "incompatible span bounds": 5716, "nonpositive mixed upper": 2, "nonpositive rank upper": 6, "placements": 6750, "reinstates original scalar equality": 1025}, "index": 6749} +{"add": 33507, "counts": {"ADD bridges": 471, "duplicate price constraints": 1191, "incompatible rank equations": 1, "incompatible span bounds": 5936, "nonpositive mixed upper": 2, "nonpositive rank upper": 6, "placements": 7000, "reinstates original scalar equality": 1055}, "index": 6999} +{"add": 33744, "counts": {"ADD bridges": 500, "duplicate price constraints": 1211, "incompatible rank equations": 1, "incompatible span bounds": 6145, "nonpositive mixed upper": 2, "nonpositive rank upper": 7, "placements": 7250, "reinstates original scalar equality": 1095}, "index": 7249} +{"add": 33832, "counts": {"ADD bridges": 514, "duplicate price constraints": 1221, "incompatible rank equations": 1, "incompatible span bounds": 6274, "nonpositive mixed upper": 2, "nonpositive rank upper": 7, "placements": 7500, "reinstates original scalar equality": 1216}, "index": 7499} +{"add": 33927, "counts": {"ADD bridges": 530, "duplicate price constraints": 1228, "incompatible rank equations": 1, "incompatible span bounds": 6402, "nonpositive mixed upper": 2, "nonpositive rank upper": 7, "placements": 7750, "reinstates original scalar equality": 1338}, "index": 7749} +{"add": 34021, "counts": {"ADD bridges": 543, "duplicate price constraints": 1263, "incompatible rank equations": 1, "incompatible span bounds": 6539, "nonpositive mixed upper": 2, "nonpositive rank upper": 7, "placements": 8000, "reinstates original scalar equality": 1451}, "index": 7999} +{"add": 34317, "counts": {"ADD bridges": 562, "duplicate price constraints": 1270, "incompatible rank equations": 1, "incompatible span bounds": 6670, "nonpositive mixed upper": 2, "nonpositive rank upper": 11, "placements": 8250, "reinstates original scalar equality": 1566}, "index": 8249} +{"add": 35192, "counts": {"ADD bridges": 583, "duplicate price constraints": 1318, "incompatible rank equations": 1, "incompatible span bounds": 6907, "nonpositive mixed upper": 2, "nonpositive rank upper": 12, "placements": 8500, "reinstates original scalar equality": 1578}, "index": 8499} +{"add": 35516, "counts": {"ADD bridges": 608, "duplicate price constraints": 1364, "incompatible rank equations": 1, "incompatible span bounds": 7140, "nonpositive mixed upper": 2, "nonpositive rank upper": 12, "placements": 8750, "reinstates original scalar equality": 1595}, "index": 8749} +{"add": 35857, "counts": {"ADD bridges": 631, "duplicate price constraints": 1465, "incompatible rank equations": 3, "incompatible span bounds": 7365, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 9000, "reinstates original scalar equality": 1613}, "index": 8999} +{"add": 36010, "counts": {"ADD bridges": 646, "duplicate price constraints": 1542, "incompatible rank equations": 3, "incompatible span bounds": 7613, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 9250, "reinstates original scalar equality": 1615}, "index": 9249} +{"add": 36208, "counts": {"ADD bridges": 658, "duplicate price constraints": 1635, "incompatible rank equations": 3, "incompatible span bounds": 7863, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 9500, "reinstates original scalar equality": 1615}, "index": 9499} +{"add": 36304, "counts": {"ADD bridges": 662, "duplicate price constraints": 1764, "incompatible rank equations": 3, "incompatible span bounds": 8113, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 9750, "reinstates original scalar equality": 1615}, "index": 9749} +{"add": 36608, "counts": {"ADD bridges": 675, "duplicate price constraints": 1872, "incompatible rank equations": 3, "incompatible span bounds": 8363, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 10000, "reinstates original scalar equality": 1615}, "index": 9999} +{"add": 36973, "counts": {"ADD bridges": 696, "duplicate price constraints": 1935, "incompatible rank equations": 3, "incompatible span bounds": 8608, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 10250, "reinstates original scalar equality": 1620}, "index": 10249} +{"add": 37112, "counts": {"ADD bridges": 723, "duplicate price constraints": 1946, "incompatible rank equations": 3, "incompatible span bounds": 8846, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 10500, "reinstates original scalar equality": 1632}, "index": 10499} +{"add": 37126, "counts": {"ADD bridges": 725, "duplicate price constraints": 2030, "incompatible rank equations": 3, "incompatible span bounds": 9087, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 10750, "reinstates original scalar equality": 1641}, "index": 10749} +{"add": 37141, "counts": {"ADD bridges": 731, "duplicate price constraints": 2078, "incompatible rank equations": 3, "incompatible span bounds": 9337, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 11000, "reinstates original scalar equality": 1641}, "index": 10999} +{"add": 37172, "counts": {"ADD bridges": 743, "duplicate price constraints": 2106, "incompatible rank equations": 3, "incompatible span bounds": 9587, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 11250, "reinstates original scalar equality": 1641}, "index": 11249} +{"add": 37188, "counts": {"ADD bridges": 748, "duplicate price constraints": 2135, "incompatible rank equations": 3, "incompatible span bounds": 9818, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 11500, "reinstates original scalar equality": 1660}, "index": 11499} +{"add": 37188, "counts": {"ADD bridges": 748, "duplicate price constraints": 2268, "incompatible rank equations": 3, "incompatible span bounds": 10068, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 11750, "reinstates original scalar equality": 1660}, "index": 11749} +{"add": 37210, "counts": {"ADD bridges": 754, "duplicate price constraints": 2325, "incompatible rank equations": 3, "incompatible span bounds": 10292, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 12000, "reinstates original scalar equality": 1686}, "index": 11999} +{"add": 37355, "counts": {"ADD bridges": 765, "duplicate price constraints": 2382, "incompatible rank equations": 3, "incompatible span bounds": 10527, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 12250, "reinstates original scalar equality": 1701}, "index": 12249} +{"add": 37376, "counts": {"ADD bridges": 774, "duplicate price constraints": 2429, "incompatible rank equations": 3, "incompatible span bounds": 10777, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 12500, "reinstates original scalar equality": 1701}, "index": 12499} +{"add": 37383, "counts": {"ADD bridges": 777, "duplicate price constraints": 2540, "incompatible rank equations": 3, "incompatible span bounds": 11027, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 12750, "reinstates original scalar equality": 1701}, "index": 12749} +{"add": 37386, "counts": {"ADD bridges": 778, "duplicate price constraints": 2649, "incompatible rank equations": 3, "incompatible span bounds": 11277, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 13000, "reinstates original scalar equality": 1701}, "index": 12999} +{"add": 37394, "counts": {"ADD bridges": 781, "duplicate price constraints": 2726, "incompatible rank equations": 3, "incompatible span bounds": 11527, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 13250, "reinstates original scalar equality": 1701}, "index": 13249} +{"add": 37409, "counts": {"ADD bridges": 786, "duplicate price constraints": 2728, "incompatible rank equations": 3, "incompatible span bounds": 11777, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 13500, "reinstates original scalar equality": 1701}, "index": 13499} +{"add": 37418, "counts": {"ADD bridges": 789, "duplicate price constraints": 2759, "incompatible rank equations": 3, "incompatible span bounds": 12022, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 13750, "reinstates original scalar equality": 1706}, "index": 13749} +{"add": 37418, "counts": {"ADD bridges": 789, "duplicate price constraints": 2836, "incompatible rank equations": 3, "incompatible span bounds": 12272, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 14000, "reinstates original scalar equality": 1706}, "index": 13999} +{"add": 37431, "counts": {"ADD bridges": 794, "duplicate price constraints": 2900, "incompatible rank equations": 3, "incompatible span bounds": 12512, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 14250, "reinstates original scalar equality": 1716}, "index": 14249} +{"add": 37448, "counts": {"ADD bridges": 801, "duplicate price constraints": 3002, "incompatible rank equations": 3, "incompatible span bounds": 12758, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 14500, "reinstates original scalar equality": 1720}, "index": 14499} +{"add": 37472, "counts": {"ADD bridges": 811, "duplicate price constraints": 3057, "incompatible rank equations": 3, "incompatible span bounds": 13008, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 14750, "reinstates original scalar equality": 1720}, "index": 14749} +{"add": 37475, "counts": {"ADD bridges": 812, "duplicate price constraints": 3189, "incompatible rank equations": 3, "incompatible span bounds": 13258, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 15000, "reinstates original scalar equality": 1720}, "index": 14999} +{"add": 37493, "counts": {"ADD bridges": 819, "duplicate price constraints": 3191, "incompatible rank equations": 3, "incompatible span bounds": 13487, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 15250, "reinstates original scalar equality": 1741}, "index": 15249} +{"add": 37512, "counts": {"ADD bridges": 830, "duplicate price constraints": 3249, "incompatible rank equations": 3, "incompatible span bounds": 13711, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 15500, "reinstates original scalar equality": 1767}, "index": 15499} +{"add": 37529, "counts": {"ADD bridges": 836, "duplicate price constraints": 3308, "incompatible rank equations": 3, "incompatible span bounds": 13938, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 15750, "reinstates original scalar equality": 1790}, "index": 15749} +{"add": 37547, "counts": {"ADD bridges": 842, "duplicate price constraints": 3348, "incompatible rank equations": 3, "incompatible span bounds": 14170, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 16000, "reinstates original scalar equality": 1808}, "index": 15999} +{"add": 37560, "counts": {"ADD bridges": 850, "duplicate price constraints": 3382, "incompatible rank equations": 3, "incompatible span bounds": 14384, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 16250, "reinstates original scalar equality": 1844}, "index": 16249} +{"add": 37583, "counts": {"ADD bridges": 858, "duplicate price constraints": 3432, "incompatible rank equations": 3, "incompatible span bounds": 14612, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 16500, "reinstates original scalar equality": 1866}, "index": 16499} +{"add": 37599, "counts": {"ADD bridges": 865, "duplicate price constraints": 3499, "incompatible rank equations": 3, "incompatible span bounds": 14857, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 16750, "reinstates original scalar equality": 1871}, "index": 16749} +{"add": 37618, "counts": {"ADD bridges": 868, "duplicate price constraints": 3583, "incompatible rank equations": 3, "incompatible span bounds": 15107, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 17000, "reinstates original scalar equality": 1871}, "index": 16999} +{"add": 37618, "counts": {"ADD bridges": 868, "duplicate price constraints": 3672, "incompatible rank equations": 3, "incompatible span bounds": 15357, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 17250, "reinstates original scalar equality": 1871}, "index": 17249} +{"add": 37618, "counts": {"ADD bridges": 868, "duplicate price constraints": 3754, "incompatible rank equations": 3, "incompatible span bounds": 15605, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 17500, "reinstates original scalar equality": 1873}, "index": 17499} +{"add": 37621, "counts": {"ADD bridges": 869, "duplicate price constraints": 3806, "incompatible rank equations": 3, "incompatible span bounds": 15852, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 17750, "reinstates original scalar equality": 1876}, "index": 17749} +{"add": 37627, "counts": {"ADD bridges": 870, "duplicate price constraints": 3883, "incompatible rank equations": 3, "incompatible span bounds": 16097, "nonpositive mixed upper": 4, "nonpositive rank upper": 15, "placements": 18000, "reinstates original scalar equality": 1881}, "index": 17999} +{"add": 37714, "counts": {"ADD bridges": 883, "duplicate price constraints": 3946, "incompatible rank equations": 3, "incompatible span bounds": 16342, "nonpositive mixed upper": 4, "nonpositive rank upper": 17, "placements": 18250, "reinstates original scalar equality": 1884}, "index": 18249} +{"add": 37844, "counts": {"ADD bridges": 886, "duplicate price constraints": 4018, "incompatible rank equations": 3, "incompatible span bounds": 16592, "nonpositive mixed upper": 4, "nonpositive rank upper": 17, "placements": 18500, "reinstates original scalar equality": 1884}, "index": 18499} +{"add": 37900, "counts": {"ADD bridges": 892, "duplicate price constraints": 4152, "incompatible rank equations": 3, "incompatible span bounds": 16816, "nonpositive mixed upper": 4, "nonpositive rank upper": 17, "placements": 18750, "reinstates original scalar equality": 1910}, "index": 18749} +{"add": 37961, "counts": {"ADD bridges": 900, "duplicate price constraints": 4250, "incompatible rank equations": 3, "incompatible span bounds": 17062, "nonpositive mixed upper": 4, "nonpositive rank upper": 17, "placements": 19000, "reinstates original scalar equality": 1914}, "index": 18999} +{"add": 37988, "counts": {"ADD bridges": 905, "duplicate price constraints": 4318, "incompatible rank equations": 3, "incompatible span bounds": 17311, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 19250, "reinstates original scalar equality": 1914}, "index": 19249} +{"add": 38058, "counts": {"ADD bridges": 909, "duplicate price constraints": 4415, "incompatible rank equations": 3, "incompatible span bounds": 17539, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 19500, "reinstates original scalar equality": 1936}, "index": 19499} +{"add": 38094, "counts": {"ADD bridges": 917, "duplicate price constraints": 4455, "incompatible rank equations": 3, "incompatible span bounds": 17744, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 19750, "reinstates original scalar equality": 1981}, "index": 19749} +{"add": 38115, "counts": {"ADD bridges": 925, "duplicate price constraints": 4508, "incompatible rank equations": 3, "incompatible span bounds": 17929, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 20000, "reinstates original scalar equality": 2046}, "index": 19999} +{"add": 38124, "counts": {"ADD bridges": 929, "duplicate price constraints": 4548, "incompatible rank equations": 3, "incompatible span bounds": 18128, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 20250, "reinstates original scalar equality": 2097}, "index": 20249} +{"add": 38141, "counts": {"ADD bridges": 934, "duplicate price constraints": 4616, "incompatible rank equations": 3, "incompatible span bounds": 18324, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 20500, "reinstates original scalar equality": 2151}, "index": 20499} +{"add": 38237, "counts": {"ADD bridges": 940, "duplicate price constraints": 4717, "incompatible rank equations": 3, "incompatible span bounds": 18564, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 20750, "reinstates original scalar equality": 2161}, "index": 20749} +{"add": 38261, "counts": {"ADD bridges": 950, "duplicate price constraints": 4754, "incompatible rank equations": 3, "incompatible span bounds": 18781, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 21000, "reinstates original scalar equality": 2194}, "index": 20999} +{"add": 38276, "counts": {"ADD bridges": 953, "duplicate price constraints": 4855, "incompatible rank equations": 3, "incompatible span bounds": 19019, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 21250, "reinstates original scalar equality": 2206}, "index": 21249} +{"add": 38304, "counts": {"ADD bridges": 961, "duplicate price constraints": 4952, "incompatible rank equations": 3, "incompatible span bounds": 19258, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 21500, "reinstates original scalar equality": 2217}, "index": 21499} +{"add": 38309, "counts": {"ADD bridges": 963, "duplicate price constraints": 5054, "incompatible rank equations": 3, "incompatible span bounds": 19463, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 21750, "reinstates original scalar equality": 2262}, "index": 21749} +{"add": 38316, "counts": {"ADD bridges": 966, "duplicate price constraints": 5196, "incompatible rank equations": 3, "incompatible span bounds": 19706, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 22000, "reinstates original scalar equality": 2269}, "index": 21999} +{"add": 38357, "counts": {"ADD bridges": 975, "duplicate price constraints": 5223, "incompatible rank equations": 3, "incompatible span bounds": 19910, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 22250, "reinstates original scalar equality": 2315}, "index": 22249} +{"add": 38390, "counts": {"ADD bridges": 980, "duplicate price constraints": 5232, "incompatible rank equations": 3, "incompatible span bounds": 20118, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 22500, "reinstates original scalar equality": 2357}, "index": 22499} +{"add": 38395, "counts": {"ADD bridges": 982, "duplicate price constraints": 5365, "incompatible rank equations": 3, "incompatible span bounds": 20367, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 22750, "reinstates original scalar equality": 2358}, "index": 22749} +{"add": 38418, "counts": {"ADD bridges": 991, "duplicate price constraints": 5400, "incompatible rank equations": 3, "incompatible span bounds": 20611, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 23000, "reinstates original scalar equality": 2364}, "index": 22999} +{"add": 38430, "counts": {"ADD bridges": 997, "duplicate price constraints": 5486, "incompatible rank equations": 3, "incompatible span bounds": 20861, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 23250, "reinstates original scalar equality": 2364}, "index": 23249} +{"add": 38439, "counts": {"ADD bridges": 1001, "duplicate price constraints": 5617, "incompatible rank equations": 3, "incompatible span bounds": 21111, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 23500, "reinstates original scalar equality": 2364}, "index": 23499} +{"add": 38471, "counts": {"ADD bridges": 1010, "duplicate price constraints": 5642, "incompatible rank equations": 3, "incompatible span bounds": 21320, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 23750, "reinstates original scalar equality": 2405}, "index": 23749} +{"add": 38477, "counts": {"ADD bridges": 1012, "duplicate price constraints": 5745, "incompatible rank equations": 3, "incompatible span bounds": 21570, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 24000, "reinstates original scalar equality": 2405}, "index": 23999} +{"add": 38499, "counts": {"ADD bridges": 1019, "duplicate price constraints": 5772, "incompatible rank equations": 3, "incompatible span bounds": 21799, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 24250, "reinstates original scalar equality": 2426}, "index": 24249} +{"add": 38532, "counts": {"ADD bridges": 1024, "duplicate price constraints": 5843, "incompatible rank equations": 3, "incompatible span bounds": 22038, "nonpositive mixed upper": 4, "nonpositive rank upper": 18, "placements": 24500, "reinstates original scalar equality": 2437}, "index": 24499} +{"add": 38555, "counts": {"ADD bridges": 1030, "duplicate price constraints": 5907, "incompatible rank equations": 3, "incompatible span bounds": 22227, "nonpositive mixed upper": 4, "nonpositive rank upper": 19, "placements": 24750, "reinstates original scalar equality": 2497}, "index": 24749} +{"add": 38576, "counts": {"ADD bridges": 1037, "duplicate price constraints": 5956, "incompatible rank equations": 3, "incompatible span bounds": 22460, "nonpositive mixed upper": 4, "nonpositive rank upper": 19, "placements": 25000, "reinstates original scalar equality": 2514}, "index": 24999} +{"add": 38604, "counts": {"ADD bridges": 1041, "duplicate price constraints": 6055, "incompatible rank equations": 3, "incompatible span bounds": 22706, "nonpositive mixed upper": 4, "nonpositive rank upper": 19, "placements": 25250, "reinstates original scalar equality": 2518}, "index": 25249} +{"add": 38609, "counts": {"ADD bridges": 1043, "duplicate price constraints": 6184, "incompatible rank equations": 3, "incompatible span bounds": 22946, "nonpositive mixed upper": 4, "nonpositive rank upper": 19, "placements": 25500, "reinstates original scalar equality": 2528}, "index": 25499} +{"add": 38632, "counts": {"ADD bridges": 1050, "duplicate price constraints": 6239, "incompatible rank equations": 3, "incompatible span bounds": 23179, "nonpositive mixed upper": 4, "nonpositive rank upper": 19, "placements": 25750, "reinstates original scalar equality": 2545}, "index": 25749} +{"add": 38796, "counts": {"ADD bridges": 1060, "duplicate price constraints": 6261, "incompatible rank equations": 3, "incompatible span bounds": 23400, "nonpositive mixed upper": 4, "nonpositive rank upper": 19, "placements": 26000, "reinstates original scalar equality": 2574}, "index": 25999} +{"add": 38838, "counts": {"ADD bridges": 1066, "duplicate price constraints": 6334, "incompatible rank equations": 3, "incompatible span bounds": 23620, "nonpositive mixed upper": 4, "nonpositive rank upper": 19, "placements": 26250, "reinstates original scalar equality": 2604}, "index": 26249} +{"add": 38908, "counts": {"ADD bridges": 1074, "duplicate price constraints": 6381, "incompatible rank equations": 3, "incompatible span bounds": 23853, "nonpositive mixed upper": 4, "nonpositive rank upper": 19, "placements": 26500, "reinstates original scalar equality": 2621}, "index": 26499} +{"add": 38980, "counts": {"ADD bridges": 1077, "duplicate price constraints": 6503, "incompatible rank equations": 3, "incompatible span bounds": 24095, "nonpositive mixed upper": 4, "nonpositive rank upper": 20, "placements": 26750, "reinstates original scalar equality": 2628}, "index": 26749} +{"add": 38991, "counts": {"ADD bridges": 1081, "duplicate price constraints": 6592, "incompatible rank equations": 3, "incompatible span bounds": 24324, "nonpositive mixed upper": 4, "nonpositive rank upper": 20, "placements": 27000, "reinstates original scalar equality": 2649}, "index": 26999} +{"add": 38994, "counts": {"ADD bridges": 1082, "duplicate price constraints": 6727, "incompatible rank equations": 3, "incompatible span bounds": 24568, "nonpositive mixed upper": 4, "nonpositive rank upper": 20, "placements": 27250, "reinstates original scalar equality": 2655}, "index": 27249} +{"add": 39023, "counts": {"ADD bridges": 1088, "duplicate price constraints": 6813, "incompatible rank equations": 3, "incompatible span bounds": 24792, "nonpositive mixed upper": 4, "nonpositive rank upper": 20, "placements": 27500, "reinstates original scalar equality": 2681}, "index": 27499} +{"add": 39026, "counts": {"ADD bridges": 1089, "duplicate price constraints": 6945, "incompatible rank equations": 3, "incompatible span bounds": 25042, "nonpositive mixed upper": 4, "nonpositive rank upper": 20, "placements": 27750, "reinstates original scalar equality": 2681}, "index": 27749} +{"add": 39050, "counts": {"ADD bridges": 1091, "duplicate price constraints": 7093, "incompatible rank equations": 3, "incompatible span bounds": 25290, "nonpositive mixed upper": 4, "nonpositive rank upper": 20, "placements": 28000, "reinstates original scalar equality": 2683}, "index": 27999} +{"add": 39061, "counts": {"ADD bridges": 1094, "duplicate price constraints": 7186, "incompatible rank equations": 3, "incompatible span bounds": 25520, "nonpositive mixed upper": 4, "nonpositive rank upper": 20, "placements": 28250, "reinstates original scalar equality": 2703}, "index": 28249} +{"add": 39194, "counts": {"ADD bridges": 1102, "duplicate price constraints": 7247, "incompatible rank equations": 3, "incompatible span bounds": 25751, "nonpositive mixed upper": 4, "nonpositive rank upper": 20, "placements": 28500, "reinstates original scalar equality": 2722}, "index": 28499} +{"add": 39206, "counts": {"ADD bridges": 1107, "duplicate price constraints": 7307, "incompatible rank equations": 3, "incompatible span bounds": 25937, "nonpositive mixed upper": 4, "nonpositive rank upper": 20, "placements": 28750, "reinstates original scalar equality": 2786}, "index": 28749} +{"add": 39222, "counts": {"ADD bridges": 1108, "duplicate price constraints": 7436, "incompatible rank equations": 3, "incompatible span bounds": 26187, "nonpositive mixed upper": 4, "nonpositive rank upper": 20, "placements": 29000, "reinstates original scalar equality": 2786}, "index": 28999} +{"add": 39239, "counts": {"ADD bridges": 1113, "duplicate price constraints": 7487, "incompatible rank equations": 3, "incompatible span bounds": 26435, "nonpositive mixed upper": 4, "nonpositive rank upper": 20, "placements": 29250, "reinstates original scalar equality": 2788}, "index": 29249} +{"add": 39242, "counts": {"ADD bridges": 1114, "duplicate price constraints": 7594, "incompatible rank equations": 3, "incompatible span bounds": 26685, "nonpositive mixed upper": 4, "nonpositive rank upper": 20, "placements": 29500, "reinstates original scalar equality": 2788}, "index": 29499} +{"add": 39286, "counts": {"ADD bridges": 1118, "duplicate price constraints": 7659, "incompatible rank equations": 3, "incompatible span bounds": 26918, "nonpositive mixed upper": 4, "nonpositive rank upper": 20, "placements": 29750, "reinstates original scalar equality": 2805}, "index": 29749} +{"add": 39326, "counts": {"ADD bridges": 1128, "duplicate price constraints": 7697, "incompatible rank equations": 3, "incompatible span bounds": 27151, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 30000, "reinstates original scalar equality": 2821}, "index": 29999} +{"add": 39346, "counts": {"ADD bridges": 1135, "duplicate price constraints": 7747, "incompatible rank equations": 3, "incompatible span bounds": 27383, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 30250, "reinstates original scalar equality": 2839}, "index": 30249} +{"add": 39367, "counts": {"ADD bridges": 1141, "duplicate price constraints": 7837, "incompatible rank equations": 3, "incompatible span bounds": 27633, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 30500, "reinstates original scalar equality": 2839}, "index": 30499} +{"add": 39376, "counts": {"ADD bridges": 1145, "duplicate price constraints": 7918, "incompatible rank equations": 3, "incompatible span bounds": 27883, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 30750, "reinstates original scalar equality": 2839}, "index": 30749} +{"add": 39381, "counts": {"ADD bridges": 1147, "duplicate price constraints": 8061, "incompatible rank equations": 3, "incompatible span bounds": 28133, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 31000, "reinstates original scalar equality": 2839}, "index": 30999} +{"add": 39388, "counts": {"ADD bridges": 1150, "duplicate price constraints": 8152, "incompatible rank equations": 3, "incompatible span bounds": 28370, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 31250, "reinstates original scalar equality": 2852}, "index": 31249} +{"add": 39399, "counts": {"ADD bridges": 1154, "duplicate price constraints": 8221, "incompatible rank equations": 3, "incompatible span bounds": 28609, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 31500, "reinstates original scalar equality": 2863}, "index": 31499} +{"add": 39399, "counts": {"ADD bridges": 1154, "duplicate price constraints": 8283, "incompatible rank equations": 3, "incompatible span bounds": 28859, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 31750, "reinstates original scalar equality": 2863}, "index": 31749} +{"add": 39413, "counts": {"ADD bridges": 1159, "duplicate price constraints": 8327, "incompatible rank equations": 3, "incompatible span bounds": 29088, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 32000, "reinstates original scalar equality": 2884}, "index": 31999} +{"add": 39421, "counts": {"ADD bridges": 1162, "duplicate price constraints": 8371, "incompatible rank equations": 3, "incompatible span bounds": 29322, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 32250, "reinstates original scalar equality": 2900}, "index": 32249} +{"add": 39421, "counts": {"ADD bridges": 1162, "duplicate price constraints": 8486, "incompatible rank equations": 3, "incompatible span bounds": 29572, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 32500, "reinstates original scalar equality": 2900}, "index": 32499} +{"add": 39435, "counts": {"ADD bridges": 1167, "duplicate price constraints": 8545, "incompatible rank equations": 3, "incompatible span bounds": 29811, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 32750, "reinstates original scalar equality": 2911}, "index": 32749} +{"add": 39447, "counts": {"ADD bridges": 1171, "duplicate price constraints": 8645, "incompatible rank equations": 3, "incompatible span bounds": 30052, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 33000, "reinstates original scalar equality": 2920}, "index": 32999} +{"add": 39452, "counts": {"ADD bridges": 1173, "duplicate price constraints": 8725, "incompatible rank equations": 3, "incompatible span bounds": 30302, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 33250, "reinstates original scalar equality": 2920}, "index": 33249} +{"add": 39454, "counts": {"ADD bridges": 1174, "duplicate price constraints": 8831, "incompatible rank equations": 3, "incompatible span bounds": 30547, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 33500, "reinstates original scalar equality": 2925}, "index": 33499} +{"add": 39466, "counts": {"ADD bridges": 1176, "duplicate price constraints": 8986, "incompatible rank equations": 3, "incompatible span bounds": 30791, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 33750, "reinstates original scalar equality": 2931}, "index": 33749} +{"add": 39485, "counts": {"ADD bridges": 1183, "duplicate price constraints": 9059, "incompatible rank equations": 3, "incompatible span bounds": 31016, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 34000, "reinstates original scalar equality": 2956}, "index": 33999} +{"add": 39495, "counts": {"ADD bridges": 1187, "duplicate price constraints": 9183, "incompatible rank equations": 3, "incompatible span bounds": 31252, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 34250, "reinstates original scalar equality": 2970}, "index": 34249} +{"add": 39501, "counts": {"ADD bridges": 1189, "duplicate price constraints": 9326, "incompatible rank equations": 3, "incompatible span bounds": 31496, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 34500, "reinstates original scalar equality": 2976}, "index": 34499} +{"add": 39517, "counts": {"ADD bridges": 1194, "duplicate price constraints": 9339, "incompatible rank equations": 3, "incompatible span bounds": 31741, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 34750, "reinstates original scalar equality": 2981}, "index": 34749} +{"add": 39523, "counts": {"ADD bridges": 1196, "duplicate price constraints": 9444, "incompatible rank equations": 3, "incompatible span bounds": 31991, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 35000, "reinstates original scalar equality": 2981}, "index": 34999} +{"add": 39535, "counts": {"ADD bridges": 1199, "duplicate price constraints": 9522, "incompatible rank equations": 3, "incompatible span bounds": 32236, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 35250, "reinstates original scalar equality": 2986}, "index": 35249} +{"add": 39552, "counts": {"ADD bridges": 1205, "duplicate price constraints": 9572, "incompatible rank equations": 3, "incompatible span bounds": 32469, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 35500, "reinstates original scalar equality": 3003}, "index": 35499} +{"add": 39552, "counts": {"ADD bridges": 1205, "duplicate price constraints": 9717, "incompatible rank equations": 3, "incompatible span bounds": 32719, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 35750, "reinstates original scalar equality": 3003}, "index": 35749} +{"add": 39562, "counts": {"ADD bridges": 1208, "duplicate price constraints": 9842, "incompatible rank equations": 3, "incompatible span bounds": 32967, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 36000, "reinstates original scalar equality": 3005}, "index": 35999} +{"add": 39569, "counts": {"ADD bridges": 1211, "duplicate price constraints": 9966, "incompatible rank equations": 3, "incompatible span bounds": 33217, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 36250, "reinstates original scalar equality": 3005}, "index": 36249} +{"add": 39644, "counts": {"ADD bridges": 1213, "duplicate price constraints": 10101, "incompatible rank equations": 3, "incompatible span bounds": 33467, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 36500, "reinstates original scalar equality": 3005}, "index": 36499} +{"add": 39649, "counts": {"ADD bridges": 1214, "duplicate price constraints": 10198, "incompatible rank equations": 3, "incompatible span bounds": 33717, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 36750, "reinstates original scalar equality": 3005}, "index": 36749} +{"add": 39652, "counts": {"ADD bridges": 1215, "duplicate price constraints": 10300, "incompatible rank equations": 3, "incompatible span bounds": 33967, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 37000, "reinstates original scalar equality": 3005}, "index": 36999} +{"add": 39664, "counts": {"ADD bridges": 1219, "duplicate price constraints": 10322, "incompatible rank equations": 3, "incompatible span bounds": 34217, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 37250, "reinstates original scalar equality": 3005}, "index": 37249} +{"add": 39682, "counts": {"ADD bridges": 1225, "duplicate price constraints": 10340, "incompatible rank equations": 3, "incompatible span bounds": 34462, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 37500, "reinstates original scalar equality": 3010}, "index": 37499} +{"add": 39682, "counts": {"ADD bridges": 1225, "duplicate price constraints": 10432, "incompatible rank equations": 3, "incompatible span bounds": 34712, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 37750, "reinstates original scalar equality": 3010}, "index": 37749} +{"add": 39682, "counts": {"ADD bridges": 1225, "duplicate price constraints": 10530, "incompatible rank equations": 3, "incompatible span bounds": 34962, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 38000, "reinstates original scalar equality": 3010}, "index": 37999} +{"add": 39695, "counts": {"ADD bridges": 1228, "duplicate price constraints": 10625, "incompatible rank equations": 3, "incompatible span bounds": 35202, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 38250, "reinstates original scalar equality": 3020}, "index": 38249} +{"add": 39716, "counts": {"ADD bridges": 1234, "duplicate price constraints": 10639, "incompatible rank equations": 3, "incompatible span bounds": 35442, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 38500, "reinstates original scalar equality": 3030}, "index": 38499} +{"add": 39716, "counts": {"ADD bridges": 1234, "duplicate price constraints": 10787, "incompatible rank equations": 3, "incompatible span bounds": 35692, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 38750, "reinstates original scalar equality": 3030}, "index": 38749} +{"add": 39733, "counts": {"ADD bridges": 1238, "duplicate price constraints": 10864, "incompatible rank equations": 3, "incompatible span bounds": 35931, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 39000, "reinstates original scalar equality": 3041}, "index": 38999} +{"add": 39752, "counts": {"ADD bridges": 1245, "duplicate price constraints": 10940, "incompatible rank equations": 3, "incompatible span bounds": 36159, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 39250, "reinstates original scalar equality": 3063}, "index": 39249} +{"add": 39762, "counts": {"ADD bridges": 1250, "duplicate price constraints": 11000, "incompatible rank equations": 3, "incompatible span bounds": 36375, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 39500, "reinstates original scalar equality": 3097}, "index": 39499} +{"add": 39765, "counts": {"ADD bridges": 1251, "duplicate price constraints": 11139, "incompatible rank equations": 3, "incompatible span bounds": 36619, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 39750, "reinstates original scalar equality": 3103}, "index": 39749} +{"add": 39789, "counts": {"ADD bridges": 1258, "duplicate price constraints": 11162, "incompatible rank equations": 3, "incompatible span bounds": 36844, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 40000, "reinstates original scalar equality": 3128}, "index": 39999} +{"add": 39800, "counts": {"ADD bridges": 1262, "duplicate price constraints": 11219, "incompatible rank equations": 3, "incompatible span bounds": 37086, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 40250, "reinstates original scalar equality": 3136}, "index": 40249} +{"add": 39804, "counts": {"ADD bridges": 1264, "duplicate price constraints": 11305, "incompatible rank equations": 3, "incompatible span bounds": 37315, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 40500, "reinstates original scalar equality": 3157}, "index": 40499} +{"add": 39818, "counts": {"ADD bridges": 1268, "duplicate price constraints": 11356, "incompatible rank equations": 3, "incompatible span bounds": 37557, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 40750, "reinstates original scalar equality": 3165}, "index": 40749} +{"add": 39818, "counts": {"ADD bridges": 1268, "duplicate price constraints": 11463, "incompatible rank equations": 3, "incompatible span bounds": 37807, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 41000, "reinstates original scalar equality": 3165}, "index": 40999} +{"add": 39825, "counts": {"ADD bridges": 1270, "duplicate price constraints": 11531, "incompatible rank equations": 3, "incompatible span bounds": 38036, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 41250, "reinstates original scalar equality": 3186}, "index": 41249} +{"add": 39840, "counts": {"ADD bridges": 1274, "duplicate price constraints": 11609, "incompatible rank equations": 3, "incompatible span bounds": 38282, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 41500, "reinstates original scalar equality": 3190}, "index": 41499} +{"add": 39840, "counts": {"ADD bridges": 1274, "duplicate price constraints": 11709, "incompatible rank equations": 3, "incompatible span bounds": 38532, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 41750, "reinstates original scalar equality": 3190}, "index": 41749} +{"add": 39857, "counts": {"ADD bridges": 1280, "duplicate price constraints": 11768, "incompatible rank equations": 3, "incompatible span bounds": 38767, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 42000, "reinstates original scalar equality": 3205}, "index": 41999} +{"add": 39894, "counts": {"ADD bridges": 1290, "duplicate price constraints": 11837, "incompatible rank equations": 3, "incompatible span bounds": 38997, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 42250, "reinstates original scalar equality": 3225}, "index": 42249} +{"add": 39905, "counts": {"ADD bridges": 1295, "duplicate price constraints": 11882, "incompatible rank equations": 3, "incompatible span bounds": 39196, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 42500, "reinstates original scalar equality": 3276}, "index": 42499} +{"add": 39918, "counts": {"ADD bridges": 1300, "duplicate price constraints": 11989, "incompatible rank equations": 3, "incompatible span bounds": 39443, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 42750, "reinstates original scalar equality": 3279}, "index": 42749} +{"add": 39918, "counts": {"ADD bridges": 1300, "duplicate price constraints": 12057, "incompatible rank equations": 3, "incompatible span bounds": 39693, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 43000, "reinstates original scalar equality": 3279}, "index": 42999} +{"add": 39918, "counts": {"ADD bridges": 1300, "duplicate price constraints": 12186, "incompatible rank equations": 3, "incompatible span bounds": 39943, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 43250, "reinstates original scalar equality": 3279}, "index": 43249} +{"add": 39946, "counts": {"ADD bridges": 1306, "duplicate price constraints": 12233, "incompatible rank equations": 3, "incompatible span bounds": 40127, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 43500, "reinstates original scalar equality": 3345}, "index": 43499} +{"add": 40002, "counts": {"ADD bridges": 1315, "duplicate price constraints": 12289, "incompatible rank equations": 3, "incompatible span bounds": 40359, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 43750, "reinstates original scalar equality": 3363}, "index": 43749} +{"add": 40010, "counts": {"ADD bridges": 1318, "duplicate price constraints": 12313, "incompatible rank equations": 3, "incompatible span bounds": 40584, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 44000, "reinstates original scalar equality": 3388}, "index": 43999} +{"add": 40020, "counts": {"ADD bridges": 1321, "duplicate price constraints": 12370, "incompatible rank equations": 3, "incompatible span bounds": 40805, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 44250, "reinstates original scalar equality": 3417}, "index": 44249} +{"add": 40042, "counts": {"ADD bridges": 1327, "duplicate price constraints": 12398, "incompatible rank equations": 3, "incompatible span bounds": 40976, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 44500, "reinstates original scalar equality": 3496}, "index": 44499} +{"add": 40042, "counts": {"ADD bridges": 1327, "duplicate price constraints": 12538, "incompatible rank equations": 3, "incompatible span bounds": 41226, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 44750, "reinstates original scalar equality": 3496}, "index": 44749} +{"add": 40054, "counts": {"ADD bridges": 1329, "duplicate price constraints": 12581, "incompatible rank equations": 3, "incompatible span bounds": 41434, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 45000, "reinstates original scalar equality": 3538}, "index": 44999} +{"add": 40073, "counts": {"ADD bridges": 1335, "duplicate price constraints": 12606, "incompatible rank equations": 3, "incompatible span bounds": 41659, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 45250, "reinstates original scalar equality": 3563}, "index": 45249} +{"add": 40084, "counts": {"ADD bridges": 1338, "duplicate price constraints": 12697, "incompatible rank equations": 3, "incompatible span bounds": 41898, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 45500, "reinstates original scalar equality": 3574}, "index": 45499} +{"add": 40084, "counts": {"ADD bridges": 1338, "duplicate price constraints": 12848, "incompatible rank equations": 3, "incompatible span bounds": 42148, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 45750, "reinstates original scalar equality": 3574}, "index": 45749} +{"add": 40084, "counts": {"ADD bridges": 1338, "duplicate price constraints": 12907, "incompatible rank equations": 3, "incompatible span bounds": 42398, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 46000, "reinstates original scalar equality": 3574}, "index": 45999} +{"add": 40121, "counts": {"ADD bridges": 1347, "duplicate price constraints": 12962, "incompatible rank equations": 3, "incompatible span bounds": 42640, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 46250, "reinstates original scalar equality": 3582}, "index": 46249} +{"add": 40124, "counts": {"ADD bridges": 1348, "duplicate price constraints": 13035, "incompatible rank equations": 3, "incompatible span bounds": 42879, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 46500, "reinstates original scalar equality": 3593}, "index": 46499} +{"add": 40130, "counts": {"ADD bridges": 1351, "duplicate price constraints": 13106, "incompatible rank equations": 3, "incompatible span bounds": 43101, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 46750, "reinstates original scalar equality": 3621}, "index": 46749} +{"add": 40150, "counts": {"ADD bridges": 1359, "duplicate price constraints": 13119, "incompatible rank equations": 3, "incompatible span bounds": 43292, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 47000, "reinstates original scalar equality": 3680}, "index": 46999} +{"add": 40172, "counts": {"ADD bridges": 1364, "duplicate price constraints": 13178, "incompatible rank equations": 3, "incompatible span bounds": 43519, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 47250, "reinstates original scalar equality": 3703}, "index": 47249} +{"add": 40179, "counts": {"ADD bridges": 1366, "duplicate price constraints": 13257, "incompatible rank equations": 3, "incompatible span bounds": 43745, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 47500, "reinstates original scalar equality": 3727}, "index": 47499} +{"add": 40243, "counts": {"ADD bridges": 1374, "duplicate price constraints": 13281, "incompatible rank equations": 3, "incompatible span bounds": 43918, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 47750, "reinstates original scalar equality": 3804}, "index": 47749} +{"add": 40280, "counts": {"ADD bridges": 1381, "duplicate price constraints": 13320, "incompatible rank equations": 3, "incompatible span bounds": 44063, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 48000, "reinstates original scalar equality": 3909}, "index": 47999} +{"add": 40298, "counts": {"ADD bridges": 1387, "duplicate price constraints": 13382, "incompatible rank equations": 3, "incompatible span bounds": 44230, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 48250, "reinstates original scalar equality": 3992}, "index": 48249} +{"add": 40316, "counts": {"ADD bridges": 1394, "duplicate price constraints": 13390, "incompatible rank equations": 3, "incompatible span bounds": 44420, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 48500, "reinstates original scalar equality": 4052}, "index": 48499} +{"add": 40332, "counts": {"ADD bridges": 1398, "duplicate price constraints": 13447, "incompatible rank equations": 3, "incompatible span bounds": 44652, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 48750, "reinstates original scalar equality": 4070}, "index": 48749} +{"add": 40344, "counts": {"ADD bridges": 1401, "duplicate price constraints": 13484, "incompatible rank equations": 3, "incompatible span bounds": 44870, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 49000, "reinstates original scalar equality": 4102}, "index": 48999} +{"add": 40365, "counts": {"ADD bridges": 1407, "duplicate price constraints": 13510, "incompatible rank equations": 3, "incompatible span bounds": 45082, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 49250, "reinstates original scalar equality": 4140}, "index": 49249} +{"add": 40397, "counts": {"ADD bridges": 1414, "duplicate price constraints": 13566, "incompatible rank equations": 3, "incompatible span bounds": 45295, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 49500, "reinstates original scalar equality": 4177}, "index": 49499} +{"add": 40406, "counts": {"ADD bridges": 1417, "duplicate price constraints": 13669, "incompatible rank equations": 3, "incompatible span bounds": 45534, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 49750, "reinstates original scalar equality": 4188}, "index": 49749} +{"add": 40471, "counts": {"ADD bridges": 1428, "duplicate price constraints": 13689, "incompatible rank equations": 3, "incompatible span bounds": 45721, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 50000, "reinstates original scalar equality": 4251}, "index": 49999} +{"add": 40490, "counts": {"ADD bridges": 1432, "duplicate price constraints": 13781, "incompatible rank equations": 3, "incompatible span bounds": 45930, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 50250, "reinstates original scalar equality": 4292}, "index": 50249} +{"add": 40524, "counts": {"ADD bridges": 1440, "duplicate price constraints": 13877, "incompatible rank equations": 3, "incompatible span bounds": 46141, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 50500, "reinstates original scalar equality": 4331}, "index": 50499} +{"add": 40572, "counts": {"ADD bridges": 1449, "duplicate price constraints": 13921, "incompatible rank equations": 3, "incompatible span bounds": 46342, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 50750, "reinstates original scalar equality": 4380}, "index": 50749} +{"add": 40605, "counts": {"ADD bridges": 1458, "duplicate price constraints": 13963, "incompatible rank equations": 3, "incompatible span bounds": 46547, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 51000, "reinstates original scalar equality": 4425}, "index": 50999} +{"add": 40615, "counts": {"ADD bridges": 1459, "duplicate price constraints": 14093, "incompatible rank equations": 3, "incompatible span bounds": 46794, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 51250, "reinstates original scalar equality": 4428}, "index": 51249} +{"add": 40626, "counts": {"ADD bridges": 1463, "duplicate price constraints": 14168, "incompatible rank equations": 3, "incompatible span bounds": 47044, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 51500, "reinstates original scalar equality": 4428}, "index": 51499} +{"add": 40681, "counts": {"ADD bridges": 1472, "duplicate price constraints": 14186, "incompatible rank equations": 3, "incompatible span bounds": 47249, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 51750, "reinstates original scalar equality": 4473}, "index": 51749} +{"add": 40728, "counts": {"ADD bridges": 1481, "duplicate price constraints": 14210, "incompatible rank equations": 3, "incompatible span bounds": 47464, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 52000, "reinstates original scalar equality": 4508}, "index": 51999} +{"add": 40745, "counts": {"ADD bridges": 1486, "duplicate price constraints": 14219, "incompatible rank equations": 3, "incompatible span bounds": 47666, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 52250, "reinstates original scalar equality": 4556}, "index": 52249} +{"add": 40792, "counts": {"ADD bridges": 1494, "duplicate price constraints": 14262, "incompatible rank equations": 3, "incompatible span bounds": 47889, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 52500, "reinstates original scalar equality": 4583}, "index": 52499} +{"add": 40808, "counts": {"ADD bridges": 1501, "duplicate price constraints": 14300, "incompatible rank equations": 3, "incompatible span bounds": 48091, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 52750, "reinstates original scalar equality": 4631}, "index": 52749} +{"add": 40863, "counts": {"ADD bridges": 1508, "duplicate price constraints": 14324, "incompatible rank equations": 3, "incompatible span bounds": 48325, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 53000, "reinstates original scalar equality": 4647}, "index": 52999} +{"add": 40882, "counts": {"ADD bridges": 1512, "duplicate price constraints": 14391, "incompatible rank equations": 3, "incompatible span bounds": 48561, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 53250, "reinstates original scalar equality": 4661}, "index": 53249} +{"add": 40921, "counts": {"ADD bridges": 1520, "duplicate price constraints": 14410, "incompatible rank equations": 3, "incompatible span bounds": 48780, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 53500, "reinstates original scalar equality": 4692}, "index": 53499} +{"add": 40930, "counts": {"ADD bridges": 1522, "duplicate price constraints": 14495, "incompatible rank equations": 3, "incompatible span bounds": 49029, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 53750, "reinstates original scalar equality": 4693}, "index": 53749} +{"add": 40950, "counts": {"ADD bridges": 1528, "duplicate price constraints": 14559, "incompatible rank equations": 3, "incompatible span bounds": 49262, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 54000, "reinstates original scalar equality": 4710}, "index": 53999} +{"add": 40979, "counts": {"ADD bridges": 1535, "duplicate price constraints": 14645, "incompatible rank equations": 3, "incompatible span bounds": 49503, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 54250, "reinstates original scalar equality": 4719}, "index": 54249} +{"add": 41011, "counts": {"ADD bridges": 1544, "duplicate price constraints": 14678, "incompatible rank equations": 3, "incompatible span bounds": 49736, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 54500, "reinstates original scalar equality": 4736}, "index": 54499} +{"add": 41046, "counts": {"ADD bridges": 1551, "duplicate price constraints": 14757, "incompatible rank equations": 3, "incompatible span bounds": 49967, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 54750, "reinstates original scalar equality": 4755}, "index": 54749} +{"add": 41052, "counts": {"ADD bridges": 1553, "duplicate price constraints": 14832, "incompatible rank equations": 3, "incompatible span bounds": 50210, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 55000, "reinstates original scalar equality": 4762}, "index": 54999} +{"add": 41089, "counts": {"ADD bridges": 1559, "duplicate price constraints": 14929, "incompatible rank equations": 3, "incompatible span bounds": 50430, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 55250, "reinstates original scalar equality": 4792}, "index": 55249} +{"add": 41095, "counts": {"ADD bridges": 1561, "duplicate price constraints": 15022, "incompatible rank equations": 3, "incompatible span bounds": 50660, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 55500, "reinstates original scalar equality": 4812}, "index": 55499} +{"add": 41109, "counts": {"ADD bridges": 1565, "duplicate price constraints": 15087, "incompatible rank equations": 3, "incompatible span bounds": 50876, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 55750, "reinstates original scalar equality": 4846}, "index": 55749} +{"add": 41153, "counts": {"ADD bridges": 1573, "duplicate price constraints": 15120, "incompatible rank equations": 3, "incompatible span bounds": 51058, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 56000, "reinstates original scalar equality": 4914}, "index": 55999} +{"add": 41189, "counts": {"ADD bridges": 1580, "duplicate price constraints": 15170, "incompatible rank equations": 3, "incompatible span bounds": 51300, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 56250, "reinstates original scalar equality": 4922}, "index": 56249} +{"add": 41192, "counts": {"ADD bridges": 1581, "duplicate price constraints": 15277, "incompatible rank equations": 3, "incompatible span bounds": 51518, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 56500, "reinstates original scalar equality": 4954}, "index": 56499} +{"add": 41220, "counts": {"ADD bridges": 1586, "duplicate price constraints": 15362, "incompatible rank equations": 3, "incompatible span bounds": 51747, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 56750, "reinstates original scalar equality": 4975}, "index": 56749} +{"add": 41255, "counts": {"ADD bridges": 1591, "duplicate price constraints": 15420, "incompatible rank equations": 3, "incompatible span bounds": 51969, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 57000, "reinstates original scalar equality": 5003}, "index": 56999} +{"add": 41255, "counts": {"ADD bridges": 1591, "duplicate price constraints": 15487, "incompatible rank equations": 3, "incompatible span bounds": 52219, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 57250, "reinstates original scalar equality": 5003}, "index": 57249} +{"add": 41262, "counts": {"ADD bridges": 1592, "duplicate price constraints": 15613, "incompatible rank equations": 3, "incompatible span bounds": 52464, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 57500, "reinstates original scalar equality": 5008}, "index": 57499} +{"add": 41308, "counts": {"ADD bridges": 1603, "duplicate price constraints": 15633, "incompatible rank equations": 3, "incompatible span bounds": 52648, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 57750, "reinstates original scalar equality": 5074}, "index": 57749} +{"add": 41349, "counts": {"ADD bridges": 1610, "duplicate price constraints": 15679, "incompatible rank equations": 3, "incompatible span bounds": 52859, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 58000, "reinstates original scalar equality": 5113}, "index": 57999} +{"add": 41349, "counts": {"ADD bridges": 1610, "duplicate price constraints": 15771, "incompatible rank equations": 3, "incompatible span bounds": 53109, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 58250, "reinstates original scalar equality": 5113}, "index": 58249} +{"add": 41357, "counts": {"ADD bridges": 1612, "duplicate price constraints": 15880, "incompatible rank equations": 3, "incompatible span bounds": 53350, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 58500, "reinstates original scalar equality": 5122}, "index": 58499} +{"add": 41378, "counts": {"ADD bridges": 1618, "duplicate price constraints": 15926, "incompatible rank equations": 3, "incompatible span bounds": 53571, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 58750, "reinstates original scalar equality": 5151}, "index": 58749} +{"add": 41416, "counts": {"ADD bridges": 1628, "duplicate price constraints": 15961, "incompatible rank equations": 3, "incompatible span bounds": 53766, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 59000, "reinstates original scalar equality": 5206}, "index": 58999} +{"add": 41485, "counts": {"ADD bridges": 1637, "duplicate price constraints": 16036, "incompatible rank equations": 3, "incompatible span bounds": 53983, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 59250, "reinstates original scalar equality": 5239}, "index": 59249} +{"add": 41500, "counts": {"ADD bridges": 1643, "duplicate price constraints": 16069, "incompatible rank equations": 3, "incompatible span bounds": 54194, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 59500, "reinstates original scalar equality": 5278}, "index": 59499} +{"add": 41601, "counts": {"ADD bridges": 1648, "duplicate price constraints": 16151, "incompatible rank equations": 3, "incompatible span bounds": 54431, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 59750, "reinstates original scalar equality": 5291}, "index": 59749} +{"add": 41639, "counts": {"ADD bridges": 1655, "duplicate price constraints": 16173, "incompatible rank equations": 3, "incompatible span bounds": 54663, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 60000, "reinstates original scalar equality": 5309}, "index": 59999} +{"add": 41653, "counts": {"ADD bridges": 1660, "duplicate price constraints": 16241, "incompatible rank equations": 3, "incompatible span bounds": 54892, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 60250, "reinstates original scalar equality": 5330}, "index": 60249} +{"add": 41666, "counts": {"ADD bridges": 1665, "duplicate price constraints": 16321, "incompatible rank equations": 3, "incompatible span bounds": 55139, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 60500, "reinstates original scalar equality": 5333}, "index": 60499} +{"add": 41674, "counts": {"ADD bridges": 1667, "duplicate price constraints": 16424, "incompatible rank equations": 3, "incompatible span bounds": 55389, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 60750, "reinstates original scalar equality": 5333}, "index": 60749} +{"add": 41679, "counts": {"ADD bridges": 1668, "duplicate price constraints": 16547, "incompatible rank equations": 3, "incompatible span bounds": 55634, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 61000, "reinstates original scalar equality": 5338}, "index": 60999} +{"add": 41691, "counts": {"ADD bridges": 1672, "duplicate price constraints": 16608, "incompatible rank equations": 3, "incompatible span bounds": 55883, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 61250, "reinstates original scalar equality": 5339}, "index": 61249} +{"add": 41719, "counts": {"ADD bridges": 1678, "duplicate price constraints": 16680, "incompatible rank equations": 3, "incompatible span bounds": 56119, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 61500, "reinstates original scalar equality": 5353}, "index": 61499} +{"add": 41733, "counts": {"ADD bridges": 1683, "duplicate price constraints": 16819, "incompatible rank equations": 3, "incompatible span bounds": 56361, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 61750, "reinstates original scalar equality": 5361}, "index": 61749} +{"add": 41785, "counts": {"ADD bridges": 1701, "duplicate price constraints": 16909, "incompatible rank equations": 3, "incompatible span bounds": 56604, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 62000, "reinstates original scalar equality": 5368}, "index": 61999} +{"add": 41785, "counts": {"ADD bridges": 1701, "duplicate price constraints": 17005, "incompatible rank equations": 3, "incompatible span bounds": 56854, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 62250, "reinstates original scalar equality": 5368}, "index": 62249} +{"add": 41790, "counts": {"ADD bridges": 1703, "duplicate price constraints": 17032, "incompatible rank equations": 3, "incompatible span bounds": 57104, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 62500, "reinstates original scalar equality": 5368}, "index": 62499} +{"add": 41801, "counts": {"ADD bridges": 1706, "duplicate price constraints": 17066, "incompatible rank equations": 3, "incompatible span bounds": 57350, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 62750, "reinstates original scalar equality": 5372}, "index": 62749} +{"add": 41830, "counts": {"ADD bridges": 1713, "duplicate price constraints": 17085, "incompatible rank equations": 3, "incompatible span bounds": 57595, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 63000, "reinstates original scalar equality": 5377}, "index": 62999} +{"add": 41854, "counts": {"ADD bridges": 1721, "duplicate price constraints": 17091, "incompatible rank equations": 3, "incompatible span bounds": 57842, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 63250, "reinstates original scalar equality": 5380}, "index": 63249} +{"add": 41890, "counts": {"ADD bridges": 1731, "duplicate price constraints": 17118, "incompatible rank equations": 3, "incompatible span bounds": 58074, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 63500, "reinstates original scalar equality": 5398}, "index": 63499} +{"add": 41922, "counts": {"ADD bridges": 1740, "duplicate price constraints": 17144, "incompatible rank equations": 3, "incompatible span bounds": 58297, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 63750, "reinstates original scalar equality": 5425}, "index": 63749} +{"add": 41937, "counts": {"ADD bridges": 1745, "duplicate price constraints": 17187, "incompatible rank equations": 3, "incompatible span bounds": 58501, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 64000, "reinstates original scalar equality": 5471}, "index": 63999} +{"add": 41960, "counts": {"ADD bridges": 1749, "duplicate price constraints": 17292, "incompatible rank equations": 3, "incompatible span bounds": 58751, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 64250, "reinstates original scalar equality": 5471}, "index": 64249} +{"add": 41963, "counts": {"ADD bridges": 1750, "duplicate price constraints": 17411, "incompatible rank equations": 3, "incompatible span bounds": 58991, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 64500, "reinstates original scalar equality": 5481}, "index": 64499} +{"add": 41989, "counts": {"ADD bridges": 1757, "duplicate price constraints": 17472, "incompatible rank equations": 3, "incompatible span bounds": 59228, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 64750, "reinstates original scalar equality": 5494}, "index": 64749} +{"add": 42016, "counts": {"ADD bridges": 1765, "duplicate price constraints": 17520, "incompatible rank equations": 3, "incompatible span bounds": 59461, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 65000, "reinstates original scalar equality": 5511}, "index": 64999} +{"add": 42049, "counts": {"ADD bridges": 1773, "duplicate price constraints": 17553, "incompatible rank equations": 3, "incompatible span bounds": 59705, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 65250, "reinstates original scalar equality": 5517}, "index": 65249} +{"add": 42100, "counts": {"ADD bridges": 1784, "duplicate price constraints": 17624, "incompatible rank equations": 3, "incompatible span bounds": 59921, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 65500, "reinstates original scalar equality": 5551}, "index": 65499} +{"add": 42185, "counts": {"ADD bridges": 1799, "duplicate price constraints": 17661, "incompatible rank equations": 3, "incompatible span bounds": 60131, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 65750, "reinstates original scalar equality": 5591}, "index": 65749} +{"add": 42214, "counts": {"ADD bridges": 1802, "duplicate price constraints": 17757, "incompatible rank equations": 3, "incompatible span bounds": 60379, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 66000, "reinstates original scalar equality": 5593}, "index": 65999} +{"add": 42214, "counts": {"ADD bridges": 1802, "duplicate price constraints": 17859, "incompatible rank equations": 3, "incompatible span bounds": 60629, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 66250, "reinstates original scalar equality": 5593}, "index": 66249} +{"add": 42214, "counts": {"ADD bridges": 1802, "duplicate price constraints": 17944, "incompatible rank equations": 3, "incompatible span bounds": 60879, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 66500, "reinstates original scalar equality": 5593}, "index": 66499} +{"add": 42263, "counts": {"ADD bridges": 1813, "duplicate price constraints": 18003, "incompatible rank equations": 3, "incompatible span bounds": 61098, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 66750, "reinstates original scalar equality": 5624}, "index": 66749} +{"add": 42303, "counts": {"ADD bridges": 1823, "duplicate price constraints": 18059, "incompatible rank equations": 3, "incompatible span bounds": 61327, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 67000, "reinstates original scalar equality": 5645}, "index": 66999} +{"add": 42303, "counts": {"ADD bridges": 1823, "duplicate price constraints": 18155, "incompatible rank equations": 3, "incompatible span bounds": 61577, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 67250, "reinstates original scalar equality": 5645}, "index": 67249} +{"add": 42303, "counts": {"ADD bridges": 1823, "duplicate price constraints": 18265, "incompatible rank equations": 3, "incompatible span bounds": 61827, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 67500, "reinstates original scalar equality": 5645}, "index": 67499} +{"add": 42322, "counts": {"ADD bridges": 1826, "duplicate price constraints": 18354, "incompatible rank equations": 3, "incompatible span bounds": 62072, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 67750, "reinstates original scalar equality": 5650}, "index": 67749} +{"add": 42322, "counts": {"ADD bridges": 1826, "duplicate price constraints": 18458, "incompatible rank equations": 3, "incompatible span bounds": 62322, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 68000, "reinstates original scalar equality": 5650}, "index": 67999} +{"add": 42322, "counts": {"ADD bridges": 1826, "duplicate price constraints": 18559, "incompatible rank equations": 3, "incompatible span bounds": 62572, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 68250, "reinstates original scalar equality": 5650}, "index": 68249} +{"add": 42328, "counts": {"ADD bridges": 1829, "duplicate price constraints": 18665, "incompatible rank equations": 3, "incompatible span bounds": 62808, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 68500, "reinstates original scalar equality": 5664}, "index": 68499} +{"add": 42374, "counts": {"ADD bridges": 1841, "duplicate price constraints": 18703, "incompatible rank equations": 3, "incompatible span bounds": 63013, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 68750, "reinstates original scalar equality": 5709}, "index": 68749} +{"add": 42400, "counts": {"ADD bridges": 1849, "duplicate price constraints": 18733, "incompatible rank equations": 3, "incompatible span bounds": 63215, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 69000, "reinstates original scalar equality": 5757}, "index": 68999} +{"add": 42456, "counts": {"ADD bridges": 1858, "duplicate price constraints": 18760, "incompatible rank equations": 3, "incompatible span bounds": 63420, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 69250, "reinstates original scalar equality": 5802}, "index": 69249} +{"add": 42487, "counts": {"ADD bridges": 1868, "duplicate price constraints": 18768, "incompatible rank equations": 3, "incompatible span bounds": 63616, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 69500, "reinstates original scalar equality": 5856}, "index": 69499} +{"add": 42519, "counts": {"ADD bridges": 1875, "duplicate price constraints": 18824, "incompatible rank equations": 3, "incompatible span bounds": 63830, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 69750, "reinstates original scalar equality": 5892}, "index": 69749} +{"add": 42547, "counts": {"ADD bridges": 1881, "duplicate price constraints": 18864, "incompatible rank equations": 3, "incompatible span bounds": 64059, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 70000, "reinstates original scalar equality": 5913}, "index": 69999} +{"add": 42646, "counts": {"ADD bridges": 1891, "duplicate price constraints": 18933, "incompatible rank equations": 3, "incompatible span bounds": 64275, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 70250, "reinstates original scalar equality": 5947}, "index": 70249} +{"add": 42748, "counts": {"ADD bridges": 1902, "duplicate price constraints": 19004, "incompatible rank equations": 3, "incompatible span bounds": 64487, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 70500, "reinstates original scalar equality": 5985}, "index": 70499} +{"add": 42923, "counts": {"ADD bridges": 1921, "duplicate price constraints": 19048, "incompatible rank equations": 3, "incompatible span bounds": 64715, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 70750, "reinstates original scalar equality": 6007}, "index": 70749} +{"add": 43100, "counts": {"ADD bridges": 1938, "duplicate price constraints": 19078, "incompatible rank equations": 3, "incompatible span bounds": 64911, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 71000, "reinstates original scalar equality": 6061}, "index": 70999} +{"add": 43283, "counts": {"ADD bridges": 1957, "duplicate price constraints": 19097, "incompatible rank equations": 3, "incompatible span bounds": 65085, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 71250, "reinstates original scalar equality": 6137}, "index": 71249} +{"add": 43390, "counts": {"ADD bridges": 1979, "duplicate price constraints": 19106, "incompatible rank equations": 3, "incompatible span bounds": 65267, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 71500, "reinstates original scalar equality": 6205}, "index": 71499} +{"add": 43591, "counts": {"ADD bridges": 2000, "duplicate price constraints": 19134, "incompatible rank equations": 3, "incompatible span bounds": 65496, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 71750, "reinstates original scalar equality": 6226}, "index": 71749} +{"add": 43656, "counts": {"ADD bridges": 2014, "duplicate price constraints": 19193, "incompatible rank equations": 3, "incompatible span bounds": 65665, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 72000, "reinstates original scalar equality": 6307}, "index": 71999} +{"add": 43812, "counts": {"ADD bridges": 2033, "duplicate price constraints": 19211, "incompatible rank equations": 3, "incompatible span bounds": 65862, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 72250, "reinstates original scalar equality": 6360}, "index": 72249} +{"add": 44133, "counts": {"ADD bridges": 2060, "duplicate price constraints": 19217, "incompatible rank equations": 3, "incompatible span bounds": 66095, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 72500, "reinstates original scalar equality": 6377}, "index": 72499} +{"add": 44256, "counts": {"ADD bridges": 2087, "duplicate price constraints": 19243, "incompatible rank equations": 3, "incompatible span bounds": 66307, "nonpositive mixed upper": 4, "nonpositive rank upper": 21, "placements": 72750, "reinstates original scalar equality": 6415}, "index": 72749} +{"add": 44301, "counts": {"ADD bridges": 2100, "duplicate price constraints": 19294, "incompatible rank equations": 3, "incompatible span bounds": 66518, "nonpositive mixed upper": 4, "nonpositive rank upper": 24, "placements": 73000, "reinstates original scalar equality": 6451}, "index": 72999} +{"add": 44458, "counts": {"ADD bridges": 2134, "duplicate price constraints": 19300, "incompatible rank equations": 3, "incompatible span bounds": 66748, "nonpositive mixed upper": 4, "nonpositive rank upper": 24, "placements": 73250, "reinstates original scalar equality": 6471}, "index": 73249} diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/OVERLAP.json b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/OVERLAP.json new file mode 100644 index 0000000000..9bc8133be9 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/OVERLAP.json @@ -0,0 +1,74 @@ +{ + "baseline_P": { + "1": 68265, + "2": 14518, + "3": 14059, + "4": 3808, + "5": 5797, + "6": 272, + "7": 187, + "8": 758, + "9": 32, + "16": 416, + "24": 416, + "32": 416, + "40": 416, + "48": 416, + "56": 416, + "64": 208 + }, + "baseline_T": { + "1": 272, + "2": 340, + "3": 799, + "4": 3706, + "5": 1258, + "6": 731, + "7": 306, + "8": 595, + "9": 10973, + "17": 416, + "25": 416, + "33": 416, + "41": 416, + "49": 416, + "57": 416, + "65": 416, + "73": 208, + "137": 208 + }, + "blockers": { + "ADD+ADD": 8 + }, + "caller": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "cap": null, + "counts": { + "ADD bridges": 7, + "incompatible span bounds": 5, + "nonpositive rank upper": 3, + "placements": 8 + }, + "dependencies": { + "kappa-coupled-boundaries-20261110T0908Z/replay/research/shared-wire-stop-fusion/audit_price.py": "585295aa55846e594c705941002c36ea0b9b6cbfe3a49e6594e1d2e70751b704", + "kappa-interior-20261110T0823Z/evidence/closure.py": "e6b3cdfcb42f4cd22d46e1783a537d147b092634f4cf089e91344e29f0214cf1", + "kappa-scalar-two-20261110T2315Z/evidence/overlap/overlap.py": "3b6a8ee19b7f44e7b968f778b35e447525da93da153ebdedd5e5bb4c247a3949", + "kappa-scalar-two-20261110T2315Z/evidence/planner/two_blockers.py": "152b0f6c80e0f7a47b078fb35bd91b35fbfd63fa2d2da17cf66ded05f51846f0", + "kappa-two-blockers-20261110T1036Z/evidence/two_blockers.py": "a5b5855f3016a77d991fb53536cae388221a7cf9529fe58c376141bc7656e0c3", + "kappa-typea-birth2-20261110T2258Z/evidence/scalar/port.py": "d05dcb28604a9bc6305ec90428f5f7fe875333031ecf1705229b0c4605dc3032" + }, + "hits": [], + "mode": "overlap", + "pending": null, + "planner_stats": { + "overlapping plans": 7, + "placements": 8 + }, + "result": "e4ae0c1cfa809cd780a6e22ce32528e7ca4b4e57f90abf91ad0bde97d30446ab", + "source_bracket": [ + "36424084968693169933964196366183/10000000000000000000000000000000000", + "4553010621086646241745524545773/1250000000000000000000000000000000" + ], + "start": 0, + "unresolved": 0, + "word": "9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a" +} diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/price_two.py b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/price_two.py new file mode 100644 index 0000000000..6151bd7cde --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-scalar-two-20261110T2315Z/evidence/price/price_two.py @@ -0,0 +1,204 @@ +"""Price #7131 scalar edits across two stationary blockers.""" +from collections import Counter +from fractions import Fraction +from hashlib import sha256 +import argparse +import json +from pathlib import Path + +from importlib.util import module_from_spec, spec_from_file_location + + +ROOT = Path(__file__).resolve().parents[3] +PRIOR = ROOT / "kappa-typea-birth2-20261110T2258Z/evidence/scalar/port.py" +LEGACY = ROOT / "kappa-two-blockers-20261110T1036Z/evidence/two_blockers.py" +PLANNER = Path(__file__).resolve().parents[1] / "planner/two_blockers.py" +FREE_TERM = PLANNER.with_name("free_term.py") +ALL_TERMS = PLANNER.with_name("all_terms.py") +OVERLAP = PLANNER.parents[1] / "overlap/overlap.py" + + +def module(name, path): + spec = spec_from_file_location(name, path) + value = module_from_spec(spec) + spec.loader.exec_module(value) + return value + + +def key_for(belong, visits): + return tuple(sorted({tuple(sorted((belong(a), belong(b)))) + for a, b in visits if belong(a) != belong(b)})) + + +def equality_groups(keys): + groups = [] + for a, b in keys: + group = {a, b} + keep = [] + for existing in groups: + if existing & group: + group.update(existing) + else: + keep.append(existing) + groups = [*keep, group] + return groups + + +def pricing_rows(word, raw, scalar, bridges, legacy, mode, statistics): + if mode == "joint-cut": + planner = module("joint_cut_planner", PLANNER) + for add, blockers, cut, ops, pairs in planner.choices(word, raw, scalar, bridges, statistics): + yield dict(add=add, blockers=blockers, cut=cut, ops=ops, visits=pairs, + direction="later" if blockers[0] > add else "earlier") + return + if mode in ("free-term", "all-terms", "overlap"): + path, entry_point = { + "free-term": (FREE_TERM, "choices_free"), + "all-terms": (ALL_TERMS, "choices_all"), + "overlap": (OVERLAP, "choices_overlap"), + }[mode] + planner = module("separate_cut_planner", path) + choices = getattr(planner, entry_point) + for add, blockers, cut, ops, pairs, cuts in choices(word, raw, scalar, bridges, statistics): + yield dict(add=add, blockers=blockers, cut=cut, ops=ops, visits=pairs, + term_cuts=cuts, direction="later" if blockers[0] > add else "earlier") + return + if mode == "stationary": + yield from legacy.placements(word, raw, scalar, bridges) + elif mode == "reciprocal": + yield from legacy.placements(word, raw, scalar, bridges, allow_recip=True) + elif mode == "slide-correction": + yield from legacy.slide_placements(word, raw, scalar, bridges) + elif mode in ("slide-move", "slide-move-edge"): + yield from legacy.slide_move_placements(word, raw, scalar, bridges, + edge_only=mode == "slide-move-edge") + + +def screen(word, graph, engine, legacy, bracket, journal, mode, start, cap): + raw, _, comp, raw_paid, raw_target, fixed, scalar, original, entry, end, child = legacy.inventory(word, graph) + initial_state = {i: legacy.chart(s) for i, s in enumerate(original) if s is not None} + paid0 = Counter((comp[a], comp[b]) for _, a, b in raw_paid) + old_low, old_high, _ = legacy.bounds(original, paid0, {comp[j] for j in fixed}) + left, right = map(Fraction, bracket) + weights = {r: (engine.raw_margin({r: 1}, right)[0], engine.raw_margin({r: 1}, left)[1]) + for r in range(1, 10)} + tally, blockers, planner_stats = Counter(), Counter(), Counter() + previous, pending, hits = None, None, [] + join = legacy.propagate.__globals__["join"] + + for index, plan in enumerate(pricing_rows(word, raw, scalar, child, legacy, mode, planner_stats)): + if index < start: + continue + if cap is not None and tally["placements"] == cap: + pending = index + break + tally["placements"] += 1 + blockers["+".join(word["program"][j][0] for j in plan["blockers"])] += 1 + add = plan["add"] + if previous != add: + old, new = comp[scalar[add][0]], len(original) + branch = child[add] + split = {j for j, c in enumerate(comp) + if c == old and entry[branch] <= entry[j] < end[branch]} + + def belong(j): + return new if j in split else comp[j] + + assert {belong(j) for j in scalar[add]} == {old, new} + space = [*original, original[old]] + paid = Counter((belong(a), belong(b)) for _, a, b in raw_paid) + target = Counter((belong(a), belong(b)) for a, b in raw_target) + low, high, adjacency = legacy.bounds(space, paid, {belong(j) for j in fixed}) + changed = {old, new} | {j for j in range(len(original)) + if (low[j], high[j]) != (old_low[j], old_high[j])} + state = initial_state | {new: initial_state[old]} + cache = {} + previous = add + tally["ADD bridges"] += 1 + key = key_for(belong, plan["visits"]) + groups = equality_groups(key) + if mode == "all-terms": + key = tuple(sorted((min(g), j) for g in groups for j in g if j != min(g))) + if any({old, new} <= group for group in groups): + status = "reinstates original scalar equality" + elif key in cache: + status = cache[key] + tally["duplicate price constraints"] += 1 + else: + joined = [] + for group in groups: + a = frozenset({0}) + for j in sorted(group): + a = join(a, low[j]) + joined.append((a, set.intersection(*(set(high[j]) for j in group)))) + if any(not lo <= hi for lo, hi in joined): + status, blocks = "incompatible span bounds", [] + else: + status, blocks = legacy.price_box( + space, paid, target, state, low, high, adjacency, changed, key, weights + ) + cache[key] = status + if blocks: + receipt = dict(index=index, status=status, proposal=plan, equalities=key, + old_component=old, new_component=new, + split_visits=[raw[j] for j in sorted(split)], blocks=blocks) + hits.append(receipt) + print(json.dumps(receipt, sort_keys=True), file=journal, flush=True) + tally[status] += 1 + if tally["placements"] % 250 == 0: + print(json.dumps(dict(index=index, add=add, counts=tally), sort_keys=True), + file=journal, flush=True) + return dict(mode=mode, counts=tally, blockers=blockers, planner_stats=planner_stats, + start=start, cap=cap, pending=pending, unresolved=len(hits), hits=hits) + + +def main(word_path, result_path, caller_path, journal_path, mode, start, cap): + assert __debug__ + prior = module("pinned_source", PRIOR) + legacy = module("retained_price", LEGACY) + graph = module("literal_graph", prior.GRAPH) + engine = module("directed_price", prior.PRICE) + word = prior.read(word_path, prior.WORD, True) + source = prior.read(result_path, prior.RESULT) + caller = prior.read(caller_path, prior.CALLER) + paid, target, _ = prior.count_invoice(word, caller, graph) + assert paid == {int(k): v for k, v in source["price"]["after"]["P"].items()} + assert target == {int(k): v for k, v in source["price"]["after"]["T"].items()} + bracket = source["price"]["gate"]["raw_bracket"] + signed = target.copy() + signed.subtract(paid) + assert engine.raw_margin(signed, Fraction(bracket[0]))[0] > 0 + assert engine.raw_margin(signed, Fraction(bracket[1]))[1] < 0 + with journal_path.open("x") as journal: + result = screen(word, graph, engine, legacy, bracket, journal, mode, start, cap) + dependencies = [PRIOR, LEGACY, prior.GRAPH, prior.PRICE] + if mode in ("joint-cut", "free-term", "all-terms"): + dependencies.append(PLANNER) + if mode in ("free-term", "all-terms"): + dependencies.append(FREE_TERM) + if mode == "all-terms": + dependencies.append(ALL_TERMS) + if mode == "overlap": + dependencies.extend((PLANNER, OVERLAP)) + pins = {} + for path in dependencies: + key = path.relative_to(ROOT).as_posix() + if key in pins: + raise ValueError(f"Duplicate dependency key {key}") + pins[key] = sha256(path.read_bytes()).hexdigest() + print(json.dumps(dict(word=prior.WORD, result=prior.RESULT, caller=prior.CALLER, + source_bracket=bracket, baseline_P=paid, baseline_T=target, + dependencies=pins, **result), indent=2, sort_keys=True)) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=__doc__) + for path in ("word_path", "result_path", "caller_path", "journal_path"): + parser.add_argument(path, type=Path) + parser.add_argument("--mode", choices=("joint-cut", "free-term", "all-terms", "overlap", + "stationary", "reciprocal", + "slide-correction", "slide-move", "slide-move-edge"), + default="joint-cut") + parser.add_argument("--start", type=int, default=0) + parser.add_argument("--cap", type=int) + main(**vars(parser.parse_args())) diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-two-blockers-20261110T1036Z/evidence/two_blockers.py b/research/p104-two-blocker-exclusion/vendor/kappa-two-blockers-20261110T1036Z/evidence/two_blockers.py new file mode 100644 index 0000000000..9524c31439 --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-two-blockers-20261110T1036Z/evidence/two_blockers.py @@ -0,0 +1,383 @@ +"""Price stationary two-blocker scalar rewrites with collateral public charts.""" + +from bisect import bisect_left, bisect_right +from collections import Counter, defaultdict +from fractions import Fraction as Q +from hashlib import sha256 +from pathlib import Path +import argparse +import gzip +import json +import sys + +PREVIOUS = Path(__file__).resolve().parents[2] / 'kappa-chronology-pivot-20261110T1021Z' / 'evidence' +sys.path.insert(0, str(PREVIOUS)) +from corrected_contacts import BRACKET, WORD_SHA, bounds, changed_blocks, chart, corrected, inventory, load +from corrected_contacts import propagate, quotient_domain, scalar_history, smooth, solve_equalities, subspace_count, volume + + +def factor(a, blocker, later, public): + result = corrected(a, blocker, later, public, owned_blocker=True) + if result is None: + result = corrected(a, blocker, later, public, gauss=True) + if result is None: + return None + coeff, correction = result + if correction and abs(Q(correction[3])) + 1 >= 2**16: + return None + return coeff, correction + + +def reciprocal(a, blocker): + _, d, s, x, _ = a + if blocker[0] != 'ADD' or blocker[1:3] != [s, d]: + return None + y = Q(blocker[3]) + if not smooth(abs(y.numerator)): + return None + q, r = -1/y, -Q(x)*y*y + if any(abs(v) + 1 >= 2**16 for v in (q, r)): + return None + return -q, ('RECIP', d, s, str(q), str(r)) + + +def plans(event, blockers, seq, later, public, allow_recip): + choices = [(Q(event[3]), [])] + for index in blockers: + b = seq[index] + expanded = [] + for coefficient, corrections in choices: + a = [*event[:3], str(coefficient), event[-1]] + options = [factor(a, b, later, public)] + if allow_recip: + options.append(reciprocal(a, b)) + for option in options: + if option is None: + continue + coeff, correction = option + packet = [] + if correction is not None: + cut = index + int(later or b[0] == 'COPY') + packet.append(dict(blocker=index, cut=cut, spelling=correction)) + expanded.append((coeff, [*corrections, *packet])) + choices = expanded + return [(c, corrections) for c, corrections in choices if abs(c) + 1 < 2**16] + + +def placements(word, raw, scalar, bridges, allow_recip=False, windows=False): + seq = word['program'] + public = word['public'] + reads, writes = scalar_history(word) + history = defaultdict(list) + for i, (role, event, _) in enumerate(raw): + history[role].append((event + 1, i)) + for entries in history.values(): + entries.sort() + far = len(seq) + len(raw) + + def visit(role, cut): + entries = history[role] + return entries[bisect_right(entries, (cut, far)) - 1][1] + + for i, old in scalar.items(): + event = seq[i] + if i not in bridges or event[0] != 'ADD' or max(event[1:3]) >= public: + continue + d, s = event[1:3] + left, right = set(), set() + for indices in (reads[d], writes[s]): + j = bisect_left(indices, i) + assert j == len(indices) or indices[j] != i + left.update(indices[max(0, j - 3):j]) + right.update(indices[j:j + 3]) + for later, nearest in ((False, sorted(left, reverse=True)), (True, sorted(right))): + if len(nearest) < 2: + continue + first, second = nearest[:2] + lo, hi = ((second + 1, nearest[2] if len(nearest) > 2 else len(seq)) if later + else (nearest[2] + 1 if len(nearest) > 2 else 0, second)) + alternatives = plans(event, (first, second), seq, later, public, allow_recip) + if allow_recip: + # The added opposite-pair ADDs are already coframed at their + # blocker, so all spellings here give the same chart problem. + if any(not any(p['spelling'][0] == 'RECIP' for p in c) for _, c in alternatives): + continue + alternatives = alternatives[:1] + for coefficient, corrections in alternatives: + extras = [tuple(visit(r, p['cut']) for r in p['spelling'][1:3]) + for p in corrections if p['spelling'][0] == 'ADD'] + cuts = {lo} + for role in (d, s): + h = history[role] + start = bisect_right(h, (lo, far)) + stop = bisect_right(h, (hi, far)) + cuts.update(k for k, _ in h[start:stop]) + ordered = sorted(cuts) + for j, cut in enumerate(ordered): + pair = visit(d, cut), visit(s, cut) + if pair != old or windows: + row = dict(add=i, blockers=[first, second], cut=cut, coefficient=str(coefficient), + corrections=corrections, visits=(pair, *extras), direction='later' if later else 'earlier') + if windows: + row['last_cut'] = ordered[j + 1] - 1 if j + 1 < len(ordered) else hi + row['stationary_pairs'] = [(visit(d, p), visit(s, p)) for p in ordered] + yield row + + +def slide_placements(word, raw, scalar, bridges): + public = word['public'] + length = len(word['program']) + reads, writes = scalar_history(word) + history = defaultdict(list) + for i, (r, event, _) in enumerate(raw): + history[r].append((event + 1, i)) + for values in history.values(): + values.sort() + far = len(raw) + length + + def at(r, cut): + values = history[r] + return values[bisect_right(values, (cut, far)) - 1][1] + + for use_recip in (False, True): + for row in placements(word, raw, scalar, bridges, use_recip): + packets = row['corrections'] + visits = row['visits'] + index = 0 + for packet in packets: + spell = packet['spelling'] + if spell[0] != 'ADD': + continue + index += 1 + d, s = spell[1:3] + if max(d, s) >= public: + continue + here = packet['cut'] + lo, hi = 0, length + for conflicts in (reads[d], writes[s]): + j = bisect_left(conflicts, here) + if j: + lo = max(lo, conflicts[j - 1] + 1) + if j < len(conflicts): + hi = min(hi, conflicts[j]) + for other in packets: + if other is packet: + continue + cut = other['cut'] + if cut < here: + lo = max(lo, cut + 1) + elif cut > here: + hi = min(hi, cut - 1) + elif other['blocker'] < packet['blocker']: + lo = max(lo, here) + else: + hi = min(hi, here) + assert lo <= here <= hi and visits[index] == (at(d, here), at(s, here)) + cuts = {lo} + for r in (d, s): + values = history[r] + a = bisect_right(values, (lo, far)) + b = bisect_right(values, (hi, far)) + cuts.update(cut for cut, _ in values[a:b]) + for cut in sorted(cuts): + pair = at(d, cut), at(s, cut) + if pair == visits[index]: + continue + yield row | dict(corrections=[p | {'cut': cut} if p is packet else p for p in packets], + visits=(*visits[:index], pair, *visits[index + 1:]), + slid_from=here, slid_blocker=packet['blocker']) + + +def slide_move_placements(word, raw, scalar, bridges, edge_only=False): + sequence = word['program'] + public = word['public'] + history, contacts = defaultdict(list), defaultdict(list) + for k, (r, event, _) in enumerate(raw): + if r < public: + history[r].append((event, k)) + for h in history.values(): + h.sort() + for i, e in enumerate(sequence): + if e[0] in ('ADD', 'COPY', 'SCALE'): + for r in e[1:2] if e[0] == 'SCALE' else e[1:3]: + contacts[r].append(i) + index = {k: j for h in history.values() for j, (_, k) in enumerate(h)} + for use_recip in (False, True): + for row in placements(word, raw, scalar, bridges, use_recip, windows=True): + i = row['add'] + old = row['visits'][0] + seen = set(row.pop('stationary_pairs')) + for side, k in enumerate(old): + role = raw[k][0] + h, j = history[role], index[k] + for move_after in (True, False): + p = j - 1 if move_after else j + 1 + if not 0 <= p < len(h): + continue + move = h[j if move_after else p][0] + cut = row['cut'] if move_after else row['last_cut'] + lo, hi = (move + 1, cut) if move_after else (cut, move) + assert sequence[move][0] == 'MOVE' and lo <= hi + events = contacts[role] + k0 = bisect_left(events, lo) + if k0 < len(events) and events[k0] == i: + k0 += 1 + if k0 < len(events) and events[k0] < hi: + continue + packet_cuts = {packet['cut'] for packet in row['corrections'] + if role in packet['spelling'][1:3]} + if any(lo <= k <= hi for k in packet_cuts) or (hi + 1 in packet_cuts) != edge_only: + continue + pair = (*old[:side], h[p][1], *old[side + 1:]) + if pair in seen or pair == scalar[i]: + continue + yield row | dict(cut=cut, visits=(pair, *row['visits'][1:]), + moved_paid_event=move, move_after=move_after) + + +def price_box(space, paid, target, state, low, high, neighbors, changed, keys, weights): + ordered = sorted(paid, key=lambda e: (state[e[0]][1], state[e[1]][1], e)) + tightened = propagate(low, high, keys, ordered) + if tightened is None: + return 'incompatible span bounds', [] + lo, hi = tightened + adjacency = [s.copy() for s in neighbors] + touched = changed.copy() + for a, b in keys: + adjacency[a].add(b) + adjacency[b].add(a) + touched.update((a, b)) + blocks = changed_blocks(space, low, high, adjacency, target, touched) + answers = [] + for block in blocks: + widths = {i: len(hi[i]).bit_length() - len(lo[i]).bit_length() + 1 for i in block} + if volume({i: range(n) for i, n in widths.items()}, adjacency, 600000) is None: + answers.append(dict(block=block, deferred='rank volume')) + else: + rank = solve_equalities(block, state, lo, hi, paid, target, keys, weights, True) + if rank.get('infeasible'): + return 'incompatible rank equations', [] + answers.append(dict(block=block, rank=rank)) + if any('deferred' in r for r in answers): + return 'unresolved rank volume', answers + if sum(Q(r['rank']['upper']) for r in answers) <= 0: + return 'nonpositive rank upper', [] + for row in answers: + if Q(row['rank']['upper']) <= 0: + continue + block = row['block'] + qs = {i: len(hi[i]).bit_length() - len(lo[i]).bit_length() for i in block} + sizes = {i: sum(subspace_count(d, r) for r in range(d + 1)) for i, d in qs.items()} + if max(qs.values()) > 7 or volume({i: range(n) for i, n in sizes.items()}, adjacency, 900000) is None: + row['deferred'] = 'geometry volume' + else: + domains = {i: quotient_domain(lo[i], hi[i]) for i in block} + exact = solve_equalities(block, state, lo, hi, paid, target, keys, weights, False, domains) + if exact.get('infeasible'): + return 'incompatible exact charts', [] + row['exact'] = exact + upper = sum(Q(r.get('exact', r['rank'])['upper']) for r in answers) + if upper <= 0: + return 'nonpositive mixed upper', [] + return 'positive upper requires exact lift', answers + + +def main(word_path, graph_path, price_path, journal_path, start, cap, + allow_recip=False, slide=False, slide_move=False, slide_edge=False): + raw_word = gzip.decompress(word_path.read_bytes()) + assert sha256(raw_word).hexdigest() == WORD_SHA + word = json.loads(raw_word) + graph = load('literal_graph', graph_path) + engine = load('directed_price', price_path) + raw, _, comp, raw_paid, raw_target, fixed, scalar, original, enter, end, child = inventory(word, graph) + state0 = {i: chart(s) for i, s in enumerate(original) if s is not None} + paid0 = Counter((comp[a], comp[b]) for _, a, b in raw_paid) + lo0, hi0, _ = bounds(original, paid0, {comp[j] for j in fixed}) + left, right = map(Q, BRACKET) + weights = {r: (engine.raw_margin({r: 1}, right)[0], engine.raw_margin({r: 1}, left)[1]) + for r in range(1, 10)} + tally = Counter() + blockers = Counter() + hits = [] + last = None + pending = None + rows = (slide_placements(word, raw, scalar, child) if slide + else placements(word, raw, scalar, child, allow_recip)) + if slide_move or slide_edge: + rows = slide_move_placements(word, raw, scalar, child, slide_edge) + with journal_path.open('x', buffering=1) as journal: + for position, p in enumerate(rows): + if position < start: + continue + if tally['placements'] >= cap: + pending = position + break + tally['placements'] += 1 + blockers['+'.join(word['program'][j][0] for j in p['blockers'])] += 1 + i = p['add'] + if last != i: + old, new = comp[scalar[i][0]], len(original) + branch = child[i] + split = {j for j, c in enumerate(comp) + if c == old and enter[branch] <= enter[j] < end[branch]} + belong = lambda j: new if j in split else comp[j] + space = [*original, original[old]] + paid = Counter((belong(a), belong(b)) for _, a, b in raw_paid) + target = Counter((belong(a), belong(b)) for a, b in raw_target) + low, high, adj = bounds(space, paid, {belong(j) for j in fixed}) + changed = {old, new} | {j for j in range(len(original)) + if (low[j], high[j]) != (lo0[j], hi0[j])} + state = state0 | {new: state0[old]} + cache = {} + last = i + tally['ADD bridges'] += 1 + keys = tuple(sorted({tuple(sorted((belong(a), belong(b)))) for a, b in p['visits'] + if belong(a) != belong(b)})) + connected = {old} + for _ in keys: + for a, b in keys: + if a in connected or b in connected: + connected.update((a, b)) + if new in connected: + status = 'reinstates predecessor equality' + elif keys in cache: + tally['duplicate price constraints'] += 1 + status = cache[keys] + else: + status, answers = price_box(space, paid, target, state, low, high, adj, changed, keys, weights) + cache[keys] = status + if answers: + row = dict(position=position, status=status, proposal=p, keys=keys, + old_component=old, new_component=new, split_visits=[raw[j] for j in sorted(split)], + blocks=answers) + hits.append(row) + print(json.dumps(row, sort_keys=True), file=journal) + tally[status] += 1 + if tally['placements'] % 250 == 0: + print(json.dumps(dict(position=position, add=i, counts=tally), sort_keys=True), file=journal) + result = dict(word=WORD_SHA, start=start, cap=cap, counts=tally, blockers=blockers, + pending=pending, unresolved=len(hits), hits=hits) + if allow_recip: + result['scope'] = 'only added directions with a reciprocal opposite-ADD spelling' + if slide: + result['scope'] = 'one public correction slides without crossing other stationary packet' + if slide_move: + result['scope'] = 'one public paid MOVE slides across new mobile ADD with every other contact fixed' + if slide_edge: + result['scope'] = 'additional paid MOVE slides with packet one cut after both MOVE positions' + print(json.dumps(result, indent=2, sort_keys=True)) + + +if __name__ == '__main__': + assert __debug__ + parser = argparse.ArgumentParser(description=__doc__) + for name in ('word_path', 'graph_path', 'price_path', 'journal_path'): + parser.add_argument(name, type=Path) + parser.add_argument('--start', type=int, default=0) + parser.add_argument('--cap', type=int, default=26000) + modes = parser.add_mutually_exclusive_group() + modes.add_argument('--reciprocal', action='store_true', dest='allow_recip') + modes.add_argument('--slide-correction', action='store_true', dest='slide') + modes.add_argument('--slide-move', action='store_true') + modes.add_argument('--slide-move-edge', action='store_true', dest='slide_edge') + main(**vars(parser.parse_args())) diff --git a/research/p104-two-blocker-exclusion/vendor/kappa-typea-birth2-20261110T2258Z/evidence/scalar/port.py b/research/p104-two-blocker-exclusion/vendor/kappa-typea-birth2-20261110T2258Z/evidence/scalar/port.py new file mode 100644 index 0000000000..406163a66d --- /dev/null +++ b/research/p104-two-blocker-exclusion/vendor/kappa-typea-birth2-20261110T2258Z/evidence/scalar/port.py @@ -0,0 +1,122 @@ +"""Rebase the adjacent one-blocker scalar commutator screen onto exact #7131.""" +from collections import Counter +from fractions import Fraction as Q +import gzip +from hashlib import sha256 +from importlib.util import module_from_spec, spec_from_file_location +import json +from pathlib import Path +import sys + +ROOT = Path(__file__).resolve().parents[3] +WORD = '9557c4682056ab7cc7cda89aa73865bef0e3948cc10b3c3061b0a944af05b96a' +RESULT = 'e4ae0c1cfa809cd780a6e22ce32528e7ca4b4e57f90abf91ad0bde97d30446ab' +CALLER = '255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc' +BASE = ROOT/'kappa-chronology-pivot-20261110T1021Z/evidence/corrected_contacts.py' +GRAPH = ROOT/'kappa-interior-20261110T0823Z/evidence/closure.py' +PRICE = ROOT/'kappa-coupled-boundaries-20261110T0908Z/replay/research/shared-wire-stop-fusion/audit_price.py' + + +def read(path, pin, compressed=False): + payload=path.read_bytes() + if compressed: + payload=gzip.decompress(payload) + assert sha256(payload).hexdigest()==pin + return json.loads(payload) + + +def module(name, path): + spec=spec_from_file_location(name,path) + result=module_from_spec(spec) + spec.loader.exec_module(result) + return result + + +def count_invoice(word, caller, graph): + spaces=[graph.span(f) for f in word['frames']] + dim=[len(f) for f in word['frames']] + public=word['public'] + paid,owned_paid,targets=Counter(),Counter(),Counter() + charts=word['initial']+[None]*word['owned_fields'] + for e in word['program']: + op,r=e[:2] + if op=='MOVE': + a,b,private=e[2:] + assert charts[r]==a and private==(r>=public) + assert spaces[a]=public and charts[r] is None + charts[r]=e[2] + elif op=='CLEAR': + assert r>=public and charts[r]==e[2] + charts[r]=None + else: + assert all(charts[s]==e[-1] for s in (e[1:3] if op in ('ADD','COPY') else e[1:2])) + assert charts==word['final']+[None]*word['owned_fields'] + main=set(word['live'])|{r+112 for r in word['live']}|set(word['hosted']['X2'])|set(word['hosted']['Y2']) + for r,(a,b) in enumerate(zip(word['initial'],word['final'])): + if r not in main: + assert spaces[a]0>engine.raw_margin(signed,hi)[1] + old.WORD_SHA=WORD + old.BRACKET=(str(lo),str(hi)) + propagate=old.propagate + join=propagate.__globals__['join'] + + def reject_disjoint(low,high,equalities,ordered_paid): + if any(not join(low[a],low[b])<=high[a]&high[b] for a,b in equalities): + return None + return propagate(low,high,equalities,ordered_paid) + + old.propagate=reject_disjoint + with journal_path.open('x') as journal: + receipt=old.screen(word,graph,engine,journal,free_correction=mode=="free",cap=cap, + owned_blocker=mode=="owned",gauss=mode=="gauss") + return dict(source_word_sha256=WORD,source_result_sha256=RESULT,source_caller_sha256=CALLER, + source_price_bracket=[str(lo),str(hi)],full_paid=p,full_target=t,source_literal=controls, + replay_sources={p.name:sha256(p.read_bytes()).hexdigest() for p in (BASE,GRAPH,PRICE)}, + tested_placement_cap=cap,**receipt) + + +if __name__=='__main__': + options=sys.argv[5:] + mode=next((x[2:] for x in options if x.startswith('--')), 'adjacent') + cap=next((int(x) for x in options if not x.startswith('--')), None) + assert mode in ('adjacent','free','owned','gauss') + print(json.dumps(run(*map(Path,sys.argv[1:5]),cap,mode),indent=2,sort_keys=True)) diff --git a/research/p104-two-blocker-exclusion/verify.py b/research/p104-two-blocker-exclusion/verify.py new file mode 100644 index 0000000000..4f67244302 --- /dev/null +++ b/research/p104-two-blocker-exclusion/verify.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 +"""Replay the exact two-blocker exclusion and its directed price controls.""" +from hashlib import sha256 +import json +from pathlib import Path +import subprocess +import sys +from tempfile import TemporaryDirectory + + +PACKAGE = Path(__file__).resolve().parent +VENDOR = PACKAGE / "vendor" +ROUND = "kappa-scalar-two-20261110T2315Z" +PLANNER = f"{ROUND}/evidence/planner/two_blockers.py" +LEGACY = "kappa-two-blockers-20261110T1036Z/evidence/two_blockers.py" +SCRIPT_PINS = { + PLANNER: "152b0f6c80e0f7a47b078fb35bd91b35fbfd63fa2d2da17cf66ded05f51846f0", + LEGACY: "a5b5855f3016a77d991fb53536cae388221a7cf9529fe58c376141bc7656e0c3", +} + + +def unique(pairs): + result = {} + for key, value in pairs: + if key in result: + raise ValueError(f"Duplicate dependency path {key}") + result[key] = value + return result + + +def load(path): + return json.loads(path.read_bytes(), object_pairs_hook=unique) + + +def authenticate(): + try: + json.loads('{"script.py":"first","script.py":"second"}', object_pairs_hook=unique) + except ValueError: + pass + else: + raise RuntimeError("Duplicate dependency path control failed") + pins = load(PACKAGE / "DEPENDENCIES.json") + files = {p.relative_to(VENDOR).as_posix(): p for p in VENDOR.rglob("*") if p.is_file()} + assert pins.keys() == files.keys() + for key, path in files.items(): + assert not path.is_symlink() and sha256(path.read_bytes()).hexdigest() == pins[key], key + for key, digest in SCRIPT_PINS.items(): + assert pins[key] == digest + print(f"PASS_PATH_KEYED_PINS {len(pins)}", flush=True) + + +def checked(script, expected, cache, *args): + process = subprocess.run( + [sys.executable, "-E", "-S", "-B", "-X", f"pycache_prefix={cache}", str(script), + *map(str, args)], + cwd=PACKAGE, check=True, stdout=subprocess.PIPE, + ) + assert process.stdout == expected.read_bytes(), expected.relative_to(PACKAGE) + print(f"PASS {expected.relative_to(VENDOR)}", flush=True) + + +def main(): + assert __debug__ and sys.version_info[:2] == (3, 12) + authenticate() + word, result, caller = (VENDOR / "inputs" / name + for name in ("WORD.json.gz", "RESULT.json", "CALLER.json")) + local = VENDOR / ROUND / "evidence" + planner, overlap, price = (local / d for d in ("planner", "overlap", "price")) + with TemporaryDirectory(prefix="p104-two-blocker-") as directory: + scratch = Path(directory) + cache = scratch / "cache" + checked(planner / "validate.py", planner / "PLANNER.json", cache, word) + checked(planner / "validate_all.py", planner / "ALL.json", cache, word) + checked(overlap / "validate.py", overlap / "OVERLAP.json", cache, word) + for mode, name, count in (("all-terms", "ALL", 73461), ("overlap", "OVERLAP", 8)): + journal = scratch / f"{name}.jsonl" + expected = price / f"{name}.json" + checked(price / "price_two.py", expected, cache, word, result, caller, journal, "--mode", mode) + receipt = load(expected) + assert receipt["counts"]["placements"] == count + assert receipt["unresolved"] == 0 and receipt["pending"] is None + for key, digest in SCRIPT_PINS.items(): + assert receipt["dependencies"][key] == digest + if mode == "all-terms": + assert journal.read_bytes() == (price / "ALL.jsonl").read_bytes() + else: + assert not journal.read_bytes() + print("PASS_P104_TWO_BLOCKER_EXCLUSION all_terms=73461 overlap=8 no_verified_gain") + + +if __name__ == "__main__": + main() From 395f3e576400d5b3a40d869901719d60972f8aaa Mon Sep 17 00:00:00 2001 From: ToikY <27568617+ToikY@users.noreply.github.com> Date: Wed, 11 Nov 2026 16:15:22 -0800 Subject: [PATCH 2/2] Reuse the selected CI guide and historical replay repair Reuse bb36fc65ee0b161229169505f4840c436c5ca2b9 and d2e54af81f9dda6487636b79d4964a2385d89b2b from #7257, also verified in #7339. The current guide follows selected #7000/#7001 and the historical audit checks its inspected snapshot. Credit to Rohan Arun and the #7147/#7156 source authors for navigation, unpaidmoon for the audit, Dennis for the historical gate, and Matarener for the pinned snapshot precedent. --- docs/ci-verification.md | 19 +++++- .../historical-selected-replay-gap/README.md | 6 +- .../SOURCES.json | 60 +++++++++--------- .../VERIFY.json | 31 +-------- .../historical-selected-replay-gap/verify.py | 63 ++++++++++++++----- 5 files changed, 100 insertions(+), 79 deletions(-) diff --git a/docs/ci-verification.md b/docs/ci-verification.md index 63ba3e9aa8..52b62d0481 100644 --- a/docs/ci-verification.md +++ b/docs/ci-verification.md @@ -1,8 +1,25 @@ # CI verification -## Current selected-family replay: #6030 +## Current selected-family replay: #7000 with #7001 The [selected record](../certificates/selected-result.json) binds conditional +κ = 0.00363005817 to the [application review](research/pr-intake-evidence/pr7000-application/PROOF-REVIEW.md), +[validation receipts](research/pr-intake-evidence/pr7000-application/VALIDATION.json), +and [explicit source closure](../certificates/frontier7000-source.json). +`make frontier7000-verify` follows that exact-source selected replay. The review +reuses eleven authenticated preceding executions and records seven fresh serial +application, scalar and complete native-catalogue executions. The earlier +monolithic timeout is retained separately and is not completed coverage. +Consult the receipts for exact commands, source heads and limits. + +The five inherited framework assumptions remain. No complete uniform word, +literal multiplier execution, independent human proof or formal-kernel proof +is asserted. Routine research submissions do not need to rerun this +selected-family replay. The sections below preserve historical checkpoints. + +## Historical selected-family replay: #6030 + +The [historical checkpoint](../certificates/checkpoints/frontier6030.json) binds conditional κ = 0.003125804 to the [proof review](research/pr-intake-evidence/pr6030-audit/PROOF-REVIEW.md), [validation receipts](research/pr-intake-evidence/pr6030-audit/VALIDATION.json), and [explicit source closure](../certificates/frontier6030-source.json). diff --git a/research/historical-selected-replay-gap/README.md b/research/historical-selected-replay-gap/README.md index 55d8cc3b49..36d9a873ca 100644 --- a/research/historical-selected-replay-gap/README.md +++ b/research/historical-selected-replay-gap/README.md @@ -69,7 +69,11 @@ python3 -B scripts/research_package.py --package research/historical-selected-re The direct command prints `PASS_HISTORICAL_SELECTED_REPLAY_GAP`. A registered replay prints `PASS_REGISTERED_RESEARCH_PACKAGE`. Both require Git history -containing the two inspected commits. +containing the two inspected commits and the source and manifest objects at +`2485805a6d47f36ea83ddde6327d453ac82d44dc`. The verifier uses a temporary +sparse checkout of that commit, checks the declared source digests there, and +uses its planner and manifest inventory. The recorded rejections and selection +therefore remain reproducible after later changes to the live Makefile or CI guide. ## Open next questions diff --git a/research/historical-selected-replay-gap/SOURCES.json b/research/historical-selected-replay-gap/SOURCES.json index c1010eec95..62bb8b3950 100644 --- a/research/historical-selected-replay-gap/SOURCES.json +++ b/research/historical-selected-replay-gap/SOURCES.json @@ -4,13 +4,13 @@ "files": [ { "path": "Makefile", - "usage": "input", + "usage": "provenance", "git_blob": "0d683a06b9e7ee162496108ce9a7c5d2ee94fccf", "sha256": "4f2d4f2dcd15139ec82658a975f85ed300897385f85799218539f4c8d60567da" }, { "path": "certificates/partial-swap-network.json", - "usage": "input", + "usage": "provenance", "git_blob": "eccafa830c16170c36faf93045ddf1f638f7bcd4", "sha256": "4c0b9d37e1034b2076e30a70f8e514416298c462d9ee98bc87fe6556b14df786" }, @@ -22,7 +22,7 @@ }, { "path": "docs/ci-verification.md", - "usage": "input", + "usage": "provenance", "git_blob": "63ba3e9aa8bdc5e942b56e34244b92b16f854085", "sha256": "c7d3027e9ad8bcbff68f07aa9576b30fb2f3c76c44d876d40c7fdbf4a3e2228a" }, @@ -34,163 +34,163 @@ }, { "path": "research/clifford-state-performance/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "6f98a0061a5104dfab82c9e806f819b41811f684", "sha256": "396d0f08df24952248140d5c65c51b8c902ef1c580892ff7ea182890530f67ee" }, { "path": "research/community-batch1047-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "5e0f92af463ec12c5e1dcc3effd44081a88af647", "sha256": "07a9daeaf2bda308a92e9a4684f13d5fc766c7772d74801fceb7f4599fdab226" }, { "path": "research/community-batch1099-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "9e13266bf85e627f1b7dc225e9530ea69fd2c7f0", "sha256": "421e1211fb1897c45621dc6801c276e53f2e6f335583c9c9049e535f87c0a3b1" }, { "path": "research/community-batch932-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "cc4d03eb59b9ab3f952735f7e88ff18c2d15d7af", "sha256": "184629cac91a5cfaca50330a88596008b824221433867dcf8117539c913c284a" }, { "path": "research/community-batch970-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "8b9f4111badf7de5d97684799560b55110e9da79", "sha256": "23188ed920e38a54006cb883e181585620821c63bf7e8b5e05d32719417cc37e" }, { "path": "research/community-frontier741-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "a5300d4e7a5381a3f443fc54c768ca6f0f236d68", "sha256": "3c820fb30e1b4d9bcfc6a7ab524375e5b2abd66b940af2c509146104f0bcd79c" }, { "path": "research/community-frontier890-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "d7ff6d777b01d69b6ce84caf25d3b7e4a4d2f211", "sha256": "6b185a9902652f893f3ebd8ada92d2f11b6de6533a9a4d11718a8a4496101128" }, { "path": "research/community-hyperplane599-audit/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "546f37d326d10a99910ae8f908e71ef768524d98", "sha256": "65099d764bfcc39bda5e4d9966783611b094c3522dbdd1435cd498d657a8ef8e" }, { "path": "research/community-k492-audit/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "e538481e4cb16ed936d3195f2dfb5b5a9ca0a76b", "sha256": "2c0f4fa5bc150d05658af2e7c54c4d2c337dd52b7efd3d69530ae73bcbdf452a" }, { "path": "research/community-reconciliation92-audit/MANIFEST.json", - "usage": "input", + "usage": "provenance", "git_blob": "2a2e93685173d5f13cbb5abe740f5d90352e0228", "sha256": "5f501f3c118131e7d069f30ad77186eb2ad6961f9680a0ef105f4514ed41808a" }, { "path": "research/partial-swap-digest/baseline.py", - "usage": "input", + "usage": "provenance", "git_blob": "a2f0190704db83bd8ef48e46e723c49b925804fe", "sha256": "81e9af92cdf38243a540cdcff2062778e449467848d444da37a9553c12ca4c34" }, { "path": "research/r420-two-sided-basis/SOURCES.json", - "usage": "input", + "usage": "provenance", "git_blob": "5d718e11e62f4bcadecf1e02d6b61f87dbe190b0", "sha256": "d9810b0d139c5a1211fd2c1f0d142187cc1fca30026e1e7bc4f9ecfacf1596d1" }, { "path": "research/skip-clones/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "8d1bb3b9c8189e35e5d8bfdfa632d7473e8be0d5", "sha256": "0b68e63e35a97ce6b0cdb6e291b88ebaa8f2dd4afb70b2498f10ee89428258dc" }, { "path": "research/split-skip/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "2ab610b6ea2edd2865fda793ef2168b0c76afb4f", "sha256": "7c2b4646a3ecfef6f881da5c43e4bd0fa9a4d1b00548b8ab458d897e16735134" }, { "path": "scripts/historical-ci-inputs/Makefile", - "usage": "input", + "usage": "provenance", "git_blob": "aff68409021c9d401a6f8013b9dfd7dbcc30f2a8", "sha256": "ea8830dd79da493e2d75baf753d733ff7efbcf2b4794afe41fae0ac8f3055646" }, { "path": "scripts/historical-ci-inputs/ledger-batch932-run_isolated_tests.py", - "usage": "input", + "usage": "provenance", "git_blob": "65db599ab0b1dea0312c4ca048e0bd0f44c3736f", "sha256": "96ea543e6c707424afe247e77bd86c82152f90fc76a0773c4232145da5cdf8d1" }, { "path": "scripts/historical-ci-inputs/ledger-batch932-test_isolated_test_runner.py", - "usage": "input", + "usage": "provenance", "git_blob": "34820a8f24678f918f4d0e7a35380d8013fc3495", "sha256": "628391b6abfbc8674ceec1751867a4392f2cc0b5b66886243e139af86cf355ac" }, { "path": "scripts/historical-ci-inputs/ledger-batch970-verify_selected_result.py", - "usage": "input", + "usage": "provenance", "git_blob": "c755b76e0d44ba4917aa94440ebe54daefce5b2a", "sha256": "d7fd929726b326aeeaf0a3996475adec88eee9aac09ae0bebeeaa0bc1fc8f199" }, { "path": "scripts/historical-ci-inputs/ledger-frontier741-ci-verification.md", - "usage": "input", + "usage": "provenance", "git_blob": "7f3c012504187917a728b9fe87043f0fc8cd006a", "sha256": "a854022e0e1d5d4db4d60e586be3ea56005013ef14a1fc06d02bc06e8529c4b0" }, { "path": "scripts/historical-ci-inputs/partial-swap-context.json", - "usage": "input", + "usage": "provenance", "git_blob": "ad65114886bf34a4fd27e79f3be502389e689faa", "sha256": "833a9642f33aeab2ffea17ec9c6b82e0a953f90192b2c82e10bef21538dccba9" }, { "path": "scripts/historical-ci-inputs/partial-swap-network.json", - "usage": "input", + "usage": "provenance", "git_blob": "52075f2463f60af5e16571347f24274fce73a1ea", "sha256": "f3c4be597b2f2136da4ae2cc80c7454f63c90aa01f84e5b8131cee4dd55de815" }, { "path": "scripts/partial_swap/shared.py", - "usage": "input", + "usage": "provenance", "git_blob": "44a0e454c70f9c4b98e258b8443612e6a119904b", "sha256": "5a0646a50b9f3e8ea55168620a78e8853b0ab810517cefc8cfb8696aedee278a" }, { "path": "scripts/replay_historical_check.py", - "usage": "input", + "usage": "provenance", "git_blob": "1e92fff2782970ef71378f594f2350d245a4db26", "sha256": "5467619c78183d3adc82b0cb55af28e5c1a01fca2b0588677816244b53e2bafd" }, { "path": "scripts/research_package.py", - "usage": "input", + "usage": "provenance", "git_blob": "091b4c8f58bac9a9580d76025b887dc5c873d05f", "sha256": "e1256016e7f51827d04fa2179255989f639ae1d97afaa9c16265f85a0c6abd70" }, { "path": "scripts/run_isolated_tests.py", - "usage": "input", + "usage": "provenance", "git_blob": "a96ab35b315ce492e7fbbfd6c5ae211aa066b541", "sha256": "49eb56dd0fc0d8d8ffdb209970a7adf2176223580646f575d5c22e59543b381c" }, { "path": "scripts/verify_selected_result.py", - "usage": "input", + "usage": "provenance", "git_blob": "6882a4700e410dec569b51ae2eaf1a19cc019195", "sha256": "d6b305eac5b9bdb8172c469ad30a1655a60fa0aceac8b1bf610e1b73f51babd8" }, { "path": "tests/test_isolated_test_runner.py", - "usage": "input", + "usage": "provenance", "git_blob": "343b24abf6719b81805eba5a84c74e57634c8288", "sha256": "3a5470d0b139828b90e19bf9583ddeafcd69f8e34f2824664eb3a2958a52e34d" } diff --git a/research/historical-selected-replay-gap/VERIFY.json b/research/historical-selected-replay-gap/VERIFY.json index 98553e72ed..ab7efa3471 100644 --- a/research/historical-selected-replay-gap/VERIFY.json +++ b/research/historical-selected-replay-gap/VERIFY.json @@ -4,36 +4,7 @@ "python": "3.12", "requirements": [], "inputs": [ - "Makefile", - "certificates/partial-swap-network.json", - "docs/ci-verification.md", - "research/clifford-state-performance/SOURCE.json", - "research/community-batch1047-audit/CONTENT-COVERAGE.json", - "research/community-batch1099-audit/CONTENT-COVERAGE.json", - "research/community-batch932-audit/CONTENT-COVERAGE.json", - "research/community-batch970-audit/CONTENT-COVERAGE.json", - "research/community-frontier741-audit/CONTENT-COVERAGE.json", - "research/community-frontier890-audit/CONTENT-COVERAGE.json", - "research/community-hyperplane599-audit/SOURCE.json", - "research/community-k492-audit/SOURCE.json", - "research/community-reconciliation92-audit/MANIFEST.json", - "research/partial-swap-digest/baseline.py", - "research/r420-two-sided-basis/SOURCES.json", - "research/skip-clones/SOURCE.json", - "research/split-skip/SOURCE.json", - "scripts/historical-ci-inputs/Makefile", - "scripts/historical-ci-inputs/ledger-batch932-run_isolated_tests.py", - "scripts/historical-ci-inputs/ledger-batch932-test_isolated_test_runner.py", - "scripts/historical-ci-inputs/ledger-batch970-verify_selected_result.py", - "scripts/historical-ci-inputs/ledger-frontier741-ci-verification.md", - "scripts/historical-ci-inputs/partial-swap-context.json", - "scripts/historical-ci-inputs/partial-swap-network.json", - "scripts/partial_swap/shared.py", - "scripts/replay_historical_check.py", - "scripts/research_package.py", - "scripts/run_isolated_tests.py", - "scripts/verify_selected_result.py", - "tests/test_isolated_test_runner.py" + "scripts/research_package.py" ], "commands": [ { diff --git a/research/historical-selected-replay-gap/verify.py b/research/historical-selected-replay-gap/verify.py index 83b995941a..9d266c5a4e 100644 --- a/research/historical-selected-replay-gap/verify.py +++ b/research/historical-selected-replay-gap/verify.py @@ -6,8 +6,10 @@ """ import hashlib import importlib.util +import json import subprocess import sys +import tempfile from pathlib import Path ROOT = Path(__file__).resolve().parents[2] @@ -61,31 +63,47 @@ def require(ok, message): raise SystemExit(message) -def load_checker(): - path = ROOT / "scripts/replay_historical_check.py" - spec = importlib.util.spec_from_file_location("historical_selected_replay_gap_checker", path) +def load_module(path): + spec = importlib.util.spec_from_file_location(path.stem, path) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) return module +def checkout_snapshot(snapshot, sources, runner, env): + paths = [runner.canonical_relative_path(row["path"]) for row in sources["files"]] + git = ["git", "-c", "maintenance.auto=false", "-c", "gc.auto=0", + "-c", "core.autocrlf=false"] + subprocess.run([*git, "clone", "--quiet", "--shared", "--no-tags", "--no-checkout", + "--", str(ROOT), str(snapshot)], cwd=ROOT, env=env, check=True) + subprocess.run([*git, "update-ref", "--no-deref", "HEAD", INSPECTED], + cwd=snapshot, env=env, check=True) + # The pinned planner reads omitted manifests from the sparse HEAD/index. + patterns = "".join(f"/{path.as_posix()}\n" for path in paths) + subprocess.run([*git, "sparse-checkout", "set", "--no-cone", "--stdin"], + cwd=snapshot, env=env, input=patterns.encode("utf-8"), check=True) + subprocess.run([*git, "read-tree", "-mu", "HEAD"], cwd=snapshot, env=env, check=True) + for path, row in zip(paths, sources["files"], strict=True): + require(hashlib.sha256((snapshot / path).read_bytes()).hexdigest() == row["sha256"], + "historical checkout source digest changed: " + path.as_posix()) + + def entries(checker): for name, config in checker.CONFIG.items(): for entry in [config, *config.get("additional_inputs", [])]: yield name, entry -def reject(checker, entry): +def reject(root, checker, entry): try: - checker.authenticated_input(ROOT, entry) + checker.authenticated_input(root, entry) except ValueError as exc: return str(exc) raise SystemExit("historical input was admitted: " + entry["path"]) -def main(): - require(not sys.flags.optimize, "assertions must stay enabled") - checker = load_checker() +def check_snapshot(root, env): + checker = load_module(root / "scripts/replay_historical_check.py") selected = [entry for name, entry in entries(checker) if name == "tooling-ledger" and entry["path"] == SELECTED_PATH] require(len(selected) == 1, "selected-result checker overlay is not unique") @@ -94,7 +112,7 @@ def main(): require(entry["accepted_live_sha256"] == [SELECTED_ACCEPTED], "accepted selected-checker successors changed") frozen = (checker.INPUTS / entry["input"]).read_bytes() - live = (ROOT / SELECTED_PATH).read_bytes() + live = (root / SELECTED_PATH).read_bytes() require(hashlib.sha256(frozen).hexdigest() == SELECTED_PIN, "frozen selected checker bytes changed") require(hashlib.sha256(live).hexdigest() == SELECTED_LIVE, "live selected checker digest changed") require(SELECTED_LIVE not in (SELECTED_PIN, SELECTED_ACCEPTED), "live checker was already admitted") @@ -102,7 +120,7 @@ def main(): # live successor, not a broken comparison. require(SELECTED_PIN in (SELECTED_PIN, *entry["accepted_live_sha256"]), "pin membership control failed") - require(reject(checker, entry) == REJECTIONS[SELECTED_PATH][1], + require(reject(root, checker, entry) == REJECTIONS[SELECTED_PATH][1], "selected checker rejection text changed") counts = {path: 0 for path in REJECTIONS} @@ -110,7 +128,7 @@ def main(): for _name, item in entries(checker): if item["path"] not in REJECTIONS: continue - message = reject(checker, item) + message = reject(root, checker, item) counts[item["path"]] += 1 messages.setdefault(item["path"], message) for path, (count, message) in REJECTIONS.items(): @@ -118,20 +136,31 @@ def main(): require(messages[path] == message, "rejection text changed for " + path) require(sum(counts.values()) == 19, "rejection total changed") ci = [item for _name, item in entries(checker) if item["path"] == CI_PATH] - require(len(ci) == 1 and hashlib.sha256((ROOT / CI_PATH).read_bytes()).hexdigest() == CI_LIVE, + require(len(ci) == 1 and hashlib.sha256((root / CI_PATH).read_bytes()).hexdigest() == CI_LIVE, "selected CI note digest changed") diff = subprocess.check_output( - ["git", "diff", "--name-only", PARENT, INSPECTED], cwd=ROOT, text=True) + ["git", "diff", "--name-only", PARENT, INSPECTED], cwd=root, env=env, text=True) changed = sorted(name for name in diff.splitlines() if name) require(changed == CHANGED, "inspected commit diff changed") - sys.path.insert(0, str(ROOT / "scripts")) - from research_package import plan_details - details = plan_details(ROOT, set(changed)) + planner = load_module(root / "scripts/research_package.py") + details = planner.plan_details(root, set(changed)) require([row["package"] for row in details] == PLAN_PACKAGES, "helper plan selection changed") matched = {name for row in details for names in row["causes"].values() for name in names} require(sorted(set(changed) - matched) == UNMATCHED, "unmatched plan paths changed") - require(plan_details(ROOT, set()) == [], "empty change set selected a package") + require(planner.plan_details(root, set()) == [], "empty change set selected a package") + + +def main(): + require(not sys.flags.optimize, "assertions must stay enabled") + sources = json.loads(Path(__file__).with_name("SOURCES.json").read_bytes()) + require(sources["base_commit"] == INSPECTED, "historical checkout base changed") + runner = load_module(ROOT / "scripts/research_package.py") + env = runner.git_source_env() + with tempfile.TemporaryDirectory(prefix="historical-selected-replay-") as temporary: + snapshot = Path(temporary) / "snapshot" + checkout_snapshot(snapshot, sources, runner, env) + check_snapshot(snapshot, env) print("PASS_HISTORICAL_SELECTED_REPLAY_GAP") print("selected_checker_live=" + SELECTED_LIVE) print("rejections=19 distinct_paths=7 plan_packages=9")