diff --git a/research/gaussian-tensor-error/README.md b/research/gaussian-tensor-error/README.md new file mode 100644 index 0000000000..e0e566eaa4 --- /dev/null +++ b/research/gaussian-tensor-error/README.md @@ -0,0 +1,118 @@ +# The factor (10 p^2)^g is absorbed by the same gate + +**Claim type:** an explicit absorption bound for one tensor error. +**No new κ.** The per-axis ceiling `10 p^2` stays a hypothesis. The selected +record remains `23/10000`. + +## Question + +#4482 leaves HALO's tensor error as `g p^{10 g} exp(-p^2)`. The open step is +to replace `p^{10}` by the inverse ceiling `10 p^2` and ask whether +`g log p = o(p)` still puts the error below `2^{-C p}` for every fixed `C`. + +## Lemma + +Let `p ≥ 2`, `g ≥ 1`, `K ≥ 0` and `C ≥ 0` be integers, and let +`L = ceil(log2 p)`. If + +```text +p ≥ max(64, 4K + 2C) and 16 g L ≤ p, +``` + +then + +```text +g (10 p^2)^g exp(K p - p^2) < 2^{-C p}. +``` + +Thus a global factor `exp(K p)` does not change the conclusion. Whenever +`g log p = o(p)`, every fixed pair `K, C` satisfies the gate for all large +`p`. The exponent 10 is not required for this absorption. + +The gate is not optional for every `g`. At `g = p^2` the same substituted +error is greater than 1 for every integer `p ≥ 2`. + +## Proof + +The series `1 + 1 + 1/2 = 5/2 > 2` gives `e > 2`, so `exp(-p^2) < 2^{-p^2}`. +For `k ≥ 2`, `k! ≥ 2^{k-1}`: the values at 2, 3 and 4 are `2`, `6` and `24`, +and the step uses `k + 1 ≥ 2`. The tail of `e` is then at most the geometric +series of ratio `1/2`, so `e < 3 < 4` and `exp(K p) < 4^{K p} = 2^{2 K p}` +whenever `K p > 0`. At `K = 0` the factor is 1. + +Since `10 < 16`, `(10 p^2)^g < 2^{4 g} p^{2 g}`. Also `p ≤ 2^L`, so +`p^{2 g} ≤ 2^{2 g L}`. The hypothesis `16 g L ≤ p` forces `g ≤ p ≤ 2^L`, and +therefore + +```text +g (10 p^2)^g exp(K p - p^2) < 2^{L + 4 g + 2 g L + 2 K p - p^2}. +``` + +It remains to show that the exponent is strictly less than `-C p`. For every +integer `p ≥ 64`, `8 L ≤ p`. The base is `8 · 7 = 56 ≤ 64` at `p = 2^6`, and +`8 ≤ 64`. If `8(m + 1) ≤ 2^m`, then `8(m + 2) ≤ 2^m + 8 ≤ 2^{m + 1}`. On each +dyadic interval the largest ratio of `L` to `p` is at the left endpoint, so +`8 L ≤ p` for every integer `p ≥ 64`. + +The gate `16 g L ≤ p` gives `2 g L ≤ p/8` and `4 g ≤ p/4`. The linear factor +obeys `(2 K + C) p ≤ p^2 / 2` exactly when `p ≥ 4 K + 2 C`, because +`2(2 K + C) = 4 K + 2 C`. Adding the four pieces produces at most + +```text +p/8 + p/4 + p/8 + p^2/2 = p/2 + p^2/2. +``` + +The slack against `p^2` is `p(p - 1)/2`. At `p = 2` this is 1, and it +increases by `p` at the next integer. The exponent is therefore at most +`-C p - 1`. + +If `g log p = o(p)`, then `g log2 p ≤ p/32` for large `p`. For `p ≥ 3`, +`L ≤ 2 log2 p`, so `p/(32 log2 p) ≤ p/(16 L)` and the gate `16 g L ≤ p` +holds eventually. Every fixed `K` and `C` then satisfy `p ≥ 4 K + 2 C` as +well. + +At `g = p^2`, `(10 p^2)^{p^2} > 4^{p^2} > exp(p^2)` because `10 p^2 ≥ 40 > 4` +and `e < 4`. The substituted error is then greater than 1, which is not below +`2^{-C p}`. + +## Not covered + +- A proof that each section inverse is at most `10 p^2`. This comparison + starts from that ceiling. +- The `g`-fold telescoping shape `g (10 p^2)^{g-1} p^6 exp(-p^2)`. +- Editing the #4100 notes. They still say `g p^{10 g} exp(-p^2)`. +- Any new κ. + +## Reproduce + +```sh +python3.12 -B scripts/research_package.py --package research/gaussian-tensor-error --check-only +python3.12 -B scripts/research_package.py --package research/gaussian-tensor-error +``` + +Base `2a13eb1827784206202db90e5dc8327cf8a250db`, priority revision 7, selection +refresh κ = `23/10000`. + +Overlap on 2026-10-22 (open PRs fetched 2026-10-22T00:55:03Z, 336 records; +discussions fetched 2026-10-22T00:55:50Z, 3362 records) names this draft, the +locality audit that keeps `g p^{10 g} exp(-p^2)`, discussion comment 19078965 +(a factor 2 in front of that product, not the `10 p^2` substitution), +`research/gaussian-expansion-headroom` (an unrelated tensor-error transport), +and #4481/#4482. No other package assigns the `(10 p^2)^g` absorption. A +search miss is not a novelty certificate. #4482 is the core-side comparison. +HALO is the error sentence. + +## Open next questions + +1. **Does the telescoping tensor bound stay absorbed?** A `g`-fold product + of section inverses is at most `g (10 p^2)^{g-1}` times one section error + `p^6 exp(-p^2)`, not necessarily `g (10 p^2)^g exp(-p^2)`. The first step + is to put the extra factor `p^4 / 10` into the same power-of-two budget. + +## Credit + +- The tensor sentence and the gate `g log p = o(p)` are #4100's. +- The ceiling `10 p^2` is Ryanson Jonathan's #4462, as carried through #4481. +- The question is the open step of #4482. + +Prepared by James Reed with substantial Cursor Grok 4.7 assistance. Apache-2.0. diff --git a/research/gaussian-tensor-error/SOURCES.json b/research/gaussian-tensor-error/SOURCES.json new file mode 100644 index 0000000000..b6dd82035c --- /dev/null +++ b/research/gaussian-tensor-error/SOURCES.json @@ -0,0 +1,24 @@ +{ + "schema_version": 1, + "base_commit": "2a13eb1827784206202db90e5dc8327cf8a250db", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "ed33caef5c5827693e9572d252a66f99cbb73d40", + "sha256": "5732707cc1e460b090b53f2463162749ad860de878a18f7408938671d295a9d9" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "64bfc5af6709ed9811171e0a2108f05e1219cb65", + "sha256": "352a6184713b8843d96fd2c2071eb7aeaa655906b7c51d45ad444912666c8a96" + }, + { + "path": "research/unconditional-batched-crt/HALO.md", + "usage": "input", + "git_blob": "5f601b3c8ac368aa79aa1007effe5933a360237b", + "sha256": "a2adcf18614983e9255def6d3f5e59be0018a392e418d65e94323722838289cc" + } + ] +} diff --git a/research/gaussian-tensor-error/TASK.json b/research/gaussian-tensor-error/TASK.json new file mode 100644 index 0000000000..0c9727451f --- /dev/null +++ b/research/gaussian-tensor-error/TASK.json @@ -0,0 +1,74 @@ +{ + "schema_version": 1, + "task_id": "uniform-transfer-audit", + "priority_revision": 7, + "base_commit": "2a13eb1827784206202db90e5dc8327cf8a250db", + "original_card": { + "id": "uniform-transfer-audit", + "question": "Does one quantified step of the proposed #4100 all-size construction hold at its actual caller?", + "starting_points": [ + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "research/unconditional-batched-crt/README.md" + ], + "methods": [ + "Prove one missing implication with explicit quantified hypotheses.", + "Find an exact counterexample at the claimed interface boundary." + ], + "acceptance_gate": "Identify the proposition and what would change downstream; do not equate a finite replay with a universal proof.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read PROOF.md and AUDIT.md in #4100. Select one distinct obligation: CRT total repair, native/free-algebra lifting, precision/conditioning, or complete fixed-tape cost. This is an author-submitted proof, not an accepted unconditional theorem.", + "scope": "Source-binding orientation only; no scientific replay, theorem acceptance or supplier admission. Budget any heavy replay separately." + }, + "first_experiment": "Check live handoffs; name one proposition, its caller, quantified domain and dependency closure. Independently prove the implication or exhibit a precise gap/counterexample. Prioritize CRT.md total repair or COMPLEX.md free-algebra lift only if unclaimed. Stop at the chosen obligation; do not substitute finite samples or root arithmetic for an all-size proof, or launch the complete package by default.", + "bottleneck_link": "Finite supplier improvements are useful only under the retained transfer obligations.", + "allowed_variations": [ + "One CRT repair, native lift, precision/conditioning or tape-cost proposition, with its exact caller." + ], + "scope_change_triggers": [ + "Replacing a quantified obligation with another finite smoke test.", + "Treating archive intake, an author PASS receipt or a finite composed fixture as discharge of the universal hypotheses." + ], + "overlap_terms": [ + "uniform transfer", + "all-size", + "precision", + "4100", + "unconditional-batched-crt" + ], + "existing_checks": [ + { + "scope": "PR #4100: proposed unconditional construction and finite checks, without independent acceptance.", + "evidence": "research/unconditional-batched-crt/README.md", + "remaining": "Independent proof audit of one caller-bound all-size implication; all other premises remain explicit.", + "status": "author-checked", + "source_commit": "337d04939571a637aeab54a0f58f54fde811663a", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + } + ] + }, + "scope_status": "refined", + "actual_scope": "Decide whether g (10 p^2)^g exp(-p^2), times a global factor exp(K p), still falls below 2^{-C p} whenever g log p = o(p).", + "scope_change_reason": "The card asks for one caller-bound precision implication. This package only substitutes the inverse ceiling into HALO's tensor error. It does not prove the per-axis ceiling and does not claim a new kappa.", + "bottleneck_link": "The selected frontier is unchanged. This is the error factor that sits beside the core-side exponent.", + "budget_minutes": 60, + "stop_rule": "Stop once the substituted error is compared with 2^{-C p} under the explicit gate. Do not prove the telescoping shape, do not edit the #4100 notes, and do not claim a new kappa.", + "outcome": "completed", + "evidence": "python3.12 -B scripts/research_package.py --package research/gaussian-tensor-error", + "author": "James Reed", + "ai_assistance": "Substantial help from Cursor Grok 4.7 on the absorption bound and the package text.", + "open_questions": [ + { + "question": "Does g (10 p^2)^{g-1} p^6 exp(-p^2) stay below 2^{-C p} under the same gate?", + "why_it_matters": "The g-fold triangle inequality carries one section error and g-1 operator norms, which is a different monomial from g (10 p^2)^g.", + "first_step": "Insert the extra factor p^4/10 into the power-of-two budget used for g (10 p^2)^g.", + "blocked_by": "The per-axis ceiling 10 p^2 and the section error p^6 exp(-p^2) remain conditional on the ideal gaps." + } + ] +} diff --git a/research/gaussian-tensor-error/VERIFY.json b/research/gaussian-tensor-error/VERIFY.json new file mode 100644 index 0000000000..72c3ec0c95 --- /dev/null +++ b/research/gaussian-tensor-error/VERIFY.json @@ -0,0 +1,21 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "certificates/selected-result.json", + "research/unconditional-batched-crt/HALO.md" + ], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 60, + "checks": "Under p >= max(64, 4K+2C) and 16 g ceil(log2 p) <= p, g (10 p^2)^g exp(Kp - p^2) is below 2^{-C p}; g = p^2 leaves that error above 1." + } + ] +} diff --git a/research/gaussian-tensor-error/verify.py b/research/gaussian-tensor-error/verify.py new file mode 100644 index 0000000000..04341c76f1 --- /dev/null +++ b/research/gaussian-tensor-error/verify.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 +"""The factor (10 p^2)^g is absorbed under the same g log p = o(p) gate. + +Every comparison is an integer identity. The per-axis ceiling is a hypothesis. +""" + +from __future__ import annotations + +import hashlib +import json +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] +PACKAGE = ROOT / "research" / "gaussian-tensor-error" + + +def digest(path: Path) -> str: + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def ceil_log2(value: int) -> int: + level = 0 + power = 1 + while power < value: + power *= 2 + level += 1 + return level + + +def pins_and_phrases() -> None: + sources = json.loads((PACKAGE / "SOURCES.json").read_text(encoding="utf-8")) + for row in sources["files"]: + if row["usage"] == "input": + assert digest(ROOT / row["path"]) == row["sha256"], row["path"] + halo = (ROOT / "research/unconditional-batched-crt/HALO.md").read_text(encoding="utf-8") + selected = json.loads( + (ROOT / "certificates/selected-result.json").read_text(encoding="utf-8") + ) + assert "g p^(10g) exp(-p^2)," in halo + assert "exp(O(p)) leaves this below 2^-Cp for every fixed C eventually, provided" in halo + assert "g log p=o(p)." in halo + assert selected["kappa"] == "23/10000" + + +def series_bounds() -> None: + # e > 1 + 1 + 1/2 = 5/2 > 2, and e < 3 < 4. + assert 5 > 4 + assert 3 < 4 + assert 2 >= 2 + assert 6 >= 4 + assert 24 >= 8 + assert 3 >= 2 + # 10 p^2 < 16 p^2 = 2^4 p^2. + assert 10 < 16 + assert 2 ** 4 == 16 + + +def log_induction() -> None: + # For m >= 6, 8(m+1) <= 2^m, so 8 ceil(log2 p) <= p for every integer p >= 64. + assert 8 * 7 <= 64 + assert 8 <= 64 + assert 2 ** 6 + 8 <= 2 ** 7 + assert ceil_log2(64) == 6 + assert ceil_log2(65) == 7 + assert ceil_log2(128) == 7 + assert 8 * ceil_log2(128) <= 128 + + +def budget() -> None: + # The eighths 1+2+1 make a half, and p^2 - p is at least 2 for every integer p >= 2. + assert 1 + 2 + 1 == 4 + assert 4 - 2 == 2 + assert (3 ** 2 - 3) - (2 ** 2 - 2) == 2 * 2 + # p >= 4K + 2C is the cleared form of (2K+C) p <= p^2 / 2. + assert 2 * (2 * 3 + 5) == 4 * 3 + 2 * 5 + # Witness: p=128, L=7, g=1, K=0, C=0 meets the gate and the exponent is negative. + prime = 128 + level = ceil_log2(prime) + groups = 1 + assert 16 * groups * level <= prime + slack = level + 4 * groups + 2 * groups * level - prime * prime + assert slack < 0 + # g = p^2 leaves the substituted error above 1, since 10 p^2 > 4 > e. + assert 10 * 4 > 4 + + +def main() -> None: + pins_and_phrases() + series_bounds() + log_induction() + budget() + print("PASS_GAUSSIAN_TENSOR_ERROR") + + +if __name__ == "__main__": + main()