From 9a7f206d4e9812d2eec042aed6e40acadacd534d Mon Sep 17 00:00:00 2001 From: Nick Petalas Date: Thu, 29 Oct 2026 13:50:26 +0000 Subject: [PATCH] perf(research): accelerate the first P104 fold --- research/p104-fold-elimination/BENCHMARK.json | 216 ++++++++++++ .../p104-fold-elimination/ENVIRONMENT.json | 14 + research/p104-fold-elimination/PROFILE.json | 190 +++++++++++ research/p104-fold-elimination/PROOF.md | 82 +++++ research/p104-fold-elimination/README.md | 104 ++++++ research/p104-fold-elimination/RETAINED.json | 309 ++++++++++++++++++ research/p104-fold-elimination/SOURCES.json | 18 + research/p104-fold-elimination/TASK.json | 78 +++++ research/p104-fold-elimination/VERIFY.json | 34 ++ research/p104-fold-elimination/benchmark.py | 83 +++++ research/p104-fold-elimination/iob_entry.py | 18 + research/p104-fold-elimination/run.py | 46 +++ research/p104-fold-elimination/runtime.py | 34 ++ research/p104-fold-elimination/solver.py | 71 ++++ .../toolkit-closure.tar.gz | Bin 0 -> 199348 bytes research/p104-fold-elimination/verify.py | 165 ++++++++++ 16 files changed, 1462 insertions(+) create mode 100644 research/p104-fold-elimination/BENCHMARK.json create mode 100644 research/p104-fold-elimination/ENVIRONMENT.json create mode 100644 research/p104-fold-elimination/PROFILE.json create mode 100644 research/p104-fold-elimination/PROOF.md create mode 100644 research/p104-fold-elimination/README.md create mode 100644 research/p104-fold-elimination/RETAINED.json create mode 100644 research/p104-fold-elimination/SOURCES.json create mode 100644 research/p104-fold-elimination/TASK.json create mode 100644 research/p104-fold-elimination/VERIFY.json create mode 100644 research/p104-fold-elimination/benchmark.py create mode 100644 research/p104-fold-elimination/iob_entry.py create mode 100644 research/p104-fold-elimination/run.py create mode 100644 research/p104-fold-elimination/runtime.py create mode 100644 research/p104-fold-elimination/solver.py create mode 100644 research/p104-fold-elimination/toolkit-closure.tar.gz create mode 100644 research/p104-fold-elimination/verify.py diff --git a/research/p104-fold-elimination/BENCHMARK.json b/research/p104-fold-elimination/BENCHMARK.json new file mode 100644 index 0000000000..f602ec06d2 --- /dev/null +++ b/research/p104-fold-elimination/BENCHMARK.json @@ -0,0 +1,216 @@ +{ + "schema": "p104-fold-benchmark/1", + "runs": [ + { + "mode": "baseline", + "seconds": 129.89114750013687, + "word_sha256": "6a3d8a88b41cec6d2e6d5a1315b16448478a32c60157c0f036d89b65e702f13b", + "events": 22821, + "step": { + "site": "H705", + "kappa": 0.003126477877758, + "base": 0.003125811557912, + "diff": 6.663e-07, + "variant": [ + "--relocate", + "770:13614:15597" + ], + "status": "FOLDED" + }, + "exit_code": 0 + }, + { + "mode": "candidate", + "seconds": 89.69574729190208, + "word_sha256": "6a3d8a88b41cec6d2e6d5a1315b16448478a32c60157c0f036d89b65e702f13b", + "events": 22821, + "step": { + "site": "H705", + "kappa": 0.003126477877758, + "base": 0.003125811557912, + "diff": 6.663e-07, + "variant": [ + "--relocate", + "770:13614:15597" + ], + "status": "FOLDED" + }, + "exit_code": 0 + }, + { + "mode": "baseline", + "seconds": 132.10526695800945, + "word_sha256": "6a3d8a88b41cec6d2e6d5a1315b16448478a32c60157c0f036d89b65e702f13b", + "events": 22821, + "step": { + "site": "H705", + "kappa": 0.003126477877758, + "base": 0.003125811557912, + "diff": 6.663e-07, + "variant": [ + "--relocate", + "770:13614:15597" + ], + "status": "FOLDED" + }, + "exit_code": 0 + }, + { + "mode": "candidate", + "seconds": 91.40650762501173, + "word_sha256": "6a3d8a88b41cec6d2e6d5a1315b16448478a32c60157c0f036d89b65e702f13b", + "events": 22821, + "step": { + "site": "H705", + "kappa": 0.003126477877758, + "base": 0.003125811557912, + "diff": 6.663e-07, + "variant": [ + "--relocate", + "770:13614:15597" + ], + "status": "FOLDED" + }, + "exit_code": 0 + }, + { + "mode": "baseline", + "seconds": 127.85968495812267, + "word_sha256": "6a3d8a88b41cec6d2e6d5a1315b16448478a32c60157c0f036d89b65e702f13b", + "events": 22821, + "step": { + "site": "H705", + "kappa": 0.003126477877758, + "base": 0.003125811557912, + "diff": 6.663e-07, + "variant": [ + "--relocate", + "770:13614:15597" + ], + "status": "FOLDED" + }, + "exit_code": 0 + }, + { + "mode": "candidate", + "seconds": 89.58335066703148, + "word_sha256": "6a3d8a88b41cec6d2e6d5a1315b16448478a32c60157c0f036d89b65e702f13b", + "events": 22821, + "step": { + "site": "H705", + "kappa": 0.003126477877758, + "base": 0.003125811557912, + "diff": 6.663e-07, + "variant": [ + "--relocate", + "770:13614:15597" + ], + "status": "FOLDED" + }, + "exit_code": 0 + }, + { + "mode": "baseline", + "seconds": 125.20299625000916, + "word_sha256": "6a3d8a88b41cec6d2e6d5a1315b16448478a32c60157c0f036d89b65e702f13b", + "events": 22821, + "step": { + "site": "H705", + "kappa": 0.003126477877758, + "base": 0.003125811557912, + "diff": 6.663e-07, + "variant": [ + "--relocate", + "770:13614:15597" + ], + "status": "FOLDED" + }, + "exit_code": 0 + }, + { + "mode": "candidate", + "seconds": 88.87156916595995, + "word_sha256": "6a3d8a88b41cec6d2e6d5a1315b16448478a32c60157c0f036d89b65e702f13b", + "events": 22821, + "step": { + "site": "H705", + "kappa": 0.003126477877758, + "base": 0.003125811557912, + "diff": 6.663e-07, + "variant": [ + "--relocate", + "770:13614:15597" + ], + "status": "FOLDED" + }, + "exit_code": 0 + }, + { + "mode": "baseline", + "seconds": 123.44024070887826, + "word_sha256": "6a3d8a88b41cec6d2e6d5a1315b16448478a32c60157c0f036d89b65e702f13b", + "events": 22821, + "step": { + "site": "H705", + "kappa": 0.003126477877758, + "base": 0.003125811557912, + "diff": 6.663e-07, + "variant": [ + "--relocate", + "770:13614:15597" + ], + "status": "FOLDED" + }, + "exit_code": 0 + }, + { + "mode": "candidate", + "seconds": 86.47449304186739, + "word_sha256": "6a3d8a88b41cec6d2e6d5a1315b16448478a32c60157c0f036d89b65e702f13b", + "events": 22821, + "step": { + "site": "H705", + "kappa": 0.003126477877758, + "base": 0.003125811557912, + "diff": 6.663e-07, + "variant": [ + "--relocate", + "770:13614:15597" + ], + "status": "FOLDED" + }, + "exit_code": 0 + } + ], + "summary": { + "baseline": { + "median_seconds": 127.85968495812267, + "range_seconds": [ + 123.44024070887826, + 132.10526695800945 + ] + }, + "candidate": { + "median_seconds": 89.58335066703148, + "range_seconds": [ + 86.47449304186739, + 91.40650762501173 + ] + } + }, + "errors": 0, + "python": "3.12.15 (main, Oct 14 2026, 00:55:37) [Clang 23.1.3 ]", + "executable": "/Users/nick/git/integer-mult-bounds/.venv/bin/python3.12", + "platform": "macOS-27.0.1-arm64-arm-64bit", + "source_head": "445fb9124eb3fcb5d4f342c476b9ae3637f185aa", + "hashes": { + "benchmark.py": "3352e3d081228856eec45ba888d2b5b37f99bb5b04e011d8d0fe1251a2e6e684", + "iob_entry.py": "144922805173646cfdde95c19b6fd475fa5dcfe0bcd8f1c23667a7890179e58b", + "run.py": "5ccd43f7bd968736c28040b87d770a4a420915a501f9bb6efe13b8ed740ad630", + "runtime.py": "c7a1bcb240db5e89218f634eb5cd80713377eb26febfb91ce54956693b81f37d", + "solver.py": "2118d63937d4f220a53807170793b2223516aafe14b74fb25b04ac634e3b9e63", + "verify.py": "218519b64979f314ff321cc5229ddcacaadabff50ac2b9dbf513a44207cb0a01" + }, + "retained_manifest_sha256": "b9971dc880602974febf22b23efefe45c20fb8a317ef2eb7f4d03964ef28ac8d", + "timed_region": "Fresh process through completed first fold, including source authentication, both attempted variants, legality and output serialization." +} diff --git a/research/p104-fold-elimination/ENVIRONMENT.json b/research/p104-fold-elimination/ENVIRONMENT.json new file mode 100644 index 0000000000..fef82e4212 --- /dev/null +++ b/research/p104-fold-elimination/ENVIRONMENT.json @@ -0,0 +1,14 @@ +{ + "python": "3.12.15 (main, Oct 14 2026, 00:55:37) [Clang 23.1.3 ]", + "executable": "/Users/nick/git/integer-mult-bounds/.venv/bin/python3.12", + "numpy": "2.5.4", + "platform": "macOS-27.0.1-arm64-arm-64bit", + "logical_cpus": 18, + "shared_host": true, + "load_average_during_series": [ + 3.14306640625, + 3.14501953125, + 2.90966796875 + ], + "checked_at_utc": "2026-10-29T13:23:20.335269+00:00" +} diff --git a/research/p104-fold-elimination/PROFILE.json b/research/p104-fold-elimination/PROFILE.json new file mode 100644 index 0000000000..965bd97997 --- /dev/null +++ b/research/p104-fold-elimination/PROFILE.json @@ -0,0 +1,190 @@ +{ + "schema": "p104-fold-profile/1", + "source_head": "445fb9124eb3fcb5d4f342c476b9ae3637f185aa", + "profile_sha256": "99db17280c6b5a84f3a3172bb0ed18edb3ab3dd85b8b20980b7080a3524a4a10", + "total_seconds": 83.32374433300002, + "total_calls": 7346560, + "entries": [ + { + "file": "~", + "line": 0, + "function": "", + "primitive_calls": 1, + "calls": 124, + "self_seconds": 0.000226369, + "cumulative_seconds": 83.32378641700001 + }, + { + "file": "iob2.py", + "line": 1, + "function": "", + "primitive_calls": 1, + "calls": 1, + "self_seconds": 0.002460706, + "cumulative_seconds": 83.323781041 + }, + { + "file": "iob2.py", + "line": 75, + "function": "main", + "primitive_calls": 1, + "calls": 1, + "self_seconds": 0.040390543, + "cumulative_seconds": 83.264762417 + }, + { + "file": "iob2.py", + "line": 380, + "function": "solve_with", + "primitive_calls": 2, + "calls": 2, + "self_seconds": 0.018040167000000003, + "cumulative_seconds": 75.640903625 + }, + { + "file": "rp.py", + "line": 167, + "function": "solve", + "primitive_calls": 2, + "calls": 2, + "self_seconds": 0.023911166, + "cumulative_seconds": 75.622842417 + }, + { + "file": "rp.py", + "line": 150, + "function": "rref", + "primitive_calls": 2, + "calls": 2, + "self_seconds": 75.45015759200001, + "cumulative_seconds": 75.598910167 + }, + { + "file": "iob2.py", + "line": 342, + "function": "linsys", + "primitive_calls": 3, + "calls": 3, + "self_seconds": 0.281283653, + "cumulative_seconds": 7.0969939580000005 + }, + { + "file": "iob2.py", + "line": 365, + "function": "mm", + "primitive_calls": 9, + "calls": 9, + "self_seconds": 5.876607252, + "cumulative_seconds": 5.879811544000001 + }, + { + "file": "~", + "line": 0, + "function": "", + "primitive_calls": 8820, + "calls": 8820, + "self_seconds": 0.08540684600000001, + "cumulative_seconds": 0.464110746 + }, + { + "file": "iob2.py", + "line": 374, + "function": "", + "primitive_calls": 3185355, + "calls": 3185355, + "self_seconds": 0.378593489, + "cumulative_seconds": 0.378593489 + }, + { + "file": "rp.py", + "line": 32, + "function": "replay", + "primitive_calls": 4, + "calls": 4, + "self_seconds": 0.01064989, + "cumulative_seconds": 0.219267958 + }, + { + "file": "routing.py", + "line": 65, + "function": "gcols", + "primitive_calls": 3, + "calls": 3, + "self_seconds": 0.202644393, + "cumulative_seconds": 0.218078666 + }, + { + "file": "iob2.py", + "line": 43, + "function": "sym_events", + "primitive_calls": 1, + "calls": 1, + "self_seconds": 0.016566320000000002, + "cumulative_seconds": 0.21751679200000001 + }, + { + "file": "rp.py", + "line": 24, + "function": "step", + "primitive_calls": 99742, + "calls": 99742, + "self_seconds": 0.19580799200000001, + "cumulative_seconds": 0.20605289000000002 + }, + { + "file": "legal.py", + "line": 66, + "function": "check", + "primitive_calls": 1, + "calls": 1, + "self_seconds": 0.037784635000000004, + "cumulative_seconds": 0.175833167 + }, + { + "file": "iob2.py", + "line": 51, + "function": "add", + "primitive_calls": 36854, + "calls": 36854, + "self_seconds": 0.031683457000000005, + "cumulative_seconds": 0.153815863 + }, + { + "file": "fractions.py", + "line": 613, + "function": "forward", + "primitive_calls": 134259, + "calls": 134259, + "self_seconds": 0.024357564, + "cumulative_seconds": 0.10362154300000001 + }, + { + "file": "numeric.py", + "line": 675, + "function": "flatnonzero", + "primitive_calls": 9392, + "calls": 9392, + "self_seconds": 0.010900678, + "cumulative_seconds": 0.091276432 + }, + { + "file": "fractions.py", + "line": 186, + "function": "__new__", + "primitive_calls": 91605, + "calls": 91605, + "self_seconds": 0.048266164, + "cumulative_seconds": 0.09003643400000001 + }, + { + "file": "~", + "line": 0, + "function": "", + "primitive_calls": 20907, + "calls": 20907, + "self_seconds": 0.058941859000000006, + "cumulative_seconds": 0.058941859000000006 + } + ], + "scope": "Untimed discovery profile of the first relocation variant, which correctly rejects as illegal. Separate from the repeated complete-fold benchmark." +} diff --git a/research/p104-fold-elimination/PROOF.md b/research/p104-fold-elimination/PROOF.md new file mode 100644 index 0000000000..c1a6d42266 --- /dev/null +++ b/research/p104-fold-elimination/PROOF.md @@ -0,0 +1,82 @@ +# Solver equivalence and scope + +The mathematical background is ordinary Gaussian elimination over a prime +field. The contribution is its application to the measured P104 fold bottleneck, +the opt-in substitution and the complete-command evidence. No priority claim +is made for the elimination algorithm. + +Let p = 2147483647. For an m by n integer matrix A and vector b, the retained +`rp.solve` returns None when Ax = b is inconsistent. Otherwise it selects pivot +columns from left to right and sets all free coordinates to zero. It obtains +that solution by fully reducing the augmented matrix. + +The new solver eliminates only below each pivot, then substitutes backwards. +Both algorithms perform the same row selection, normalization and elimination +on the unprocessed rows. Eliminating entries above a pivot has no effect on +those rows. Induction on the pivot index therefore gives the same pivot columns +and the same unprocessed submatrix in both algorithms. Rows below the last +pivot have zero coefficient entries. A nonzero right-hand entry on such a row +is exactly the inconsistency condition. The original augmented-matrix reduction +detects this by selecting the augmented column as a pivot. + +In the consistent case, restrict A to its selected pivot columns. These columns +are independent and span its column space. Thus there is exactly one solution +supported on those columns. Back substitution and full reduction both produce +that solution. Every other coordinate is zero in both outputs. This covers +rank deficiency, zero rows, zero columns and empty matrices. Neither algorithm +needs an inverse of a zero pivot. + +All calculations in the replacement use signed 64-bit integers after modular +reduction. A product of residues is less than p squared, which is below 2^62. +The elimination subtraction occurs after reducing its product, so its absolute +value is below p. During back substitution, at most 4096 reduced products are +summed, giving a sum below 4096p and hence below 2^43. There is no signed overflow +in these operations. Each matrix dimension is checked to be at most 4096 before +the working matrix is allocated. The supported interface accepts integer NumPy +arrays and copies its inputs; it rejects noninteger or incompatible arrays. + +The substitution changes only the function called as `rp.solve`. The source +coefficient construction, projection seed, candidate order, Newton iterations, +rational reconstruction, builder, legality check and pricer retain their exact +bytes. Equality of the returned solution, including None, therefore preserves +every later deterministic computation in this pinned command. The finite replay +checks the complete emitted word as JSON, rather than compressed container bytes. +All ten timed commands produce the same canonical word digest and fold status. + +This is not a proof that the retained toolkit's projection or legality oracle +certifies every mathematical obligation of a P104 supplier. Their scope is +inherited. No native-phase, physical caller, uniform compiler, precision, BIT, +outer or selected-frontier result is established here. + +## Resource and code constraints + +All new loops have finite bounds: at most 4096 pivot or substitution steps, +50 retained source entries, 1234 small-system fixtures, five rejection controls, +two integration commands and at most ten benchmark pairs. Each child command +has a timeout. Every new function is below 60 physical lines. New verification +conditions use explicit exceptions and remain active under optimization. + +Power of Ten rule 3 requires a managed-runtime deviation in `solver.py` and its +NumPy callers. Python and NumPy allocate arrays and temporary values during +elimination. The dimension cap bounds each array by 4096 by 4097 entries and +the implementation has no unbounded queue or retained history. A working array +uses less than 129 MiB; the source matrix and elimination temporaries add further +bounded arrays. This is a capacity argument, not a measured peak-RSS claim. +Replacing NumPy with a fixed-buffer implementation would be a separate change. + +Rule 9 requires one explicit integration deviation in `runtime.install`. +The opt-in adapter binds `rp.solve` to the replacement function in a fresh +process. Its only possible targets are the retained baseline and `solver.solve`. +The retained files are authenticated before import, and no predecessor file is +edited. The baseline/candidate complete-command comparisons exercise both +targets. A future toolkit-owned parameter for the solver could remove this +binding step. + +The unchanged predecessor closure has its original coding conventions. This +package does not refactor that code or claim it satisfies the new-code rules. +Warning-strict execution reports unclosed-profile-file ResourceWarnings in +`tkcommon._load_data_profiles`. The files are closed by their finalizers; the +warning is not suppressed. Rule 10's limitation is confined to this frozen +predecessor import, whose exact bytes must remain preserved. A toolkit-owned +change to scoped profile reads would remove it. New-code syntax and warning +checks remain enabled. diff --git a/research/p104-fold-elimination/README.md b/research/p104-fold-elimination/README.md new file mode 100644 index 0000000000..ee408b6f4e --- /dev/null +++ b/research/p104-fold-elimination/README.md @@ -0,0 +1,104 @@ +# Faster exact P104 fold solves + +This contribution was produced by Nick Petalas. It replaces the repeated +Gauss-Jordan solves in one actual P104 shadow-relay fold with forward elimination +and back substitution. The complete first fold still rejects its first variant, +accepts its second variant and emits the identical 22821-event word. The measured +complete-command results are in [BENCHMARK.json](BENCHMARK.json). + +The claim type is an empirical tooling improvement with a scoped solver +equivalence proof and finite regression evidence. No new kappa is claimed. +The output word and its construction are predecessor work. + +## Result and evidence + +Five alternating complete-command pairs give median wall time **127.86 seconds +before and 89.58 seconds after, a 29.94% reduction**. Baseline range is +123.44 to 132.11 seconds; candidate range is 86.47 to 91.41 seconds. All ten +commands succeed and emit the same complete word and fold report. + +[PROFILE.json](PROFILE.json) records an untimed discovery profile. The +retained solver consumes 75.6 of 83.3 profiled seconds. That profile is the first +relocation variant, which correctly rejects as illegal. It is excluded from +the repeated timings. [PROOF.md](PROOF.md) explains why the replacement returns +the identical canonical basic solution over the source prime field, including +inconsistent systems and free variables. + +[benchmark.py](benchmark.py) runs five alternating baseline/candidate pairs of +the complete first fold. Its timed region includes fresh-process startup, +source authentication, census and planning, both attempted variants, all retained +checks and output serialization. Every command must succeed and produce the +same full canonical word and fold status. The generated receipt binds the +implementation hashes, environment, samples and output. It is not a hand-written +receipt. Single-host timings do not predict another machine's speedup. + +[verify.py](verify.py) compares 1234 complete small systems with the retained +solver, checks the returned solutions and input preservation, rejects malformed +inputs and a changed source, and runs the complete accepted solver variant in +both modes. The registered checks repeat this with optimization enabled. + +## Reproduction + +Run from the repository root with CPython 3.12 and NumPy 2.5.4: + +```sh +/Users/nick/git/integer-mult-bounds/.venv/bin/python3.12 -B scripts/research_package.py --package research/p104-fold-elimination +/Users/nick/git/integer-mult-bounds/.venv/bin/python3.12 -B scripts/check_research_commit.py --package research/p104-fold-elimination --check-source-history +/Users/nick/git/integer-mult-bounds/.venv/bin/python3.12 -B research/p104-fold-elimination/verify.py +``` + +To repeat the timings, choose an external scratch directory and extract the +retained closure there. The output directory passed to the benchmark must not +already exist: + +```sh +tar -xzf research/p104-fold-elimination/toolkit-closure.tar.gz -C "$fold_source_dir" +/Users/nick/git/integer-mult-bounds/.venv/bin/python3.12 -B research/p104-fold-elimination/benchmark.py "$fold_source_dir" "$fold_timing_dir" --pairs 5 +``` + +For a single accepted solve, use `run.py baseline SOURCE_DIR OUTPUT.json.gz` or +`run.py candidate SOURCE_DIR OUTPUT.json.gz`. Add `--whole-fold` to include the +preceding rejected variant and complete first-step driver. All outputs and +toolkit work files go beside the supplied output path. + +## Sources and limitations + +The source question is Open next question 2 of DreamingOfClouds' [PR6170](https://github.com/CrocSwap/integer-mult-bounds/pull/6170), +at `445fb9124eb3fcb5d4f342c476b9ae3637f185aa`. The measured bottleneck justified +elimination in place of the question's suggested rule caching. The package +retains a minimal 50-file closure, 491345 uncompressed bytes. Every retained +file has its original Git blob and SHA256 in [RETAINED.json](RETAINED.json). +The archive is authenticated before extraction, and source files are checked +before use. The original README and all retained headers preserve their credit. +The published source head is identified by its Git tree and downloaded blob +hashes; it is not added as a local ref or represented as admitted main-line work. + +DreamingOfClouds retains the toolkit, fold rule and PR6030/6143/6144 construction +credit. Ali Romman retains PR6167 and the retained-operand pass. The P104, +native, helper, caller, compiler and BIT predecessors retain their attribution +in the original README. Gaussian elimination is standard background; the new +contribution is the measured integration and its equivalence evidence. + +The solver supports dimensions at most 4096. The performance measurement covers +the first H705 fold on the shipped PR6030 word, not all sites, arbitrary words, +or the complete rebuild. The retained projection, legality oracle and prices +keep their existing scope. This is not a supplier audit, native replay, finite +certificate of a multiplication theorem or frontier update. All five selected +framework assumptions remain. Independent human and formal proof-kernel review +are unclaimed. + +Warning-strict controls expose retained `tkcommon.py` ResourceWarnings from +`json.load(open(f))` while loading profile files. These are unraisable file-finalizer +warnings in unchanged predecessor code. They are not suppressed, and the checks +are not described as warning-clean. New files use scoped file operations. + +## Open next questions + +- Does the same substitution help every accepted fold and the complete rebuild? + First compare each emitted word and acceptance status across that full path. + A separately budgeted run and larger-system coverage remain necessary. +- Can exact factorization reuse help successive Newton systems? First establish + an equality or controlled update relation between the two actual matrices. + No such relation is supplied here. + +The structured versions and blockers are in [TASK.json](TASK.json). diff --git a/research/p104-fold-elimination/RETAINED.json b/research/p104-fold-elimination/RETAINED.json new file mode 100644 index 0000000000..fe4c6cb6ae --- /dev/null +++ b/research/p104-fold-elimination/RETAINED.json @@ -0,0 +1,309 @@ +{ + "source_pr": 6170, + "source_author": "DreamingOfClouds", + "source_head": "445fb9124eb3fcb5d4f342c476b9ae3637f185aa", + "source_prefix": "research/p104-designer-toolkit-v2", + "archive_sha256": "dc34d853d26d153c34bfe5db64c8b770dea78275beecc058338e960fe5eef822", + "files": [ + { + "path": "README.md", + "git_blob": "0c1b92cd4abe071e650e836d8b93a7e573fa58c4", + "sha256": "4e8d4d7177ee23463f8d74202494152b14db864a19ffe33657c72b74bac67733", + "bytes": 20090 + }, + { + "path": "alignbuild/fold.py", + "git_blob": "90edf6bd98a16d4e15237be6dd48a1d4fd82d038", + "sha256": "9710214c15334186287e0f4ea1f39e1de042212348232ce0cd189719463d9a31", + "bytes": 8173 + }, + { + "path": "alignbuild/foldcensus.py", + "git_blob": "7531e565ee6b6684fe7b988e01b06414896ce4d7", + "sha256": "f0eda82cc2689643f8fab68960995c8bf6718951b13e40d82a296b874219695b", + "bytes": 4106 + }, + { + "path": "alignbuild/iob2.py", + "git_blob": "9b01d2cae873419595c36e651aa36ef07dceec1a", + "sha256": "a3e5598057697a3113cb4d786e13bd1f29ccf833d7115c7ef5bf1e67d37d75e5", + "bytes": 30364 + }, + { + "path": "alignbuild/life.py", + "git_blob": "72012e7f5b2fe6a707788f4df95ae6ff594523b3", + "sha256": "42654ef072b001f7488578973b9ac03672c2b515e3921d112c08d1b612ede96f", + "bytes": 4972 + }, + { + "path": "alignbuild/routing.py", + "git_blob": "81495742337e6692dbd22f02c461242f3b1e8d85", + "sha256": "dbd91a687f981de9b48e7168010ac7e51d7d5953bfd5f2615a379de77e20b5fa", + "bytes": 19896 + }, + { + "path": "alignbuild/rp.py", + "git_blob": "c9f9da0bf0f715c251c9bda2bb27e6fcaa02a4da", + "sha256": "ddb31097f1bb06e2143b78a56c05436500be76eca6a58a43dc1c175e273ecb04", + "bytes": 31341 + }, + { + "path": "alignbuild/sigside.py", + "git_blob": "ce76a5878882621561c04ebb4f3cb1bee59955ad", + "sha256": "b5e979fe2d3998a7e076d90da9f6cbf3a9f2f7568d09e0531808ca2e46167e8b", + "bytes": 16351 + }, + { + "path": "infra/legal.py", + "git_blob": "cca6f2a946b4bb6969659d7db8f65f115dae3dd0", + "sha256": "df7b743910bd534d710db50fc4460c5c976af0d1ba6007a1942a0c811e99a4d6", + "bytes": 13892 + }, + { + "path": "infra/price_exact.py", + "git_blob": "4e5a4e43920aee85d2ba1264dffd35b0935260e4", + "sha256": "cfa91630021afc62d1f0ab71c497fb7dd40f785241a498debc76d376fcb6935a", + "bytes": 6101 + }, + { + "path": "profiles/5551.json", + "git_blob": "ecca31a129167fca6b7ca7de24c6059fdc24e754", + "sha256": "12aa7a77381c275540b582bc798a39a896f5eb9d5cbaf44cc4d8f0ff77598fdd", + "bytes": 4905 + }, + { + "path": "profiles/5565.json", + "git_blob": "42b8f77cec34fc93f7962596db69f9055b58dadc", + "sha256": "ab68482e88106f72ce24c32a017f3f32451fd9dc2b5bb1ad16258b7b19e1c675", + "bytes": 4858 + }, + { + "path": "profiles/5580.json", + "git_blob": "b3751eaa63fadc03a48db7531a2045e8d6cb1adc", + "sha256": "22ea851fba99f06371ff8554a5372a9b07e42a325f1dd97c5f404900160f3bd9", + "bytes": 4877 + }, + { + "path": "profiles/5599.json", + "git_blob": "dbe4268a06cf7fd326ff3a3e87f23df66e356a24", + "sha256": "1b4f10714c3021351cbbad4c2206696a763076b34835a0b8c3e2355d60d99adb", + "bytes": 4950 + }, + { + "path": "profiles/5612.json", + "git_blob": "42fe0cbdaebe2d0de5432a2bc721bb47f34a88b4", + "sha256": "fefda04d1bbc3b633e63a7a33fded25d561449855784f007ac20d1aa45b5ce64", + "bytes": 5327 + }, + { + "path": "profiles/5613.json", + "git_blob": "4c6b4d7ec278bed0afa93f8b8eeb5b50363132f5", + "sha256": "a5fa16e2e031ba86586bc20241d87ec0a160a4d2c7a54feee18bdb1f712d2ca9", + "bytes": 5437 + }, + { + "path": "profiles/5644.json", + "git_blob": "176bdd865cd570f234aedb025c4e7cbce74eb614", + "sha256": "87ebae982d20df93744127816101e30c095e5bf126f1fd716138a3c802fbc923", + "bytes": 4985 + }, + { + "path": "profiles/5650.json", + "git_blob": "22d26f95648c8d3bfe846047af894d8bc310fb0b", + "sha256": "5483818e3a425c50883b8f3c1ddccf3248bb8da32e701f503feac9040765caaf", + "bytes": 4894 + }, + { + "path": "profiles/5660.json", + "git_blob": "9b4a06c8048a66e2443ff32eb0e2c8f13e447550", + "sha256": "15c2f40c9f3cde7f43ae82e057e834a2216f6f30a18d185c6d9409e6242d5b54", + "bytes": 4953 + }, + { + "path": "profiles/5678.json", + "git_blob": "5c941432a9890ca8f65542cb741e25179f7a57d0", + "sha256": "ca9c9ce675158684feae5bf36413fd2d084c7e5f426f5b74d8788a06da49c93d", + "bytes": 5025 + }, + { + "path": "profiles/5678_af814f6f.json", + "git_blob": "f2ca10f8f44567d2f105a34a90224606f10b5218", + "sha256": "ad6adf467f913bbde1384397fe56ef91ab16c07a52c8de4968f347245e558855", + "bytes": 5271 + }, + { + "path": "profiles/5713.json", + "git_blob": "f709daca7e4df003f0da3bbea0b5910ded328c07", + "sha256": "87a8ee3deff2bb55de0dbb142b47a45e241c801bfe38f3ca8f546abb091b2d36", + "bytes": 5077 + }, + { + "path": "profiles/5713_a5348f71.json", + "git_blob": "494f55da0f7b5336dae4104d958d0d5b8812a5e1", + "sha256": "1113c51e9abb230331fc7c506c87d28e275871b3a1bdf225d5480c714d8480f9", + "bytes": 5123 + }, + { + "path": "profiles/5718.json", + "git_blob": "ef5186172073d9c563480df6169acb9fac246221", + "sha256": "fc1b965f2253f350700360f3534a9a0f1e4f38339864d46825f4ae623ccd18fa", + "bytes": 5187 + }, + { + "path": "profiles/5718_a1534ac4.json", + "git_blob": "bf4d9a58b0ebfa0d92d02e952bfa5f477719077f", + "sha256": "d1ac62992aed776d6146de15b5d3b2c1db6955c1d0a8f186555a2a6f15997266", + "bytes": 5233 + }, + { + "path": "profiles/5739.json", + "git_blob": "ed1d8b39ecd4c32fe4f1047ad3720dd63e42b74f", + "sha256": "125782f8129a93cc56e14d298f6952b177999babb60132aa790cee7034ec8853", + "bytes": 5302 + }, + { + "path": "profiles/5739_b93d749a.json", + "git_blob": "dc6b854677cb982b6897982f25854e1e0c8ea9cb", + "sha256": "da7f2cf2fa0bbcdc41ae925c182a1df8314abc2ea0c0e1e549ed6cfa93e0a5ed", + "bytes": 5348 + }, + { + "path": "profiles/5751.json", + "git_blob": "d2d29f17613583c595cbc73324780620910f3592", + "sha256": "09e6c00220a9ef0d4b96e0d0b695a21c51352ef384202bb38383e250b48b9f19", + "bytes": 4972 + }, + { + "path": "profiles/5756.json", + "git_blob": "0caa12dde204e2faebf58571dc1bf5510bc9e799", + "sha256": "fa66d55a54f1a7eab96d83789e4ff2a12ae9f1e65426554b084dbd21a7802e5c", + "bytes": 4924 + }, + { + "path": "profiles/5774.json", + "git_blob": "c1d1ca518047ef5c2dde5294dd6d830fb30dab86", + "sha256": "26919f0d59cd72bcd09569acdc2069cfed585e6f7d7669ebaf1606f700ac397c", + "bytes": 5006 + }, + { + "path": "profiles/5786.json", + "git_blob": "c3f2a9ff4136f6c55b1a9ef489072e895851e2c5", + "sha256": "003db892be69196ba08d932a27d5ad0c1c591c5c81e52f766cf0c3a73744fd15", + "bytes": 5053 + }, + { + "path": "profiles/5796.json", + "git_blob": "38f11744464164bebe3b2ef5837a2ab0cf7f458b", + "sha256": "c435c2a37d46054fe8e47d876c12d93cf7b400ffbaed1c267f065ca195b9199d", + "bytes": 4976 + }, + { + "path": "profiles/5802.json", + "git_blob": "0260815740dd6cefed411053ba34d69116e7e9bb", + "sha256": "31e3cef05d43beed270ee94eb0e12137d70d801eb64b8d1e7c548e174b29b1b5", + "bytes": 5034 + }, + { + "path": "profiles/5802_9bab1ca9.json", + "git_blob": "84281c87c11981dabfba99bf6121d5a60c3e8c86", + "sha256": "d96249b1e783bb406ba90f865b6e82e4dddb824a7f62d4a8034ea867a235afce", + "bytes": 5080 + }, + { + "path": "profiles/5811.json", + "git_blob": "6c676af8275a4fb953676a916dde97071d01123f", + "sha256": "0ada18e84846fa8ce4f2903305baa3e202609640a685c2b9771bdeff198882a7", + "bytes": 5075 + }, + { + "path": "profiles/5811_883ab9ca.json", + "git_blob": "200db2840f3649e539715579fedba52402a41b11", + "sha256": "94c5bee590108978e66c895ec7dba088e9594a0e261cf22093c39a11ab51e3be", + "bytes": 5121 + }, + { + "path": "profiles/5812.json", + "git_blob": "988defaeeec8e132c2a25e93d6a8a4b888cb13b5", + "sha256": "e0b5bbecf0739a10fcabd3af3dbd1594ada7a95efbb1c57e8f2f3ea2e23877c6", + "bytes": 5064 + }, + { + "path": "profiles/5827.json", + "git_blob": "8da58bb2a8dd16979ff5f7d2aa38d940c36ca4a0", + "sha256": "0122df154c4bdbee6ca43987e41a5584a8194f8c6fc152479392a0aab49fad62", + "bytes": 4596 + }, + { + "path": "profiles/5827_05cd36e5.json", + "git_blob": "b3f6c165037223188eb5c7ea2d49b70774dba1c6", + "sha256": "2fbd7dd08d695eb16d7b3abacc4a757c11ee55e9d2fb46c286a3bdaa94edca95", + "bytes": 5080 + }, + { + "path": "profiles/5907.json", + "git_blob": "7c0ea4e73ac7aa6423b6b3990a4641cbb8073564", + "sha256": "971b7a6e733fd8ef06d57175dc1c720e9efb8362c9fd29c38bf77d1518fe5609", + "bytes": 5087 + }, + { + "path": "profiles/5907_c1cbd9e3.json", + "git_blob": "020b93addfd54c71be1994eedb5b4bb4f6b4dfe7", + "sha256": "b8ac3ca035ddf9ca5ce58213af7a075a017d5b837edb49f085d557078c433946", + "bytes": 5104 + }, + { + "path": "profiles/6030.json", + "git_blob": "aab3f4af31aba0dcfe525cc7a0ba73aaaf6425f6", + "sha256": "debcc649fa5bd9f553fb50ad99ce3b155772c6432440d65eeefc685e9adbb0ce", + "bytes": 5108 + }, + { + "path": "profiles/6030_772dd10a.json", + "git_blob": "f337f7971dd4119b8135f8b32bf45a5eda5f86b0", + "sha256": "e3070b2637bf8c13377ebcfade0a6e7c41dabb8e144c6a84a43a8b48b6506ccb", + "bytes": 5126 + }, + { + "path": "profiles/6143.json", + "git_blob": "a86e2e437a78f4d8d92956d0741e6adf762051dc", + "sha256": "9215ff0f581016d8667afc23931644e6241bd27ab1ec1c4a829f608b7d9521f0", + "bytes": 5090 + }, + { + "path": "profiles/6144.json", + "git_blob": "a9225c792d3089e0e8a5a111818bb452c526f552", + "sha256": "027e80d12d1af7db2730e26d84a9b1e6fed6255914a5c68565ef657c599344f7", + "bytes": 5094 + }, + { + "path": "profiles/6167.json", + "git_blob": "3abcffd767c2ebfab320bcc93be9e4c171cdbc8d", + "sha256": "88bcd134b6bfd134686460ebf1f79f11a60780f861aa2ee5aa6ee6dab8a35815", + "bytes": 5074 + }, + { + "path": "profiles/6167_564a076b.json", + "git_blob": "bbd79fc4a905b40f1e6c923f475063c9b4e13211", + "sha256": "fedacae1f3dc3be05d0f5265afa7a2d1f53c5fc2ae27e270f5101062a06d5fda", + "bytes": 5118 + }, + { + "path": "surgery/swlib.py", + "git_blob": "22bd2d2c811c3a06acdcaddf06e931b7066b0816", + "sha256": "d5b6f42a2065fe02c3256b48843b7e8af8ec04902147f3d501ab07020d0d5e90", + "bytes": 12813 + }, + { + "path": "tkcommon.py", + "git_blob": "e5151da7629e293b2c959933e3699146ef2b7840", + "sha256": "aba50b9328a550d62cc963a9df4f240c00d9000012f057f6247f970edf239259", + "bytes": 15832 + }, + { + "path": "words/6030.json.gz", + "git_blob": "22f9ab02d1b73ea0aa4b07ce445a14cc2602c760", + "sha256": "7834725d9e34ee846a9ccc615221ea81e0201613938afa185d2eda0c9a6c232f", + "bytes": 119880 + } + ] +} diff --git a/research/p104-fold-elimination/SOURCES.json b/research/p104-fold-elimination/SOURCES.json new file mode 100644 index 0000000000..f53c427de7 --- /dev/null +++ b/research/p104-fold-elimination/SOURCES.json @@ -0,0 +1,18 @@ +{ + "schema_version": 1, + "base_commit": "3f0152a32eeebac0df11946dbd50cabe5a7f7839", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "d59b5035e7b4cbaa9d688a1d32dd0d6eb79c466a", + "sha256": "9b8d0eea95b3bf0dfcb7938a732a6439b87a2685dec2a5ab9e525b3b34debbfa" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81" + } + ] +} diff --git a/research/p104-fold-elimination/TASK.json b/research/p104-fold-elimination/TASK.json new file mode 100644 index 0000000000..654a1fe452 --- /dev/null +++ b/research/p104-fold-elimination/TASK.json @@ -0,0 +1,78 @@ +{ + "schema_version": 1, + "task_id": "replay-runtime", + "priority_revision": 8, + "base_commit": "3f0152a32eeebac0df11946dbd50cabe5a7f7839", + "original_card": { + "id": "replay-runtime", + "question": "Can one measured replay bottleneck be sped up without dropping coverage?", + "starting_points": [ + "scripts/run_isolated_tests.py", + "scripts/verify_replay_coverage.py", + "certificates/selected-result.json" + ], + "methods": [ + "Profile one isolated replay and optimize the measured bottleneck.", + "Design source-bound reuse with explicit dependency invalidation and negative controls." + ], + "acceptance_gate": "Report before/after wall time on the same fixture, retained checks and invalidation behavior.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_selected_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Resolve the current selected review, separate complex/ordinary BIT/admitted BIT/outer budgets, and compare the card against live handoffs before starting. Historical ceilings require exact source/model equivalence.", + "scope": "Source-binding orientation only; not a scientific replay or all-size proof. Materialize selected inputs if this checkout is sparse." + }, + "first_experiment": "Measure one unchanged fixture, preserve check coverage, and test one optimization with invalidation controls.", + "bottleneck_link": "Faster trustworthy replays increase review throughput and let mechanism candidates be checked sooner.", + "allowed_variations": [ + "Profile one stage or design one source-bound cache boundary." + ], + "scope_change_triggers": [ + "Skipping coverage or comparing different fixtures to claim speedup." + ], + "overlap_terms": [ + "replay runtime", + "cache invalidation", + "isolated tests" + ] + }, + "scope_status": "refined", + "actual_scope": "Replace repeated Gauss-Jordan solves in the first PR6170 P104 shadow-relay fold with exact forward elimination and back substitution; preserve the canonical basic solution, every complete output word and source acceptance decision.", + "scope_change_reason": "The source open question suggests caching rule matrices. The measured bottleneck is modular elimination, so this contribution changes only the solver instead.", + "bottleneck_link": "Cheaper exact construction solves reduce time spent producing and testing candidate P104 words. This changes no supplier, native operator, invoice or selected bound.", + "budget_minutes": 60, + "stop_rule": "Freeze the first source-equivalent improvement; measure at least five alternating complete folds, package it, and leave further algorithm changes to Open next questions.", + "outcome": "completed", + "evidence": "PROFILE.json identifies elimination as the dominant cost. BENCHMARK.json is generated by five alternating complete baseline/candidate folds and binds every implementation hash. verify.py checks canonical solutions, invalid inputs, source corruption and both complete accepted solver variants. All ten final full-fold commands pass with identical words; medians 127.85968495812267 and 89.58335066703148 seconds, a reduction of 29.93620256739071 percent.", + "author": "Nick Petalas", + "ai_assistance": "Independent human and formal proof-kernel review are unclaimed.", + "open_questions": [ + { + "question": "Does the same solver reduce time at every accepted fold site and across complete rebuilds?", + "why_it_matters": "The measured result is one actual first fold, not an end-to-end claim for every construction.", + "first_step": "Run the unchanged complete rebuild with the solver substitution and compare every emitted word and acceptance status.", + "blocked_by": "A separately budgeted benchmark of the remaining sites and larger system dimensions." + }, + { + "question": "Can exact elimination reuse factorizations across Newton rounds without changing candidate order?", + "why_it_matters": "The retained solver still rebuilds and eliminates a second system.", + "first_step": "Compare the two source-bound matrices, derive a certified update contract and include a complete invalidation test.", + "blocked_by": "No equality or low-rank relation between successive systems has been established." + } + ], + "upstream_checkpoint": { + "commit": "3f0152a32eeebac0df11946dbd50cabe5a7f7839", + "priority_revision": 8, + "checked_at_utc": "2026-10-29T13:00:00Z" + }, + "source_question": { + "source": "PR #6170, Open next question 2", + "author": "DreamingOfClouds", + "head": "445fb9124eb3fcb5d4f342c476b9ae3637f185aa", + "claim": "https://github.com/CrocSwap/integer-mult-bounds/discussions/1166#discussioncomment-19267663" + } +} diff --git a/research/p104-fold-elimination/VERIFY.json b/research/p104-fold-elimination/VERIFY.json new file mode 100644 index 0000000000..8df8ec409a --- /dev/null +++ b/research/p104-fold-elimination/VERIFY.json @@ -0,0 +1,34 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [ + "numpy==2.5.4" + ], + "inputs": [], + "commands": [ + { + "argv": [ + "{python}", + "-W", + "error", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 300, + "checks": "Canonical solver equivalence, source rejection and complete accepted fold variant in baseline and candidate modes." + }, + { + "argv": [ + "{python}", + "-O", + "-W", + "error", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 300, + "checks": "The same full checks with assertions disabled in the verifier interpreter." + } + ] +} diff --git a/research/p104-fold-elimination/benchmark.py b/research/p104-fold-elimination/benchmark.py new file mode 100644 index 0000000000..974f01ad02 --- /dev/null +++ b/research/p104-fold-elimination/benchmark.py @@ -0,0 +1,83 @@ +"""Time alternating complete first-step folds, checking every output word.""" + +import argparse +import gzip +import hashlib +import json +import platform +import statistics +import subprocess +import sys +import time +from pathlib import Path + +from runtime import PACKAGE, authenticate + + +def digest(path): + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def canonical_word(path): + word = json.loads(gzip.decompress(path.read_bytes())) + data = json.dumps(word, sort_keys=True, separators=(",", ":")).encode() + return hashlib.sha256(data).hexdigest(), len(word["program"]) + + +def measure(mode, toolkit, scratch, index): + output = scratch / f"{index}-{mode}.json.gz" + command = [sys.executable, "-B", str(PACKAGE / "run.py"), mode, + str(toolkit), str(output), "--whole-fold"] + started = time.perf_counter() + result = subprocess.run(command, capture_output=True, text=True, timeout=570) + elapsed = time.perf_counter() - started + (scratch / f"{index}-{mode}.stdout").write_text(result.stdout) + (scratch / f"{index}-{mode}.stderr").write_text(result.stderr) + if result.returncode != 0: + raise RuntimeError(f"fold failed: {mode}, exit {result.returncode}") + report = json.loads(result.stdout.strip().splitlines()[-1]) + if len(report["steps"]) != 1 or report["steps"][0]["status"] != "FOLDED": + raise RuntimeError("complete fold did not accept its site") + fingerprint, events = canonical_word(output) + return {"mode": mode, "seconds": elapsed, "word_sha256": fingerprint, + "events": events, "step": report["steps"][0], "exit_code": 0} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("toolkit", type=Path) + parser.add_argument("scratch", type=Path) + parser.add_argument("--pairs", type=int, default=5) + args = parser.parse_args() + if not 5 <= args.pairs <= 10: + parser.error("use five to ten alternating pairs") + args.scratch.mkdir(parents=True, exist_ok=False) + manifest = authenticate(args.toolkit) + runs = [] + for index in range(args.pairs): + for mode in ("baseline", "candidate"): + run = measure(mode, args.toolkit, args.scratch, index) + if runs and any(run[key] != runs[0][key] + for key in ("word_sha256", "events", "step")): + raise RuntimeError("complete fold outputs differ") + runs.append(run) + print(mode, index, f"{run['seconds']:.6f}", flush=True) + summary = {} + for mode in ("baseline", "candidate"): + samples = [run["seconds"] for run in runs if run["mode"] == mode] + summary[mode] = {"median_seconds": statistics.median(samples), + "range_seconds": [min(samples), max(samples)]} + receipt = {"schema": "p104-fold-benchmark/1", "runs": runs, + "summary": summary, "errors": 0, "python": sys.version, + "executable": sys.executable, "platform": platform.platform(), + "source_head": manifest["source_head"], + "hashes": {path.name: digest(path) for path in + sorted(PACKAGE.glob("*.py"))}, + "retained_manifest_sha256": digest(PACKAGE / "RETAINED.json"), + "timed_region": "Fresh process through completed first fold, including source authentication, both attempted variants, legality and output serialization."} + (args.scratch / "BENCHMARK.json").write_text(json.dumps(receipt, indent=2) + "\n") + print(json.dumps(summary, sort_keys=True), flush=True) + + +if __name__ == "__main__": + main() diff --git a/research/p104-fold-elimination/iob_entry.py b/research/p104-fold-elimination/iob_entry.py new file mode 100644 index 0000000000..d0920d83e4 --- /dev/null +++ b/research/p104-fold-elimination/iob_entry.py @@ -0,0 +1,18 @@ +"""Subprocess entry for the unmodified fold driver's solver invocation.""" + +import os +from pathlib import Path + +from runtime import install + + +def main(): + root = Path(os.environ["FOLD_TOOLKIT_ROOT"]).resolve() + install(root, os.environ["FOLD_SOLVER_MODE"]) + import iob2 + + iob2.main() + + +if __name__ == "__main__": + main() diff --git a/research/p104-fold-elimination/run.py b/research/p104-fold-elimination/run.py new file mode 100644 index 0000000000..1d35e8a5e9 --- /dev/null +++ b/research/p104-fold-elimination/run.py @@ -0,0 +1,46 @@ +"""Run the retained accepted solver variant, or the complete first fold step.""" + +import argparse +import os +import sys +from pathlib import Path + +from runtime import PACKAGE, install + +FLAGS = [ + "--flex", "--strip-sym", "--first-hop", "--root-frames-only", + "--f0", "--f0-wide", "--improve", "0", "--newton", "8", +] + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("mode", choices=("baseline", "candidate")) + parser.add_argument("toolkit", type=Path) + parser.add_argument("output", type=Path) + parser.add_argument("--whole-fold", action="store_true") + args = parser.parse_args() + root = args.toolkit.resolve() + os.environ["TK_WORK"] = str(args.output.resolve().parent) + os.environ["TK_PROFILE"] = "6030_772dd10a" + os.environ["FOLD_TOOLKIT_ROOT"] = str(root) + os.environ["FOLD_SOLVER_MODE"] = args.mode + install(root, args.mode) + if args.whole_fold: + import fold + + fold.IOB = str(PACKAGE / "iob_entry.py") + sys.argv = ["fold.py", "6030", str(args.output), "--max", "1"] + fold.main() + else: + import iob2 + + iob2.main([ + "6030", str(args.output), "--root", "5", "--strip-regs", "705", + "--insert", "770:553:+0", "--insert", "770:1047:+0", + "--relocate", "770:13614:15597", *FLAGS, + ]) + + +if __name__ == "__main__": + main() diff --git a/research/p104-fold-elimination/runtime.py b/research/p104-fold-elimination/runtime.py new file mode 100644 index 0000000000..5087b374cc --- /dev/null +++ b/research/p104-fold-elimination/runtime.py @@ -0,0 +1,34 @@ +"""Load the exact retained toolkit without changing any predecessor source.""" + +import hashlib +import json +import sys +from pathlib import Path + +PACKAGE = Path(__file__).resolve().parent + + +def authenticate(root): + """Reject a missing or changed member of the retained source closure.""" + manifest = json.loads((PACKAGE / "RETAINED.json").read_text()) + for record in manifest["files"]: + path = root / record["path"] + data = path.read_bytes() + if hashlib.sha256(data).hexdigest() != record["sha256"]: + raise ValueError("changed retained source: " + record["path"]) + return manifest + + +def install(root, mode): + """Install the one explicit solver substitution, or retain the baseline.""" + if mode not in ("baseline", "candidate"): + raise ValueError("unknown solver mode") + authenticate(root) + sys.path.insert(0, str(root / "alignbuild")) + import rp + + if mode == "candidate": + from solver import solve + + rp.solve = solve + return rp diff --git a/research/p104-fold-elimination/solver.py b/research/p104-fold-elimination/solver.py new file mode 100644 index 0000000000..007cb3503b --- /dev/null +++ b/research/p104-fold-elimination/solver.py @@ -0,0 +1,71 @@ +"""Exact basic solutions over the toolkit's Mersenne field. + +The first independent columns are the pivots and all free variables are zero. +This is the same convention as the retained Gauss-Jordan solver. +""" + +import numpy as np + +P = 2147483647 +MAX_DIMENSION = 4096 + + +def eliminate(work, variables): + """Normalize pivots and eliminate below them; return their column indices.""" + rows = work.shape[0] + pivots = [] + for column in range(variables): + row = len(pivots) + if row == rows: + break + nonzero = np.flatnonzero(work[row:, column]) + if nonzero.size == 0: + continue + selected = row + int(nonzero[0]) + if selected != row: + work[[row, selected]] = work[[selected, row]] + inverse = pow(int(work[row, column]), P - 2, P) + work[row, column:] = work[row, column:] * inverse % P + if work[row, column] != 1: + raise ArithmeticError("pivot normalization failed") + below = row + 1 + np.flatnonzero(work[row + 1:, column]) + factors = work[below, column].copy() + work[below, column:] = ( + work[below, column:] + - factors[:, None] * work[row, column:][None, :] % P + ) % P + pivots.append(column) + return pivots + + +def solve(matrix, rhs): + """Return the canonical basic solution, or None for an inconsistent system. + + Integer matrices and vectors must have compatible shapes, with each matrix + dimension at most 4096. Inputs are copied and reduced modulo P. + """ + matrix = np.asarray(matrix) + rhs = np.asarray(rhs) + if matrix.ndim != 2 or rhs.ndim != 1: + raise ValueError("expected a matrix and a vector") + rows, variables = matrix.shape + if rhs.shape != (rows,) or max(rows, variables) > MAX_DIMENSION: + raise ValueError("incompatible or oversized system") + if matrix.dtype.kind not in "iu" or rhs.dtype.kind not in "iu": + raise ValueError("integer arrays required") + # Widen narrow types first; retain unsigned values until after reduction. + matrix_type = np.uint64 if matrix.dtype.kind == "u" else np.int64 + rhs_type = np.uint64 if rhs.dtype.kind == "u" else np.int64 + matrix = (matrix.astype(matrix_type, copy=False) % P).astype(np.int64, copy=False) + rhs = (rhs.astype(rhs_type, copy=False) % P).astype(np.int64, copy=False) + work = np.column_stack((matrix, rhs)) + pivots = eliminate(work, variables) + if np.any(work[len(pivots):, variables]): + return None + solution = np.zeros(variables, dtype=np.int64) + for row in range(len(pivots) - 1, -1, -1): + column = pivots[row] + terms = work[row, column + 1: variables] * solution[column + 1:] % P + # At most 4096 reduced summands; their sum fits signed int64. + solution[column] = (int(work[row, variables]) - int(terms.sum())) % P + return solution diff --git a/research/p104-fold-elimination/toolkit-closure.tar.gz b/research/p104-fold-elimination/toolkit-closure.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..cf2182cd3a4e57b031e439964b3749f6a7605c9c GIT binary patch literal 199348 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 1: + matrix[:, columns - 1] = matrix[:, 0] + rhs = random.integers(0, P, rows, dtype=np.int64) + if trial % 2 == 0: + weights = random.integers(0, 100, columns) + rhs = (matrix * weights).sum(axis=1) % P + check_system(original, matrix, rhs) + count += 1 + invalid = [(np.zeros(2, dtype=np.int64), np.zeros(2, dtype=np.int64)), + (np.zeros((2, 2), dtype=np.int64), np.zeros(1, dtype=np.int64)), + (np.zeros((4097, 0), dtype=np.int64), np.zeros(4097, dtype=np.int64)), + (np.zeros((1, 1), dtype=float), np.zeros(1, dtype=np.int64))] + for matrix, rhs in invalid: + try: + solve(matrix, rhs) + except ValueError: + continue + raise ValueError("invalid solver input accepted") + changed = root / "alignbuild/rp.py" + saved = changed.read_bytes() + changed.write_bytes(saved + b"\n# mutation\n") + try: + try: + authenticate(root) + except ValueError: + return count, len(invalid) + 1 + raise ValueError("changed source accepted") + finally: + changed.write_bytes(saved) + + +def integration(root, scratch): + reports = [] + for mode in ("baseline", "candidate"): + output = scratch / f"{mode}.json.gz" + optimize = ["-O"] if sys.flags.optimize else [] + command = [sys.executable, *optimize, "-B", str(PACKAGE / "run.py"), mode, + str(root), str(output)] + started = time.perf_counter() + result = subprocess.run(command, capture_output=True, text=True, timeout=240) + elapsed = time.perf_counter() - started + (scratch / f"{mode}.log").write_text(result.stdout + result.stderr) + require(result.returncode == 0, "solver command failed") + require("RESULT: LEGAL " in result.stdout, "variant did not pass source checks") + word = json.loads(gzip.decompress(output.read_bytes())) + canonical = json.dumps(word, sort_keys=True, separators=(",", ":")).encode() + require(hashlib.sha256(canonical).hexdigest() == EXPECTED_WORD, + "complete output word changed") + reports.append({"mode": mode, "seconds": elapsed, + "events": len(word["program"]), "word_sha256": EXPECTED_WORD}) + return reports + + +def check_benchmark(): + receipt = json.loads((PACKAGE / "BENCHMARK.json").read_text()) + require(receipt["errors"] == 0 and len(receipt["runs"]) >= 10, "benchmark coverage") + for name, expected in receipt["hashes"].items(): + require(hashlib.sha256((PACKAGE / name).read_bytes()).hexdigest() == expected, + "benchmark implementation changed: " + name) + for index, run in enumerate(receipt["runs"]): + require(run["mode"] == ("baseline", "candidate")[index % 2], "run order") + require(run["word_sha256"] == EXPECTED_WORD and run["exit_code"] == 0 + and run["events"] == 22821, "benchmark output disagreement") + + +def main(): + check_benchmark() + with tempfile.TemporaryDirectory(prefix="p104-fold-") as directory: + scratch = Path(directory) + root = scratch / "toolkit" + root.mkdir() + manifest = extract(root) + cases, rejections = controls(root) + runs = integration(root, scratch) + print(json.dumps({"status": "PASS_P104_FOLD_ELIMINATION", + "canonical_systems": cases, "rejection_controls": rejections, + "retained_files": len(manifest["files"]), "runs": runs}, + sort_keys=True)) + + +if __name__ == "__main__": + main()