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") diff --git a/research/p104-owned-move-transport-bound/INPUTS.json b/research/p104-owned-move-transport-bound/INPUTS.json new file mode 100644 index 0000000000..9f4e7d59bc --- /dev/null +++ b/research/p104-owned-move-transport-bound/INPUTS.json @@ -0,0 +1,37 @@ +[ + { + "git_blob": "84c893e83b32eae33fae27e622c4756ffe98ab09", + "head": "e3f8d39c43b07063dfc5b800f71c5d21015259e6", + "path": "peer/research/p104-rank8-exit-funded-split/WORD.json.gz", + "sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2", + "source_path": "research/p104-rank8-exit-funded-split/WORD.json.gz" + }, + { + "git_blob": "60edfac362a0350be3c9f36d62684cc8ddf80293", + "head": "e3f8d39c43b07063dfc5b800f71c5d21015259e6", + "path": "peer/research/p104-rank8-exit-funded-split/RESULT.json", + "sha256": "59080d75e7281b1a8c1353930917fd15869ad747ff4200948898f78f11c14089", + "source_path": "research/p104-rank8-exit-funded-split/RESULT.json" + }, + { + "git_blob": "9451ceaf6e8e037894680b549f3ef41c21b260d7", + "head": "07a76c5e2738882c0cb322278e56f6cae3c9885d", + "path": "caller/CALLER.json", + "sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "source_path": "research/signed-caller-8x9/expected/ODD-TYPE-AB-CALLER.json" + }, + { + "git_blob": "e24dc46079b4c25152f5afc096dda2ce8ee58ff5", + "head": "07a76c5e2738882c0cb322278e56f6cae3c9885d", + "path": "caller/interval_gate.py", + "sha256": "60a743d13f668ef86db4b8215b4d5d04430a671ba6f1fe06d9c1c4c3dfe86da5", + "source_path": "research/signed-caller-8x9/replay/supplier7112/short-caller/interval_gate.py" + }, + { + "git_blob": "ad393f2b6ebfb208a9092fa3dd1322b139ad19fe", + "head": "e3f8d39c43b07063dfc5b800f71c5d21015259e6", + "path": "PEER-NOTICE.txt", + "sha256": "fb25cd50d8e99fd749e4aa567a1a453b353d90bf74e2b20bd8395aae62d18100", + "source_path": "research/p104-rank8-exit-funded-split/NOTICE" + } +] diff --git a/research/p104-owned-move-transport-bound/PROOF.md b/research/p104-owned-move-transport-bound/PROOF.md new file mode 100644 index 0000000000..6ec7e29d54 --- /dev/null +++ b/research/p104-owned-move-transport-bound/PROOF.md @@ -0,0 +1,29 @@ +# Paid owned-MOVE sharing and charged donor charts + +The literal native word is [#7161 at e3f8d39](https://github.com/CrocSwap/integer-mult-bounds/pull/7161), using the exact [#7113 at 07a76c5](https://github.com/CrocSwap/integer-mult-bounds/pull/7113) signed caller. The complete invoice has 110,519 paid positions and 22,427 productive positions. The common test target is κ = 0.0040075385047236. Directed arithmetic bounds the signed moment above by −140.51726295091428931243136. The calculation retains every cost and credit outside the 47 owned native MOVEs and reconstructs the ordered paid-position digest for all 17 invocations. + +## Exact transport model + +A live row is the normalized rational form on all 1,499 arbitrary public inputs. The replay propagates the literal sparse rows, chart indices and ownership state. A MOVE changes chart and preserves its normalized row. INIT starts an owned zero, CLEAR ends its life, and ADD, COPY and SCALE act by the exact rational scalar. The original window for a MOVE extends from the cut after its previous same-role contact through the cut at the following same-role contact. At every candidate cut the recipient is excluded from the donor pool. Equal binary chart spans are allowed to share a frame for free. + +For binary spans X and Y, set d(X,Y) = dim X + dim Y − 2 dim(X∩Y). This is a metric and agrees with the rank of every nested paid edge. The triangle inequality follows by applying the dimension formula to X∩Y and Y∩Z inside Y. Hence any nested path from X to Y has at least d(X,Y) total rank. At exponent t = 1−κ in (0,1), a sequence with total rank at least d has tariff at least d^t by subadditivity. For independently transported sources, a total of lower-bound ranks at least the old rank cannot yield a cheaper replacement. This is a necessary test in the retained nested MOVE tariff. Shared transport whose actual charge is below that sum requires another model. + +At cut t let R be the recipient's normalized row, D(t) the span of the unchanged live rows in the target chart, and S_i(t) the span of the unchanged live rows at the ith source chart. Any recovery from those charts requires R ∈ D(t) + Σ_i S_i(t). We grant arbitrary rational combinations within each source chart, free target-local mixing, free scalar copying and free setup, ownership and restoration. These grants strengthen a negative result. + +## Simultaneous destination-local sharing + +The checks cover all 11,163 integer cuts, 53 active sets and 42 maximal clock families on the fixed tape. For each group, the unchanged rows at all group destination spans are granted as free side information. The additional independent carriers have rank dim(D+R)−dim(D), where R now spans all selected rows. Every subset of a full-rank active set also has full rank after granting omitted active rows. For the remaining six cuts, exact subset tests with their actual pooled destination charts give five positive subsets, each of defect one. Every one contains MOVE 35112. The upper credits at most one old rank-four debit per invocation in a disjoint schedule. This leaves a signed moment at most −72.8939981876123335102327364. Even adding free additive packing of the remaining ranks leaves at most −46.4053107712628798395063239. The two minimal donor relations are present on distinct public rows, with shortest chart transport ranks three and four against old ranks two and four. Single-recipient target-local recovery gives no savings. + +A separate exact proportionality index grants one proportional unchanged donor from any live chart. It exhausts 37 eligible intervals across all 47 recipients and verifies their exact frame distances. No donor lowers its recipient's paid rank. + +## Any number of separately charged donor charts for one recipient + +For each candidate route, first grant the union of all unchanged rows over the entire recipient window, including rows that cannot be live simultaneously. Failure of exact rational membership in the larger union excludes every cut. All 1,441 eligible one-chart routes and all 3,219 separately charged two-chart routes fail this test. Each has positive distance to the target and total distance strictly below the old rank. The verifier records first pending cases under a cap. Both committed receipts exhaust with none pending. + +For at least three distinct transporting charts, the old rank must be at least four. Test every integer total rank budget b from three to the old rank minus one. A chart can participate only if its distance plus the two smallest distances of other distinct charts is at most b. Grant the full window union over *all* such charts and target-local rows, even if their joint rank exceeds b. At the 16 possible sites, the 20 budget cells contain seven geometrically empty choices and 13 rational union tests. All fail. Multiple donors in one chart are already granted via arbitrary combination within that chart. Thus every separately charged one-recipient transport in this scope has zero optimistic saving. Packing the unchanged rank sum 112 additively into one child per invocation would still leave at least 112.868947408762483184 moment units unfunded. + +## Scope and controls + +These are necessary span and price bounds on the literal clocks. They do not establish phase, signed operator equality, a different contact tape, a new destination, or physical nonadditive rank. No candidate passed the optimistic price. The checker uses fraction-free exact elimination and directed intervals. It checks positive and negative row-span controls, simultaneous versus disjoint source intervals, complete invoice binding, monotone event indices and pin corruption in validation. The cap and mutated-source controls were exercised on the local replay. The old κ and its five inherited premises retain their prior status. + +[CubeJerry #6765](https://github.com/CrocSwap/integer-mult-bounds/pull/6765) is the closest older single-helper resident-response test. [#6529](https://github.com/CrocSwap/integer-mult-bounds/pull/6529) is a positive public interval transport example with changed exports on #6453. Clear1nsight's [same-head public path](https://github.com/CrocSwap/integer-mult-bounds/discussions/1166#discussioncomment-19535789) uses dirty public carriers and cross-recipient response cancellation. Those operations have different contracts from the retained-clock owned scope here. Credit Clear1nsight for the word, Rohan Arun for the exact signed caller, and the inherited compiler and ownership authors. OpenAI Codex and subagents materially assisted. diff --git a/research/p104-owned-move-transport-bound/README.md b/research/p104-owned-move-transport-bound/README.md new file mode 100644 index 0000000000..6e3ed8acab --- /dev/null +++ b/research/p104-owned-move-transport-bound/README.md @@ -0,0 +1,19 @@ +# A charged transport bound for the #7161 owned MOVEs + +**NO VERIFIED GAIN.** At the fixed test κ = 0.0040075385047236, the exact #7161 native word and signed #7113 caller remain at least 140.51726295091428931243136 moment units short. This package exhausts the scoped one-recipient scalar replacement using separately charged, unchanged live donor charts at the retained contact clocks. It also prices simultaneous destination-local quotient sharing. [Proof](PROOF.md) · [Exact source inventory](INPUTS.json) + +## Reproduction + +Use CPython 3.12 with assertions enabled. From a clean checkout: + +```sh +python3.12 -B scripts/research_package.py --package research/p104-owned-move-transport-bound +``` + +The self-contained package authenticates the four scientific inputs exported byte for byte from the two exact PR heads. The eight checks regenerate the full rational and directed receipts and compare their SHA-256 digests. [Receipt digests](RECEIPTS.json) + +## Open next questions + +Can a changed contact tape make a useful cheaper coframe available before a high-rank owned MOVE? Start with one literal destination and the exact lifetime that blocks a cheaper donor. Require the complete signed all-column endpoint, restored ownership, and a positive directed full-price margin. A physical sharing primitive with nonadditive donor transport cost also requires a new proof. + +Credit Clear1nsight for #7161, Rohan Arun for the #7113 signed caller and inherited interval audit, and the [source notice](inputs/PEER-NOTICE.txt) for the native lineage. CubeJerry #6765 is an earlier resident-response test on a different word. OpenAI Codex and subagents materially assisted. New work is Apache-2.0. diff --git a/research/p104-owned-move-transport-bound/RECEIPTS.json b/research/p104-owned-move-transport-bound/RECEIPTS.json new file mode 100644 index 0000000000..168349714c --- /dev/null +++ b/research/p104-owned-move-transport-bound/RECEIPTS.json @@ -0,0 +1,34 @@ +{ + "charged_charts_1": { + "bytes": 403132, + "stdout_sha256": "1ccf78993e592617e198d3236c24dbf256c23053f5807050e495933259830f08" + }, + "charged_charts_2": { + "bytes": 935586, + "stdout_sha256": "7473104d1c6c7d758c9bdc99bf0fe223c431f18e50093a4f9d0105e89361446a" + }, + "direct_sum": { + "bytes": 6154, + "stdout_sha256": "1387cdae459cc71a54d64bb70754126df52c641093ab8c01bf922bc1d0d1817c" + }, + "donor_intervals": { + "bytes": 9988, + "stdout_sha256": "63d225af5f47b0ed666bf1175854a88d7221ff7e4df1ad93efe103c974ddaac6" + }, + "multi_gate": { + "bytes": 11933, + "stdout_sha256": "58b413c4345c6c1a3b9649ccf1712dcefa1d3d5fab6b0960a8a921c8379d1c20" + }, + "owned": { + "bytes": 188994, + "stdout_sha256": "08fd2af8ed7cc1ecab768674d984ce309ad861e8e8bfac1a8c510dbaa5ad74a8" + }, + "pair_relations": { + "bytes": 1872, + "stdout_sha256": "e7a81e2d3a9e8ac60e538a20d47068cd7bc92a95764b2d0969c3005abbe5cfd0" + }, + "side_rows": { + "bytes": 85617, + "stdout_sha256": "483d4802f609ce7669e8e46b89d333b5a7ecbfd751716539357e21478df90295" + } +} diff --git a/research/p104-owned-move-transport-bound/SOURCES.json b/research/p104-owned-move-transport-bound/SOURCES.json new file mode 100644 index 0000000000..e8c2f265cd --- /dev/null +++ b/research/p104-owned-move-transport-bound/SOURCES.json @@ -0,0 +1,18 @@ +{ + "base_commit": "e54523517d0f03e58352e647c403a5af3e525a57", + "files": [ + { + "git_blob": "75d77b328ea02ded535e7f23aee5b1e55d0bb1a8", + "path": "certificates/selected-result.json", + "sha256": "154c3d30455d778fd3343b6b4851f0fa4665f0f7625b0adb3675e2bafbbf6bf1", + "usage": "provenance" + }, + { + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "path": "docs/research/agent-task-catalog.json", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81", + "usage": "provenance" + } + ], + "schema_version": 1 +} diff --git a/research/p104-owned-move-transport-bound/TASK.json b/research/p104-owned-move-transport-bound/TASK.json new file mode 100644 index 0000000000..2e8dafb58f --- /dev/null +++ b/research/p104-owned-move-transport-bound/TASK.json @@ -0,0 +1,117 @@ +{ + "actual_scope": "47 owned moves on the #7161 native word with the exact signed #7113 caller.", + "ai_assistance": "OpenAI Codex and independent subagents assisted with proof, implementation, controls and reproduction.", + "author": "ToikY", + "base_commit": "e54523517d0f03e58352e647c403a5af3e525a57", + "bottleneck_link": "A paid transport saving must survive full signed caller recount and target moment.", + "budget_minutes": 40, + "evidence": "Exact rational 11,163-cut census; 1,441 one-chart and 3,219 separately charged two-chart routes exhaust; the 20-cell arbitrary-count gate closes every higher count; directed invoice checks.", + "open_questions": [ + { + "blocked_by": "A literal changed chronology, with phase, ownership, helper and restoration charges.", + "first_step": "Choose one high-rank owned interval and enumerate a bounded exact coframe lifetime extension.", + "question": "Can a changed contact tape expose a cheaper donor before the target cut?", + "why_it_matters": "The certificate retains the exact #7161 contact clocks." + } + ], + "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": "Exact #7161 owned transport with retained contact clocks and a separately charged donor-chart borrowing model.", + "scope_status": "changed", + "stop_rule": "Reject on the directed whole-family upper after exact clocks and row spans, even granting free local setup and restoration.", + "task_id": "p104-side-correction" +} diff --git a/research/p104-owned-move-transport-bound/VERIFY.json b/research/p104-owned-move-transport-bound/VERIFY.json new file mode 100644 index 0000000000..b8712d215b --- /dev/null +++ b/research/p104-owned-move-transport-bound/VERIFY.json @@ -0,0 +1,25 @@ +{ + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-B", + "{package}/verify.py" + ], + "checks": "Authenticate the literal input and replay eight directed paid-rank, row, clock and transport checks.", + "timeout_seconds": 600 + } + ], + "inputs": [ + "research/p104-owned-move-transport-bound/inputs/peer/research/p104-rank8-exit-funded-split/WORD.json.gz", + "research/p104-owned-move-transport-bound/inputs/peer/research/p104-rank8-exit-funded-split/RESULT.json", + "research/p104-owned-move-transport-bound/inputs/caller/CALLER.json", + "research/p104-owned-move-transport-bound/inputs/caller/interval_gate.py", + "research/p104-owned-move-transport-bound/inputs/PEER-NOTICE.txt" + ], + "python": "3.12", + "requirements": [], + "schema_version": 1, + "status": "ready" +} diff --git a/research/p104-owned-move-transport-bound/checks/charged_charts.py b/research/p104-owned-move-transport-bound/checks/charged_charts.py new file mode 100644 index 0000000000..0dadeca867 --- /dev/null +++ b/research/p104-owned-move-transport-bound/checks/charged_charts.py @@ -0,0 +1,267 @@ +"""One- or two-chart charged span recovery on the exact #7161 contact tape.""" + +import argparse +from collections import Counter, defaultdict +from fractions import Fraction +import gzip +from hashlib import sha256 +from importlib.util import module_from_spec, spec_from_file_location +from itertools import combinations +import json +from pathlib import Path +from time import monotonic + +DEPENDENCIES = { + 'round9/evidence/complex/side_rows.py': '4ee7c51298e53d54e33b9ab4abc68d489078f0cf5032f52248f773df3f4294e9', + 'round9/evidence/complex/donors/donor_intervals.py': '307af640b97bcc31a13a4b139b418038bbce137686fd6ffed93e8865e44c65ce', + 'round8/evidence/complex/owned.py': '53da0a7b551b34f3baf633083a4362570ebe694a694e2d0b6226d01c08a6ab3b', +} + + +class ScreenCap(Exception): + pass + + +def import_pinned(name, path, expected): + assert sha256(path.read_bytes()).hexdigest() == expected, path + spec = spec_from_file_location(name, path) + module = module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +def in_span(elimination, target, vectors): + basis = {} + for vector in vectors: + elimination.insert(basis, vector) + return elimination.insert(basis, target) == 0 + + +def controls(elimination): + x, y, z = ({0: 1}, {1: 1}, {2: 1}) + assert in_span(elimination, {0: 1, 1: 1}, [x, y]) + assert not in_span(elimination, {0: 1, 1: 1}, [x, z]) + assert in_span(elimination, {0: 1, 1: 1}, [{0: -3, 1: -3}, z]) + assert not list(states_over_time([[], [(0,1,1)], [(2,3,2)]])) + assert list(states_over_time([[(0,4,0)], [(0,2,1)], [(2,3,2)]])) == [ + (2, ((0,), (1,), (2,))) + ] + + +def read_sources(peer, caller_path, interval_path, owned, source_count): + package = peer / owned.PACKAGE + name = f'peer/{owned.PACKAGE}/WORD.json.gz' + compressed = owned.pinned(package/'WORD.json.gz', name) + raw = gzip.decompress(compressed) + assert sha256(raw).hexdigest() == owned.PINS[name+'#decompressed'] + result = owned.pinned(package/'RESULT.json', f'peer/{owned.PACKAGE}/RESULT.json') + caller = owned.pinned(caller_path, 'caller-inputs/CALLER.json') + interval = import_pinned(f'chart_price_{source_count}', interval_path, owned.PINS['caller-inputs/interval_gate.py']) + return json.loads(raw), json.loads(result), json.loads(caller), interval + + +def chart_states(word, moves, chart_classes, geometry, elimination, donor, check_time): + # Store states only where one of the legal cheap routes could query them. + windows = {} + for move in moves: + lo, hi = move['window'] + for chart in geometry[move['event']]: + if chart in windows: + l, h = windows[chart] + windows[chart] = min(lo,l), max(hi,h) + else: + windows[chart] = lo, hi + last_cut = max(m['window'][1] for m in moves) + move_events = {m['event']:m['role'] for m in moves} + active = {} + intervals = defaultdict(list) + vectors = [] + sampled = {} + last_seen = 0 + + def flush(role, upper): + lower, chart, row = active[role] + left, right = windows[chart] + lower, upper = max(lower,left), min(upper,right) + if lower <= upper: + intervals[chart].append((lower,upper,role,len(vectors))) + vectors.append(elimination.integral(row)) + + def visit(cut, role, chart, row): + nonlocal last_seen + assert cut >= last_seen, (cut,last_seen) + last_seen = cut + if move_events.get(cut-1) == role: + assert row + sampled[cut-1] = elimination.integral(row) + if role in active: + flush(role,cut-1) + del active[role] + if chart is not None and chart_classes[chart] in windows and row: + active[role] = (cut,chart_classes[chart],row.copy()) + + donor.replay(word,last_cut,visit,check_time) + assert last_seen == last_cut + assert sampled.keys() == move_events.keys() + for role in active: + flush(role,last_cut) + return intervals, vectors, sampled + + +def clipped(records, role, lo, hi): + return [(max(l,lo),min(h,hi),i) for l,h,r,i in records if r != role and l <= hi and lo <= h] + + +def states_over_time(pools): + changes = defaultdict(list) + for chart,records in enumerate(pools): + for lo,hi,r in records: + changes[lo].append((chart, r, True)) + changes[hi+1].append((chart, r, False)) + live = [set() for _ in pools] + seen = set() + for cut in sorted(changes): + for chart,row,added in changes[cut]: + if added: + live[chart].add(row) + else: + live[chart].remove(row) + if not all(live[1:]): + continue + key = tuple(tuple(sorted(rows)) for rows in live) + if key not in seen: + seen.add(key) + yield cut, key + + +def run(peer, caller_path, interval_path, owned_path, side_path, donor_path, group_cap, seconds, source_count): + started = monotonic() + + def check_time(): + if monotonic()-started >= seconds: + raise ScreenCap('time') + + owned = import_pinned('retained_owned_clocks', owned_path, DEPENDENCIES['round8/evidence/complex/owned.py']) + elimination = import_pinned('exact_sparse_row_rank', side_path, DEPENDENCIES['round9/evidence/complex/side_rows.py']) + donor = import_pinned('exact_literal_tape_rows', donor_path, DEPENDENCIES['round9/evidence/complex/donors/donor_intervals.py']) + controls(elimination) + word, result, caller, gate = read_sources(peer, caller_path, interval_path, owned, source_count) + pins = owned.PINS | DEPENDENCIES + try: + spaces, native, moves, _ = owned.scan_word(word, check_time, 80000) + signed, invoice = owned.full_invoice(word, caller, result, native) + baseline = gate.moment(signed, owned.TARGET) + rep = {} + chart_classes = [rep.setdefault(s,i) for i,s in enumerate(spaces)] + geometry = {} + for m in moves: + check_time() + target = chart_classes[m['target']] + distances = {i:owned.distance(s,spaces[target]) for s,i in rep.items()} + geometry[m['event']] = {i:d for i,d in distances.items() if d < m['rank']} + assert geometry[m['event']][target] == 0 + intervals, vectors, sampled = chart_states(word,moves,chart_classes,geometry,elimination,donor,check_time) + except ScreenCap as error: + return dict(status='PREPASS_PENDING', head=owned.HEAD, pins=pins, first_pending=str(error), source_count=source_count) + + routes = [] + local = {} + for m in sorted(moves,key=lambda m:(-m['rank'],m['event'])): + lo,hi = m['window'] + ev = m['event'] + target = chart_classes[m['target']] + possible = geometry[ev] + groups = {chart:clipped(intervals[chart],m['role'],lo,hi) for chart in possible} + local[ev] = groups + positive = sorted(i for i in possible if i != target and groups[i]) + for sources in combinations(positive,source_count): + cost = sum(possible[chart] for chart in sources) + if cost < m['rank']: + routes.append((m,sources,cost)) + routes.sort(key=lambda r:(-r[0]['rank'],r[2],r[0]['event'],r[1])) + checked = Counter() + results = [] + first_pending = None + pending_index = None + best = {m['event']:m['rank'] for m in moves} + + def test(kind, site, sources, cut, rows): + nonlocal first_pending + first_pending = dict(event=site, charts=sources, cut=cut, step=kind) + check_time() + if sum(checked.values()) >= group_cap: + raise ScreenCap('groups') + checked[kind] += 1 + return in_span(elimination, sampled[site], (vectors[r] for chart in rows for r in chart)) + + for index,(move,sources,cost) in enumerate(routes): + event = move['event'] + target = chart_classes[move['target']] + pools = [local[event][chart] for chart in (target,*sources)] + record = dict(event=event, sources=sources, target=target, old_rank=move['rank'], cost=cost, + window=move['window'], exact_cuts_tested=0, witness_cut=None) + try: + union = [tuple(sorted(r for _,_,r in pool)) for pool in pools] + optimistic = test('window_union',event,sources,move['window'][0],union) + record['union_in_span'] = optimistic + if optimistic: + for cut,state in states_over_time(pools): + supported = test('exact_cut',event,sources,cut,state) + record['exact_cuts_tested'] += 1 + if supported: + record['witness_cut'] = cut + best[event] = min(best[event],cost) + break + except ScreenCap as error: + record['pending'] = str(error) + first_pending['reason'] = str(error) + pending_index = index + results.append(record) + break + results.append(record) + if pending_index is None: + first_pending = None + pending = routes[pending_index:] if pending_index is not None else [] + optimistic = best.copy() + for move,_,cost in pending: + event = move['event'] + optimistic[event] = min(optimistic[event],cost) + old = Counter(m['rank'] for m in moves) + + def price(rank_by_site): + histogram = Counter(r for r in rank_by_site.values() if r) + delta = old.copy() + delta.subtract(histogram) + saving = gate.smul(gate.moment(delta,owned.TARGET),owned.STAGES) + rank_sum = sum(rank_by_site.values()) + packed = gate.power(rank_sum,owned.TARGET) if rank_sum else (0,0) + packed_saving = gate.smul(gate.sub(gate.moment(old,owned.TARGET),packed),owned.STAGES) + return dict(ranks=histogram, rank_sum=rank_sum, savings=gate.show(saving), + moment=gate.show(gate.add(baseline,saving)), + additive_pack_savings=gate.show(packed_saving), + additive_pack_moment=gate.show(gate.add(baseline,packed_saving)), + lower_rank_sites={m['event']:rank_by_site[m['event']] for m in moves + if rank_by_site[m['event']] < m['rank']}) + + return dict(status='CAP_PENDING' if pending else 'EXHAUSTED', head=owned.HEAD, pins=pins, + source_count=source_count, target=str(owned.TARGET), invoice=invoice, baseline=gate.show(baseline), + caps=dict(groups=group_cap,seconds=seconds), first_pending=first_pending, + native_sites=len(moves), admissible_integer_cuts=len({c for m in moves for c in range(m['window'][0],m['window'][1]+1)}), + interval_rows=len(vectors), chart_spans_with_intervals=len(intervals), + routes_total=len(routes), routes_tested=len(routes)-len(pending), routes_unresolved=len(pending), + groups_tested=checked, positive_route_count=sum(r['witness_cut'] is not None for r in results), + routes=results, confirmed_price=price(best), optimistic_price=price(optimistic), seed=None) + + +if __name__ == '__main__': + if not __debug__: + raise RuntimeError('Run with assertions enabled') + parser = argparse.ArgumentParser(description=__doc__) + for name in ('peer','caller_path','interval_path','owned_path','side_path','donor_path'): + parser.add_argument(name,type=Path) + parser.add_argument('--group-cap',type=int,default=4096) + parser.add_argument('--seconds',type=int,default=720) + parser.add_argument('--source-count',type=int,choices=(1,2),default=1) + args = parser.parse_args() + assert 0 < args.group_cap <= 4096 and 0 < args.seconds <= 720 + print(json.dumps(run(**vars(args)),indent=2,sort_keys=True)) diff --git a/research/p104-owned-move-transport-bound/checks/direct_sum.py b/research/p104-owned-move-transport-bound/checks/direct_sum.py new file mode 100644 index 0000000000..e33753df4d --- /dev/null +++ b/research/p104-owned-move-transport-bound/checks/direct_sum.py @@ -0,0 +1,67 @@ +"""Directed additive-rank owned-MOVE packing upper on exact #7161.""" +import argparse +from collections import Counter +from fractions import Fraction +from hashlib import sha256 +from importlib.util import module_from_spec, spec_from_file_location +import json +from pathlib import Path + +PINS = { + 'OWNED.json': '08fd2af8ed7cc1ecab768674d984ce309ad861e8e8bfac1a8c510dbaa5ad74a8', + 'interval_gate.py': '60a743d13f668ef86db4b8215b4d5d04430a671ba6f1fe06d9c1c4c3dfe86da5', +} + + +def run(receipt_path, gate_path): + raw = receipt_path.read_bytes() + assert sha256(raw).hexdigest() == PINS['OWNED.json'] + assert sha256(gate_path.read_bytes()).hexdigest() == PINS['interval_gate.py'] + receipt = json.loads(raw) + spec = spec_from_file_location('pinned_direct_sum_interval', gate_path) + gate = module_from_spec(spec) + spec.loader.exec_module(gate) + assert receipt['head'] == 'e3f8d39c43b07063dfc5b800f71c5d21015259e6' + target = Fraction(receipt['target']) + assert target == Fraction('0.0040075385047236') + hist = Counter({int(r): n for r, n in receipt['owned_rank_hist'].items()}) + assert hist == Counter(m['rank'] for m in receipt['owned']) + sites = sum(hist.values()) + rank = sum(r*n for r, n in hist.items()) + stages = 17 + assert (sites, rank) == (47, 112) + current = gate.smul(gate.moment(hist, target), stages) + assert gate.show(current) == receipt['all_old_debits'] + signed = Counter(receipt['invoice']['T']) + signed.subtract(receipt['invoice']['P']) + baseline = gate.moment(signed, target) + assert gate.show(baseline) == receipt['baseline'] + + def bound(total_rank, packed_children): + packed = gate.smul(gate.power(total_rank, target), packed_children) + credit = gate.sub(current, packed) + moment = gate.add(baseline, credit) + return moment, dict(rank_per_child=total_rank, children=packed_children, + packed_debit=gate.show(packed), directed_credit=gate.show(credit), + directed_remaining_moment=gate.show(moment)) + + native, native_record = bound(rank, stages) + overall, overall_record = bound(stages*rank, 1) + assert native[1] < 0 and overall[1] < 0 + fit, fit_record = bound(105, stages) + miss, miss_record = bound(106, stages) + assert fit[0] > 0 > miss[1] + + return dict(status='EXCLUDED_ADDITIVE_RANK_DIRECT_SUM', head=receipt['head'], pins=PINS, + target=str(target), owned_rank_hist=hist, owned_sites_per_native=sites, + native_invocations=stages, old_debit=gate.show(current), baseline=gate.show(baseline), + one_per_native=native_record, one_across_all_natives=overall_record, + same_rank_each_native_price_threshold=[fit_record, miss_record]) + + +if __name__ == '__main__': + assert __debug__, 'Run with assertions enabled' + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('receipt_path', type=Path) + parser.add_argument('gate_path', type=Path) + print(json.dumps(run(**vars(parser.parse_args())), indent=2, sort_keys=True)) diff --git a/research/p104-owned-move-transport-bound/checks/donor_intervals.py b/research/p104-owned-move-transport-bound/checks/donor_intervals.py new file mode 100644 index 0000000000..a8ad58a554 --- /dev/null +++ b/research/p104-owned-move-transport-bound/checks/donor_intervals.py @@ -0,0 +1,213 @@ +"""Check exact proportional donors in every live chart on retained #7161 clocks.""" + +import argparse +from collections import Counter, defaultdict +from fractions import Fraction +import gzip +from hashlib import sha256 +from importlib.util import module_from_spec, spec_from_file_location +import json +from pathlib import Path +from time import monotonic + +OWNED_SHA = '53da0a7b551b34f3baf633083a4362570ebe694a694e2d0b6226d01c08a6ab3b' + + +def load_pinned(name, path, expected): + assert sha256(path.read_bytes()).hexdigest() == expected, path + spec = spec_from_file_location(name, path) + module = module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +def row_key(row): + first = min(row) + leading = row[first] + return tuple((i, row[i] / leading) for i in sorted(row)) + + +def replay(word, last_cut, visit, check_time): + public = word['public'] + charts = word['initial'] + [None]*word['owned_fields'] + rows = [{i:Fraction(1)} for i in range(public)] + [{} for _ in range(word['owned_fields'])] + coefficients = {} + for r, row in enumerate(rows): + visit(0, r, charts[r], row) + for i, (op, role, *args) in enumerate(word['program'][:last_cut]): + if i % 1024 == 0: + check_time() + if op == 'MOVE': + assert charts[role] == args[0] + charts[role] = args[1] + elif op == 'INIT': + assert charts[role] is None and not rows[role] + charts[role] = args[0] + elif op == 'CLEAR': + assert charts[role] == args[0] + charts[role], rows[role] = None, {} + else: + token = args[0 if op == 'SCALE' else 1] + if token not in coefficients: + coefficients[token] = Fraction(token) + value = coefficients[token] + if op == 'SCALE': + assert charts[role] == args[1] and value + rows[role] = {i:value*x for i,x in rows[role].items()} + else: + source = args[0] + assert charts[role] == charts[source] == args[2] + assert op == 'ADD' or op == 'COPY' and not rows[role] + for coordinate,x in rows[source].items(): + z = rows[role].get(coordinate,0) + value*x + if z: + rows[role][coordinate] = z + else: + rows[role].pop(coordinate,None) + visit(i+1, role, charts[role], rows[role]) + + +def controls(): + assert row_key({0:Fraction(2),3:Fraction(-5)}) == row_key({3:Fraction(15),0:Fraction(-6)}) + assert row_key({0:Fraction(2),3:Fraction(-5)}) != row_key({0:Fraction(-6),3:Fraction(-15)}) + toy = dict(public=3, owned_fields=0, initial=[0,0,0], + program=[['ADD',0,2,'3',0], ['SCALE',0,'-2',0]]) + timeline = [] + replay(toy, 2, lambda cut,role,chart,row: timeline.append((cut,role,dict(row))), lambda:None) + assert timeline[-2:] == [(1,0,{0:1,2:3}), (2,0,{0:-2,2:-6})] + + +def run(peer_root, caller_path, gate_path, owned_path, cut_cap, seconds): + controls() + started = monotonic() + + def check_time(): + if monotonic()-started > seconds: + raise TimeoutError('donor tape prepass reached its deadline') + + helper = load_pinned('owned_clocks', owned_path, OWNED_SHA) + package = peer_root / helper.PACKAGE + pins = helper.PINS | {'round8/evidence/complex/owned.py': OWNED_SHA} + word_raw = gzip.decompress(helper.pinned(package/'WORD.json.gz', f'peer/{helper.PACKAGE}/WORD.json.gz')) + assert sha256(word_raw).hexdigest() == pins[f'peer/{helper.PACKAGE}/WORD.json.gz#decompressed'] + word = json.loads(word_raw) + result = json.loads(helper.pinned(package/'RESULT.json', f'peer/{helper.PACKAGE}/RESULT.json')) + caller = json.loads(helper.pinned(caller_path, 'caller-inputs/CALLER.json')) + gate = load_pinned('directed_power', gate_path, pins['caller-inputs/interval_gate.py']) + try: + spaces, native, moves, _ = helper.scan_word(word, check_time, 80000) + signed, invoice = helper.full_invoice(word, caller, result, native) + baseline = gate.moment(signed, helper.TARGET) + by_role = defaultdict(set) + for m in moves: + by_role[m['role']].add(m['event']) + seen_by_cut = {} + + def sample(cut, role, chart, row): + if cut-1 in by_role.get(role, ()): + assert chart is not None and row + seen_by_cut[cut-1] = row_key(row) + + replay(word, max(m['event'] for m in moves)+1, sample, check_time) + assert seen_by_cut.keys() == {m['event'] for m in moves} + moves_by_key = defaultdict(list) + for move in moves: + moves_by_key[seen_by_cut[move['event']]].append(move) + allowed_leads = {(len(key), key[0][0]) for key in moves_by_key} + last_cut = max(m['window'][1] for m in moves) + available = {} + intervals = [] + stored = Counter() + + def flush(role, stop): + lo,key,chart = available[role] + for move in moves_by_key[key]: + first = max(lo, move['window'][0]) + last = min(stop, move['window'][1]) + if role != move['role'] and first <= last: + d = helper.distance(spaces[chart], spaces[move['target']]) + intervals.append(dict(first=first, last=last, event=move['event'], role=role, + chart=chart, target=move['target'], old_rank=move['rank'], rank=d)) + stored['interval_move_intersections'] += 1 + stored['constant_intervals'] += 1 + + def index(cut, role, chart, row): + key = None + if row and (len(row), min(row)) in allowed_leads: + key = row_key(row) + old = available.get(role) + if old and (old[1],old[2]) == (key,chart): + return + if old: + flush(role, cut-1) + del available[role] + if key in moves_by_key: + assert chart is not None + available[role] = (cut,key,chart) + + replay(word, last_cut, index, check_time) + for role in available: + flush(role,last_cut) + except TimeoutError: + return dict(status='INCOMPLETE_TAPE_PREPASS', head=helper.HEAD, pins=pins, first_pending='prepass') + intervals.sort(key=lambda x:(x['first'],x['event'],x['role'],x['chart'],x['last'])) + cuts = set() + checked = [] + pending = None + best = {m['event']:m['rank'] for m in moves} + for i, candidate in enumerate(intervals): + new = candidate['first'] not in cuts + if new and len(cuts) >= cut_cap or monotonic()-started > seconds: + pending = i + break + cuts.add(candidate['first']) + checked.append(candidate) + event = candidate['event'] + best[event] = min(best[event], candidate['rank']) + assert len(cuts) <= cut_cap + untested = intervals[pending:] if pending is not None else () + # Grant each pending site its shortest price-compatible distance. The tape + # index has already authenticated these interval lengths and chart labels. + for candidate in untested: + event = candidate['event'] + best[event] = min(best[event], candidate['rank']) + paid = {m['event']:m['rank'] for m in moves} + old = Counter(paid.values()) + reduced = Counter(rank for rank in best.values() if rank) + difference = old.copy() + difference.subtract(reduced) + saving = gate.smul(gate.moment(difference, helper.TARGET), helper.STAGES) + packed_rank = sum(best.values()) + packed = gate.power(packed_rank, helper.TARGET) if packed_rank else (0,0) + packed_saving = gate.smul(gate.sub(gate.moment(old, helper.TARGET), packed), helper.STAGES) + paid_sites = sorted(i for i in best if best[i] < paid[i]) + assert all(c['role'] != next(m['role'] for m in moves if m['event']==c['event']) for c in intervals) + return dict(status='EXHAUSTED' if pending is None else 'CAP_PENDING', head=helper.HEAD, + target=str(helper.TARGET), pins=pins, baseline=gate.show(baseline), invoice=invoice, + caps=dict(representative_cuts=cut_cap, seconds=seconds), + all_integer_cuts=len({c for m in moves for c in range(m['window'][0],m['window'][1]+1)}), + representative_cuts_tested=len(cuts), proportional_intervals_total=len(intervals), + proportional_intervals_tested=len(checked), proportional_intervals_unresolved=len(untested), + first_pending=untested[0] if untested else None, census=stored, + projective_target_rows=len(moves_by_key), intervals=checked, + old_native_ranks=old, optimistic_native_ranks=reduced, + potentially_saving_events=paid_sites, site_lower_rank={i:best[i] for i in paid_sites}, + directed_saving_upper=gate.show(saving)[1], + directed_resulting_moment_upper=gate.show(gate.add(baseline, (0,max(0,saving[1]))))[1], + additive_packing=dict(rank=packed_rank, directed_saving_upper=gate.show(packed_saving)[1], + directed_resulting_moment_upper=gate.show(gate.add(baseline, (0,packed_saving[1])))[1]), + controls=['rational projective equality and sign negative', 'ADD/COPY coordinate cannot replace event clock'], + seed=None) + + +if __name__ == '__main__': + if not __debug__: + raise RuntimeError('Run with assertions enabled') + parser = argparse.ArgumentParser(description=__doc__) + for name in ('peer_root','caller_path','gate_path','owned_path'): + parser.add_argument(name,type=Path) + parser.add_argument('--cut-cap',type=int,default=2048) + parser.add_argument('--seconds',type=int,default=480) + args = parser.parse_args() + assert 0 < args.cut_cap <= 2048 and 0 < args.seconds <= 480 + print(json.dumps(run(**vars(args)),indent=2,sort_keys=True)) diff --git a/research/p104-owned-move-transport-bound/checks/multi_gate.py b/research/p104-owned-move-transport-bound/checks/multi_gate.py new file mode 100644 index 0000000000..dc94fd975a --- /dev/null +++ b/research/p104-owned-move-transport-bound/checks/multi_gate.py @@ -0,0 +1,123 @@ +"""Window-union necessary rank gate for at least three separately charged charts.""" + +import argparse +from collections import Counter +import json +from pathlib import Path +from time import monotonic + +import hashlib +import importlib.util + +MAIN_SHA = '6745163b953006ae1ee2627a8a375cb0711748a6c2b89eead7abb71f887ed280' + + +def main_module(path): + assert hashlib.sha256(path.read_bytes()).hexdigest() == MAIN_SHA, path + spec = importlib.util.spec_from_file_location('charged_chart_gate',path) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +def run(peer, caller_path, interval_path, owned_path, side_path, donor_path, chart_gate_path, seconds): + started = monotonic() + + def check_time(): + if monotonic()-started >= seconds: + raise TimeoutError('four-minute gate cap') + + main = main_module(chart_gate_path) + pins = main.DEPENDENCIES + owned = main.import_pinned('multi_owned_clocks',owned_path,pins['round8/evidence/complex/owned.py']) + elimination = main.import_pinned('multi_row_rank',side_path,pins['round9/evidence/complex/side_rows.py']) + donor = main.import_pinned('multi_tape_rows',donor_path,pins['round9/evidence/complex/donors/donor_intervals.py']) + main.controls(elimination) + word,result,caller,gate = main.read_sources(peer,caller_path,interval_path,owned,3) + pins = owned.PINS | pins | {'round10/evidence/complex/charged_charts.py': MAIN_SHA} + try: + spaces,native,moves,_ = owned.scan_word(word,check_time,80000) + signed,invoice = owned.full_invoice(word,caller,result,native) + baseline = gate.moment(signed,owned.TARGET) + sites = sorted((m for m in moves if m['rank'] >= 4),key=lambda m:(-m['rank'],m['event'])) + assert len(sites) == 16 + rep = {} + classes = [rep.setdefault(s,i) for i,s in enumerate(spaces)] + geometry = {} + for m in sites: + check_time() + target = classes[m['target']] + d = {i:owned.distance(s,spaces[target]) for s,i in rep.items()} + geometry[m['event']] = {i:r for i,r in d.items() if r <= m['rank']-3} + intervals,vectors,selected = main.chart_states(word,sites,classes,geometry,elimination,donor,check_time) + except TimeoutError: + return dict(status='PREPASS_PENDING',head=owned.HEAD,pins=pins,first_pending='prepass',cap_seconds=seconds) + + results = [] + pending = None + best = {m['event']:m['rank'] for m in moves} + group_count = 0 + for i,m in enumerate(sites): + event = m['event'] + target = classes[m['target']] + lo,hi = m['window'] + costs = geometry[event] + pools = {chart:main.clipped(intervals[chart],m['role'],lo,hi) for chart in costs} + available = [chart for chart in sorted(costs,key=lambda chart:(costs[chart],chart)) if chart != target and pools[chart]] + site = dict(event=event, old_rank=m['rank'], target=target, clock=m['window'], tests=[], optimistic_lower_rank=None) + try: + for budget in range(3,m['rank']): + check_time() + eligible = [] + for chart in available: + other = [x for x in available[:3] if x != chart][:2] + if len(other) == 2 and costs[chart]+sum(costs[x] for x in other) <= budget: + eligible.append(chart) + test = dict(budget=budget,charts=eligible,union_in_span=False) + if eligible: + assert len(eligible) >= 3 + vectors_here = (vectors[r] for chart in (target,*eligible) for _,_,r in pools[chart]) + test['union_in_span'] = main.in_span(elimination,selected[event],vectors_here) + group_count += 1 + site['tests'].append(test) + if test['union_in_span']: + best[event] = budget + site['optimistic_lower_rank'] = budget + break + except TimeoutError: + pending = dict(index=i,event=event,budget=budget) + site['pending'] = True + results.append(site) + break + results.append(site) + if pending: + # Each pending site retains the optimistic cost of three positive ranks. + for m in sites[pending['index']:]: + best[m['event']] = 3 + old = Counter(m['rank'] for m in moves) + delta = old.copy() + delta.subtract(Counter(best.values())) + saving = gate.smul(gate.moment(delta,owned.TARGET),owned.STAGES) + rank_sum = sum(best.values()) + packed = gate.smul(gate.sub(gate.moment(old,owned.TARGET),gate.power(rank_sum,owned.TARGET)),owned.STAGES) + survivors = [r['event'] for r in results if r['optimistic_lower_rank'] is not None] + return dict(status='CAP_PENDING' if pending else 'EXHAUSTED',head=owned.HEAD,pins=pins, + invoice=invoice,target=str(owned.TARGET),baseline=gate.show(baseline),cap_seconds=seconds, + first_pending=pending,old_sites=len(moves),high_rank_sites=len(sites), + high_rank_sites_unresolved=len(sites)-len(results)+(1 if pending else 0), + union_groups_tested=group_count,union_survivor_sites=survivors,results=results, + optimistic_price=dict(saving=gate.show(saving),moment=gate.show(gate.add(baseline,saving)), + additive_pack_rank=rank_sum, + additive_pack_moment=gate.show(gate.add(baseline,packed))),seed=None) + + +if __name__ == '__main__': + if not __debug__: + raise RuntimeError('Run with assertions enabled') + parser = argparse.ArgumentParser(description=__doc__) + for label in ('peer','caller_path','interval_path','owned_path','side_path','donor_path','chart_gate_path'): + parser.add_argument(label,type=Path) + parser.add_argument('--seconds',type=int,default=240) + args = parser.parse_args() + assert 0 < args.seconds <= 240 + print(json.dumps(run(**vars(args)),indent=2,sort_keys=True)) diff --git a/research/p104-owned-move-transport-bound/checks/owned.py b/research/p104-owned-move-transport-bound/checks/owned.py new file mode 100644 index 0000000000..a54a0256a6 --- /dev/null +++ b/research/p104-owned-move-transport-bound/checks/owned.py @@ -0,0 +1,622 @@ +"""Exact #7161 charged owned-MOVE sharing ceilings on retained contact clocks.""" +import argparse +from collections import Counter, defaultdict +from fractions import Fraction +from functools import lru_cache +import gzip +from hashlib import sha256 +from importlib.util import module_from_spec, spec_from_file_location +from itertools import combinations, product +import json +from pathlib import Path +from time import monotonic + +PACKAGE = 'research/p104-rank8-exit-funded-split' +HEAD = 'e3f8d39c43b07063dfc5b800f71c5d21015259e6' +PINS = { + f'peer/{PACKAGE}/WORD.json.gz': 'c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2', + f'peer/{PACKAGE}/WORD.json.gz#decompressed': '9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3', + f'peer/{PACKAGE}/RESULT.json': '59080d75e7281b1a8c1353930917fd15869ad747ff4200948898f78f11c14089', + 'caller-inputs/CALLER.json': '255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc', + 'caller-inputs/interval_gate.py': '60a743d13f668ef86db4b8215b4d5d04430a671ba6f1fe06d9c1c4c3dfe86da5', +} +TARGET = Fraction('0.0040075385047236') +PRIME = 2147483647 +STAGES = 17 +PUBLIC_SEEDS = (0, 1, 4, 6, 7, 8) +HOSTED_SEEDS = (2, 3, 5, 9, 10, 11) + + +def pinned(path, label): + raw = path.read_bytes() + assert sha256(raw).hexdigest() == PINS[label], path + return raw + + +def canonical_digest(value): + return sha256(json.dumps(value, sort_keys=True, separators=(',', ':')).encode()).hexdigest() + + +def span(vectors): + result = {0} + for vector in vectors: + assert vector not in result + result.update(value ^ vector for value in tuple(result)) + return frozenset(result) + + +def dimension(space): + assert len(space) > 0 and len(space) & (len(space) - 1) == 0 + return len(space).bit_length() - 1 + + +def distance(a, b): + return dimension(a) + dimension(b) - 2 * dimension(a & b) + + +def overlap_interval(a, b, c, d): + low1, high1 = (a, b) if a < b else (b, a) + low2, high2 = (c, d) if c < d else (d, c) + joint_lower = {u ^ v for u in low1 for v in low2} + joint_upper = high1 & high2 + ranks = (dimension(joint_lower), dimension(joint_upper)) + return ranks, ranks[1] - ranks[0] if joint_lower <= joint_upper else None + + +def scan_word(word, check_time, event_cap): + public = word['public'] + fields = word['owned_fields'] + spaces = list(map(span, word['frames'])) + charts = word['initial'] + [None] * fields + active = set() + contacts = defaultdict(list) + native_moves, owned_moves = [], [] + opcodes = Counter() + lifetimes = peak = 0 + program = word['program'] + assert len(program) <= event_cap, {'first_pending_native_event': event_cap} + for i, event in enumerate(program): + if i % 1024 == 0: + check_time() + op, r, *args = event + assert 0 <= r < len(charts) + opcodes[op] += 1 + if op != 'SCALE': + contacts[r].append((i, op if op not in ('ADD', 'COPY') else op + '_DEST')) + if op == 'MOVE': + a, b, owned = args + assert charts[r] == a and owned == (r >= public) + assert spaces[a] < spaces[b] or owned and spaces[b] < spaces[a] + rank = distance(spaces[a], spaces[b]) + move = dict(event=i, role=r, source=a, target=b, rank=rank) + native_moves.append(move) + if owned: + assert r in active + owned_moves.append(move) + charts[r] = b + elif op == 'INIT': + assert r >= public and charts[r] is None and r not in active + charts[r] = args[0] + active.add(r) + lifetimes += 1 + peak = max(peak, len(active)) + elif op == 'CLEAR': + assert r >= public and charts[r] == args[0] and r in active + charts[r] = None + active.remove(r) + elif op in ('ADD', 'COPY'): + s, coeff, frame = args + assert 0 <= s < len(charts) and s != r + assert charts[r] == charts[s] == frame and Fraction(coeff) + contacts[s].append((i, op + '_SOURCE')) + else: + assert op == 'SCALE' and charts[r] == args[1] and Fraction(args[0]) + assert charts == word['final'] + [None] * fields and not active + for move in owned_moves: + history = contacts[move['role']] + j = history.index((move['event'], 'MOVE')) + assert 0 < j < len(history) - 1 + before, after = history[j-1], history[j+1] + move.update(window=[before[0]+1, after[0]], previous=before, following=after) + assert (public, fields, lifetimes, peak, len(program), len(owned_moves)) == (1499, 63, 66, 48, 76349, 47) + return spaces, native_moves, owned_moves, dict( + public=public, owned_labels=fields, lifetimes=lifetimes, peak=peak, events=len(program), opcodes=opcodes, + ) + + +def full_invoice(word, caller, result, native_moves): + dports = word['hosted']['Dports'] + second = dict(zip(dports, zip(word['hosted']['X2'], word['hosted']['Y2']))) + assert caller['types']['A']['ports'] == dports + assert sorted(dports + caller['types']['B']['ports']) == list(range(104)) + assert caller['ambient_rank'] == 145 and caller['stages'] == STAGES + main = set(word['live']) | {r+112 for r in word['live']} | set(word['hosted']['X2']) | set(word['hosted']['Y2']) + helpers = set(range(word['public'])) - main + positions, staged = [], [] + paid = Counter() + for ce, event in enumerate(caller['events']): + if event[0] == 'J': + stage, pa, pb = event[1:] + staged.append(stage) + mapping = {} + for pi, r in enumerate(word['live']): + a, b = pa[:2] if pi in second else pb[:2] + mapping[r] = ('main', pi, a) + mapping[r+112] = ('main', pi, b) + if pi in second: + x, y = second[pi] + mapping[x] = ('main', pi, pa[2]) + mapping[y] = ('main', pi, pa[3]) + assert set(mapping) == main and len(set(mapping.values())) == len(main) + mapping.update((r, ('helper', ce, r)) for r in helpers) + for r in range(word['public'], word['public'] + word['owned_fields']): + mapping[r] = ('owned', ce, r-word['public']) + assert len(mapping) == len(set(mapping.values())) == word['public'] + word['owned_fields'] + for move in native_moves: + rank = move['rank'] + paid[rank] += 1 + positions.append([ce, move['event'], mapping[move['role']], rank, move['source'], move['target']]) + else: + kind, op, role, *args = event + if op not in ('IDLE_ONE', 'IDLE_ODD', 'QUERY'): + assert op in ('ADD', 'SWAP', 'SCALE', 'LAMBDA') + continue + rank = 1 if op == 'QUERY' else 8 * len(args[0]) + (op == 'IDLE_ODD') + for pi in caller['types'][kind]['ports']: + owner = ('query_scratch', ce, pi) if op == 'QUERY' else ('main', pi, role) + paid[rank] += 1 + positions.append([ce, op, owner, rank]) + assert staged == list(range(1, STAGES+1)) + binding = result['checks']['ODD-PHYSICAL-BINDING.json'] + assert binding['native_sha256'] == PINS[f'peer/{PACKAGE}/WORD.json.gz#decompressed'] + assert binding['caller_sha256'] == PINS['caller-inputs/CALLER.json'] + assert result['caller_sha256'] == binding['caller_sha256'] + geom = binding['occurrence_and_geometry'] + positions_sha = canonical_digest(positions) + assert positions_sha == geom['complete_paid_position_digest'] + invoice = result['price']['after'] + assert paid == {int(r): n for r, n in invoice['P'].items()} + assert invoice['T'] == geom['targets'] + assert sum(paid.values()) == geom['paid_positions'] == 110519 + assert sum(invoice['T'].values()) == geom['productive_fields'] == 22427 + signed = Counter({int(r): n for r, n in invoice['T'].items()}) + signed.subtract(paid) + assert sum(r*n for r, n in signed.items()) == invoice['S'] == 1424 + return signed, dict(P=paid, T=invoice['T'], S=1424, paid_position_sha256=positions_sha) + + +def overlap(left, right): + lo = max(left[0], right[0]) + hi = min(left[1], right[1]) + return [lo, hi] if lo <= hi else None + + +def match_max(edges): + graph = defaultdict(dict) + for i, j, weight in edges: + if weight > 0: + graph[i][j] = graph[j][i] = weight + + @lru_cache(None) + def best(vertices): + if not vertices: + return 0, () + i = min(vertices, key=lambda v: (len(graph[v].keys() & vertices), v)) + rest = vertices - {i} + winner = best(rest) + for j in sorted(graph[i].keys() & rest): + total, matching = best(rest - {j}) + pair = tuple(sorted((i, j))) + winner = max(winner, (total + graph[i][j], tuple(sorted((pair,) + matching)))) + return winner + + value, chosen = best(frozenset(graph)) + return value, chosen, best.cache_info().currsize + + +def scan_pairs(owned, spaces, gate, check_time, pair_cap): + counts = Counter({k: 0 for k in ('pairs', 'same_owner', 'distinct_owner', 'disjoint_windows', + 'overlap_windows', 'common_positive_interval', 'same_source', + 'same_target', 'cross_supply')}) + compatible, pending = [], None + for left, right in combinations(owned, 2): + i, j = left['event'], right['event'] + if counts['pairs'] == pair_cap: + pending = [i, j] + break + check_time() + counts['pairs'] += 1 + if left['role'] == right['role']: + counts['same_owner'] += 1 + continue + counts['distinct_owner'] += 1 + clock = overlap(left['window'], right['window']) + if clock is None: + counts['disjoint_windows'] += 1 + continue + counts['overlap_windows'] += 1 + a, b, c, d = (spaces[move[key]] for move in (left, right) for key in ('source', 'target')) + ranks, width = overlap_interval(a, b, c, d) + relations = dict(common_positive_interval=width is not None and width > 0, + same_source=a == c, same_target=b == d, cross_supply=a == d or c == b) + counts.update(key for key, present in relations.items() if present) + credit = gate.moment(Counter((left['rank'], right['rank'])), TARGET) + compatible.append(dict(events=[i, j], owners=[left['role'], right['role']], clock=clock, + paid_ranks=[left['rank'], right['rank']], overlap_ranks=ranks, + width=width, relations=relations, both_debits=gate.show(credit), + distances=[distance(a, b), distance(c, d), distance(a, d), + distance(c, b), distance(b, d)])) + return counts, compatible, pending + + +def pair_weights(pairs, gate, check_time): + @lru_cache(None) + def weight(rank): + return gate.power(rank, TARGET) if rank else (0, 0) + + @lru_cache(None) + def star(ab, ac, bc): + # If a length exceeds this limit, clamping it preserves all inequalities. + limit = max(ab, ac, bc) + answer = None + for a in range(limit+1): + for b in range(max(0, ab-a), limit+1): + c = max(0, ac-a, bc-b) + candidate = (weight(a)[0] + weight(b)[0] + weight(c)[0], (a, b, c)) + answer = candidate if answer is None else min(answer, candidate) + return answer + + result = [] + for pair in pairs: + check_time() + ab, cd, ad, cb, bd = pair['distances'] + assert pair['paid_ranks'] == [ab, cd] + old = gate.add(weight(ab), weight(cd)) + star_a, lengths_a = star(ab, ad, bd) + star_c, lengths_c = star(cb, cd, bd) + costs = (old[0], weight(ad)[0]+weight(cb)[0], star_a, star_c) + # Keeping the original charges has exactly zero saving, without roundoff. + upper = max(0, old[1]-min(costs[1:])) + i, j = pair['events'] + result.append((i, j, upper)) + pair.update(reroute_cost_lower=gate.show((min(costs), min(costs)))[0], + reroute_upper=gate.show((upper, upper))[0], star_lengths=[lengths_a, lengths_c]) + return result + + +def probe(word, sites, check_time): + public = word['public'] + main = set(word['live']) | {r+112 for r in word['live']} | set(word['hosted']['X2']) | set(word['hosted']['Y2']) + # Separate seed sets preserve the pair and triple witnesses. + public_seeds = set(PUBLIC_SEEDS) + rows = [] + for r in range(public + word['owned_fields']): + x = tuple(int.from_bytes(sha256(f'owned-7161:{j}:{r}'.encode()).digest(), 'big') % PRIME + if (j in public_seeds and r < public or j not in public_seeds and r in main) + else 0 for j in range(len(PUBLIC_SEEDS) + len(HOSTED_SEEDS))) + rows.append(x) + zero = (0,) * (len(PUBLIC_SEEDS) + len(HOSTED_SEEDS)) + snapshots = {} + seen_coeffs = {} + + def residue(s): + if s not in seen_coeffs: + q = Fraction(s) + assert q.denominator % PRIME + seen_coeffs[s] = q.numerator * pow(q.denominator, -1, PRIME) % PRIME + return seen_coeffs[s] + + for i, (op, role, *args) in enumerate(word['program']): + if i % 1024 == 0: + check_time() + if i in sites: + assert op == 'MOVE' and args[-1] + snapshots[i] = rows[role] + if op == 'INIT': + assert rows[role] == zero + elif op == 'CLEAR': + rows[role] = zero + elif op == 'SCALE': + c = residue(args[0]) + assert c + rows[role] = tuple(c*x % PRIME for x in rows[role]) + elif op in ('ADD', 'COPY'): + s, coeff, _ = args + c = residue(coeff) + if op == 'COPY': + assert rows[role] == zero + rows[role] = tuple((x+c*y) % PRIME for x, y in zip(rows[role], rows[s])) + else: + assert op == 'MOVE' + assert snapshots.keys() == sites + return snapshots, len(seen_coeffs) + + +def determinant(a, b, i, j): + return (a[i]*b[j]-a[j]*b[i]) % PRIME + + +def determinant3(a, b, c, i, j, k): + return (a[i]*determinant(b, c, j, k) - a[j]*determinant(b, c, i, k) + + a[k]*determinant(b, c, i, j)) % PRIME + + +def async_chains(owned, snapshots, spaces, check_time): + graph = defaultdict(set) + pairs = [] + for a, b in combinations(owned, 2): + check_time() + i, j = a['event'], b['event'] + if determinant(snapshots[i], snapshots[j], 0, 1): + continue + graph[i].add(j) + graph[j].add(i) + pairs.append([i, j]) + + move = {m['event']: m for m in owned} + seen = set() + chains = [] + for start in sorted(graph): + if start in seen: + continue + component, stack = set(), [start] + while stack: + node = stack.pop() + if node in component: + continue + component.add(node) + stack.extend(graph[node] - component) + seen.update(component) + itinerary = [move[i] for i in sorted(component)] + first, last = itinerary[0], itinerary[-1] + # The four source/target cases follow one common calculation: later + # original root frames are already required as earlier output frames. + assert all(x['window'][1] < y['window'][0] and x['target'] == y['source'] + for x, y in zip(itinerary, itinerary[1:])) + labels = [first['source']] + [x['target'] for x in itinerary] + assert len(set(spaces[x] for x in labels)) == len(labels) + endpoint_distance = distance(spaces[first['source']], spaces[last['target']]) + assert all(m['rank'] == 1 for m in itinerary[:-1]) + assert endpoint_distance == sum(m['rank'] for m in itinerary) + chains.append(dict(events=sorted(component), labels=labels, ranks=[m['rank'] for m in itinerary], + clocks=[m['window'] for m in itinerary], endpoint_distance=endpoint_distance, + necessary_positive_legs=len(itinerary))) + return dict(zero_minor_pairs=pairs, chains=chains, compatible_pair_count=len(pairs), + screened_pairs=len(owned)*(len(owned)-1)//2, saving_upper=0) + + +def scan_triples(owned, snapshots, gate, check_time, triple_cap): + counts = Counter({k: 0 for k in ('unordered_triples', 'same_owner', 'disjoint_windows', + 'clock_compatible_tested', 'all_public_zero_minor', 'hosted_zero_minor')}) + checked, pending = [], None + ranks = {m['event']: m['rank'] for m in owned} + for group in combinations(owned, 3): + check_time() + counts['unordered_triples'] += 1 + if len({m['role'] for m in group}) != 3: + counts['same_owner'] += 1 + continue + left, center, right = [m['window'] for m in group] + shared = overlap(left, center) + shared = overlap(shared, right) if shared else None + if not shared: + counts['disjoint_windows'] += 1 + continue + events = [m['event'] for m in group] + if counts['clock_compatible_tested'] == triple_cap: + pending = events + break + counts['clock_compatible_tested'] += 1 + a, b, c = map(snapshots.__getitem__, events) + public_minor = determinant3(a, b, c, 0, 1, 4) + hosted_minor = determinant3(a, b, c, 2, 3, 5) + counts['all_public_zero_minor'] += not public_minor + counts['hosted_zero_minor'] += not hosted_minor + checked.append(dict(events=events, clock=shared, all_public_minor=public_minor, + hosted_only_minor=hosted_minor)) + + vertices = {i for triple in checked for i in triple['events']} + survivors = [t for t in checked if not t['all_public_minor']] + survivor_vertices = {i for triple in survivors for i in triple['events']} + + def all_debits_upper(sites): + return gate.smul(gate.moment(Counter(ranks[i] for i in sites), TARGET), STAGES) + + return dict(cap=triple_cap, first_pending=pending, counts=counts, tested=checked, + vertices=sorted(vertices), price_before=gate.show(all_debits_upper(vertices)), + survivors=survivors, survivor_price=gate.show(all_debits_upper(survivor_vertices))) + + +def rank_and_determinant(rows): + matrix = [list(row) for row in rows] + size = len(matrix) + assert all(len(row) == size for row in matrix) + rank = 0 + value = 1 + for col in range(size): + pivot = next((i for i in range(rank, size) if matrix[i][col]), None) + if pivot is None: + continue + if pivot != rank: + matrix[rank], matrix[pivot] = matrix[pivot], matrix[rank] + value = -value + coefficient = matrix[rank][col] + value = value*coefficient % PRIME + inverse = pow(coefficient, -1, PRIME) + for i in range(rank+1, size): + multiple = matrix[i][col]*inverse % PRIME + if multiple: + matrix[i] = [(x-multiple*y) % PRIME for x,y in zip(matrix[i], matrix[rank])] + rank += 1 + return rank, value % PRIME if rank == size else 0 + + +def maximal_clock_sets(owned, snapshots, check_time, cap): + # Every compatible subset has a witness at its latest left endpoint. + starts = sorted({m['window'][0] for m in owned}) + choices = {} + count = 0 + multi_owner_cuts = 0 + for cut in starts: + check_time() + active = defaultdict(list) + for move in owned: + if move['window'][0] <= cut <= move['window'][1]: + active[move['role']].append(move['event']) + multi_owner_cuts += any(len(moves) > 1 for moves in active.values()) + for candidate in product(*active.values()): + if count == cap: + return dict(first_pending=[cut, sorted(candidate)], candidate_count=count, cap=cap) + choices.setdefault(frozenset(candidate), cut) + count += 1 + maximal = [s for s in choices if not any(s < t for t in choices)] + hist = Counter() + tests = [] + for compatible in sorted(maximal, key=lambda x: tuple(sorted(x))): + check_time() + events = sorted(compatible) + width = len(events) + hist[width] += 1 + assert width <= min(len(PUBLIC_SEEDS), len(HOSTED_SEEDS)), 'insufficient deterministic probes' + + def evaluate(seeds): + matrix = [[snapshots[i][s] for s in seeds[:width]] for i in events] + rank, value = rank_and_determinant(matrix) + return dict(rank=rank, determinant=value) + + tests.append(dict(events=events, witness_cut=choices[compatible], + all_public=evaluate(PUBLIC_SEEDS), hosted_only=evaluate(HOSTED_SEEDS))) + pending = [r for r in tests if r['all_public']['rank'] < len(r['events'])] + return dict(first_pending=None, cap=cap, candidate_count=count, tested=tests, maximal_widths=hist, + distinct_count=len(choices), max_width=max(hist), start_count=len(starts), + same_owner_choices_at_cuts=multi_owner_cuts, modular_rank_unresolved=pending) + + +def run(peer_root, caller_path, gate_path, event_cap, pair_cap, triple_cap, seconds): + started = monotonic() + + def check_time(): + assert monotonic()-started <= seconds, 'time cap reached before exhaustion' + + package = peer_root / PACKAGE + compressed = pinned(package/'WORD.json.gz', f'peer/{PACKAGE}/WORD.json.gz') + raw = gzip.decompress(compressed) + assert sha256(raw).hexdigest() == PINS[f'peer/{PACKAGE}/WORD.json.gz#decompressed'] + word = json.loads(raw) + result = json.loads(pinned(package/'RESULT.json', f'peer/{PACKAGE}/RESULT.json')) + caller = json.loads(pinned(caller_path, 'caller-inputs/CALLER.json')) + pinned(gate_path, 'caller-inputs/interval_gate.py') + spec = spec_from_file_location('pinned_owned_interval', gate_path) + gate = module_from_spec(spec) + spec.loader.exec_module(gate) + + # Lucas–Lehmer for the prime exponent 31 verifies the reduction field. + mersenne = 4 + for _ in range(29): + mersenne = (mersenne*mersenne - 2) % PRIME + assert PRIME == 2**31-1 and mersenne == 0 + h0, h1, h2 = (span(xs) for xs in ([], [1], [1, 2])) + h3 = span([2]) + assert overlap_interval(h0, h2, h1, h2) == ((1, 2), 1) + assert overlap_interval(h0, h1, h1, h2) == ((1, 1), 0) + assert overlap_interval(h0, h1, h3, h2) == ((1, 1), None) + assert overlap([1, 2], [2, 3]) == [2, 2] and overlap([1, 2], [3, 4]) is None + assert match_max([(1, 2, 8), (1, 3, 7), (3, 4, 2)])[:2] == (10, ((1, 2), (3, 4))) + assert determinant((1, 2), (2, 4), 0, 1) == 0 + assert determinant((1, 2), (2, 5), 0, 1) == 1 + assert determinant3((1, 0, 0), (0, 1, 0), (1, 1, 0), 0, 1, 2) == 0 + assert determinant3((1, 0, 0), (0, 1, 0), (1, 1, 1), 0, 1, 2) == 1 + assert rank_and_determinant(((0, 1), (1, 0))) == (2, PRIME-1) + assert rank_and_determinant(((0, 1), (0, 2))) == (1, 0) + + spaces, native, owned, census = scan_word(word, check_time, event_cap) + signed, invoice = full_invoice(word, caller, result, native) + lo, hi = map(Fraction, result['price']['gate']['raw_bracket']) + lo_sign, hi_sign = gate.moment(signed, lo), gate.moment(signed, hi) + assert lo_sign[0] > 0 > hi_sign[1] + baseline = gate.moment(signed, TARGET) + hist = Counter(move['rank'] for move in owned) + debit = gate.smul(gate.moment(hist, TARGET), STAGES) + assert gate.add(baseline, debit)[0] > 0 + counts, pairs, pending = scan_pairs(owned, spaces, gate, check_time, pair_cap) + if pending is not None: + return dict(status='PAIR_CAP_PENDING', pins=PINS, census=census, counts=counts, first_pending=pending) + assert counts['pairs'] == len(owned)*(len(owned)-1)//2 + assert counts['overlap_windows'] == len(pairs) + ranks = {m['event']: m['rank'] for m in owned} + candidates = [pair for pair in pairs if any(pair['relations'].values())] + loose_edges = [(i, j, gate.moment(Counter((ranks[i], ranks[j])), TARGET)[1]) + for i, j in (pair['events'] for pair in pairs)] + direct_edges = [(i, j, gate.moment(Counter((ranks[i], ranks[j])), TARGET)[1]) + for i, j in (pair['events'] for pair in candidates)] + time_only = match_max(loose_edges) + direct = match_max(direct_edges) + direct_union = gate.moment(Counter(ranks[i] for i in {k for a,b,_ in direct_edges for k in (a,b)}), TARGET)[1] + assert gate.add(baseline, (0, STAGES*direct_union))[1] < 0 + + detour = pair_weights(pairs, gate, check_time) + detour_before = match_max(detour) + assert gate.add(baseline, (0, STAGES*detour_before[0]))[1] > 0 + snapshots, coeffs = probe(word, set(ranks), check_time) + by_pair = {(i, j): upper for i, j, upper in detour} + left_edges = [] + main_left_edges = [] + for pair in pairs: + i, j = pair['events'] + minor = determinant(snapshots[i], snapshots[j], 0, 1) + main_minor = determinant(snapshots[i], snapshots[j], 2, 3) + pair.update(all_public_minor=minor, hosted_only_minor=main_minor) + if not minor: + left_edges.append((i, j, by_pair[i, j])) + if not main_minor: + main_left_edges.append((i, j, by_pair[i, j])) + after_probe = match_max(left_edges) + after_main_probe = match_max(main_left_edges) + nonzero = sum(any(values[:2]) for values in snapshots.values()) + assert nonzero == 47 + async_result = async_chains(owned, snapshots, spaces, check_time) + triple_result = scan_triples(owned, snapshots, gate, check_time, triple_cap) + maximal_result = maximal_clock_sets(owned, snapshots, check_time, triple_cap) + + def price_report(upper, chosen=(), states=None): + saving = STAGES * upper + return dict(saving_upper=gate.show((saving, saving))[0], matching=chosen, states=states, + moment_upper=gate.show(gate.add(baseline, (0, saving)))[1]) + + return dict(status='EXHAUSTED_OWNED_SHARE_NECESSARY_GATES', head=HEAD, pins=PINS, + target=str(TARGET), census=census, invoice=invoice, raw_bracket=[str(lo), str(hi)], + bracket_moments=[gate.show(lo_sign), gate.show(hi_sign)], baseline=gate.show(baseline), + caps=dict(events=event_cap, pairs=pair_cap, triple_candidates=triple_cap, seconds=seconds), + first_pending=triple_result['first_pending'] or maximal_result['first_pending'], + counts=counts, owned_rank_hist=hist, owned=owned, pairs=pairs, + all_old_debits=gate.show(debit), time_only=price_report(*time_only), + direct_pair=price_report(*direct), direct_vertex_union=price_report(direct_union), + arbitrary_nested_before_probe=price_report(*detour_before), + arbitrary_nested_after_probe=price_report(*after_probe), + arbitrary_nested_hosted_only_after_probe=price_report(*after_main_probe), + asynchronous_cache=async_result, triple_corecovery=triple_result, + maximal_common_clock=maximal_result, + probe=dict(prime=PRIME, distinct_coefficient_tokens=coeffs, snapshots=snapshots, + nonzero_public_rows=nonzero, public_zero_minor_pairs=len(left_edges), + hosted_zero_minor_pairs=len(main_left_edges), + public_positive_credit_survivors=[(i,j) for i,j,u in left_edges if u>0], + hosted_positive_credit_survivors=[(i,j) for i,j,u in main_left_edges if u>0]), + controls=['positive and zero-width intervals', 'incomparable interval', 'inclusive clock', + 'matching cannot reuse one vertex', 'proportional and nonproportional minors', + 'dependent and independent three-lane controls', 'singular and pivot-swap elimination']) + + +if __name__ == '__main__': + if not __debug__: + raise RuntimeError('Run with assertions enabled') + parser = argparse.ArgumentParser(description=__doc__) + for label in ('peer_root', 'caller_path', 'gate_path'): + parser.add_argument(label, type=Path) + parser.add_argument('--event-cap', type=int, default=80000) + parser.add_argument('--pair-cap', type=int, default=4096) + parser.add_argument('--triple-cap', type=int, default=4096) + parser.add_argument('--seconds', type=int, default=600) + args = parser.parse_args() + assert 0 < args.event_cap <= 80000 and 0 < args.pair_cap <= 4096 and 0 < args.seconds <= 600 + assert 0 < args.triple_cap <= 4096 + print(json.dumps(run(**vars(args)), indent=2, sort_keys=True)) diff --git a/research/p104-owned-move-transport-bound/checks/pair_relations.py b/research/p104-owned-move-transport-bound/checks/pair_relations.py new file mode 100644 index 0000000000..4af930d9d0 --- /dev/null +++ b/research/p104-owned-move-transport-bound/checks/pair_relations.py @@ -0,0 +1,110 @@ +"""Compute the signed side-row circuits at the two minimal #7161 groups.""" + +from fractions import Fraction +import gzip +from hashlib import sha256 +import json +from pathlib import Path +import sys + +WORD_SHA = 'c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2' +SIDE_SHA = '483d4802f609ce7669e8e46b89d333b5a7ecbfd751716539357e21478df90295' + + +def relation(selected, side, rows): + basis = {} + for role in side + selected: + row, factors = rows[role].copy(), {role: Fraction(1)} + while row: + col = min(row) + if col not in basis: + scale = row[col] + basis[col] = ({i:x/scale for i,x in row.items()}, {i:x/scale for i,x in factors.items()}) + break + scale = row[col] + for dst,src in zip((row,factors), basis[col]): + for i,x in src.items(): + v = dst.get(i,0)-scale*x + if v: + dst[i] = v + else: + dst.pop(i,None) + if not row and role in selected: + assert factors[role] == 1 + return factors + raise AssertionError('missing circuit') + + +def run(word_path, side_path): + data = word_path.read_bytes() + assert sha256(data).hexdigest() == WORD_SHA + word = json.loads(gzip.decompress(data)) + data = side_path.read_bytes() + assert sha256(data).hexdigest() == SIDE_SHA + groups = json.loads(data)['exact_positive_target_subgroups'] + groups = {cut:g for g in groups if len(g['events']) == 2 + for cut in range(g['witness_cut'],g['witness_cut']+g['eligible_cuts'])} + assert set(groups) == {39802,39803,39804,45575,45576,45577} + rows = [{i: Fraction(1)} for i in range(word['public'])] + [{} for _ in range(word['owned_fields'])] + charts = word['initial'] + [None]*word['owned_fields'] + coefficients = {} + answers = [] + + def span(vectors): + result = {0} + for v in vectors: + result |= {v^x for x in result} + return result + + spans = list(map(span,word['frames'])) + for cut,(op,role,*args) in enumerate(word['program'][:max(groups)+1]): + if cut in groups: + events = groups[cut]['events'] + selected = [word['program'][i][1] for i in events] + target = [word['program'][i][3] for i in events] + sides = [i for i,c in enumerate(charts) if i not in selected and c is not None and rows[i] + and any(spans[c] == spans[t] for t in target)] + factors = relation(selected,sides,rows) + assert set(selected) & set(factors) + check = {} + for i,value in factors.items(): + for j,x in rows[i].items(): + check[j] = check.get(j,0) + value*x + assert check and not any(check.values()) + side_locality = {t:[i for i in sorted(factors) if i not in selected and spans[charts[i]] == spans[t]] for t in target} + answers.append(dict(events=events,cut=cut,coefficients={i:str(v) for i,v in sorted(factors.items())}, + target_side_roles=side_locality, selected_roles=selected, + target_span_distance=len(word['frames'][target[0]])+len(word['frames'][target[1]]) + -2*((len(spans[target[0]] & spans[target[1]])).bit_length()-1))) + if op == 'MOVE': + assert charts[role] == args[0] + charts[role] = args[1] + elif op == 'CLEAR': + assert charts[role] == args[0] + charts[role],rows[role] = None,{} + elif op == 'INIT': + assert charts[role] is None and not rows[role] + charts[role] = args[0] + else: + token = args[0 if op == 'SCALE' else 1] + if token not in coefficients: + coefficients[token] = Fraction(token) + value = coefficients[token] + if op == 'SCALE': + rows[role] = {i:value*x for i,x in rows[role].items()} + else: + source = args[0] + assert op == 'ADD' or op == 'COPY' and not rows[role] + for i,x in rows[source].items(): + z = rows[role].get(i,0) + value*x + if z: + rows[role][i] = z + else: + rows[role].pop(i,None) + return answers + + +if __name__ == '__main__': + if not __debug__: + raise RuntimeError('Run with assertions enabled') + print(json.dumps(run(*map(Path,sys.argv[1:])),indent=2,sort_keys=True)) diff --git a/research/p104-owned-move-transport-bound/checks/side_rows.py b/research/p104-owned-move-transport-bound/checks/side_rows.py new file mode 100644 index 0000000000..ddbc22e2c8 --- /dev/null +++ b/research/p104-owned-move-transport-bound/checks/side_rows.py @@ -0,0 +1,324 @@ +"""Screen chart-local side rows on all common-clock cuts of exact #7161.""" + +import argparse +from collections import Counter, defaultdict +from fractions import Fraction +import gzip +from hashlib import sha256 +from importlib.util import module_from_spec, spec_from_file_location +from itertools import combinations +from math import gcd, lcm +import json +from pathlib import Path +from time import monotonic + +PREDECESSOR = '53da0a7b551b34f3baf633083a4362570ebe694a694e2d0b6226d01c08a6ab3b' + + +def import_pinned(name, path, expected): + assert sha256(path.read_bytes()).hexdigest() == expected, path + spec = spec_from_file_location(name, path) + module = module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +def primitive(row): + content = gcd(*row.values()) + if content > 1: + return {i: x // content for i, x in row.items()} + return row + + +def integral(row): + denominator = lcm(*(x.denominator for x in row.values())) + return primitive({i: x.numerator * (denominator // x.denominator) for i, x in row.items()}) + + +def insert(basis, vector): + """Add one row over Q by fraction-free sparse elimination.""" + row = vector.copy() + while row: + lead = min(row) + entry = row[lead] + other = basis.get(lead) + if other is None: + basis[lead] = row + return 1 + pivot = other[lead] + common = gcd(pivot, entry) + a, b = pivot // common, entry // common + if a != 1: + row = {i: a*x for i, x in row.items()} + for i, x in other.items(): + value = row.get(i, 0)-b*x + if value: + row[i] = value + else: + row.pop(i, None) + row = primitive(row) + return 0 + + +def controls(): + basis = {} + assert insert(basis, {1: 2, 2: 3}) == 1 + assert insert(basis, {1: 4, 2: 6}) == 0 + assert insert(basis, {1: -3, 2: -4}) == 1 + assert insert(basis, {2: 1}) == 0 + assert insert(basis, {2: 1, 3: 1}) == 1 + row = {1: Fraction(6,5), 2: Fraction(-3,10)} + assert integral(row) == {1:4, 2:-1} + + +def max_sets(moves): + def active(cut): + return tuple(m['event'] for m in moves if m['window'][0] <= cut <= m['window'][1]) + + starts = sorted({m['window'][0] for m in moves}) + families = {frozenset(active(cut)) for cut in starts} + families = sorted((a for a in families if not any(a < b for b in families)), key=lambda a: sorted(a)) + return active, families + + +def run(peer_root, caller_path, gate_path, owned_path, seconds, maximal_cap): + controls() + started = monotonic() + + def check_time(): + if monotonic() - started > seconds: + raise TimeoutError('side-row time budget expired') + + owned = import_pinned('retained_owned', owned_path, PREDECESSOR) + package = peer_root / owned.PACKAGE + word_raw = gzip.decompress(owned.pinned(package/'WORD.json.gz', f'peer/{owned.PACKAGE}/WORD.json.gz')) + assert sha256(word_raw).hexdigest() == owned.PINS[f'peer/{owned.PACKAGE}/WORD.json.gz#decompressed'] + word = json.loads(word_raw) + result = json.loads(owned.pinned(package/'RESULT.json', f'peer/{owned.PACKAGE}/RESULT.json')) + caller = json.loads(owned.pinned(caller_path, 'caller-inputs/CALLER.json')) + gate = import_pinned('retained_interval', gate_path, owned.PINS['caller-inputs/interval_gate.py']) + spaces, native, moves, _ = owned.scan_word(word, check_time, 80000) + signed, invoice = owned.full_invoice(word, caller, result, native) + baseline = gate.moment(signed, owned.TARGET) + move = {m['event']: m for m in moves} + active_at, families = max_sets(moves) + assert len(families) == 42 + scope = {} + cut_range = range(min(m['window'][0] for m in moves), max(m['window'][1] for m in moves)+1) + for cut in cut_range: + active = active_at(cut) + if active: + assert len(active) == len({move[i]['role'] for i in active}) + group = frozenset(active) + scope[cut] = (active, next(j for j,family in enumerate(families) if group <= family)) + assert len(scope) == 11163 + assert len({a for a,_ in scope.values()}) == 53 + + charts = word['initial'] + [None] * word['owned_fields'] + rows = [{i: Fraction(1)} for i in range(word['public'])] + [{} for _ in range(word['owned_fields'])] + row_ids = list(range(len(rows))) + coefficients = {} + live_at = defaultdict(set) + for i, label in enumerate(charts): + if label is not None: + live_at[spaces[label]].add(i) + int_rows, bases, ranks = {}, {}, {} + used_families, used_groups = set(), set() + stats = {name: Counter() for name in ('target_pool','endpoint_pool')} + drop_union = {name:set() for name in stats} + bound_groups = {name:{} for name in stats} + local_sites = {} + local_groups = {} + local_group_cuts = Counter() + group_stats = defaultdict(Counter) + examined = 0 + first_pending = None + site_counts = Counter() + + def base_for(sides): + ids = tuple(row_ids[i] for i in sides) + if ids not in bases: + basis = {} + for i in sides: + key = row_ids[i] + if key not in int_rows: + int_rows[key] = integral(rows[i]) + insert(basis, int_rows[key]) + bases[ids] = basis + return bases[ids] + + def quotient_rank(sides, roles): + key = tuple(row_ids[i] for i in sides), tuple(row_ids[i] for i in roles) + if key not in ranks: + basis = base_for(sides).copy() + start = len(basis) + for i in roles: + k = row_ids[i] + if k not in int_rows: + int_rows[k] = integral(rows[i]) + insert(basis, int_rows[k]) + ranks[key] = len(basis) - start + return ranks[key] + + def side_rows(chart_labels, exempt): + return tuple(sorted({role for label in chart_labels for role in live_at[spaces[label]] + if role not in exempt and rows[role]})) + + def remember(target, key, value): + if key not in target or value[:3] < target[key][:3]: + target[key] = value + + for i,(op, r, *args) in enumerate(word['program'][:max(scope)+1]): + if i % 1024 == 0 and monotonic()-started > seconds: + first_pending = dict(cut=i, reason='time') + break + if i in scope: + events, family = scope[i] + if family >= maximal_cap: + if first_pending is None: + first_pending = dict(cut=i, family=family, reason='family cap') + else: + if monotonic()-started > seconds: + first_pending = dict(cut=i, family=family, reason='time') + break + used_families.add(family) + used_groups.add(events) + roles = tuple(move[e]['role'] for e in events) + group_stats[family]['cuts'] += 1 + examined += 1 + targets = {move[e]['target'] for e in events} + endpoints = targets | {move[e]['source'] for e in events} + assert all(rows[r0] for r0 in roles) + for name, frames in (('target_pool', targets), ('endpoint_pool', endpoints)): + sides = side_rows(frames, roles) + quotient = quotient_rank(sides, roles) + d = len(roles)-quotient + stats[name][d] += 1 + group_stats[family][f'{name}_{d}'] += 1 + if d: + drop_union[name].update(events) + remember(bound_groups[name], (events,d), (len(sides), i, quotient, sides)) + for event, r0 in zip(events, roles): + sides = side_rows((move[event]['target'],), {r0}) + if quotient_rank(sides, (r0,)) == 0: + site_counts[event] += 1 + remember(local_sites, event, (len(sides), i, move[event]['rank'], sides)) + if quotient_rank(side_rows(targets, roles), roles) < len(roles): + for size in range(2, len(events)+1): + for selected in combinations(events, size): + selected_roles = tuple(move[e]['role'] for e in selected) + selected_charts = {move[e]['target'] for e in selected} + sides = side_rows(selected_charts, selected_roles) + d = size-quotient_rank(sides, selected_roles) + if d: + local_group_cuts[selected,d] += 1 + remember(local_groups, (selected,d), (len(sides), i, d, sides)) + + if op == 'MOVE': + before, after, _ = args + assert charts[r] == before + live_at[spaces[before]].remove(r) + live_at[spaces[after]].add(r) + charts[r] = after + elif op == 'INIT': + assert not rows[r] and charts[r] is None + charts[r] = args[0] + live_at[spaces[charts[r]]].add(r) + elif op == 'CLEAR': + assert charts[r] == args[0] + live_at[spaces[charts[r]]].remove(r) + rows[r], charts[r] = {}, None + row_ids[r] = len(rows) + i + else: + key = args[0 if op == 'SCALE' else 1] + if key not in coefficients: + coefficients[key] = Fraction(key) + multiplier = coefficients[key] + if op == 'SCALE': + assert charts[r] == args[1] + rows[r] = {j:multiplier*x for j,x in rows[r].items()} + else: + source = args[0] + assert charts[r] == charts[source] == args[2] + assert op == 'ADD' or op == 'COPY' and not rows[r] + for j,x in rows[source].items(): + value = rows[r].get(j,0)+multiplier*x + if value: + rows[r][j] = value + else: + rows[r].pop(j,None) + row_ids[r] = len(rows) + i + + def price_upper(sites): + prices = Counter(move[i]['rank'] for i in sites) + saving = gate.smul(gate.moment(prices, owned.TARGET), owned.STAGES) + return dict(ranks=prices, sites=sorted(sites), saving_upper=gate.show(saving)[1], + resulting_moment_upper=gate.show(gate.add(baseline, (0,saving[1])))[1]) + + # Keep one occurrence in at most one replacement group. Overgrant choosing + # the highest-rank erased calls without constraining the carrier rows. + options = [(set(selected), tuple(sorted(selected, key=lambda e: (move[e]['rank'], e), reverse=True)[:d])) + for selected,d in sorted(local_groups)] + + def packed_price_bound(index, used, deleted): + if index == len(options): + return [(deleted, used)] + selected, omitted = options[index] + outcomes = packed_price_bound(index+1, used, deleted) + if not used & selected: + outcomes += packed_price_bound(index+1, used | selected, deleted + omitted) + return outcomes + + cases = packed_price_bound(0, set(), ()) + current = gate.moment(Counter(m['rank'] for m in moves), owned.TARGET) + total_rank = sum(m['rank'] for m in moves) + best = max(cases, key=lambda case: sum(move[e]['rank'] for e in case[0])) + remaining_rank = total_rank - sum(move[e]['rank'] for e in best[0]) + packed = gate.power(remaining_rank, owned.TARGET) + packed_credit = gate.smul(gate.sub(current, packed), owned.STAGES) + singletons = price_upper(local_sites) + retained_rank_drop = max((price_upper(deleted) for deleted,_ in cases), + key=lambda x: Fraction(x['saving_upper'])) + + screened = {} + for name in stats: + screened[name] = dict(deficit_cut_histogram=stats[name], unique_event_deletion_upper=price_upper(drop_union[name]), + positive_group_bounds=[dict(events=events, deficit=d, witness_cut=spec[1], + supply_count=spec[0], side_roles=spec[3]) + for (events,d),spec in sorted(bound_groups[name].items())]) + return dict(status='EXHAUSTED' if examined == len(scope) else 'CAP_PENDING', head=owned.HEAD, + target=str(owned.TARGET), invoice=invoice, baseline=gate.show(baseline), + caps=dict(maximal_families=maximal_cap, seconds=seconds), + pins=owned.PINS | {'round8/evidence/complex/owned.py':PREDECESSOR}, + first_pending=first_pending, clock_cuts_total=len(scope), clock_cuts_tested=examined, + clock_cuts_unresolved=len(scope)-examined, exact_active_sets_total=53, + exact_active_sets_tested=len(used_groups), maximal_families_total=len(families), + maximal_families_tested=len(used_families), basis_count=len(bases), quotient_count=len(ranks), + family_stats=[dict(maximal_events=sorted(a), counts=group_stats[j]) for j,a in enumerate(families)], + screened=screened, + singleton_target_local=dict(price_upper=singletons, witnesses=[ + dict(event=i, cut=spec[1], rank=spec[2], side_roles=spec[3], eligible_cuts=site_counts[i]) + for i,spec in sorted(local_sites.items())]), + exact_positive_target_subgroups=[dict(events=selected, deficit=d, witness_cut=spec[1], + supply_count=spec[0], side_roles=spec[3], + eligible_cuts=local_group_cuts[selected,d]) + for (selected,d),spec in sorted(local_groups.items())], + disjoint_group_deletion=dict(price_upper=retained_rank_drop, cases=len(cases), + additive_packing=dict(deleted=list(best[0]), rank=remaining_rank, + saving_upper=gate.show(packed_credit)[1], + resulting_moment_upper=gate.show(gate.add(baseline, (0,packed_credit[1])))[1])), + controls=['fraction-free elimination for singular, independent and negative pivot cases', + 'rational row denominator clearing', 'exact reconstructed paid invoice'], seed=None) + + +if __name__ == '__main__': + if not __debug__: + raise RuntimeError('Run with assertions enabled') + parser = argparse.ArgumentParser(description=__doc__) + for key in ('peer_root','caller_path','gate_path','owned_path'): + parser.add_argument(key, type=Path) + parser.add_argument('--seconds', type=int, default=720) + parser.add_argument('--maximal-cap', type=int, default=42) + args = parser.parse_args() + assert 0 < args.seconds <= 720 and 0 < args.maximal_cap <= 42 + print(json.dumps(run(**vars(args)), indent=2, sort_keys=True)) diff --git a/research/p104-owned-move-transport-bound/inputs/PEER-NOTICE.txt b/research/p104-owned-move-transport-bound/inputs/PEER-NOTICE.txt new file mode 100644 index 0000000000..ad393f2b6e --- /dev/null +++ b/research/p104-owned-move-transport-bound/inputs/PEER-NOTICE.txt @@ -0,0 +1,14 @@ +Prepared for Clear1nsight with substantial OpenAI Codex and ChatGPT Pro +assistance. New work is Apache-2.0. + +Rohan Arun supplied the exact #7156 word, its directed supplier/caller +application, and the signed #7113 caller. His #7142 charged an input +boundary for a different split. Ali Romman supplied the causal-history +owned-buffer identity. Jerry Chen / CubeJerry supplied contact-free +retiming and temporal verification. Matarener supplied the helper +kernels. dillona supplied the temporal constructor, chart-595 source and +scalar-width work. ToikY supplied the pricing engines and earlier chart +leads. The #7155 composition and guarded suffix retain their authors. +Douglas Colkitt and the #7000/#7001 reviewers supplied the retained +all-width application and fixed-tape proof. All original source credits, +licenses and notices remain in the authenticated #7156 archive. diff --git a/research/p104-owned-move-transport-bound/inputs/caller/CALLER.json b/research/p104-owned-move-transport-bound/inputs/caller/CALLER.json new file mode 100644 index 0000000000..9451ceaf6e --- /dev/null +++ b/research/p104-owned-move-transport-bound/inputs/caller/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-owned-move-transport-bound/inputs/caller/interval_gate.py b/research/p104-owned-move-transport-bound/inputs/caller/interval_gate.py new file mode 100644 index 0000000000..e24dc46079 --- /dev/null +++ b/research/p104-owned-move-transport-bound/inputs/caller/interval_gate.py @@ -0,0 +1,128 @@ +#!/usr/bin/env python3 +"""Independent certified fixed-grid intervals (80 decimal places). +ln via 2 atanh after binary range reduction; exp(-x) via alternating +Taylor brackets. Uses only integer floor/ceiling, not Decimal transcendents. +""" +from fractions import Fraction as F +from functools import lru_cache +from pathlib import Path +import json,argparse +if not __debug__: raise RuntimeError('Run without -O; assertions are proof checks.') +B=10**80 + +def ceildiv(a,b):return -((-a)//b) +def exact(q): + q=F(q);return q.numerator*B//q.denominator,ceildiv(q.numerator*B,q.denominator) +def add(a,b):return a[0]+b[0],a[1]+b[1] +def sub(a,b):return a[0]-b[1],a[1]-b[0] +def mul(a,b): + p=[a[i]*b[j] for i in (0,1) for j in (0,1)];return min(p)//B,ceildiv(max(p),B) +def div(a,b): + assert b[0]>0 + p=[F(a[i]*B,b[j]) for i in (0,1) for j in (0,1)] + return min(p).__floor__(),max(p).__ceil__() +def smul(a,q):return mul(a,exact(q)) +def atanh_log(y): + yi=exact(y);yy=mul(yi,yi);p=yi;s=(0,0) + for j in range(100):s=add(s,smul(p,F(2,2*j+1)));p=mul(p,yy) + # 0 <= tail <= 2 y^201/[201(1-y^2)] < 3*(1/3)^201. + return s[0],s[1]+ceildiv(3*B,3**201) +@lru_cache(None) +def log(r): + assert r>=1 + k=r.bit_length()-1;y=F(r-2**k,r+2**k) + a=atanh_log(y);b=atanh_log(F(1,3));return add(a,smul(b,k)) +def expminus(x): + assert 0<=x[0]<=x[1]0 and margins[str(hi)][1]<0 and margins[str(tested)][0]>0 + target=moment(T,tested);paid=moment(P,tested) + alpha=div(paid,target) + # Tail exponent = 1-tested+1/7; argument exp may not be negative. + # r^(1-tested+1/7)=r^(1-tested)* exp(log(r)/7). + def exppos(x): + assert 0<=x[0]<=x[1]0 and gap.numerator==1;step=gap.denominator + wins=lambda j:(step*j+1)**written<2**j + l,h=1,2 + while not wins(h):l,h=h,2*h + while h-l>1: + m=(l+h)//2 + if wins(m):h=m + else:l=m + assert wins(h) and not wins(h-1) + # Monotonicity: upper derivative bound on [0, cap]. + derivative=(0,0) + for rr in T.keys()|P.keys(): + c=T.get(rr,0)-P.get(rr,0);r=int(rr) + term=mul(power(r,cap if c>=0 else 0),log(r));derivative=add(derivative,smul(term,-c)) + assert derivative[1]<0 + result=dict(claim=str(claim),tested=str(tested),raw_bracket=[str(lo),str(hi)],moment_margins={k:show(v) for k,v in margins.items()},moment_margin_float={k:value(v) for k,v in margins.items()},derivative_upper=float(F(derivative[1],B)),alpha=value(alpha),gamma=value(gamma),delta=value(delta),minimum_log_power=lp,written_log_power=written,compiler_gap=str(gap),H=str(step*h),BIT_pin=str(cap),BIT_margin=str(cap-tested)) + # Outer formulas evaluated independently after algebraically substituting + # b=k+5g,a=k+4g,q=k+3g,epsilon=1-g,beta=1-3g. + k=claim;g=gap;b=k+5*g;a=k+4*g;q=k+3*g;ep=1-g;be=1-3*g;r0=g/10;stop=layout=g + sig=1-b;tau=1-a;internal=tau+(1-stop)*max(sig-tau,0);leaf=sig+stop*(1-sig);lam=1-(q+a)/2;xi=ep*(1+q)-F(3,32)+layout;key=be+1-ep + M=[ep*q,a,1-ep+q*be,1-ep+a*be,1-ep+be,F(3,32)+xi-ep,xi+F(1,2)-ep,ep,1-(ep+be+48-128+2)] + checks=[cap-a,b-a,q,b-q,a-q,stop,1-stop,(1-stop)*b-a,1-internal-q,1-leaf-q,lam-tau,lam-sig,lam-internal,1-q-lam,1-q-leaf,ep,1-ep,xi-F(1,2),ep-xi,be,ep-be,1-be,1-(2*xi-2)-r0-be,1-(2*xi-2)-be,1-ep-r0,1-ep,r0,1-key,1-be-2*(1-ep),128-48-be,layout,ep-a,F(1,32)-b,F(2**45-7**16),F(2),2-xi,F(5),1-be,1-be,1-ep,M[2]-M[0],g,k-F('.001730970419199163702738'),1-ep,F(11,2)]+[x-k for x in M] + functional=[1-be,be*(1-F(3,1000)),128-48-ep-be-1,be*(1-F(1,250))] + assert len(checks)==54 and len(functional)==4 and min(checks+functional)>0 + result['outer']=dict(strict_count=54,functional_count=4,minimum_margin=str(min(checks+functional)),BIT_just_below_effective_rejected=(a-F(1,10**12))-a<0) + # Input-lift is only needed on [1-tested_complex,1]. A stronger BIT + # pin is irrelevant to this interval; the source's crude BIT-wide bound + # is not imported beyond its valid range. + pos={7:1,3:1,5:1};neg={9:1,4:1,1:2};d1=(0,0);curvature=(0,0) + for hist,sign in ((pos,1),(neg,-1)): + for r,c in hist.items(): + d1=add(d1,smul(log(r),sign*c*r)) + curvature=add(curvature,smul(mul(log(r),log(r)),c*r)) + lift_cap=cap if cap<=F('.00376669') else tested + assert tested<=lift_cap and F(d1[1],B)+lift_cap*F(curvature[1],B)<0 + lifts={} + for price in (claim,tested): + lift=sub(moment(pos,price),moment(neg,price));assert lift[0]>0 + assert price*(-F(d1[1],B))-price*price*F(curvature[1],B)/2>0 + lifts[str(price)]=show(lift) + result['input_lift']=dict(margins=lifts,interval_kappa_cap=str(lift_cap),derivative_upper_on_required_interval=str(F(d1[1],B)+lift_cap*F(curvature[1],B)),source_BIT_wide_crude_bound_would_be=str(F(d1[1],B)+cap*F(curvature[1],B))) + return result +if __name__=='__main__': + p=argparse.ArgumentParser();p.add_argument('audit');p.add_argument('--claim',default='.00362852408');p.add_argument('--tested',default='.00362852408007');p.add_argument('--lower',default='.00362852408398727978896072723289');p.add_argument('--upper',default='.00362852408398727978896072723290');p.add_argument('--out',required=True);p.add_argument('--bit-pin',default='.00376669');a=p.parse_args() + r=gate(json.loads(Path(a.audit).read_text())['invoice'],a.claim,a.tested,a.lower,a.upper,a.bit_pin);Path(a.out).write_text(json.dumps(r,indent=2)+'\n');print(json.dumps(r,indent=2)) diff --git a/research/p104-owned-move-transport-bound/inputs/peer/research/p104-rank8-exit-funded-split/RESULT.json b/research/p104-owned-move-transport-bound/inputs/peer/research/p104-rank8-exit-funded-split/RESULT.json new file mode 100644 index 0000000000..60edfac362 --- /dev/null +++ b/research/p104-owned-move-transport-bound/inputs/peer/research/p104-rank8-exit-funded-split/RESULT.json @@ -0,0 +1,1599 @@ +{ + "adapter": { + "adapted_sha256": { + "check_odd_partial_admission.py": "de75cd93b9bfffb2a13781209435d31a84edd97f0fe313d3ecb9542ce8383dac", + "check_odd_precision.py": "59d811dd0eddca0a761e935341e7bee51cf66b9d9481ce8eb500c9ae5723bbcb", + "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('0.00364489006794')", + "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\":\"Fresh exact current native arbitrary-input adjoint;", + "old": "\"scope\":\"Reuse exact same native word all-column adjoint;" + }, + { + "file": "check_odd_precision.py", + "new": "patch('(life, peak, owned_count) == (54, 43, 51)','(life, peak, owned_count) == (66, 48, 63)')\nenv=ModuleType(\"short_envelope\")", + "old": "env=ModuleType(\"short_envelope\")" + }, + { + "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": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 1000, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "430c467e9c73ef00ddc325b7cf95aba8a34187f362eae67791aafd26b117e4b9", + "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": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + }, + { + "catalogue_digest": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 1000, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "2cae048f253c10a701476eaa4486931f22766daf994d44d80688b0f8f2fc530f", + "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": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + }, + { + "catalogue_digest": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 1000, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "c8524029578adf6749ecc9b72b848a9933ea23b54951d7349c0614c18603fea9", + "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": 2000, + "slice_stop": 3000, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + }, + { + "catalogue_digest": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 36, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "01651736571052e77f70be25553d3f726b5325a89c93cb9459a54c3634ee1f38", + "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": 3000, + "slice_stop": 3036, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + } + ], + "checks": { + "ODD-8X9-APPLICATION-CHECKS.json": { + "assumptions": [ + "native_all_columns", + "owned_erasure", + "compiler", + "precision_tape", + "analytic_recovery" + ], + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "candidate": "182244503397/50000000000000", + "catalogue": [ + { + "catalogue_digest": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 1000, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "430c467e9c73ef00ddc325b7cf95aba8a34187f362eae67791aafd26b117e4b9", + "log_sha256": "935d09f384d976a4abe11403eb0213e1f42e68dffb5467b2fdff7635473e68e9", + "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": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + }, + { + "catalogue_digest": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 1000, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "2cae048f253c10a701476eaa4486931f22766daf994d44d80688b0f8f2fc530f", + "log_sha256": "463a21775a829fdb699fa5f6eaa73026bb9043f668b612717b6c496956864b34", + "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": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + }, + { + "catalogue_digest": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 1000, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "c8524029578adf6749ecc9b72b848a9933ea23b54951d7349c0614c18603fea9", + "log_sha256": "e59a6f7fdab5722a88432a4c0ac5109e50edd2f7ad3f76861f6354c467383275", + "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": 2000, + "slice_stop": 3000, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + }, + { + "catalogue_digest": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 36, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "01651736571052e77f70be25553d3f726b5325a89c93cb9459a54c3634ee1f38", + "log_sha256": "691b3eed53d1c03b06f8361effe1f6db74ea2a7fe7bfc983437a0857cb3b5cd5", + "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": 3000, + "slice_stop": 3036, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + } + ], + "fixed_tape_counts": { + "H": 16510400000000000000000, + "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": 2430, + "elementary_records_per_map_upper": 85264, + "elementary_records_upper": 25471767360, + "log_power": 2237, + "max_scalar_numerator_bits": 24, + "monomial_map_slots": 298740, + "native_invocations": 17, + "native_sha256": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "owned_banks_per_raw_occurrence": 1071, + "scalar_macro_inputs": { + "caller": 117856, + "conversions": 58454, + "native": 1191190 + }, + "scalar_services_upper": 43760000, + "scalar_steps_coefficient": 45885685760000, + "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": "182244503397/50000000000000" + }, + "native_archive_sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2", + "native_canonical_sha256": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "numeric_gate": { + "BIT_margin": "12179993205993/100000000000000000", + "BIT_pin": "376669/100000000", + "H": "16510400000000000000000", + "alpha": [ + 1.0, + 1.0 + ], + "claim": "182244503397/50000000000000", + "compiler_gap": "1/100000000000000000", + "delta": [ + 0.9066684778947387, + 0.9066684778947387 + ], + "derivative_upper": -381691.382745105, + "gamma": [ + 0.9407507620286742, + 0.9407507620286742 + ], + "input_lift": { + "derivative_upper_on_required_interval": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "interval_kappa_cap": "376669/100000000", + "margins": { + "182244503397/50000000000000": [ + "12435616268822964624108204151994732023643370358542418433979015630224454754777/10000000000000000000000000000000000000000000000000000000000000000000000000000000", + "124356162688229646241082041519947320236433703585424184339790156302244547549693/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "364489006794007/100000000000000000": [ + "31089040672057983150912632412500092401132902361597748561959244574623506755013/25000000000000000000000000000000000000000000000000000000000000000000000000000000", + "31089040672057983150912632412500092401132902361597748561959244574623506755499/25000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "source_BIT_wide_crude_bound_would_be": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + "minimum_log_power": 2236, + "moment_margin_float": { + "364489006794007/100000000000000000": [ + 2.1150234102748054e-12, + 2.1150234102748054e-12 + ], + "36448900679400754544078619670439/10000000000000000000000000000000000": [ + 7.73624976984083e-30, + 7.73624976984083e-30 + ], + "911222516985018863601965491761/250000000000000000000000000000000": [ + -3.104015756527284e-29, + -3.104015756527284e-29 + ] + }, + "moment_margins": { + "364489006794007/100000000000000000": [ + "211502341027480531553379384024870327589034622358366451274129769433559/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "211502341027480531553379384024870327589034622358366451274129808297531/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "36448900679400754544078619670439/10000000000000000000000000000000000": [ + "773624976984082980223062771948247773718705008389919/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "773624976984082980223062771948247773718705047289897/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "911222516985018863601965491761/250000000000000000000000000000000": [ + "-3104015756527283602766646092015489002158505106995697/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "-3104015756527283602766646092015489002158505068342321/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "outer": { + "BIT_just_below_effective_rejected": true, + "functional_count": 4, + "minimum_margin": "1/1000000000000000000", + "strict_count": 54 + }, + "raw_bracket": [ + "36448900679400754544078619670439/10000000000000000000000000000000000", + "911222516985018863601965491761/250000000000000000000000000000000" + ], + "tested": "364489006794007/100000000000000000", + "written_log_power": 2237 + }, + "physical_binding": { + "ambient": 145, + "complete_paid_position_digest": "f562c24ef3c0e657936f45baa50a921964282dbcbc1ed85ebae85422bc567ed1", + "fresh_helpers": 18683, + "idle_uses": 3392, + "lambda_uses": 11280, + "native_calls": 17, + "native_contact_boundaries": 13600, + "native_public": 1499, + "nonzero_boundary_translations": 13600, + "paid": { + "1": 68367, + "16": 416, + "2": 14501, + "24": 416, + "3": 14093, + "32": 416, + "4": 3825, + "40": 416, + "48": 416, + "5": 5848, + "56": 416, + "6": 238, + "64": 208, + "7": 170, + "8": 741, + "9": 32 + }, + "paid_positions": 110519, + "phase_record_digest": "586ab7499fb677afdd83c397ea0b6d3b25f73ea6cdfa1ec95dd68adccff935ad", + "productive_fields": 22427, + "query_uses": 384, + "rank_surplus": 1424, + "reserved_native_banks": 1071, + "reserved_serial_query_lambda_bank": 1, + "targets": { + "1": 289, + "137": 208, + "17": 416, + "2": 357, + "25": 416, + "3": 799, + "33": 416, + "4": 3791, + "41": 416, + "49": 416, + "5": 1343, + "57": 416, + "6": 731, + "65": 416, + "7": 323, + "73": 208, + "8": 578, + "9": 10888 + } + }, + "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": 782129100, + "init_clear_allowance": 264, + "lambda_paid_rank1_would_reduce_S_by": 11280, + "lambda_second_charge": 11280000, + "margin_to_billion": 217870900, + "odd_divisions": { + "ADD": 5829, + "SCALE": 71 + }, + "per_input_conversion": 2650232, + "raw_upper": 765470708, + "route_items": { + "first_main_adapter": 416, + "first_main_boundary": 208, + "helper_boundary": 2198, + "moves": 6279, + "owned_lifetime": 264, + "second_main_adapter": 384, + "second_main_boundary": 192 + }, + "routing": 9941000, + "scalar_upper": 2190316 + }, + "status": "PASS_8X9_EXACT_COMPONENT_APPLICATION_CHECKS" + }, + "ODD-ADMISSION-PARTIAL.json": { + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "compiler_outer": { + "BIT_margin": "12179993205993/100000000000000000", + "BIT_pin": "376669/100000000", + "H": "16510400000000000000000", + "alpha": [ + 1.0, + 1.0 + ], + "claim": "182244503397/50000000000000", + "compiler_gap": "1/100000000000000000", + "delta": [ + 0.9066684778947387, + 0.9066684778947387 + ], + "derivative_upper": -381691.382745105, + "gamma": [ + 0.9407507620286742, + 0.9407507620286742 + ], + "input_lift": { + "derivative_upper_on_required_interval": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "interval_kappa_cap": "376669/100000000", + "margins": { + "182244503397/50000000000000": [ + "12435616268822964624108204151994732023643370358542418433979015630224454754777/10000000000000000000000000000000000000000000000000000000000000000000000000000000", + "124356162688229646241082041519947320236433703585424184339790156302244547549693/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "364489006794007/100000000000000000": [ + "31089040672057983150912632412500092401132902361597748561959244574623506755013/25000000000000000000000000000000000000000000000000000000000000000000000000000000", + "31089040672057983150912632412500092401132902361597748561959244574623506755499/25000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "source_BIT_wide_crude_bound_would_be": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + "minimum_log_power": 2236, + "moment_margin_float": { + "364489006794007/100000000000000000": [ + 2.1150234102748054e-12, + 2.1150234102748054e-12 + ], + "36448900679400754544078619670439/10000000000000000000000000000000000": [ + 7.73624976984083e-30, + 7.73624976984083e-30 + ], + "911222516985018863601965491761/250000000000000000000000000000000": [ + -3.104015756527284e-29, + -3.104015756527284e-29 + ] + }, + "moment_margins": { + "364489006794007/100000000000000000": [ + "211502341027480531553379384024870327589034622358366451274129769433559/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "211502341027480531553379384024870327589034622358366451274129808297531/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "36448900679400754544078619670439/10000000000000000000000000000000000": [ + "773624976984082980223062771948247773718705008389919/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "773624976984082980223062771948247773718705047289897/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "911222516985018863601965491761/250000000000000000000000000000000": [ + "-3104015756527283602766646092015489002158505106995697/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "-3104015756527283602766646092015489002158505068342321/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "outer": { + "BIT_just_below_effective_rejected": true, + "functional_count": 4, + "minimum_margin": "1/1000000000000000000", + "strict_count": 54 + }, + "raw_bracket": [ + "36448900679400754544078619670439/10000000000000000000000000000000000", + "911222516985018863601965491761/250000000000000000000000000000000" + ], + "tested": "364489006794007/100000000000000000", + "written_log_power": 2237 + }, + "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": 68367, + "16": 416, + "2": 14501, + "24": 416, + "3": 14093, + "32": 416, + "4": 3825, + "40": 416, + "48": 416, + "5": 5848, + "56": 416, + "6": 238, + "64": 208, + "7": 170, + "8": 741, + "9": 32 + }, + "S": 1424, + "T": { + "1": 289, + "137": 208, + "17": 416, + "2": 357, + "25": 416, + "3": 799, + "33": 416, + "4": 3791, + "41": 416, + "49": 416, + "5": 1343, + "57": 416, + "6": 731, + "65": 416, + "7": 323, + "73": 208, + "8": 578, + "9": 10888 + }, + "empty_root_credits": 0, + "no_E_credit_crossing": "0.0036448900679400754544078619670439199509193901914957386128030283655", + "raw_crossing": "0.0036448900679400754544078619670439199509193901914957386128030283655" + }, + "native_sha256": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "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": 782129100, + "init_clear_allowance": 264, + "lambda_paid_rank1_would_reduce_S_by": 11280, + "lambda_second_charge": 11280000, + "margin_to_billion": 217870900, + "odd_divisions": { + "ADD": 5829, + "SCALE": 71 + }, + "per_input_conversion": 2650232, + "raw_upper": 765470708, + "route_items": { + "first_main_adapter": 416, + "first_main_boundary": 208, + "helper_boundary": 2198, + "moves": 6279, + "owned_lifetime": 264, + "second_main_adapter": 384, + "second_main_boundary": 192 + }, + "routing": 9941000, + "scalar_upper": 2190316 + }, + "scope": "Fresh exact current native arbitrary-input 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": 16510400000000000000000, + "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": 2430, + "elementary_records_per_map_upper": 85264, + "elementary_records_upper": 25471767360, + "log_power": 2237, + "max_scalar_numerator_bits": 24, + "monomial_map_slots": 298740, + "native_invocations": 17, + "native_sha256": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "owned_banks_per_raw_occurrence": 1071, + "scalar_macro_inputs": { + "caller": 117856, + "conversions": 58454, + "native": 1191190 + }, + "scalar_services_upper": 43760000, + "scalar_steps_coefficient": 45885685760000, + "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": "182244503397/50000000000000" + }, + "ODD-PHYSICAL-BINDING.json": { + "aliased_main_rejected": true, + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "native_sha256": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "occurrence_and_geometry": { + "ambient": 145, + "complete_paid_position_digest": "f562c24ef3c0e657936f45baa50a921964282dbcbc1ed85ebae85422bc567ed1", + "fresh_helpers": 18683, + "idle_uses": 3392, + "lambda_uses": 11280, + "native_calls": 17, + "native_contact_boundaries": 13600, + "native_public": 1499, + "nonzero_boundary_translations": 13600, + "paid": { + "1": 68367, + "16": 416, + "2": 14501, + "24": 416, + "3": 14093, + "32": 416, + "4": 3825, + "40": 416, + "48": 416, + "5": 5848, + "56": 416, + "6": 238, + "64": 208, + "7": 170, + "8": 741, + "9": 32 + }, + "paid_positions": 110519, + "phase_record_digest": "586ab7499fb677afdd83c397ea0b6d3b25f73ea6cdfa1ec95dd68adccff935ad", + "productive_fields": 22427, + "query_uses": 384, + "rank_surplus": 1424, + "reserved_native_banks": 1071, + "reserved_serial_query_lambda_bank": 1, + "targets": { + "1": 289, + "137": 208, + "17": 416, + "2": 357, + "25": 416, + "3": 799, + "33": 416, + "4": 3791, + "41": 416, + "49": 416, + "5": 1343, + "57": 416, + "6": 731, + "65": 416, + "7": 323, + "73": 208, + "8": 578, + "9": 10888 + } + }, + "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": 2430, + "context_height": 406, + "context_mass_bits": 1215, + "native_grid": { + "coefficient_visits": 16445348, + "dyadic_height": 25, + "mass_witness": [ + 66145, + "stored add" + ], + "maximum_scaled_mass": "841374570120675/8192", + "numerator_bits": 24, + "odd_scale_lcm": 1125 + }, + "native_sha256": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "precision_program_sha256": "ce92f880fa0628caadfea4e14140ad4f617a82f13ae452fe7b8cd8e7a00ffd78", + "rounded_caller": { + "bounds": { + "E_joint_entrance": { + "exact": "3698438700488346562040013259694346617276899010780958570896247841998410543952845718405399644725727547850031077289428751190142095725329631299078835662282648820955677952400390221055254876259133646109032215543464282810791436554335493309483059934863526258758473057114627247663197031967632688279411793657724951672054526204278013917041108799506354516222839195219110526644345688152721349310078745278165209175303889670639871906387750453394182745449/621565922642917122701475579763837894656000000000000000000000000000000000000000000000", + "strict_power_of_two": 1179, + "witness": { + "cut": 4691, + "event": 4691, + "factor": "1", + "kind": "stored", + "register": 36 + } + }, + "Gamma_context": { + "exact": "95447834498064093977737612322824240860989785478457360939465616050207668401318696429374977499654675832619420189662071162238213252926528019212202119948273559620833568903976256447063993069483371253646038779934250562521737509241245604006816339083315916440441340371511437198043447875773697313054280541087366528176065281903824560726454243830482481398816516247979371536730979517503204509049338241842295670801401782033813662295564612880551752527779/466174441982187842026106684822878420992000000000000000000000000000000000000000000000", + "strict_power_of_two": 1184, + "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": "327111736213353305790991091824348467854708091542498514544864499380347538764149951207806586803328343722622028458252856338974714017710745131664240849335386155294919376186366908519280366477832364454061654742515102357862733358286618892685278348518498630998166743815885045516870288507481034139825665242058716892571547731071918126148364289902790435685318383779081796746597020584004569680769807459720842641555764310577929855342933981306629425946370943/1841676807830865548745112828929890058240000000000000000000000000000000000000000000000", + "strict_power_of_two": 1194, + "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": "95447834498064093977737612322824240860989785478457360939465616050207668401318696429374977499654675832619420189662071162238213252926528019212202119948273559620833568903976256447063993069483371253646038779934250562521737509241245604006816339083315916440441340371511437198043447875773697313054280541087366528176065281903824560726454243830482481398816516247979371536730979517503204509049338241842295670801401782033813662295564612880551752527779/466174441982187842026106684822878420992000000000000000000000000000000000000000000000", + "strict_power_of_two": 1184, + "witness": { + "cut": 4753, + "event": 4752, + "factor": "1", + "kind": "stored", + "register": 37 + } + }, + "Sigma_context": { + "exact": "97200125428608128489216070525154109508426116851325939285166229979576527601965279780108941017029567412524930841655033462200595331602346042170156280563751372476355153428928041901330308853897527069649172077561612201280886795792050483903130003242812199393567682674388749350080279922803877708906264073587180499798876419824043178765084616132016246018732612635186671137342317350328077348428527157289666609535211460036799834610051652352756119191538243717843171259307129217712969198197798027813358984110291089666596780034994353102138829797819414278054468301136396234517195236214520059991140917417/1882193312076485335946784195032073491952987754324492345686684017015875908403200000000000000000000000000000000000000000000000000000000000000000", + "strict_power_of_two": 1481, + "witness": { + "cut": 4692, + "event": 4691, + "factor": "1", + "kind": "stored", + "register": null + } + } + }, + "fresh_arbitrary_helpers": 18683, + "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": "3698438700488346562040013259694346617276899010780958570896247841998410543952845718405399644725727547850031077289428751190142095725329631299078835662282648820955677952400390221055254876259133646109032215543464282810791436554335493309483059934863526258758473057114627247663197031967632688279411793657724951672054526204278013917041108799506354516222839195219110526644345688152721349310078745278165209175303889670639871906387750453394182745449/621565922642917122701475579763837894656000000000000000000000000000000000000000000000" + }, + "Gamma_context": { + "entrance_mass": "321214676655933560129782836030951119958622429471431692811117505066079252658303325303661828534046786576018850667853596288128047313819788006911616028348392581085050721023636971054851673799947587501432346122953175312809813833001587100311020687804583808767060460431114911369649528995555025426696059541/456139469146728515625000000", + "joint_coefficient": "3721923971948022264020008386608472289590988528157114268392412469599050143495508978788641788787976594161440706214373829555996384554677122174093932095769106055424540710380314024651007332164525664382203471694821380954416641216321248248752759218861172626274920078125266851782731337714997593665899027/10947347259521484375000000000", + "primitive_coefficient": "31933635363307317503891208167952125518099265598871297188945655447689887409437080424471754322893069036961252717295444311531802702290424391181977246033332095685934810861449534911850277930109610390733877602745069385156892357266512877411313922547610591253415658016844390796379192959369382262182067424881/131368167114257812500000000000", + "residual_mass": "95447834498064093977737612322824240860989785478457360939465616050207668401318696429374977499654675832619420189662071162238213252926528019212202119948273559620833568903976256447063993069483371253646038779934250562521737509241245604006816339083315916440441340371511437198043447875773697313054280541087366528176065281903824560726454243830482481398816516247979371536730979517503204509049338241842295670801401782033813662295564612880551752527779/466174441982187842026106684822878420992000000000000000000000000000000000000000000000" + }, + "M_caller": { + "entrance_mass": "321214676655933560129782836030951119958622429471431692811117505066079252658303325303661828534046786576018850667853596288128047313819788006911616028348392581085050721023636971054851673799947587501432346122953175312809813833001587100311020687804583808767060460431114911369649528995555025426696059541/456139469146728515625000000", + "joint_coefficient": "3721923971948022264020008386608472289590988528157114268392412469599050143495508978788641788787976594161440706214373829555996384554677122174093932095769106055424540710380314024651007332164525664382203471694821380954416641216321248248752759218861172626274920078125266851782731337714997593665899027/10947347259521484375000000000", + "primitive_coefficient": "31933635363307317503891208167952125518099265598871297188945655447689887409437080424471754322893069036961252717295444311531802702290424391181977246033332095685934810861449534911850277930109610390733877602745069385156892357266512877411313922547610591253415658016844390796247824792255124449682067424881/131368167114257812500000000000", + "residual_mass": "95447834498064093977737612322824240860989785478457360939465616050207668401318696429374977499654675832619420189662071162238213252926528019212202119948273559620833568903976256447063993069483371253646038779934250562521737509241245604006816339083315916440441340371511437198043447875773697313054280541087366528176065281903824560726454243830482481398816516247978905362288997329661178402364515363421303670801401782033813662295564612880551752527779/466174441982187842026106684822878420992000000000000000000000000000000000000000000000" + }, + "M_joint_entrance": { + "entrance_mass": "12446513821466013746992171114880354528234540647439407368041740746722705684890095694539586093101687855496797040728247169012299728404791642365323413178973703529222728715961384485250463009966565309368602073434714550373752128374887698957802006867751735225949803848812917591840288770078529478244705471/608185958862304687500000000", + "joint_coefficient": "144218124282401204617230263054514744346632405857442589144991781917530152132889870002846209306787762894150543865356389849084238452276894627352790762454037345126994351979907477144401257368423063007427271766117739822282248246858569624239109891511459830034432108241771054783468611278140179030295737/14596463012695312500000000000", + "primitive_coefficient": "1237373204913668966810008103424843603237049842106979534739539344726881600855129275554334885562896567825503574055929527662143657491595081161117482238618339640110136792453314323518006796600687371906278112102741547626404362403105174332310591538741639237757093806525664195341657589882317257470101709011/175157556152343750000000000000", + "residual_mass": "3698438700488346562040013259694346617276899010780958570896247841998410543952845718405399644725727547850031077289428751190142095725329631299078835662282648820955677952400390221055254876259133646109032215543464282810791436554335493309483059934863526258758473057114627247663197031967632688279411793657724951672054526204278013917041108799506354516222839195219110526644345688152721349310078745278165209175303889670639871906387750453394182745449/621565922642917122701475579763837894656000000000000000000000000000000000000000000000" + }, + "Sigma_caller": { + "entrance_mass": "321214676655933560129782836030951119958622429471431692811117505066079252658303325303661828534046786576018850667853596288128047313819788006911616028348392581085050721023636971054851673799947587501432346122953175312809813833001587100311020687804583808767060460431114911369649528995555025426696059541/456139469146728515625000000", + "joint_coefficient": "3721923971948022264020008386608472289590988528157114268392412469599050143495508978788641788787976594161440706214373829555996384554677122174093932095769106055424540710380314024651007332164525664382203471694821380954416641216321248248752759218861172626274920078125266851782731337714997593665899027/10947347259521484375000000000", + "primitive_coefficient": "31933635363307317503891208167952125518099265598871297188945655447689887409437080424471754322893069036961252717295444311531802702290424391181977246033332095685934810861449534911850277930109610390733877602745069385156892357266512877411313922547610591253415658016844390796379192959369382262182067424881/131368167114257812500000000000", + "residual_mass": "95447834498064093977737612322824240860989785478457360939465616050207668401318696429374977499654675832619420189662071162238213252926528019212202119948273559620833568903976256447063993069483371253646038779934250562521737509241245604006816339083315916440441340371511437198043447875773697313054280541087366528176065281903824560726454243830482481398816516247979371536730979517503204509049338241842295670801401782033813662295564612880551752527779/466174441982187842026106684822878420992000000000000000000000000000000000000000000000" + } + }, + "joint_entries": [ + { + "entrance_defect": "1435/4", + "entrance_mass": "2067/2", + "event": 43, + "stage": 1 + }, + { + "entrance_defect": "43991195055799274123411242921324271734478455985890198352160063172610749059649698547529231750013035691116050646090343510746895632484908840899233488027039/13307288940955860965151791568755097600000000000000000000", + "entrance_mass": "56849465528/5", + "event": 137, + "stage": 2 + }, + { + "entrance_defect": "66839871164980025891562407739654598808732884408115621525672134771122867273784736682440264802344057181363365557479678295660998822886293864382938888018202725413690399/1277499738331762652654571990600489369600000000000000000000", + "entrance_mass": "899756300051784928313/5", + "event": 268, + "stage": 3 + }, + { + "entrance_defect": "62254959917069896363208216864987682119550378620799358416991837549724853757364506294619230252744604068296561789025711563978900365745210260641569153351016186124262729588048607/1277499738331762652654571990600489369600000000000000000000", + "entrance_mass": "2514111326902273689027625979152/15", + "event": 432, + "stage": 4 + }, + { + "entrance_defect": "12717282397132733798393428787991042792090654564660720512466624063727256891568118724887223325609262097806872554498360458524761922878644474215813598782298518175908996284135644485840118297/1277499738331762652654571990600489369600000000000000000000", + "entrance_mass": "513576167499541081817002847690160861158177/15", + "event": 633, + "stage": 5 + }, + { + "entrance_defect": "1217679593022116207546798210509341018107956170805439203146320903582405629342831584971649991934747195551432048220505207354942555451241246562794205971480277017338935671718591575078851944120477226373/19162496074976439789818579859007340544000000000000000000000", + "entrance_mass": "49174910102467876864090432969907258581035345395534834/225", + "event": 867, + "stage": 6 + }, + { + "entrance_defect": "129871744818989406529136440635320053468594962372247188734851546603640722173330037286540003337339006135733031631529724863171261371030324854618435464569131918500814943028189111054364714934029599793598578157323/2129166230552937754424286651000815616000000000000000000000", + "entrance_mass": "47202796791779792903787260464709452698419616298153732189406926691/225", + "event": 1138, + "stage": 7 + }, + { + "entrance_defect": "37813377877403518679603587364443864192869730544824933592938983450113445181333793973311575547782383550855324302983105699755916196331551485204733270065381214330215929074986595427757936618733450720913522003488563216694609577117/2395312009372054973727322482375917568000000000000000000000000", + "entrance_mass": "1527059719525243651854937925515623170877847518562264265010551055991429949116792541/28125", + "event": 1423, + "stage": 8 + }, + { + "entrance_defect": "13485111100785005818854756620792265912792044032380491916410990711278752085520894076096194182218145474914871229377058423816209967454842768761272432055034086749310362249239022183799859089040688426046153163094839262417451340701653087987475285752765277099662282008373062970678961836829617573496155772575300592701038458942604991457306957047577275549855577024784657/2762515211746298323117669243394835087360000000000000000000000000000000000000000000", + "entrance_mass": "45382020709918266925583064268574418985484021788023395083741971786893952543604385214817042722264713249357732585113211736557042182118473445437784492974844696068231496289005681248244219743195326431922663592509646282903/2703048706054687500000000", + "event": 3058, + "stage": 9 + }, + { + "entrance_defect": "5127732227387110678967027168422380165679923489786173400936436526331584549760674845909743846963200900082293320528327348675592186404519106863134721753032955606579090875501665747290688111825582567305719726516449877276397266785447407727551835704300498140438006106341009644723036232335871040970870983576100037024676195704808736239600045128505300003389191880568335999249679289803/69062880293657458077941731084870877184000000000000000000000000000000000000000000000", + "entrance_mass": "17256576412236653193246225901973714737195067836439327666112948810725372605325768521068989782195051084826433423902219365061463548934152577319772447024097669813834215493691840531234110147024064996639957180865886380686899413865699437/67576217651367187500000000", + "event": 3377, + "stage": 10 + }, + { + "entrance_defect": "2446368255677193791537585526745456909387262363063406782498159597508854770748821831604995647428658315859752679609122120658484852867890901034407915663364399289773956622195440328032414352595847281093297090679259382124637259040947438564034593319172314012794984639781615038992215013461769508751154050633844870368423250908674143726469817469914530366652932470484822738648026770805995036730857/2302096009788581935931391036162362572800000000000000000000000000000000000000000000", + "entrance_mass": "8232867642949280967953864719378369729636081542640965177026582834276172086852779069019078166383458700724373015543641299678854718814560615654710102550769670203427726502361438450768012893674227975469242856299447027845030556012745339827937032703/2252540588378906250000000", + "event": 3674, + "stage": 11 + }, + { + "entrance_defect": "30742073962484744766258245709440053785098846127465153132082220387400660976118286537491285825438064395478013500046150157253538525114662141068463918276720746502952033492552522059762840347383273419151092006122402449922502385316395083759894998070422941912287971564062875788575885089522789600133731982224301283464731216037762934014517356690548872043927892007423598423276522879511493488517270465014036489/310782961321458561350737789881918947328000000000000000000000000000000000000000000000", + "entrance_mass": "103457615351059805192637231353494210876529187337645013912367786609511281374638184501291799844537790265462481580051228205479278831706979374022592427678836083146990308179368316797029946556942233864286312243671687806427572314354434738422294564686254956597631/304092979431152343750000000", + "event": 3934, + "stage": 12 + }, + { + "entrance_defect": "2024960850820717113647511115349387054612389423918231520164467685608025516907980454086975110649055579362369362133378615585609588865077067528014675123515253984311296867587679221527384472231594314514953968681581378564368546042590212960917657833817546402926344928041324835535492579780231932477057528212203067674304958720572336155237253117014016517351855286308122365804803660928731156852447449938381445886967241/77695740330364640337684447470479736832000000000000000000000000000000000000000000000", + "entrance_mass": "6814687293408352348961376609223100753789665399854180217091951198766673494955017243489117504312576625705862588971333049204842152193259763726092611947454717867967563820647006231530855513792517852570389360287582421241328472893443552787136426885585158158296407747039/76023244857788085937500000", + "event": 4149, + "stage": 13 + }, + { + "entrance_defect": "81325613924632265972116031833515725734855056582845884709615502923472832168001762885789094897101393212435713558809993527758903597942084333030120682747662319238260618295425402334822414156545534955855646140803647735067564723779148239789429732493011560461173178376803275812392378467368386496781289728344483788639943005510241666662165577816968510679560803319250777341971187940556742415989285372516451660198685056367703729/621565922642917122701475579763837894656000000000000000000000000000000000000000000000", + "entrance_mass": "273688564209132230699064882255651065961520374651451250325109091529813162250488973700796593555467744131430272845604649750549608356985710665121874068107850799585492748533787927289567936649257940207702597871193107311090132538524151482351564937285621850171994049078063458209591/608185958862304687500000000", + "event": 4337, + "stage": 14 + }, + { + "entrance_defect": "1554308434532708246513761244702860402843720433931527900427142455484989429748607772865318899608021612457077805111457279277381044621687051325316805018370486198518344869367080458503369255017490416584791967002729290065877869212686128354966137537811032281077526621976312546497580810881264716289333634746074634578648311139860229751437017745038260695629368270596536839355214583222335763415885401308955338157387180314158326053089659/310782961321458561350737789881918947328000000000000000000000000000000000000000000000", + "entrance_mass": "5230780602279043381317572379439763694807653157987526423412516241866438709931406455512285461654380762978554988724296151241130161368896505647624919395909388513302452136334767445346454946237326490486725295589968816639097338790755366202380875008783642473174121062695038054202858248061/304092979431152343750000000", + "event": 4485, + "stage": 15 + }, + { + "entrance_defect": "1720604571973581728449057367510187268442851574154237958747013645017468056662434022154922140035404832726830435684001912925318257016166850004404265476480594359639867430640003041080331094187750685556438303713474195078858144384729727402873025339028856919093791963325204408018217206911405568383191718938509697713838850822433581599042152158101457333878525103131164334328694214459836595261531760705636792165400186404621791714358967065672697/621565922642917122701475579763837894656000000000000000000000000000000000000000000000", + "entrance_mass": "5790424100720951765768300756324298709533962301792798636386692749870979029496708556989270788662796627612885676197810930990877069943243536093513215980405080279750566239442965631097385199413957318608000177913047677092759213914423460784984181631621622445055356552059259436283593839861423838063/608185958862304687500000000", + "event": 4606, + "stage": 16 + }, + { + "entrance_defect": "3698438700488346562040013259694346617276899010780958570896247841998410543952845718405399644725727547850031077289428751190142095725329631299078835662282648820955677952400390221055254876259133646109032215543464282810791436554335493309483059934863526258758473057114627247663197031967632688279411793657724951672054526204278013917041108799506354516222839195219110526644345688152721349310078745278165209175303889670639871906387750453394182745449/621565922642917122701475579763837894656000000000000000000000000000000000000000000000", + "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": "25644756641309773204499715182067154753640655532996075189246670424342881345155813487719928577675093971877014167583684151460219920536239411929200177/42583324611058755088485733020016312320000000000000000000", + "strict_power_of_two": 299, + "witness": { + "cut": 76349, + "factor": "1", + "kind": "public-return", + "register": 1498 + } + }, + "M": { + "exact": "26281394204471659888223645870046127062271058529103906740924080498292768335410526105784514321102978706962592713956752093599490780744495562301020762433/3028147527897511472958985459201159987200000000000000000000", + "strict_power_of_two": 303, + "witness": { + "cut": 76349, + "factor": "1", + "kind": "stored", + "register": 1498 + } + }, + "Sigma": { + "exact": "25644756641309773204499715182067154753640655532996075189246670424342881345155813487719928577675093971877014167583684151460219920536239411929200177/42583324611058755088485733020016312320000000000000000000", + "strict_power_of_two": 299, + "witness": { + "cut": 76349, + "factor": "1", + "kind": "stored", + "register": 1498 + } + } + }, + "census": { + "denominator_bits": 20, + "events": 76349, + "lifetimes": 66, + "max_denominator": 655360, + "max_numerator": 14729531, + "numerator_bits": 24, + "opcodes": { + "ADD": 66213, + "CLEAR": 66, + "COPY": 1, + "INIT": 66, + "MOVE": 6279, + "SCALE": 3724 + }, + "owned_labels": 63, + "peak_owned": 48, + "public": 1499, + "scalars": { + "dyadic": 64038, + "integer": 39714, + "noninteger": 30224, + "odd": 5900 + } + }, + "independent_adjoint": { + "Gamma": { + "active_residual_sites": 26545, + "entrance_mass": "26281394204471659888223645870046127062271058529103906740924080498292768335410526105784514321102978706962592713956752093599490780744495562301020762433/3028147527897511472958985459201159987200000000000000000000", + "residual_mass": "25644756641309773204499715182067154753640655532996075189246670424342881345155813487719928577675093971877014167583684151460219920536239411929200177/42583324611058755088485733020016312320000000000000000000" + }, + "M": { + "active_residual_sites": 26545, + "entrance_mass": "26281394204471659888223645870046127062271058529103906740924080498292768335410526105784514321102978706962592713956752093599490780744495562301020762433/3028147527897511472958985459201159987200000000000000000000", + "residual_mass": "25644756641309773204499715182067154753640655532996075189246670424342881345155813487719928577675093971877014167583684151460219920536239411929200177/42583324611058755088485733020016312320000000000000000000" + }, + "Sigma": { + "active_residual_sites": 26545, + "entrance_mass": "26281394204471659888223645870046127062271058529103906740924080498292768335410526105784514321102978706962592713956752093599490780744495562301020762433/3028147527897511472958985459201159987200000000000000000000", + "residual_mass": "25644756641309773204499715182067154753640655532996075189246670424342881345155813487719928577675093971877014167583684151460219920536239411929200177/42583324611058755088485733020016312320000000000000000000" + } + } + }, + "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": 68367, + "16": 416, + "2": 14501, + "24": 416, + "3": 14093, + "32": 416, + "4": 3825, + "40": 416, + "48": 416, + "5": 5848, + "56": 416, + "6": 238, + "64": 208, + "7": 170, + "8": 741, + "9": 32 + }, + "raw_bracket": [ + "36448900679400754544078619670439/10000000000000000000000000000000000", + "911222516985018863601965491761/250000000000000000000000000000000" + ], + "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": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "target": { + "1": 289, + "137": 208, + "17": 416, + "2": 357, + "25": 416, + "3": 799, + "33": 416, + "4": 3791, + "41": 416, + "49": 416, + "5": 1343, + "57": 416, + "6": 731, + "65": 416, + "7": 323, + "73": 208, + "8": 578, + "9": 10888 + } + } + }, + "claim": "182244503397/50000000000000", + "price": { + "after": { + "P": { + "1": 68367, + "16": 416, + "2": 14501, + "24": 416, + "3": 14093, + "32": 416, + "4": 3825, + "40": 416, + "48": 416, + "5": 5848, + "56": 416, + "6": 238, + "64": 208, + "7": 170, + "8": 741, + "9": 32 + }, + "S": 1424, + "T": { + "1": 289, + "137": 208, + "17": 416, + "2": 357, + "25": 416, + "3": 799, + "33": 416, + "4": 3791, + "41": 416, + "49": 416, + "5": 1343, + "57": 416, + "6": 731, + "65": 416, + "7": 323, + "73": 208, + "8": 578, + "9": 10888 + }, + "empty_root_credits": 0, + "no_E_credit_crossing": "0.0036448900679400754544078619670439199509193901914957386128030283655", + "raw_crossing": "0.0036448900679400754544078619670439199509193901914957386128030283655" + }, + "before": { + "P": { + "1": 68350, + "16": 416, + "2": 14501, + "24": 416, + "3": 14093, + "32": 416, + "4": 3825, + "40": 416, + "48": 416, + "5": 5848, + "56": 416, + "6": 238, + "64": 208, + "7": 170, + "8": 741, + "9": 32 + }, + "S": 1424, + "T": { + "1": 289, + "137": 208, + "17": 416, + "2": 357, + "25": 416, + "3": 799, + "33": 416, + "4": 3774, + "41": 416, + "49": 416, + "5": 1326, + "57": 416, + "6": 731, + "65": 416, + "7": 323, + "73": 208, + "8": 595, + "9": 10888 + }, + "empty_root_credits": 0, + "no_E_credit_crossing": "0.0036444078955399752291473031465479694211600421312227856343702575978", + "raw_crossing": "0.0036444078955399752291473031465479694211600421312227856343702575978" + }, + "gate": { + "BIT_margin": "12179993205993/100000000000000000", + "BIT_pin": "376669/100000000", + "H": "16510400000000000000000", + "alpha": [ + 1.0, + 1.0 + ], + "claim": "182244503397/50000000000000", + "compiler_gap": "1/100000000000000000", + "delta": [ + 0.9066684778947387, + 0.9066684778947387 + ], + "derivative_upper": -381691.382745105, + "gamma": [ + 0.9407507620286742, + 0.9407507620286742 + ], + "input_lift": { + "derivative_upper_on_required_interval": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "interval_kappa_cap": "376669/100000000", + "margins": { + "182244503397/50000000000000": [ + "12435616268822964624108204151994732023643370358542418433979015630224454754777/10000000000000000000000000000000000000000000000000000000000000000000000000000000", + "124356162688229646241082041519947320236433703585424184339790156302244547549693/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "364489006794007/100000000000000000": [ + "31089040672057983150912632412500092401132902361597748561959244574623506755013/25000000000000000000000000000000000000000000000000000000000000000000000000000000", + "31089040672057983150912632412500092401132902361597748561959244574623506755499/25000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "source_BIT_wide_crude_bound_would_be": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + "minimum_log_power": 2236, + "moment_margin_float": { + "364489006794007/100000000000000000": [ + 2.1150234102748054e-12, + 2.1150234102748054e-12 + ], + "36448900679400754544078619670439/10000000000000000000000000000000000": [ + 7.73624976984083e-30, + 7.73624976984083e-30 + ], + "911222516985018863601965491761/250000000000000000000000000000000": [ + -3.104015756527284e-29, + -3.104015756527284e-29 + ] + }, + "moment_margins": { + "364489006794007/100000000000000000": [ + "211502341027480531553379384024870327589034622358366451274129769433559/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "211502341027480531553379384024870327589034622358366451274129808297531/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "36448900679400754544078619670439/10000000000000000000000000000000000": [ + "773624976984082980223062771948247773718705008389919/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "773624976984082980223062771948247773718705047289897/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "911222516985018863601965491761/250000000000000000000000000000000": [ + "-3104015756527283602766646092015489002158505106995697/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "-3104015756527283602766646092015489002158505068342321/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "outer": { + "BIT_just_below_effective_rejected": true, + "functional_count": 4, + "minimum_margin": "1/1000000000000000000", + "strict_count": 54 + }, + "raw_bracket": [ + "36448900679400754544078619670439/10000000000000000000000000000000000", + "911222516985018863601965491761/250000000000000000000000000000000" + ], + "tested": "364489006794007/100000000000000000", + "written_log_power": 2237 + }, + "native_baseline_rejects_new_claim": true, + "new_native": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "old_native": "b012295cfe44d204c2724fe544731ac17aa969e06e33043496ac7a1c91a912b3", + "price": { + "baseline_rejects_new_claim": true, + "candidate_margin_at_old_upper": [ + "2337116490365366956039289279110037307025889205276376707432293767001594532441593/12500000000000000000000000000000000000000000000000000000000000000000000000000000", + "18696931922922935648314314232880298456207113642211013659458350136012756293809623/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "claim_decimal": "0.00364489006794", + "gain": "4.82172401E-7", + "gain_exact": "482172401/1000000000000000", + "independent_raw_bracket": [ + "0.00364489006794007545440786196704391", + "0.00364489006794007545440786196704392" + ], + "previous_claim": "3644407895539/1000000000000000", + "raw_bracket": [ + "0.0036448900679400754544078619670439", + "0.003644890067940075454407861967044" + ] + } + }, + "status": "PASS_FUNDED_EXIT_CONTINUATION" +} diff --git a/research/p104-owned-move-transport-bound/inputs/peer/research/p104-rank8-exit-funded-split/WORD.json.gz b/research/p104-owned-move-transport-bound/inputs/peer/research/p104-rank8-exit-funded-split/WORD.json.gz new file mode 100644 index 0000000000..84c893e83b Binary files /dev/null and b/research/p104-owned-move-transport-bound/inputs/peer/research/p104-rank8-exit-funded-split/WORD.json.gz differ diff --git a/research/p104-owned-move-transport-bound/verify.py b/research/p104-owned-move-transport-bound/verify.py new file mode 100644 index 0000000000..6d06b5d4b3 --- /dev/null +++ b/research/p104-owned-move-transport-bound/verify.py @@ -0,0 +1,72 @@ +"""Reproduce the exact charged owned-MOVE price and span checks offline.""" +import hashlib +import json +from pathlib import Path +import subprocess +import sys +from tempfile import TemporaryDirectory + +ROOT = Path(__file__).resolve().parent +INPUTS = ROOT / 'inputs' +CHECKS = ROOT / 'checks' + + +def unique_object(pairs): + result = {} + for key, value in pairs: + if key in result: + raise ValueError(f'duplicate JSON key: {key}') + result[key] = value + return result + + +def main(): + if sys.implementation.name != 'cpython' or sys.version_info[:2] != (3, 12) or not __debug__: + raise SystemExit('Use CPython 3.12 with assertions enabled') + pins = json.loads((ROOT / 'INPUTS.json').read_text(), object_pairs_hook=unique_object) + paths = [record['path'] for record in pins] + if len(set(paths)) != len(paths): + raise ValueError('duplicate input receipt path') + receipts = json.loads((ROOT / 'RECEIPTS.json').read_text(), object_pairs_hook=unique_object) + for record in pins: + data = (INPUTS / record['path']).read_bytes() + if hashlib.sha256(data).hexdigest() != record['sha256']: + raise ValueError(f"changed source: {record['path']}") + peer = INPUTS / 'peer' + caller = INPUTS / 'caller' / 'CALLER.json' + interval = INPUTS / 'caller' / 'interval_gate.py' + word = peer / 'research/p104-rank8-exit-funded-split/WORD.json.gz' + owned = CHECKS / 'owned.py' + side = CHECKS / 'side_rows.py' + donor = CHECKS / 'donor_intervals.py' + names = set() + + def run(label, script, *args): + data = subprocess.run([sys.executable, '-I', '-B', str(CHECKS / script), *map(str,args)], + stdout=subprocess.PIPE, check=True).stdout + if hashlib.sha256(data).hexdigest() != receipts[label]['stdout_sha256']: + raise ValueError(f'changed scientific output: {label}') + names.add(label) + print(f'PASS {label}', flush=True) + return data + + with TemporaryDirectory() as path: + saved = Path(path) + saved_owned = saved / 'owned.json' + saved_side = saved / 'side.json' + saved_owned.write_bytes(run('owned', 'owned.py', peer, caller, interval)) + run('direct_sum', 'direct_sum.py', saved_owned, interval) + saved_side.write_bytes(run('side_rows', 'side_rows.py', peer, caller, interval, owned)) + run('pair_relations', 'pair_relations.py', word, saved_side) + run('donor_intervals', 'donor_intervals.py', peer, caller, interval, owned) + for count in (1, 2): + run(f'charged_charts_{count}', 'charged_charts.py', peer, caller, interval, owned, side, donor, + '--source-count', count) + run('multi_gate', 'multi_gate.py', peer, caller, interval, owned, side, donor, + CHECKS / 'charged_charts.py') + assert names == receipts.keys() + print('PASS_P104_OWNED_MOVE_TRANSPORT_BOUND') + + +if __name__ == '__main__': + main()