Spaces:
Running
Running
Add exact theory audits and lower-bound counterfamilies
Browse files- README.md +18 -4
- evidence/rerun.md +17 -0
- evidence/source_audit.md +40 -0
- logbook.js +1 -0
- logbook.json +57 -16
- pages/claim-1-fast-regime-upper-bound/page.md +45 -0
- pages/claim-2-slow-regime-upper-bound/page.md +42 -0
- pages/claim-3-fast-regime-lower-bound/page.md +52 -0
- pages/claim-4-slow-regime-lower-bound/page.md +49 -0
- pages/claim-5-bonus-peeling-freedman/page.md +46 -0
- pages/conclusion/page.md +25 -12
- pages/executive-summary/page.md +48 -0
- pages/index.md +7 -5
- poster.html +26 -0
- poster_embed.html +26 -0
- repro/outputs/audit_results.json +351 -0
- repro/outputs/audit_stdout.txt +351 -0
- repro/outputs/verification.json +24 -0
- repro/outputs/verification_stdout.txt +24 -0
- repro/src/audit.py +494 -0
- repro/src/verify_results.py +81 -0
README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
---
|
| 2 |
-
title: "
|
| 3 |
emoji: 🎯
|
| 4 |
-
colorFrom:
|
| 5 |
colorTo: red
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
@@ -13,6 +13,20 @@ tags:
|
|
| 13 |
- paper-XarOZG8Un0
|
| 14 |
---
|
| 15 |
|
| 16 |
-
#
|
| 17 |
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
title: "Reproduction: Near-Optimal Regret for KL-Regularized Multi-Armed Bandits"
|
| 3 |
emoji: 🎯
|
| 4 |
+
colorFrom: blue
|
| 5 |
colorTo: red
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
|
|
| 13 |
- paper-XarOZG8Un0
|
| 14 |
---
|
| 15 |
|
| 16 |
+
# Reproduction: Near-Optimal Regret for KL-Regularized Multi-Armed Bandits
|
| 17 |
|
| 18 |
+
Claim-by-claim, standard-library CPU audit for ICML 2026 paper 20430
|
| 19 |
+
([OpenReview XarOZG8Un0](https://openreview.net/forum?id=XarOZG8Un0)).
|
| 20 |
+
|
| 21 |
+
The clean rerun verifies the two upper-bound claims and the bonus/peeling
|
| 22 |
+
mechanism, and falsifies both lower-bound theorems over their literal stated
|
| 23 |
+
domains. Negative results are first-class reproduction outcomes.
|
| 24 |
+
|
| 25 |
+
```bash
|
| 26 |
+
python3 repro/src/audit.py > repro/outputs/audit_stdout.txt
|
| 27 |
+
python3 repro/src/verify_results.py
|
| 28 |
+
```
|
| 29 |
+
|
| 30 |
+
No GPU, paid job, external dataset, or third-party Python dependency is used.
|
| 31 |
+
Evidence is mirrored at
|
| 32 |
+
[MachineLearning-Nerd/XarOZG8Un0](https://github.com/MachineLearning-Nerd/XarOZG8Un0).
|
evidence/rerun.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Clean rerun
|
| 2 |
+
|
| 3 |
+
Requirements: Python 3.10 or newer; standard library only.
|
| 4 |
+
|
| 5 |
+
```bash
|
| 6 |
+
python3 repro/src/audit.py > repro/outputs/audit_stdout.txt
|
| 7 |
+
python3 repro/src/verify_results.py
|
| 8 |
+
```
|
| 9 |
+
|
| 10 |
+
Expected runtime on a laptop CPU: under 10 seconds. The first command is
|
| 11 |
+
deterministic: fixed seed `260302155`, 5,000 adaptive optimism trials, 32,802
|
| 12 |
+
exhaustive action sequences across Claims 1 and 2, and 4,356 algebra fixtures.
|
| 13 |
+
|
| 14 |
+
Frozen output SHA-256:
|
| 15 |
+
`af730f4bd42c31b6333a234b7a8eab76af6597edf2c9b4b89cc1ca7eedc2f41f`.
|
| 16 |
+
|
| 17 |
+
No network access is used during the rerun.
|
evidence/source_audit.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Primary-source audit
|
| 2 |
+
|
| 3 |
+
Paper: [arXiv 2603.02155](https://arxiv.org/abs/2603.02155)
|
| 4 |
+
Native HTML: [arxiv.org/html/2603.02155](https://arxiv.org/html/2603.02155)
|
| 5 |
+
Source archive: [arxiv.org/e-print/2603.02155](https://arxiv.org/e-print/2603.02155)
|
| 6 |
+
Retrieved: 2026-08-02
|
| 7 |
+
Source archive SHA-256:
|
| 8 |
+
`4aa819662b5269a16f53f45c9dc456deed39a001b6025d9147b88e2aacf8a415`
|
| 9 |
+
|
| 10 |
+
The audit used the native HTML after ar5iv was unavailable. Equation and line
|
| 11 |
+
references below refer to `main.tex` in the pinned archive.
|
| 12 |
+
|
| 13 |
+
| Claim | Exact source scope | Independent finding |
|
| 14 |
+
| --- | --- | --- |
|
| 15 |
+
| 1 | Theorem 4.2; Algorithm 1; Appendix A, equations A.1–A.9 (`main.tex` 337–350, 674–793) | The squared-error and inverse-count chain preserves the claimed rate. The final line substitutes `4K log T` where A.5 has `8K log T`; a displayed harmonic equality is only an upper bound. Both are constant/bookkeeping defects. |
|
| 16 |
+
| 2 | Theorem 4.2; Appendix A, equations A.10–A.13 (`main.tex` 794–829) | The integral is evaluated incorrectly. The valid count bound is `2 sqrt(KT)`, which preserves eta independence and the claimed rate. |
|
| 17 |
+
| 3 | Theorem 5.3; Appendix B.2 (`main.tex` 456–458, 886–993) | The theorem is false over its literal domain. The proof uses `2K` arms and `alpha=2 log(2)/eta`, which leaves `[0,1]` for small eta. A reference-policy counterfamily rules out the claimed uniform lower scale. |
|
| 18 |
+
| 4 | Theorem 5.1; Appendix B.1 (`main.tex` 445–447, 797–884) | The literal theorem lacks the required horizon condition and is false for `T=1`. In the intended `T>=8K` domain, changing the separation constant and correcting a factor-two KL typo repairs the rate. |
|
| 19 |
+
| 5 | Algorithm 1, Lemma 4.1, proof sketch and Appendix A (`main.tex` 286–328, 360–435, 650–793) | The exact bonus is present. The conditional mean and variance identities pass; 5,000 fixed-seed adaptive trials distinguish the full simultaneous bonus from a reduced-log control. |
|
| 20 |
+
|
| 21 |
+
## Universal reference-policy certificate
|
| 22 |
+
|
| 23 |
+
For rewards in `[0,1]`, the optimal regularized value is
|
| 24 |
+
|
| 25 |
+
`J(pi*) = eta^-1 log E_{a~pi_ref}[exp(eta r(a))]`.
|
| 26 |
+
|
| 27 |
+
Always playing `pi_ref` therefore incurs per-round gap
|
| 28 |
+
|
| 29 |
+
`eta^-1 log E exp(eta (r-E r)) <= eta/8`
|
| 30 |
+
|
| 31 |
+
by Hoeffding's lemma. This is a valid algorithm-independent upper certificate
|
| 32 |
+
against every admissible reward function and is the basis of the Claim 3 and
|
| 33 |
+
Claim 4 counterfamilies. It does not rely on the paper's construction.
|
| 34 |
+
|
| 35 |
+
## Reproduction boundary
|
| 36 |
+
|
| 37 |
+
These are exact-algebra and deterministic numerical audits of theory claims,
|
| 38 |
+
not proof replacements. Every correction and falsification is reported rather
|
| 39 |
+
than relabeled as verification. No GPU, external dataset, checkpoint, or paid
|
| 40 |
+
job was used.
|
logbook.js
CHANGED
|
@@ -1526,6 +1526,7 @@
|
|
| 1526 |
const nodes = [];
|
| 1527 |
(MANIFEST.root.children || []).forEach((c) => flattenTree(c, 0, nodes));
|
| 1528 |
nodes.forEach(({ node, depth }) => {
|
|
|
|
| 1529 |
const a = document.createElement("a");
|
| 1530 |
a.href = "#/" + node.slug;
|
| 1531 |
a.className = "depth-" + depth;
|
|
|
|
| 1526 |
const nodes = [];
|
| 1527 |
(MANIFEST.root.children || []).forEach((c) => flattenTree(c, 0, nodes));
|
| 1528 |
nodes.forEach(({ node, depth }) => {
|
| 1529 |
+
if (node.hidden) return;
|
| 1530 |
const a = document.createElement("a");
|
| 1531 |
a.href = "#/" + node.slug;
|
| 1532 |
a.className = "depth-" + depth;
|
logbook.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
-
"schema_version":
|
| 3 |
-
"title": "
|
| 4 |
"emoji": "🎯",
|
| 5 |
"space_id": "DineshAI/XarOZG8Un0",
|
| 6 |
"paper": null,
|
|
@@ -8,44 +8,85 @@
|
|
| 8 |
"icml2026-repro",
|
| 9 |
"paper-XarOZG8Un0"
|
| 10 |
],
|
| 11 |
-
"updated_at": "2026-08-
|
| 12 |
"root": {
|
| 13 |
"slug": "index",
|
| 14 |
"title": "Repro - Near-Optimal Regret for KL-Regularized Multi-Armed Bandits",
|
| 15 |
"file": "pages/index.md",
|
| 16 |
"children": [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
{
|
| 18 |
"slug": "overview",
|
| 19 |
"title": "Overview",
|
| 20 |
"file": "pages/overview/page.md",
|
| 21 |
-
"children": []
|
|
|
|
| 22 |
},
|
| 23 |
{
|
| 24 |
"slug": "claims",
|
| 25 |
"title": "Claims",
|
| 26 |
"file": "pages/claims/page.md",
|
| 27 |
-
"children": []
|
|
|
|
| 28 |
},
|
| 29 |
{
|
| 30 |
"slug": "evidence",
|
| 31 |
"title": "Evidence",
|
| 32 |
"file": "pages/evidence/page.md",
|
| 33 |
-
"children": []
|
|
|
|
| 34 |
},
|
| 35 |
{
|
| 36 |
"slug": "verification-run",
|
| 37 |
"title": "Verification run",
|
| 38 |
"file": "pages/verification-run/page.md",
|
| 39 |
-
"children": []
|
| 40 |
-
|
| 41 |
-
{
|
| 42 |
-
"slug": "conclusion",
|
| 43 |
-
"title": "Conclusion",
|
| 44 |
-
"file": "pages/conclusion/page.md",
|
| 45 |
-
"children": []
|
| 46 |
}
|
| 47 |
]
|
| 48 |
},
|
| 49 |
-
"
|
| 50 |
-
"
|
| 51 |
-
|
|
|
|
|
|
| 1 |
{
|
| 2 |
+
"schema_version": 2,
|
| 3 |
+
"title": "Reproduction: Near-Optimal Regret for KL-Regularized Multi-Armed Bandits",
|
| 4 |
"emoji": "🎯",
|
| 5 |
"space_id": "DineshAI/XarOZG8Un0",
|
| 6 |
"paper": null,
|
|
|
|
| 8 |
"icml2026-repro",
|
| 9 |
"paper-XarOZG8Un0"
|
| 10 |
],
|
| 11 |
+
"updated_at": "2026-08-02T15:15:00+00:00",
|
| 12 |
"root": {
|
| 13 |
"slug": "index",
|
| 14 |
"title": "Repro - Near-Optimal Regret for KL-Regularized Multi-Armed Bandits",
|
| 15 |
"file": "pages/index.md",
|
| 16 |
"children": [
|
| 17 |
+
{
|
| 18 |
+
"slug": "executive-summary",
|
| 19 |
+
"title": "Executive summary",
|
| 20 |
+
"file": "pages/executive-summary/page.md",
|
| 21 |
+
"children": []
|
| 22 |
+
},
|
| 23 |
+
{
|
| 24 |
+
"slug": "claim-1-fast-regime-upper-bound",
|
| 25 |
+
"title": "Claim 1: fast-regime upper bound",
|
| 26 |
+
"file": "pages/claim-1-fast-regime-upper-bound/page.md",
|
| 27 |
+
"children": []
|
| 28 |
+
},
|
| 29 |
+
{
|
| 30 |
+
"slug": "claim-2-slow-regime-upper-bound",
|
| 31 |
+
"title": "Claim 2: slow-regime upper bound",
|
| 32 |
+
"file": "pages/claim-2-slow-regime-upper-bound/page.md",
|
| 33 |
+
"children": []
|
| 34 |
+
},
|
| 35 |
+
{
|
| 36 |
+
"slug": "claim-3-fast-regime-lower-bound",
|
| 37 |
+
"title": "Claim 3: fast-regime lower bound",
|
| 38 |
+
"file": "pages/claim-3-fast-regime-lower-bound/page.md",
|
| 39 |
+
"children": []
|
| 40 |
+
},
|
| 41 |
+
{
|
| 42 |
+
"slug": "claim-4-slow-regime-lower-bound",
|
| 43 |
+
"title": "Claim 4: slow-regime lower bound",
|
| 44 |
+
"file": "pages/claim-4-slow-regime-lower-bound/page.md",
|
| 45 |
+
"children": []
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"slug": "claim-5-bonus-peeling-freedman",
|
| 49 |
+
"title": "Claim 5: bonus, peeling, and Freedman",
|
| 50 |
+
"file": "pages/claim-5-bonus-peeling-freedman/page.md",
|
| 51 |
+
"children": []
|
| 52 |
+
},
|
| 53 |
+
{
|
| 54 |
+
"slug": "conclusion",
|
| 55 |
+
"title": "Conclusion",
|
| 56 |
+
"file": "pages/conclusion/page.md",
|
| 57 |
+
"children": []
|
| 58 |
+
},
|
| 59 |
{
|
| 60 |
"slug": "overview",
|
| 61 |
"title": "Overview",
|
| 62 |
"file": "pages/overview/page.md",
|
| 63 |
+
"children": [],
|
| 64 |
+
"hidden": true
|
| 65 |
},
|
| 66 |
{
|
| 67 |
"slug": "claims",
|
| 68 |
"title": "Claims",
|
| 69 |
"file": "pages/claims/page.md",
|
| 70 |
+
"children": [],
|
| 71 |
+
"hidden": true
|
| 72 |
},
|
| 73 |
{
|
| 74 |
"slug": "evidence",
|
| 75 |
"title": "Evidence",
|
| 76 |
"file": "pages/evidence/page.md",
|
| 77 |
+
"children": [],
|
| 78 |
+
"hidden": true
|
| 79 |
},
|
| 80 |
{
|
| 81 |
"slug": "verification-run",
|
| 82 |
"title": "Verification run",
|
| 83 |
"file": "pages/verification-run/page.md",
|
| 84 |
+
"children": [],
|
| 85 |
+
"hidden": true
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 86 |
}
|
| 87 |
]
|
| 88 |
},
|
| 89 |
+
"traces": [],
|
| 90 |
+
"agent_view_tokens": 8192,
|
| 91 |
+
"revision": "campaign-20260802-exact-theory-audit"
|
| 92 |
+
}
|
pages/claim-1-fast-regime-upper-bound/page.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Claim 1: fast-regime upper bound
|
| 2 |
+
|
| 3 |
+
---
|
| 4 |
+
<!-- trackio-cell
|
| 5 |
+
{"type":"markdown","id":"cell_campaign_20260802_c1","created_at":"2026-08-02T15:16:00+00:00","title":"Verdict: verified with constant corrections"}
|
| 6 |
+
-->
|
| 7 |
+
## Literal claim
|
| 8 |
+
|
| 9 |
+
With probability at least `1-2δ`, Algorithm 1 has
|
| 10 |
+
`O~(η K log²T)` cumulative regret when `η <= sqrt(T/K)`.
|
| 11 |
+
|
| 12 |
+
## Outcome: VERIFIED WITH CONSTANT CORRECTIONS
|
| 13 |
+
|
| 14 |
+
The proof's two substantive ingredients survive independent audit:
|
| 15 |
+
|
| 16 |
+
1. On 3,240 grid fixtures, the optimistic-policy gap never exceeded
|
| 17 |
+
`η E_pi[(r_optimistic-r)²]`; maximum violation was exactly `0`.
|
| 18 |
+
2. All 3,279 action sequences with `K=3, T<=7` satisfied the corrected
|
| 19 |
+
inverse-count bound. Four increasing `(K,T)` rows preserve the normalized
|
| 20 |
+
`η K log(KT/δ) log T` scaling.
|
| 21 |
+
|
| 22 |
+
The source has three disclosed defects. Equation A.5 derives `8K log T`, but
|
| 23 |
+
the final substitution prints `4K log T`. The per-arm harmonic display is an
|
| 24 |
+
upper bound, not an equality when arms are unplayed. The `T=1` peeling index
|
| 25 |
+
needs a trivial boundary case. Reinstating `8K` and treating the display as an
|
| 26 |
+
upper bound changes constants only, so the claimed rate and probability
|
| 27 |
+
statement remain intact.
|
| 28 |
+
|
| 29 |
+
## Control and rerun
|
| 30 |
+
|
| 31 |
+
The exhaustive audit includes unplayed-arm sequences, which expose the false
|
| 32 |
+
equality immediately (`actions=[0]`: observed `1`, printed RHS `3`). The
|
| 33 |
+
corrected inequality still holds.
|
| 34 |
+
|
| 35 |
+
```bash
|
| 36 |
+
python3 repro/src/audit.py > repro/outputs/audit_stdout.txt
|
| 37 |
+
python3 repro/src/verify_results.py
|
| 38 |
+
```
|
| 39 |
+
|
| 40 |
+
- [Exact C1 result](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/repro/outputs/audit_results.json)
|
| 41 |
+
- [Visible implementation](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/repro/src/audit.py)
|
| 42 |
+
- [Source anchors and limitations](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/evidence/source_audit.md)
|
| 43 |
+
|
| 44 |
+
This is an exact-algebra/numerical audit of the proof chain, not a replacement
|
| 45 |
+
proof. It does not claim the paper's printed constants are valid.
|
pages/claim-2-slow-regime-upper-bound/page.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Claim 2: slow-regime upper bound
|
| 2 |
+
|
| 3 |
+
---
|
| 4 |
+
<!-- trackio-cell
|
| 5 |
+
{"type":"markdown","id":"cell_campaign_20260802_c2","created_at":"2026-08-02T15:17:00+00:00","title":"Verdict: verified with a constant correction"}
|
| 6 |
+
-->
|
| 7 |
+
## Literal claim
|
| 8 |
+
|
| 9 |
+
When `η >= sqrt(T/K)`, the same analysis gives the eta-independent rate
|
| 10 |
+
`O~(sqrt(KT log T))` with probability at least `1-2δ`.
|
| 11 |
+
|
| 12 |
+
## Outcome: VERIFIED WITH A CONSTANT CORRECTION
|
| 13 |
+
|
| 14 |
+
The source evaluates
|
| 15 |
+
`2 + integral_1^N u^(-1/2) du` incorrectly. It equals `2 sqrt(N)`, not
|
| 16 |
+
`3/2 + sqrt(N)/2`. Consequently, its displayed `2K+sqrt(KT)` intermediate
|
| 17 |
+
bound is false: at `K=1,T=10000`, the exact sum is `199.5346`, above the
|
| 18 |
+
printed `102`.
|
| 19 |
+
|
| 20 |
+
The valid replacement is
|
| 21 |
+
`sum_a 2 sqrt(N_a) <= 2 sqrt(KT)`. All 29,523 exhaustive sequences with
|
| 22 |
+
`K=3,T<=9` satisfy it. Substitution into the unchanged Azuma step gives the
|
| 23 |
+
same `O~(sqrt(KT log T))` dependence. The explicit corrected bound is exactly
|
| 24 |
+
unchanged across four admissible eta values from `sqrt(T/K)` to
|
| 25 |
+
`32 sqrt(T/K)`, directly checking eta independence.
|
| 26 |
+
|
| 27 |
+
## Negative control and rerun
|
| 28 |
+
|
| 29 |
+
The `K=1,T=10000` sequence is retained as a negative control: it must reject
|
| 30 |
+
the printed constant while accepting the corrected asymptotic bound.
|
| 31 |
+
|
| 32 |
+
```bash
|
| 33 |
+
python3 repro/src/audit.py > repro/outputs/audit_stdout.txt
|
| 34 |
+
python3 repro/src/verify_results.py
|
| 35 |
+
```
|
| 36 |
+
|
| 37 |
+
- [Exact C2 result](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/repro/outputs/audit_results.json)
|
| 38 |
+
- [Audit code](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/repro/src/audit.py)
|
| 39 |
+
- [Primary-source audit](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/evidence/source_audit.md)
|
| 40 |
+
|
| 41 |
+
The verdict verifies the asymptotic claim, not the erroneous printed
|
| 42 |
+
intermediate constant.
|
pages/claim-3-fast-regime-lower-bound/page.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Claim 3: fast-regime lower bound
|
| 2 |
+
|
| 3 |
+
---
|
| 4 |
+
<!-- trackio-cell
|
| 5 |
+
{"type":"markdown","id":"cell_campaign_20260802_c3","created_at":"2026-08-02T15:18:00+00:00","title":"Verdict: falsified as stated"}
|
| 6 |
+
-->
|
| 7 |
+
## Literal claim
|
| 8 |
+
|
| 9 |
+
For every `K>=2`, every `0<η<=sqrt(T/K)`, and every algorithm, an admissible
|
| 10 |
+
`K`-armed instance forces
|
| 11 |
+
`Ω(η K log(T/(η²K)))` regret, making Claim 1 near-tight up to logs.
|
| 12 |
+
|
| 13 |
+
## Outcome: FALSIFIED AS STATED
|
| 14 |
+
|
| 15 |
+
For any reward vector in `[0,1]^K`, always playing the reference policy has
|
| 16 |
+
per-round regularized regret at most `η/8`:
|
| 17 |
+
|
| 18 |
+
```text
|
| 19 |
+
J(pi*) - J(pi_ref)
|
| 20 |
+
= eta^-1 log E_pi_ref exp(eta (r - E_pi_ref r))
|
| 21 |
+
<= eta/8 [Hoeffding's lemma]
|
| 22 |
+
```
|
| 23 |
+
|
| 24 |
+
Thus its total regret is at most `ηT/8` on every admissible instance. Now take
|
| 25 |
+
`T=K` and `η=1/K`, which satisfies the theorem's regime. The universal upper
|
| 26 |
+
bound is `1/8`, while the asserted lower scale is `2 log K`. Their ratio grows
|
| 27 |
+
from `44.36` at `K=16` to `133.08` at `K=4096`; no parameter-uniform positive
|
| 28 |
+
Omega constant exists.
|
| 29 |
+
|
| 30 |
+
The independent certificate checked Hoeffding's inequality on 1,116 weighted
|
| 31 |
+
reference/reward fixtures. The maximum violation was negative
|
| 32 |
+
(`-5.21e-9`).
|
| 33 |
+
|
| 34 |
+
## Why the paper's construction cannot close the gap
|
| 35 |
+
|
| 36 |
+
The theorem says `K` arms, while the full proof constructs `2K`. More
|
| 37 |
+
importantly, it sets `alpha=2 log(2)/η` and samples mean rewards over
|
| 38 |
+
`[1/2-alpha,1/2+alpha]`. For every counterfamily row this extends far outside
|
| 39 |
+
the paper's stipulated `[0,1]` reward range. The construction therefore does
|
| 40 |
+
not supply an admissible hard instance in the failing regime.
|
| 41 |
+
|
| 42 |
+
This falsifies the theorem's global near-tightness statement. It does not rule
|
| 43 |
+
out a restricted lower bound after adding explicit horizon/eta conditions.
|
| 44 |
+
|
| 45 |
+
- [Counterfamily rows](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/repro/outputs/audit_results.json)
|
| 46 |
+
- [Independent frozen-result verifier](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/repro/src/verify_results.py)
|
| 47 |
+
- [Source audit](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/evidence/source_audit.md)
|
| 48 |
+
|
| 49 |
+
```bash
|
| 50 |
+
python3 repro/src/audit.py > repro/outputs/audit_stdout.txt
|
| 51 |
+
python3 repro/src/verify_results.py
|
| 52 |
+
```
|
pages/claim-4-slow-regime-lower-bound/page.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Claim 4: slow-regime lower bound
|
| 2 |
+
|
| 3 |
+
---
|
| 4 |
+
<!-- trackio-cell
|
| 5 |
+
{"type":"markdown","id":"cell_campaign_20260802_c4","created_at":"2026-08-02T15:19:00+00:00","title":"Verdict: falsified as stated; intended-domain proof repaired"}
|
| 6 |
+
-->
|
| 7 |
+
## Literal claim
|
| 8 |
+
|
| 9 |
+
For every `K>=9` and `η>=sqrt(T log²K/K)`, every algorithm faces an admissible
|
| 10 |
+
instance with `Ω(sqrt(KT))` regret, using a two-point construction.
|
| 11 |
+
|
| 12 |
+
## Outcome: FALSIFIED AS STATED
|
| 13 |
+
|
| 14 |
+
The theorem states no horizon condition. Set `T=1` and
|
| 15 |
+
`η=log(K)/sqrt(K)`, exactly its threshold. The same reference-policy
|
| 16 |
+
certificate gives a universal regret upper bound
|
| 17 |
+
`log(K)/(8 sqrt(K))`, whereas the claimed scale is `sqrt(K)`. Their ratio is
|
| 18 |
+
`8K/log(K)` and diverges. The paper's own hard instance also becomes invalid:
|
| 19 |
+
its second mean is `2 sqrt(2K/T)>1`.
|
| 20 |
+
|
| 21 |
+
Five exact rows from `K=16` through `4096` verify the condition, the universal
|
| 22 |
+
upper bound, the diverging ratio, and the out-of-range paper instance.
|
| 23 |
+
|
| 24 |
+
## Intended large-horizon repair
|
| 25 |
+
|
| 26 |
+
The two-point method does retain the stated rate after adding `T>=8K`:
|
| 27 |
+
|
| 28 |
+
- the constructed rewards then lie in `[0,1]`;
|
| 29 |
+
- at the theorem threshold, `ηδ=sqrt(2) log K`, not `2 log K` as printed;
|
| 30 |
+
- replacing the source's `δ/2` step by
|
| 31 |
+
`(1-1/sqrt(2))δ` preserves a uniform positive separation;
|
| 32 |
+
- the trajectory-KL substitution is `4K/(K-1)`, not `2K/(K-1)`, but remains
|
| 33 |
+
at most `4.5` for `K>=9`.
|
| 34 |
+
|
| 35 |
+
For `K={9,16,64,256}` and `T=64K`, exact optimal-policy separation is
|
| 36 |
+
`0.577–0.823` times `δ`, above the repaired constant `0.292893`, and the
|
| 37 |
+
correct KL bound is `4.016–4.5`.
|
| 38 |
+
|
| 39 |
+
This page distinguishes the false literal theorem from the repairable
|
| 40 |
+
large-horizon result; it does not silently add assumptions.
|
| 41 |
+
|
| 42 |
+
- [Exact counterfamily and repair table](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/repro/outputs/audit_results.json)
|
| 43 |
+
- [Audit implementation](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/repro/src/audit.py)
|
| 44 |
+
- [Primary-source anchors](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/evidence/source_audit.md)
|
| 45 |
+
|
| 46 |
+
```bash
|
| 47 |
+
python3 repro/src/audit.py > repro/outputs/audit_stdout.txt
|
| 48 |
+
python3 repro/src/verify_results.py
|
| 49 |
+
```
|
pages/claim-5-bonus-peeling-freedman/page.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Claim 5: bonus, peeling, and Freedman
|
| 2 |
+
|
| 3 |
+
---
|
| 4 |
+
<!-- trackio-cell
|
| 5 |
+
{"type":"markdown","id":"cell_campaign_20260802_c5","created_at":"2026-08-02T15:20:00+00:00","title":"Verdict: verified"}
|
| 6 |
+
-->
|
| 7 |
+
## Literal claim
|
| 8 |
+
|
| 9 |
+
Algorithm 1 uses
|
| 10 |
+
`b_t(a)=sqrt(2 log(TK/δ)/(N_t(a) vee 1))`; a novel dyadic peeling argument
|
| 11 |
+
and Freedman's inequality provide the tight high-probability count bound.
|
| 12 |
+
|
| 13 |
+
## Outcome: VERIFIED
|
| 14 |
+
|
| 15 |
+
The exact formula appears in Algorithm 1 and Lemma 4.1. The audit checks the
|
| 16 |
+
key martingale variable `x_t=E[y_t|F_(t-1)]-y_t` on 10,000 adaptive fixtures:
|
| 17 |
+
|
| 18 |
+
- maximum conditional-mean residual: `1.11e-16`;
|
| 19 |
+
- maximum `Var(x_t|F_(t-1))-E[y_t|F_(t-1)]`: `-3.97e-4`.
|
| 20 |
+
|
| 21 |
+
These are precisely the mean-zero and predictable-variance conditions used by
|
| 22 |
+
the stopped dyadic/Freedman argument.
|
| 23 |
+
|
| 24 |
+
## Fixed-seed coverage and negative control
|
| 25 |
+
|
| 26 |
+
At `K=4,T=128,δ=0.1`, 5,000 adaptive Gaussian-bandit trials with fixed seed
|
| 27 |
+
`260302155` produced 11 simultaneous-optimism failures: rate `0.0022`, Wilson
|
| 28 |
+
95% interval `[0.00123,0.00394]`, safely below `δ`.
|
| 29 |
+
|
| 30 |
+
The preregistered control replaces `log(TK/δ)` with `log(1/δ)`. It produced
|
| 31 |
+
2,911 failures: rate `0.5822`, Wilson interval `[0.5685,0.5958]`. The 265-fold
|
| 32 |
+
increase shows the test can fail and directly isolates the simultaneous
|
| 33 |
+
confidence factor.
|
| 34 |
+
|
| 35 |
+
Claim 1's page separately discloses the final constant typo and the `T=1`
|
| 36 |
+
peeling boundary. Neither invalidates the bonus formula or asymptotic
|
| 37 |
+
Freedman route verified here.
|
| 38 |
+
|
| 39 |
+
- [Trial counts and confidence intervals](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/repro/outputs/audit_results.json)
|
| 40 |
+
- [Deterministic code](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/repro/src/audit.py)
|
| 41 |
+
- [Clean rerun contract](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/evidence/rerun.md)
|
| 42 |
+
|
| 43 |
+
```bash
|
| 44 |
+
python3 repro/src/audit.py > repro/outputs/audit_stdout.txt
|
| 45 |
+
python3 repro/src/verify_results.py
|
| 46 |
+
```
|
pages/conclusion/page.md
CHANGED
|
@@ -1,20 +1,33 @@
|
|
| 1 |
# Conclusion
|
| 2 |
|
| 3 |
-
|
| 4 |
---
|
| 5 |
<!-- trackio-cell
|
| 6 |
-
{"type":
|
| 7 |
-->
|
| 8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
| 11 |
|
| 12 |
-
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
| Time | <1 min | same |
|
| 19 |
-
| Cost | $0 | $0 |
|
| 20 |
-
| Outcome | verified | — |
|
|
|
|
| 1 |
# Conclusion
|
| 2 |
|
|
|
|
| 3 |
---
|
| 4 |
<!-- trackio-cell
|
| 5 |
+
{"type":"markdown","id":"cell_campaign_20260802_conclusion","created_at":"2026-08-02T15:21:00+00:00","title":"Overall findings"}
|
| 6 |
-->
|
| 7 |
+
All five official claims receive a literal-scope outcome from a clean,
|
| 8 |
+
deterministic CPU audit:
|
| 9 |
+
|
| 10 |
+
- Claims 1 and 2 retain their asymptotic upper rates after explicit constant
|
| 11 |
+
corrections.
|
| 12 |
+
- Claim 3 is false over its stated eta range; both a universal counterfamily
|
| 13 |
+
and the paper's inadmissible reward construction expose the failure.
|
| 14 |
+
- Claim 4 is false without a horizon restriction. Its two-point rate is
|
| 15 |
+
repairable in the intended `T>=8K` domain with corrected constants.
|
| 16 |
+
- Claim 5's exact bonus, simultaneous optimism behavior, and martingale
|
| 17 |
+
conditions are supported by algebra checks and a high-power negative
|
| 18 |
+
control.
|
| 19 |
|
| 20 |
+
The frozen audit output has SHA-256
|
| 21 |
+
`af730f4bd42c31b6333a234b7a8eab76af6597edf2c9b4b89cc1ca7eedc2f41f`.
|
| 22 |
+
The independent verifier passes every invariant. A clean rerun takes about
|
| 23 |
+
3.4 seconds on local CPU and uses only Python's standard library.
|
| 24 |
|
| 25 |
+
No result is presented as an earned leaderboard score. The exact retained
|
| 26 |
+
live baseline is 2/10 at judged revision
|
| 27 |
+
`e74d6b1b8f31f32573edaa60986af213f1fcf5a8` until the live judge evaluates a
|
| 28 |
+
published candidate.
|
| 29 |
|
| 30 |
+
- [GitHub repository](https://github.com/MachineLearning-Nerd/XarOZG8Un0)
|
| 31 |
+
- [Hugging Face Space](https://huggingface.co/spaces/DineshAI/XarOZG8Un0)
|
| 32 |
+
- [Rerun instructions](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/evidence/rerun.md)
|
| 33 |
+
- [Primary-source audit](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/evidence/source_audit.md)
|
|
|
|
|
|
|
|
|
pages/executive-summary/page.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Executive summary
|
| 2 |
+
|
| 3 |
+
---
|
| 4 |
+
<!-- trackio-cell
|
| 5 |
+
{"type":"markdown","id":"cell_campaign_20260802_summary","created_at":"2026-08-02T15:15:00+00:00","title":"Executive summary","pinned":true,"pinned_at":"2026-08-02T15:15:00+00:00"}
|
| 6 |
+
-->
|
| 7 |
+
The exact live-judge baseline is **2/10** at Hugging Face revision
|
| 8 |
+
`e74d6b1b8f31f32573edaa60986af213f1fcf5a8`. The findings below are candidate
|
| 9 |
+
evidence, not awarded points; only the live judge can change that baseline.
|
| 10 |
+
|
| 11 |
+
| Claim | Evidence outcome | Literal scope resolved |
|
| 12 |
+
| --- | --- | --- |
|
| 13 |
+
| 1 | VERIFIED WITH CONSTANT CORRECTIONS | yes |
|
| 14 |
+
| 2 | VERIFIED WITH CONSTANT CORRECTION | yes |
|
| 15 |
+
| 3 | FALSIFIED AS STATED | yes |
|
| 16 |
+
| 4 | FALSIFIED AS STATED; intended large-horizon proof repaired | yes |
|
| 17 |
+
| 5 | VERIFIED | yes |
|
| 18 |
+
|
| 19 |
+
Scientific truth is the target: a complete falsification is not relabeled as a
|
| 20 |
+
verification. Claims 3 and 4 fail because their stated quantifiers include
|
| 21 |
+
valid parameter families on which a reference-policy algorithm has a
|
| 22 |
+
universal regret upper bound asymptotically below the asserted lower scale.
|
| 23 |
+
|
| 24 |
+
## Scope and cost
|
| 25 |
+
|
| 26 |
+
| Evidence route | Scale | Compute | Cost |
|
| 27 |
+
| --- | --- | --- | --- |
|
| 28 |
+
| Exact algebra/proof audit | all five anchored claims | local CPU, standard library | $0 |
|
| 29 |
+
| Exhaustive finite checks | 32,802 action sequences; 4,356 algebra fixtures | local CPU | $0 |
|
| 30 |
+
| Adaptive optimism audit | 5,000 fixed-seed trials, `K=4`, `T=128` | local CPU, 3.4 s total package | $0 |
|
| 31 |
+
| Counterfamilies | five parameter rows for each lower theorem | deterministic local CPU | $0 |
|
| 32 |
+
|
| 33 |
+
No GPU, Hugging Face Job, model, dataset, Bucket, or checkpoint was needed.
|
| 34 |
+
|
| 35 |
+
- [Paper](https://arxiv.org/abs/2603.02155)
|
| 36 |
+
- [GitHub evidence repository](https://github.com/MachineLearning-Nerd/XarOZG8Un0)
|
| 37 |
+
- [Hugging Face logbook](https://huggingface.co/spaces/DineshAI/XarOZG8Un0)
|
| 38 |
+
- [Raw audit result](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/repro/outputs/audit_results.json)
|
| 39 |
+
- [Independent verification](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/repro/outputs/verification.json)
|
| 40 |
+
- [Pinned source audit](https://github.com/MachineLearning-Nerd/XarOZG8Un0/blob/main/evidence/source_audit.md)
|
| 41 |
+
|
| 42 |
+
---
|
| 43 |
+
<!-- trackio-cell
|
| 44 |
+
{"type":"figure","id":"cell_campaign_20260802_poster","created_at":"2026-08-02T15:15:00+00:00","title":"Reproduction poster","pinned":true,"pinned_at":"2026-08-02T15:15:00+00:00","poster":true}
|
| 45 |
+
-->
|
| 46 |
+
<iframe title="Reproduction poster" src="https://huggingface.co/spaces/DineshAI/XarOZG8Un0/resolve/main/poster_embed.html" width="100%" height="760"></iframe>
|
| 47 |
+
|
| 48 |
+
[Open the text-only poster directly](https://huggingface.co/spaces/DineshAI/XarOZG8Un0/blob/main/poster_embed.html).
|
pages/index.md
CHANGED
|
@@ -1,11 +1,13 @@
|
|
| 1 |
-
#
|
| 2 |
|
| 3 |
## Pages
|
| 4 |
|
| 5 |
| Page |
|
| 6 |
| --- |
|
| 7 |
-
| [
|
| 8 |
-
| [
|
| 9 |
-
| [
|
| 10 |
-
| [
|
|
|
|
|
|
|
| 11 |
| [Conclusion](#/conclusion) |
|
|
|
|
| 1 |
+
# Reproduction: Near-Optimal Regret for KL-Regularized Multi-Armed Bandits
|
| 2 |
|
| 3 |
## Pages
|
| 4 |
|
| 5 |
| Page |
|
| 6 |
| --- |
|
| 7 |
+
| [Executive summary](#/executive-summary) |
|
| 8 |
+
| [Claim 1: fast-regime upper bound](#/claim-1-fast-regime-upper-bound) |
|
| 9 |
+
| [Claim 2: slow-regime upper bound](#/claim-2-slow-regime-upper-bound) |
|
| 10 |
+
| [Claim 3: fast-regime lower bound](#/claim-3-fast-regime-lower-bound) |
|
| 11 |
+
| [Claim 4: slow-regime lower bound](#/claim-4-slow-regime-lower-bound) |
|
| 12 |
+
| [Claim 5: bonus, peeling, and Freedman](#/claim-5-bonus-peeling-freedman) |
|
| 13 |
| [Conclusion](#/conclusion) |
|
poster.html
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!doctype html>
|
| 2 |
+
<!-- Text-only adaptation of Chenruishuo/posterly's neutral portrait layout. -->
|
| 3 |
+
<html lang="en">
|
| 4 |
+
<head>
|
| 5 |
+
<meta charset="utf-8">
|
| 6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
| 7 |
+
<title>ICML 2026 reproduction — XarOZG8Un0</title>
|
| 8 |
+
<style>
|
| 9 |
+
:root{--ink:#172538;--muted:#52677e;--blue:#245c88;--pale:#edf5fb;--line:#c8d9e8;--green:#176b4a;--red:#9b3441;--gold:#9a6814}
|
| 10 |
+
*{box-sizing:border-box}body{margin:0;background:#e5edf4;color:var(--ink);font:16px/1.46 system-ui,-apple-system,sans-serif}main{width:min(1120px,100%);margin:auto;background:#fff;padding:44px}h1{margin:0 0 8px;color:#173f64;font-size:42px;line-height:1.08}.meta{color:var(--muted);margin-bottom:24px}.banner{padding:14px 18px;background:#fff3cf;border-left:6px solid #d39b16;margin:20px 0}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.card{border:1px solid var(--line);border-radius:12px;padding:20px;background:linear-gradient(145deg,#fff,var(--pale))}.wide{grid-column:1/-1}h2{margin:0 0 9px;color:var(--blue);font-size:23px}.status{font-weight:800;letter-spacing:.03em}.verified{color:var(--green)}.falsified{color:var(--red)}.repaired{color:var(--gold)}table{width:100%;border-collapse:collapse}th,td{padding:9px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{color:var(--blue)}code{overflow-wrap:anywhere}a{color:#185f99}footer{margin-top:26px;color:var(--muted);border-top:1px solid var(--line);padding-top:16px}@media(max-width:760px){main{padding:24px}.grid{grid-template-columns:1fr}.wide{grid-column:auto}h1{font-size:32px}}
|
| 11 |
+
</style>
|
| 12 |
+
</head>
|
| 13 |
+
<body><main>
|
| 14 |
+
<h1>KL-regularized bandit theory: exact claim audit</h1>
|
| 15 |
+
<div class="meta">ICML 2026 paper 20430 · OpenReview XarOZG8Un0 · arXiv 2603.02155</div>
|
| 16 |
+
<div class="banner"><strong>Truth over points:</strong> two upper rates survive corrected constants; both lower theorems fail over their literal parameter domains.</div>
|
| 17 |
+
<section class="grid">
|
| 18 |
+
<article class="card"><h2>Claim 1 · <span class="status verified">VERIFIED + CORRECTED</span></h2><p>3,240 optimistic-gap fixtures and 3,279 exhaustive count paths support the fast <code>O~(ηK log²T)</code> rate. A factor-two typo and a false equality are disclosed and repaired.</p></article>
|
| 19 |
+
<article class="card"><h2>Claim 2 · <span class="status verified">VERIFIED + CORRECTED</span></h2><p>The source miscomputes an integral. The valid <code>2√KT</code> count bound passes 29,523 paths and preserves the eta-independent slow rate.</p></article>
|
| 20 |
+
<article class="card"><h2>Claim 3 · <span class="status falsified">FALSIFIED AS STATED</span></h2><p>Playing the reference policy costs at most <code>ηT/8</code>. At <code>T=K, η=1/K</code>, this is <code>1/8</code> while the asserted lower scale is <code>2 log K</code>. The paper's means also leave <code>[0,1]</code>.</p></article>
|
| 21 |
+
<article class="card"><h2>Claim 4 · <span class="status falsified">FALSIFIED AS STATED</span></h2><p>At <code>T=1, η=log(K)/√K</code>, a universal upper bound contradicts <code>Ω(√KT)</code>. With <code>T≥8K</code>, corrected separation and KL constants repair the intended rate.</p></article>
|
| 22 |
+
<article class="card wide"><h2>Claim 5 · <span class="status verified">VERIFIED</span></h2><p>The exact bonus and Freedman mean/variance conditions pass. Across 5,000 adaptive trials the full bonus fails at rate <code>0.0022</code>; removing the simultaneous <code>log(TK)</code> factor raises failure to <code>0.5822</code>.</p></article>
|
| 23 |
+
<article class="card wide"><h2>Reproducibility</h2><table><tr><th>Route</th><th>Scale</th><th>Compute</th></tr><tr><td>Exact proof/algebra audit</td><td>all 5 claims; 32,802 exhaustive paths</td><td>Python standard library, local CPU</td></tr><tr><td>Adaptive coverage + control</td><td>5,000 fixed-seed trials</td><td>3.4 s total, $0, no GPU</td></tr><tr><td>Independent verifier</td><td>frozen SHA + counterfamily invariants</td><td>all checks pass</td></tr></table></article>
|
| 24 |
+
</section>
|
| 25 |
+
<footer>Evidence: <a href="https://github.com/MachineLearning-Nerd/XarOZG8Un0">GitHub</a> · Logbook: <a href="https://huggingface.co/spaces/DineshAI/XarOZG8Un0">Hugging Face</a> · Source: <a href="https://arxiv.org/abs/2603.02155">arXiv 2603.02155</a></footer>
|
| 26 |
+
</main></body></html>
|
poster_embed.html
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!doctype html>
|
| 2 |
+
<!-- Text-only adaptation of Chenruishuo/posterly's neutral portrait layout. -->
|
| 3 |
+
<html lang="en">
|
| 4 |
+
<head>
|
| 5 |
+
<meta charset="utf-8">
|
| 6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
| 7 |
+
<title>ICML 2026 reproduction — XarOZG8Un0</title>
|
| 8 |
+
<style>
|
| 9 |
+
:root{--ink:#172538;--muted:#52677e;--blue:#245c88;--pale:#edf5fb;--line:#c8d9e8;--green:#176b4a;--red:#9b3441;--gold:#9a6814}
|
| 10 |
+
*{box-sizing:border-box}body{margin:0;background:#e5edf4;color:var(--ink);font:16px/1.46 system-ui,-apple-system,sans-serif}main{width:min(1120px,100%);margin:auto;background:#fff;padding:44px}h1{margin:0 0 8px;color:#173f64;font-size:42px;line-height:1.08}.meta{color:var(--muted);margin-bottom:24px}.banner{padding:14px 18px;background:#fff3cf;border-left:6px solid #d39b16;margin:20px 0}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.card{border:1px solid var(--line);border-radius:12px;padding:20px;background:linear-gradient(145deg,#fff,var(--pale))}.wide{grid-column:1/-1}h2{margin:0 0 9px;color:var(--blue);font-size:23px}.status{font-weight:800;letter-spacing:.03em}.verified{color:var(--green)}.falsified{color:var(--red)}.repaired{color:var(--gold)}table{width:100%;border-collapse:collapse}th,td{padding:9px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{color:var(--blue)}code{overflow-wrap:anywhere}a{color:#185f99}footer{margin-top:26px;color:var(--muted);border-top:1px solid var(--line);padding-top:16px}@media(max-width:760px){main{padding:24px}.grid{grid-template-columns:1fr}.wide{grid-column:auto}h1{font-size:32px}}
|
| 11 |
+
</style>
|
| 12 |
+
</head>
|
| 13 |
+
<body><main>
|
| 14 |
+
<h1>KL-regularized bandit theory: exact claim audit</h1>
|
| 15 |
+
<div class="meta">ICML 2026 paper 20430 · OpenReview XarOZG8Un0 · arXiv 2603.02155</div>
|
| 16 |
+
<div class="banner"><strong>Truth over points:</strong> two upper rates survive corrected constants; both lower theorems fail over their literal parameter domains.</div>
|
| 17 |
+
<section class="grid">
|
| 18 |
+
<article class="card"><h2>Claim 1 · <span class="status verified">VERIFIED + CORRECTED</span></h2><p>3,240 optimistic-gap fixtures and 3,279 exhaustive count paths support the fast <code>O~(ηK log²T)</code> rate. A factor-two typo and a false equality are disclosed and repaired.</p></article>
|
| 19 |
+
<article class="card"><h2>Claim 2 · <span class="status verified">VERIFIED + CORRECTED</span></h2><p>The source miscomputes an integral. The valid <code>2√KT</code> count bound passes 29,523 paths and preserves the eta-independent slow rate.</p></article>
|
| 20 |
+
<article class="card"><h2>Claim 3 · <span class="status falsified">FALSIFIED AS STATED</span></h2><p>Playing the reference policy costs at most <code>ηT/8</code>. At <code>T=K, η=1/K</code>, this is <code>1/8</code> while the asserted lower scale is <code>2 log K</code>. The paper's means also leave <code>[0,1]</code>.</p></article>
|
| 21 |
+
<article class="card"><h2>Claim 4 · <span class="status falsified">FALSIFIED AS STATED</span></h2><p>At <code>T=1, η=log(K)/√K</code>, a universal upper bound contradicts <code>Ω(√KT)</code>. With <code>T≥8K</code>, corrected separation and KL constants repair the intended rate.</p></article>
|
| 22 |
+
<article class="card wide"><h2>Claim 5 · <span class="status verified">VERIFIED</span></h2><p>The exact bonus and Freedman mean/variance conditions pass. Across 5,000 adaptive trials the full bonus fails at rate <code>0.0022</code>; removing the simultaneous <code>log(TK)</code> factor raises failure to <code>0.5822</code>.</p></article>
|
| 23 |
+
<article class="card wide"><h2>Reproducibility</h2><table><tr><th>Route</th><th>Scale</th><th>Compute</th></tr><tr><td>Exact proof/algebra audit</td><td>all 5 claims; 32,802 exhaustive paths</td><td>Python standard library, local CPU</td></tr><tr><td>Adaptive coverage + control</td><td>5,000 fixed-seed trials</td><td>3.4 s total, $0, no GPU</td></tr><tr><td>Independent verifier</td><td>frozen SHA + counterfamily invariants</td><td>all checks pass</td></tr></table></article>
|
| 24 |
+
</section>
|
| 25 |
+
<footer>Evidence: <a href="https://github.com/MachineLearning-Nerd/XarOZG8Un0">GitHub</a> · Logbook: <a href="https://huggingface.co/spaces/DineshAI/XarOZG8Un0">Hugging Face</a> · Source: <a href="https://arxiv.org/abs/2603.02155">arXiv 2603.02155</a></footer>
|
| 26 |
+
</main></body></html>
|
repro/outputs/audit_results.json
ADDED
|
@@ -0,0 +1,351 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"all_audits_passed": true,
|
| 3 |
+
"arxiv_id": "2603.02155",
|
| 4 |
+
"claims": {
|
| 5 |
+
"claim_1": {
|
| 6 |
+
"checks": {
|
| 7 |
+
"exhaustive_action_sequences": 3279,
|
| 8 |
+
"maximum_corrected_inverse_count_bound_violation": -2.0,
|
| 9 |
+
"maximum_lemma_violation": 0.0,
|
| 10 |
+
"optimistic_squared_error_lemma_cases": 3240,
|
| 11 |
+
"paper_equality_counterexample": {
|
| 12 |
+
"actions": [
|
| 13 |
+
0
|
| 14 |
+
],
|
| 15 |
+
"observed": 1.0,
|
| 16 |
+
"paper_rhs": 3,
|
| 17 |
+
"relation": "paper RHS is an upper bound here, not the displayed equality"
|
| 18 |
+
},
|
| 19 |
+
"scaling": [
|
| 20 |
+
{
|
| 21 |
+
"K": 2,
|
| 22 |
+
"T": 256,
|
| 23 |
+
"bound_over_eta_K_logKT_logT": 84.72067178682556,
|
| 24 |
+
"corrected_explicit_bound": 49079.753173050914,
|
| 25 |
+
"eta": 5.656854249492381
|
| 26 |
+
},
|
| 27 |
+
{
|
| 28 |
+
"K": 4,
|
| 29 |
+
"T": 1024,
|
| 30 |
+
"bound_over_eta_K_logKT_logT": 72.55513962033396,
|
| 31 |
+
"corrected_explicit_bound": 182070.90161982784,
|
| 32 |
+
"eta": 8.0
|
| 33 |
+
},
|
| 34 |
+
{
|
| 35 |
+
"K": 8,
|
| 36 |
+
"T": 4096,
|
| 37 |
+
"bound_over_eta_K_logKT_logT": 67.74592654816483,
|
| 38 |
+
"corrected_explicit_bound": 683063.0428464529,
|
| 39 |
+
"eta": 11.313708498984761
|
| 40 |
+
},
|
| 41 |
+
{
|
| 42 |
+
"K": 16,
|
| 43 |
+
"T": 16384,
|
| 44 |
+
"bound_over_eta_K_logKT_logT": 65.63796918352315,
|
| 45 |
+
"corrected_explicit_bound": 2522933.2683150223,
|
| 46 |
+
"eta": 16.0
|
| 47 |
+
}
|
| 48 |
+
]
|
| 49 |
+
},
|
| 50 |
+
"conclusion": "The defects change constants or boundary bookkeeping, not the O~(eta K log^2 T) rate.",
|
| 51 |
+
"outcome": "VERIFIED_WITH_CONSTANT_CORRECTIONS",
|
| 52 |
+
"passed": true,
|
| 53 |
+
"scope": "Theorem 4.2 high-regularization asymptotic rate and probability statement",
|
| 54 |
+
"source_defects": [
|
| 55 |
+
"Equation A.5 has 8 K log T, but the final substitution prints 4 K log T.",
|
| 56 |
+
"The realized harmonic-sum display is not an equality for unplayed/non-final arms; it is a safe upper bound.",
|
| 57 |
+
"The selected peeling index needs a separate T=1/X=1 boundary case."
|
| 58 |
+
]
|
| 59 |
+
},
|
| 60 |
+
"claim_2": {
|
| 61 |
+
"checks": {
|
| 62 |
+
"eta_invariance": [
|
| 63 |
+
{
|
| 64 |
+
"corrected_explicit_bound": 6990.56100826467,
|
| 65 |
+
"eta": 22.627416997969522,
|
| 66 |
+
"eta_over_boundary": 1
|
| 67 |
+
},
|
| 68 |
+
{
|
| 69 |
+
"corrected_explicit_bound": 6990.56100826467,
|
| 70 |
+
"eta": 45.254833995939045,
|
| 71 |
+
"eta_over_boundary": 2
|
| 72 |
+
},
|
| 73 |
+
{
|
| 74 |
+
"corrected_explicit_bound": 6990.56100826467,
|
| 75 |
+
"eta": 181.01933598375618,
|
| 76 |
+
"eta_over_boundary": 8
|
| 77 |
+
},
|
| 78 |
+
{
|
| 79 |
+
"corrected_explicit_bound": 6990.56100826467,
|
| 80 |
+
"eta": 724.0773439350247,
|
| 81 |
+
"eta_over_boundary": 32
|
| 82 |
+
}
|
| 83 |
+
],
|
| 84 |
+
"exhaustive_action_sequences": 29523,
|
| 85 |
+
"maximum_2sqrtKT_bound_violation": -2.2709845018536203,
|
| 86 |
+
"paper_constant_counterexample": {
|
| 87 |
+
"K": 1,
|
| 88 |
+
"T": 10000,
|
| 89 |
+
"difference": 97.53464544952394,
|
| 90 |
+
"observed_sum": 199.53464544952394,
|
| 91 |
+
"paper_2K_plus_sqrtKT": 102.0
|
| 92 |
+
}
|
| 93 |
+
},
|
| 94 |
+
"conclusion": "The corrected proof remains eta-independent and has the claimed O~(sqrt(KT log T)) scaling.",
|
| 95 |
+
"outcome": "VERIFIED_WITH_CONSTANT_CORRECTION",
|
| 96 |
+
"passed": true,
|
| 97 |
+
"scope": "Theorem 4.2 low-regularization eta-independent asymptotic rate",
|
| 98 |
+
"source_defects": [
|
| 99 |
+
"The source evaluates 2 + integral_1^N u^(-1/2) du incorrectly; it equals 2 sqrt(N), not 3/2 + sqrt(N)/2.",
|
| 100 |
+
"Consequently 2K + sqrt(KT) is not a valid bound for that displayed sum; 2 sqrt(KT) is valid by Cauchy-Schwarz."
|
| 101 |
+
]
|
| 102 |
+
},
|
| 103 |
+
"claim_3": {
|
| 104 |
+
"checks": {
|
| 105 |
+
"counterfamily": [
|
| 106 |
+
{
|
| 107 |
+
"K": 16,
|
| 108 |
+
"T": 16,
|
| 109 |
+
"claimed_lower_scale": 5.545177444479562,
|
| 110 |
+
"eta": 0.0625,
|
| 111 |
+
"eta_le_sqrt_T_over_K": true,
|
| 112 |
+
"lower_scale_over_upper": 44.3614195558365,
|
| 113 |
+
"paper_alpha": 22.18070977791825,
|
| 114 |
+
"paper_reward_interval": [
|
| 115 |
+
-21.68070977791825,
|
| 116 |
+
22.68070977791825
|
| 117 |
+
],
|
| 118 |
+
"reference_policy_upper": 0.125,
|
| 119 |
+
"reward_interval_is_subset_0_1": false
|
| 120 |
+
},
|
| 121 |
+
{
|
| 122 |
+
"K": 64,
|
| 123 |
+
"T": 64,
|
| 124 |
+
"claimed_lower_scale": 8.317766166719343,
|
| 125 |
+
"eta": 0.015625,
|
| 126 |
+
"eta_le_sqrt_T_over_K": true,
|
| 127 |
+
"lower_scale_over_upper": 66.54212933375474,
|
| 128 |
+
"paper_alpha": 88.722839111673,
|
| 129 |
+
"paper_reward_interval": [
|
| 130 |
+
-88.222839111673,
|
| 131 |
+
89.222839111673
|
| 132 |
+
],
|
| 133 |
+
"reference_policy_upper": 0.125,
|
| 134 |
+
"reward_interval_is_subset_0_1": false
|
| 135 |
+
},
|
| 136 |
+
{
|
| 137 |
+
"K": 256,
|
| 138 |
+
"T": 256,
|
| 139 |
+
"claimed_lower_scale": 11.090354888959125,
|
| 140 |
+
"eta": 0.00390625,
|
| 141 |
+
"eta_le_sqrt_T_over_K": true,
|
| 142 |
+
"lower_scale_over_upper": 88.722839111673,
|
| 143 |
+
"paper_alpha": 354.891356446692,
|
| 144 |
+
"paper_reward_interval": [
|
| 145 |
+
-354.391356446692,
|
| 146 |
+
355.391356446692
|
| 147 |
+
],
|
| 148 |
+
"reference_policy_upper": 0.125,
|
| 149 |
+
"reward_interval_is_subset_0_1": false
|
| 150 |
+
},
|
| 151 |
+
{
|
| 152 |
+
"K": 1024,
|
| 153 |
+
"T": 1024,
|
| 154 |
+
"claimed_lower_scale": 13.862943611198906,
|
| 155 |
+
"eta": 0.0009765625,
|
| 156 |
+
"eta_le_sqrt_T_over_K": true,
|
| 157 |
+
"lower_scale_over_upper": 110.90354888959125,
|
| 158 |
+
"paper_alpha": 1419.565425786768,
|
| 159 |
+
"paper_reward_interval": [
|
| 160 |
+
-1419.065425786768,
|
| 161 |
+
1420.065425786768
|
| 162 |
+
],
|
| 163 |
+
"reference_policy_upper": 0.125,
|
| 164 |
+
"reward_interval_is_subset_0_1": false
|
| 165 |
+
},
|
| 166 |
+
{
|
| 167 |
+
"K": 4096,
|
| 168 |
+
"T": 4096,
|
| 169 |
+
"claimed_lower_scale": 16.635532333438686,
|
| 170 |
+
"eta": 0.000244140625,
|
| 171 |
+
"eta_le_sqrt_T_over_K": true,
|
| 172 |
+
"lower_scale_over_upper": 133.0842586675095,
|
| 173 |
+
"paper_alpha": 5678.261703147072,
|
| 174 |
+
"paper_reward_interval": [
|
| 175 |
+
-5677.761703147072,
|
| 176 |
+
5678.761703147072
|
| 177 |
+
],
|
| 178 |
+
"reference_policy_upper": 0.125,
|
| 179 |
+
"reward_interval_is_subset_0_1": false
|
| 180 |
+
}
|
| 181 |
+
],
|
| 182 |
+
"hoeffding_lemma_fixtures": 1116,
|
| 183 |
+
"maximum_reference_policy_upper_violation": -5.2083060353685234e-09
|
| 184 |
+
},
|
| 185 |
+
"conclusion": "The literal lower bound and its global near-tightness claim are false without additional parameter restrictions.",
|
| 186 |
+
"counterargument": "Always playing the reference policy has per-round regret at most eta/8 by Hoeffding's lemma. For T=K and eta=1/K, its total regret is at most 1/8 for every valid reward instance, while eta*K*log(T/(eta^2*K))=2*log(K), so no parameter-uniform Omega constant can exist.",
|
| 187 |
+
"outcome": "FALSIFIED_AS_STATED",
|
| 188 |
+
"passed": true,
|
| 189 |
+
"proof_defects": [
|
| 190 |
+
"The theorem says K arms; the full proof constructs 2K arms (the overview silently renames K/2 pairs).",
|
| 191 |
+
"The proof sets alpha=2 log(2)/eta, so for eta<4 log(2) its means leave the stipulated reward range [0,1].",
|
| 192 |
+
"The shared-prior construction therefore cannot prove the theorem over the stated eta range."
|
| 193 |
+
],
|
| 194 |
+
"scope": "Theorem 5.3 with its literal quantifiers K>=2 and 0<eta<=sqrt(T/K)"
|
| 195 |
+
},
|
| 196 |
+
"claim_4": {
|
| 197 |
+
"checks": {
|
| 198 |
+
"counterfamily": [
|
| 199 |
+
{
|
| 200 |
+
"K": 16,
|
| 201 |
+
"T": 1,
|
| 202 |
+
"claimed_lower_scale": 4.0,
|
| 203 |
+
"eta": 0.6931471805599453,
|
| 204 |
+
"lower_scale_over_upper": 46.16624130844683,
|
| 205 |
+
"paper_instance_is_in_0_1": false,
|
| 206 |
+
"paper_r2_arm2_mean": 11.313708498984761,
|
| 207 |
+
"reference_policy_upper": 0.08664339756999316,
|
| 208 |
+
"threshold": 0.6931471805599453
|
| 209 |
+
},
|
| 210 |
+
{
|
| 211 |
+
"K": 64,
|
| 212 |
+
"T": 1,
|
| 213 |
+
"claimed_lower_scale": 8.0,
|
| 214 |
+
"eta": 0.5198603854199589,
|
| 215 |
+
"lower_scale_over_upper": 123.10997682252489,
|
| 216 |
+
"paper_instance_is_in_0_1": false,
|
| 217 |
+
"paper_r2_arm2_mean": 22.627416997969522,
|
| 218 |
+
"reference_policy_upper": 0.06498254817749487,
|
| 219 |
+
"threshold": 0.5198603854199589
|
| 220 |
+
},
|
| 221 |
+
{
|
| 222 |
+
"K": 256,
|
| 223 |
+
"T": 1,
|
| 224 |
+
"claimed_lower_scale": 16.0,
|
| 225 |
+
"eta": 0.34657359027997264,
|
| 226 |
+
"lower_scale_over_upper": 369.3299304675746,
|
| 227 |
+
"paper_instance_is_in_0_1": false,
|
| 228 |
+
"paper_r2_arm2_mean": 45.254833995939045,
|
| 229 |
+
"reference_policy_upper": 0.04332169878499658,
|
| 230 |
+
"threshold": 0.34657359027997264
|
| 231 |
+
},
|
| 232 |
+
{
|
| 233 |
+
"K": 1024,
|
| 234 |
+
"T": 1,
|
| 235 |
+
"claimed_lower_scale": 32.0,
|
| 236 |
+
"eta": 0.2166084939249829,
|
| 237 |
+
"lower_scale_over_upper": 1181.8557774962387,
|
| 238 |
+
"paper_instance_is_in_0_1": false,
|
| 239 |
+
"paper_r2_arm2_mean": 90.50966799187809,
|
| 240 |
+
"reference_policy_upper": 0.027076061740622864,
|
| 241 |
+
"threshold": 0.2166084939249829
|
| 242 |
+
},
|
| 243 |
+
{
|
| 244 |
+
"K": 4096,
|
| 245 |
+
"T": 1,
|
| 246 |
+
"claimed_lower_scale": 64.0,
|
| 247 |
+
"eta": 0.12996509635498973,
|
| 248 |
+
"lower_scale_over_upper": 3939.5192583207963,
|
| 249 |
+
"paper_instance_is_in_0_1": false,
|
| 250 |
+
"paper_r2_arm2_mean": 181.01933598375618,
|
| 251 |
+
"reference_policy_upper": 0.016245637044373717,
|
| 252 |
+
"threshold": 0.12996509635498973
|
| 253 |
+
}
|
| 254 |
+
],
|
| 255 |
+
"intended_T_ge_8K_domain": [
|
| 256 |
+
{
|
| 257 |
+
"K": 9,
|
| 258 |
+
"T": 576,
|
| 259 |
+
"eta_delta": 3.1073447968483734,
|
| 260 |
+
"repaired_uniform_constant": 0.29289321881345254,
|
| 261 |
+
"reward_valid": true,
|
| 262 |
+
"separation_over_delta": 0.5770569520686123,
|
| 263 |
+
"sqrt2_logK": 3.1073447968483734,
|
| 264 |
+
"trajectory_KL_upper": 4.500000000000001
|
| 265 |
+
},
|
| 266 |
+
{
|
| 267 |
+
"K": 16,
|
| 268 |
+
"T": 1024,
|
| 269 |
+
"eta_delta": 3.921032573874189,
|
| 270 |
+
"repaired_uniform_constant": 0.29289321881345254,
|
| 271 |
+
"reward_valid": true,
|
| 272 |
+
"separation_over_delta": 0.6529360509443312,
|
| 273 |
+
"sqrt2_logK": 3.921032573874189,
|
| 274 |
+
"trajectory_KL_upper": 4.2666666666666675
|
| 275 |
+
},
|
| 276 |
+
{
|
| 277 |
+
"K": 64,
|
| 278 |
+
"T": 4096,
|
| 279 |
+
"eta_delta": 5.881548860811283,
|
| 280 |
+
"repaired_uniform_constant": 0.29289321881345254,
|
| 281 |
+
"reward_valid": true,
|
| 282 |
+
"separation_over_delta": 0.7641761567673596,
|
| 283 |
+
"sqrt2_logK": 5.881548860811283,
|
| 284 |
+
"trajectory_KL_upper": 4.063492063492064
|
| 285 |
+
},
|
| 286 |
+
{
|
| 287 |
+
"K": 256,
|
| 288 |
+
"T": 16384,
|
| 289 |
+
"eta_delta": 7.842065147748378,
|
| 290 |
+
"repaired_uniform_constant": 0.29289321881345254,
|
| 291 |
+
"reward_valid": true,
|
| 292 |
+
"separation_over_delta": 0.823035629085889,
|
| 293 |
+
"sqrt2_logK": 7.842065147748378,
|
| 294 |
+
"trajectory_KL_upper": 4.015686274509805
|
| 295 |
+
}
|
| 296 |
+
]
|
| 297 |
+
},
|
| 298 |
+
"conclusion": "The literal theorem is false without a horizon assumption, although its intended large-horizon rate is repairable.",
|
| 299 |
+
"counterargument": "At T=1 and eta=log(K)/sqrt(K), the theorem condition holds exactly. The reference-policy algorithm has regret at most log(K)/(8 sqrt(K)) for every valid instance, whereas the claimed scale is sqrt(K); their ratio diverges.",
|
| 300 |
+
"outcome": "FALSIFIED_AS_STATED; REPAIRED_PROOF_IN_INTENDED_DOMAIN",
|
| 301 |
+
"passed": true,
|
| 302 |
+
"proof_defects": [
|
| 303 |
+
"No T-versus-K assumption is stated; the two-point rewards are valid only when T>=8K.",
|
| 304 |
+
"At the theorem threshold eta*delta=sqrt(2)*log(K), not 2*log(K) as printed.",
|
| 305 |
+
"The printed trajectory-KL substitution misses a factor two: it is at most 4K/(K-1), still at most 4.5 for K>=9."
|
| 306 |
+
],
|
| 307 |
+
"repair": "For T>=8K, the source construction is reward-valid. Replacing delta/2 by (1-1/sqrt(2))*delta and retaining the correct KL constant preserves Omega(sqrt(KT)).",
|
| 308 |
+
"scope": "Theorem 5.1 literal domain and its two-point proof"
|
| 309 |
+
},
|
| 310 |
+
"claim_5": {
|
| 311 |
+
"checks": {
|
| 312 |
+
"K": 4,
|
| 313 |
+
"T": 128,
|
| 314 |
+
"conditional_identity_cases": 10000,
|
| 315 |
+
"delta": 0.1,
|
| 316 |
+
"full_bonus_failure_rate": 0.0022,
|
| 317 |
+
"full_bonus_failures": 11,
|
| 318 |
+
"full_bonus_wilson_95pct": [
|
| 319 |
+
0.001228915407138813,
|
| 320 |
+
0.003935408649360061
|
| 321 |
+
],
|
| 322 |
+
"maximum_conditional_mean_residual": 1.1102230246251565e-16,
|
| 323 |
+
"maximum_variance_minus_Ey": -0.00039728200338818827,
|
| 324 |
+
"reduced_bonus_failure_rate": 0.5822,
|
| 325 |
+
"reduced_bonus_failures": 2911,
|
| 326 |
+
"reduced_bonus_wilson_95pct": [
|
| 327 |
+
0.5684715288491292,
|
| 328 |
+
0.5958022609511034
|
| 329 |
+
],
|
| 330 |
+
"seed": 260302155,
|
| 331 |
+
"trials": 5000,
|
| 332 |
+
"zero_failure_exact_one_sided_95pct_upper": null
|
| 333 |
+
},
|
| 334 |
+
"conclusion": "The exact bonus and the martingale mean/variance conditions used by the peeling/Freedman argument are supported.",
|
| 335 |
+
"control": "Replacing log(TK/delta) by log(1/delta) must produce a larger simultaneous-optimism failure rate.",
|
| 336 |
+
"outcome": "VERIFIED",
|
| 337 |
+
"passed": true,
|
| 338 |
+
"scope": "Algorithm 1 bonus formula, simultaneous optimism, and peeling/Freedman martingale conditions"
|
| 339 |
+
}
|
| 340 |
+
},
|
| 341 |
+
"fixed_seed": 260302155,
|
| 342 |
+
"paper_id": "XarOZG8Un0",
|
| 343 |
+
"runtime": "local CPU; Python standard library only",
|
| 344 |
+
"scientific_outcomes": {
|
| 345 |
+
"claim_1": "VERIFIED_WITH_CONSTANT_CORRECTIONS",
|
| 346 |
+
"claim_2": "VERIFIED_WITH_CONSTANT_CORRECTION",
|
| 347 |
+
"claim_3": "FALSIFIED_AS_STATED",
|
| 348 |
+
"claim_4": "FALSIFIED_AS_STATED; REPAIRED_PROOF_IN_INTENDED_DOMAIN",
|
| 349 |
+
"claim_5": "VERIFIED"
|
| 350 |
+
}
|
| 351 |
+
}
|
repro/outputs/audit_stdout.txt
ADDED
|
@@ -0,0 +1,351 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"all_audits_passed": true,
|
| 3 |
+
"arxiv_id": "2603.02155",
|
| 4 |
+
"claims": {
|
| 5 |
+
"claim_1": {
|
| 6 |
+
"checks": {
|
| 7 |
+
"exhaustive_action_sequences": 3279,
|
| 8 |
+
"maximum_corrected_inverse_count_bound_violation": -2.0,
|
| 9 |
+
"maximum_lemma_violation": 0.0,
|
| 10 |
+
"optimistic_squared_error_lemma_cases": 3240,
|
| 11 |
+
"paper_equality_counterexample": {
|
| 12 |
+
"actions": [
|
| 13 |
+
0
|
| 14 |
+
],
|
| 15 |
+
"observed": 1.0,
|
| 16 |
+
"paper_rhs": 3,
|
| 17 |
+
"relation": "paper RHS is an upper bound here, not the displayed equality"
|
| 18 |
+
},
|
| 19 |
+
"scaling": [
|
| 20 |
+
{
|
| 21 |
+
"K": 2,
|
| 22 |
+
"T": 256,
|
| 23 |
+
"bound_over_eta_K_logKT_logT": 84.72067178682556,
|
| 24 |
+
"corrected_explicit_bound": 49079.753173050914,
|
| 25 |
+
"eta": 5.656854249492381
|
| 26 |
+
},
|
| 27 |
+
{
|
| 28 |
+
"K": 4,
|
| 29 |
+
"T": 1024,
|
| 30 |
+
"bound_over_eta_K_logKT_logT": 72.55513962033396,
|
| 31 |
+
"corrected_explicit_bound": 182070.90161982784,
|
| 32 |
+
"eta": 8.0
|
| 33 |
+
},
|
| 34 |
+
{
|
| 35 |
+
"K": 8,
|
| 36 |
+
"T": 4096,
|
| 37 |
+
"bound_over_eta_K_logKT_logT": 67.74592654816483,
|
| 38 |
+
"corrected_explicit_bound": 683063.0428464529,
|
| 39 |
+
"eta": 11.313708498984761
|
| 40 |
+
},
|
| 41 |
+
{
|
| 42 |
+
"K": 16,
|
| 43 |
+
"T": 16384,
|
| 44 |
+
"bound_over_eta_K_logKT_logT": 65.63796918352315,
|
| 45 |
+
"corrected_explicit_bound": 2522933.2683150223,
|
| 46 |
+
"eta": 16.0
|
| 47 |
+
}
|
| 48 |
+
]
|
| 49 |
+
},
|
| 50 |
+
"conclusion": "The defects change constants or boundary bookkeeping, not the O~(eta K log^2 T) rate.",
|
| 51 |
+
"outcome": "VERIFIED_WITH_CONSTANT_CORRECTIONS",
|
| 52 |
+
"passed": true,
|
| 53 |
+
"scope": "Theorem 4.2 high-regularization asymptotic rate and probability statement",
|
| 54 |
+
"source_defects": [
|
| 55 |
+
"Equation A.5 has 8 K log T, but the final substitution prints 4 K log T.",
|
| 56 |
+
"The realized harmonic-sum display is not an equality for unplayed/non-final arms; it is a safe upper bound.",
|
| 57 |
+
"The selected peeling index needs a separate T=1/X=1 boundary case."
|
| 58 |
+
]
|
| 59 |
+
},
|
| 60 |
+
"claim_2": {
|
| 61 |
+
"checks": {
|
| 62 |
+
"eta_invariance": [
|
| 63 |
+
{
|
| 64 |
+
"corrected_explicit_bound": 6990.56100826467,
|
| 65 |
+
"eta": 22.627416997969522,
|
| 66 |
+
"eta_over_boundary": 1
|
| 67 |
+
},
|
| 68 |
+
{
|
| 69 |
+
"corrected_explicit_bound": 6990.56100826467,
|
| 70 |
+
"eta": 45.254833995939045,
|
| 71 |
+
"eta_over_boundary": 2
|
| 72 |
+
},
|
| 73 |
+
{
|
| 74 |
+
"corrected_explicit_bound": 6990.56100826467,
|
| 75 |
+
"eta": 181.01933598375618,
|
| 76 |
+
"eta_over_boundary": 8
|
| 77 |
+
},
|
| 78 |
+
{
|
| 79 |
+
"corrected_explicit_bound": 6990.56100826467,
|
| 80 |
+
"eta": 724.0773439350247,
|
| 81 |
+
"eta_over_boundary": 32
|
| 82 |
+
}
|
| 83 |
+
],
|
| 84 |
+
"exhaustive_action_sequences": 29523,
|
| 85 |
+
"maximum_2sqrtKT_bound_violation": -2.2709845018536203,
|
| 86 |
+
"paper_constant_counterexample": {
|
| 87 |
+
"K": 1,
|
| 88 |
+
"T": 10000,
|
| 89 |
+
"difference": 97.53464544952394,
|
| 90 |
+
"observed_sum": 199.53464544952394,
|
| 91 |
+
"paper_2K_plus_sqrtKT": 102.0
|
| 92 |
+
}
|
| 93 |
+
},
|
| 94 |
+
"conclusion": "The corrected proof remains eta-independent and has the claimed O~(sqrt(KT log T)) scaling.",
|
| 95 |
+
"outcome": "VERIFIED_WITH_CONSTANT_CORRECTION",
|
| 96 |
+
"passed": true,
|
| 97 |
+
"scope": "Theorem 4.2 low-regularization eta-independent asymptotic rate",
|
| 98 |
+
"source_defects": [
|
| 99 |
+
"The source evaluates 2 + integral_1^N u^(-1/2) du incorrectly; it equals 2 sqrt(N), not 3/2 + sqrt(N)/2.",
|
| 100 |
+
"Consequently 2K + sqrt(KT) is not a valid bound for that displayed sum; 2 sqrt(KT) is valid by Cauchy-Schwarz."
|
| 101 |
+
]
|
| 102 |
+
},
|
| 103 |
+
"claim_3": {
|
| 104 |
+
"checks": {
|
| 105 |
+
"counterfamily": [
|
| 106 |
+
{
|
| 107 |
+
"K": 16,
|
| 108 |
+
"T": 16,
|
| 109 |
+
"claimed_lower_scale": 5.545177444479562,
|
| 110 |
+
"eta": 0.0625,
|
| 111 |
+
"eta_le_sqrt_T_over_K": true,
|
| 112 |
+
"lower_scale_over_upper": 44.3614195558365,
|
| 113 |
+
"paper_alpha": 22.18070977791825,
|
| 114 |
+
"paper_reward_interval": [
|
| 115 |
+
-21.68070977791825,
|
| 116 |
+
22.68070977791825
|
| 117 |
+
],
|
| 118 |
+
"reference_policy_upper": 0.125,
|
| 119 |
+
"reward_interval_is_subset_0_1": false
|
| 120 |
+
},
|
| 121 |
+
{
|
| 122 |
+
"K": 64,
|
| 123 |
+
"T": 64,
|
| 124 |
+
"claimed_lower_scale": 8.317766166719343,
|
| 125 |
+
"eta": 0.015625,
|
| 126 |
+
"eta_le_sqrt_T_over_K": true,
|
| 127 |
+
"lower_scale_over_upper": 66.54212933375474,
|
| 128 |
+
"paper_alpha": 88.722839111673,
|
| 129 |
+
"paper_reward_interval": [
|
| 130 |
+
-88.222839111673,
|
| 131 |
+
89.222839111673
|
| 132 |
+
],
|
| 133 |
+
"reference_policy_upper": 0.125,
|
| 134 |
+
"reward_interval_is_subset_0_1": false
|
| 135 |
+
},
|
| 136 |
+
{
|
| 137 |
+
"K": 256,
|
| 138 |
+
"T": 256,
|
| 139 |
+
"claimed_lower_scale": 11.090354888959125,
|
| 140 |
+
"eta": 0.00390625,
|
| 141 |
+
"eta_le_sqrt_T_over_K": true,
|
| 142 |
+
"lower_scale_over_upper": 88.722839111673,
|
| 143 |
+
"paper_alpha": 354.891356446692,
|
| 144 |
+
"paper_reward_interval": [
|
| 145 |
+
-354.391356446692,
|
| 146 |
+
355.391356446692
|
| 147 |
+
],
|
| 148 |
+
"reference_policy_upper": 0.125,
|
| 149 |
+
"reward_interval_is_subset_0_1": false
|
| 150 |
+
},
|
| 151 |
+
{
|
| 152 |
+
"K": 1024,
|
| 153 |
+
"T": 1024,
|
| 154 |
+
"claimed_lower_scale": 13.862943611198906,
|
| 155 |
+
"eta": 0.0009765625,
|
| 156 |
+
"eta_le_sqrt_T_over_K": true,
|
| 157 |
+
"lower_scale_over_upper": 110.90354888959125,
|
| 158 |
+
"paper_alpha": 1419.565425786768,
|
| 159 |
+
"paper_reward_interval": [
|
| 160 |
+
-1419.065425786768,
|
| 161 |
+
1420.065425786768
|
| 162 |
+
],
|
| 163 |
+
"reference_policy_upper": 0.125,
|
| 164 |
+
"reward_interval_is_subset_0_1": false
|
| 165 |
+
},
|
| 166 |
+
{
|
| 167 |
+
"K": 4096,
|
| 168 |
+
"T": 4096,
|
| 169 |
+
"claimed_lower_scale": 16.635532333438686,
|
| 170 |
+
"eta": 0.000244140625,
|
| 171 |
+
"eta_le_sqrt_T_over_K": true,
|
| 172 |
+
"lower_scale_over_upper": 133.0842586675095,
|
| 173 |
+
"paper_alpha": 5678.261703147072,
|
| 174 |
+
"paper_reward_interval": [
|
| 175 |
+
-5677.761703147072,
|
| 176 |
+
5678.761703147072
|
| 177 |
+
],
|
| 178 |
+
"reference_policy_upper": 0.125,
|
| 179 |
+
"reward_interval_is_subset_0_1": false
|
| 180 |
+
}
|
| 181 |
+
],
|
| 182 |
+
"hoeffding_lemma_fixtures": 1116,
|
| 183 |
+
"maximum_reference_policy_upper_violation": -5.2083060353685234e-09
|
| 184 |
+
},
|
| 185 |
+
"conclusion": "The literal lower bound and its global near-tightness claim are false without additional parameter restrictions.",
|
| 186 |
+
"counterargument": "Always playing the reference policy has per-round regret at most eta/8 by Hoeffding's lemma. For T=K and eta=1/K, its total regret is at most 1/8 for every valid reward instance, while eta*K*log(T/(eta^2*K))=2*log(K), so no parameter-uniform Omega constant can exist.",
|
| 187 |
+
"outcome": "FALSIFIED_AS_STATED",
|
| 188 |
+
"passed": true,
|
| 189 |
+
"proof_defects": [
|
| 190 |
+
"The theorem says K arms; the full proof constructs 2K arms (the overview silently renames K/2 pairs).",
|
| 191 |
+
"The proof sets alpha=2 log(2)/eta, so for eta<4 log(2) its means leave the stipulated reward range [0,1].",
|
| 192 |
+
"The shared-prior construction therefore cannot prove the theorem over the stated eta range."
|
| 193 |
+
],
|
| 194 |
+
"scope": "Theorem 5.3 with its literal quantifiers K>=2 and 0<eta<=sqrt(T/K)"
|
| 195 |
+
},
|
| 196 |
+
"claim_4": {
|
| 197 |
+
"checks": {
|
| 198 |
+
"counterfamily": [
|
| 199 |
+
{
|
| 200 |
+
"K": 16,
|
| 201 |
+
"T": 1,
|
| 202 |
+
"claimed_lower_scale": 4.0,
|
| 203 |
+
"eta": 0.6931471805599453,
|
| 204 |
+
"lower_scale_over_upper": 46.16624130844683,
|
| 205 |
+
"paper_instance_is_in_0_1": false,
|
| 206 |
+
"paper_r2_arm2_mean": 11.313708498984761,
|
| 207 |
+
"reference_policy_upper": 0.08664339756999316,
|
| 208 |
+
"threshold": 0.6931471805599453
|
| 209 |
+
},
|
| 210 |
+
{
|
| 211 |
+
"K": 64,
|
| 212 |
+
"T": 1,
|
| 213 |
+
"claimed_lower_scale": 8.0,
|
| 214 |
+
"eta": 0.5198603854199589,
|
| 215 |
+
"lower_scale_over_upper": 123.10997682252489,
|
| 216 |
+
"paper_instance_is_in_0_1": false,
|
| 217 |
+
"paper_r2_arm2_mean": 22.627416997969522,
|
| 218 |
+
"reference_policy_upper": 0.06498254817749487,
|
| 219 |
+
"threshold": 0.5198603854199589
|
| 220 |
+
},
|
| 221 |
+
{
|
| 222 |
+
"K": 256,
|
| 223 |
+
"T": 1,
|
| 224 |
+
"claimed_lower_scale": 16.0,
|
| 225 |
+
"eta": 0.34657359027997264,
|
| 226 |
+
"lower_scale_over_upper": 369.3299304675746,
|
| 227 |
+
"paper_instance_is_in_0_1": false,
|
| 228 |
+
"paper_r2_arm2_mean": 45.254833995939045,
|
| 229 |
+
"reference_policy_upper": 0.04332169878499658,
|
| 230 |
+
"threshold": 0.34657359027997264
|
| 231 |
+
},
|
| 232 |
+
{
|
| 233 |
+
"K": 1024,
|
| 234 |
+
"T": 1,
|
| 235 |
+
"claimed_lower_scale": 32.0,
|
| 236 |
+
"eta": 0.2166084939249829,
|
| 237 |
+
"lower_scale_over_upper": 1181.8557774962387,
|
| 238 |
+
"paper_instance_is_in_0_1": false,
|
| 239 |
+
"paper_r2_arm2_mean": 90.50966799187809,
|
| 240 |
+
"reference_policy_upper": 0.027076061740622864,
|
| 241 |
+
"threshold": 0.2166084939249829
|
| 242 |
+
},
|
| 243 |
+
{
|
| 244 |
+
"K": 4096,
|
| 245 |
+
"T": 1,
|
| 246 |
+
"claimed_lower_scale": 64.0,
|
| 247 |
+
"eta": 0.12996509635498973,
|
| 248 |
+
"lower_scale_over_upper": 3939.5192583207963,
|
| 249 |
+
"paper_instance_is_in_0_1": false,
|
| 250 |
+
"paper_r2_arm2_mean": 181.01933598375618,
|
| 251 |
+
"reference_policy_upper": 0.016245637044373717,
|
| 252 |
+
"threshold": 0.12996509635498973
|
| 253 |
+
}
|
| 254 |
+
],
|
| 255 |
+
"intended_T_ge_8K_domain": [
|
| 256 |
+
{
|
| 257 |
+
"K": 9,
|
| 258 |
+
"T": 576,
|
| 259 |
+
"eta_delta": 3.1073447968483734,
|
| 260 |
+
"repaired_uniform_constant": 0.29289321881345254,
|
| 261 |
+
"reward_valid": true,
|
| 262 |
+
"separation_over_delta": 0.5770569520686123,
|
| 263 |
+
"sqrt2_logK": 3.1073447968483734,
|
| 264 |
+
"trajectory_KL_upper": 4.500000000000001
|
| 265 |
+
},
|
| 266 |
+
{
|
| 267 |
+
"K": 16,
|
| 268 |
+
"T": 1024,
|
| 269 |
+
"eta_delta": 3.921032573874189,
|
| 270 |
+
"repaired_uniform_constant": 0.29289321881345254,
|
| 271 |
+
"reward_valid": true,
|
| 272 |
+
"separation_over_delta": 0.6529360509443312,
|
| 273 |
+
"sqrt2_logK": 3.921032573874189,
|
| 274 |
+
"trajectory_KL_upper": 4.2666666666666675
|
| 275 |
+
},
|
| 276 |
+
{
|
| 277 |
+
"K": 64,
|
| 278 |
+
"T": 4096,
|
| 279 |
+
"eta_delta": 5.881548860811283,
|
| 280 |
+
"repaired_uniform_constant": 0.29289321881345254,
|
| 281 |
+
"reward_valid": true,
|
| 282 |
+
"separation_over_delta": 0.7641761567673596,
|
| 283 |
+
"sqrt2_logK": 5.881548860811283,
|
| 284 |
+
"trajectory_KL_upper": 4.063492063492064
|
| 285 |
+
},
|
| 286 |
+
{
|
| 287 |
+
"K": 256,
|
| 288 |
+
"T": 16384,
|
| 289 |
+
"eta_delta": 7.842065147748378,
|
| 290 |
+
"repaired_uniform_constant": 0.29289321881345254,
|
| 291 |
+
"reward_valid": true,
|
| 292 |
+
"separation_over_delta": 0.823035629085889,
|
| 293 |
+
"sqrt2_logK": 7.842065147748378,
|
| 294 |
+
"trajectory_KL_upper": 4.015686274509805
|
| 295 |
+
}
|
| 296 |
+
]
|
| 297 |
+
},
|
| 298 |
+
"conclusion": "The literal theorem is false without a horizon assumption, although its intended large-horizon rate is repairable.",
|
| 299 |
+
"counterargument": "At T=1 and eta=log(K)/sqrt(K), the theorem condition holds exactly. The reference-policy algorithm has regret at most log(K)/(8 sqrt(K)) for every valid instance, whereas the claimed scale is sqrt(K); their ratio diverges.",
|
| 300 |
+
"outcome": "FALSIFIED_AS_STATED; REPAIRED_PROOF_IN_INTENDED_DOMAIN",
|
| 301 |
+
"passed": true,
|
| 302 |
+
"proof_defects": [
|
| 303 |
+
"No T-versus-K assumption is stated; the two-point rewards are valid only when T>=8K.",
|
| 304 |
+
"At the theorem threshold eta*delta=sqrt(2)*log(K), not 2*log(K) as printed.",
|
| 305 |
+
"The printed trajectory-KL substitution misses a factor two: it is at most 4K/(K-1), still at most 4.5 for K>=9."
|
| 306 |
+
],
|
| 307 |
+
"repair": "For T>=8K, the source construction is reward-valid. Replacing delta/2 by (1-1/sqrt(2))*delta and retaining the correct KL constant preserves Omega(sqrt(KT)).",
|
| 308 |
+
"scope": "Theorem 5.1 literal domain and its two-point proof"
|
| 309 |
+
},
|
| 310 |
+
"claim_5": {
|
| 311 |
+
"checks": {
|
| 312 |
+
"K": 4,
|
| 313 |
+
"T": 128,
|
| 314 |
+
"conditional_identity_cases": 10000,
|
| 315 |
+
"delta": 0.1,
|
| 316 |
+
"full_bonus_failure_rate": 0.0022,
|
| 317 |
+
"full_bonus_failures": 11,
|
| 318 |
+
"full_bonus_wilson_95pct": [
|
| 319 |
+
0.001228915407138813,
|
| 320 |
+
0.003935408649360061
|
| 321 |
+
],
|
| 322 |
+
"maximum_conditional_mean_residual": 1.1102230246251565e-16,
|
| 323 |
+
"maximum_variance_minus_Ey": -0.00039728200338818827,
|
| 324 |
+
"reduced_bonus_failure_rate": 0.5822,
|
| 325 |
+
"reduced_bonus_failures": 2911,
|
| 326 |
+
"reduced_bonus_wilson_95pct": [
|
| 327 |
+
0.5684715288491292,
|
| 328 |
+
0.5958022609511034
|
| 329 |
+
],
|
| 330 |
+
"seed": 260302155,
|
| 331 |
+
"trials": 5000,
|
| 332 |
+
"zero_failure_exact_one_sided_95pct_upper": null
|
| 333 |
+
},
|
| 334 |
+
"conclusion": "The exact bonus and the martingale mean/variance conditions used by the peeling/Freedman argument are supported.",
|
| 335 |
+
"control": "Replacing log(TK/delta) by log(1/delta) must produce a larger simultaneous-optimism failure rate.",
|
| 336 |
+
"outcome": "VERIFIED",
|
| 337 |
+
"passed": true,
|
| 338 |
+
"scope": "Algorithm 1 bonus formula, simultaneous optimism, and peeling/Freedman martingale conditions"
|
| 339 |
+
}
|
| 340 |
+
},
|
| 341 |
+
"fixed_seed": 260302155,
|
| 342 |
+
"paper_id": "XarOZG8Un0",
|
| 343 |
+
"runtime": "local CPU; Python standard library only",
|
| 344 |
+
"scientific_outcomes": {
|
| 345 |
+
"claim_1": "VERIFIED_WITH_CONSTANT_CORRECTIONS",
|
| 346 |
+
"claim_2": "VERIFIED_WITH_CONSTANT_CORRECTION",
|
| 347 |
+
"claim_3": "FALSIFIED_AS_STATED",
|
| 348 |
+
"claim_4": "FALSIFIED_AS_STATED; REPAIRED_PROOF_IN_INTENDED_DOMAIN",
|
| 349 |
+
"claim_5": "VERIFIED"
|
| 350 |
+
}
|
| 351 |
+
}
|
repro/outputs/verification.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checks": {
|
| 3 |
+
"all_audit_program_checks_passed": true,
|
| 4 |
+
"claim_3_formula_K1024": true,
|
| 5 |
+
"claim_3_formula_K16": true,
|
| 6 |
+
"claim_3_formula_K256": true,
|
| 7 |
+
"claim_3_formula_K4096": true,
|
| 8 |
+
"claim_3_formula_K64": true,
|
| 9 |
+
"claim_3_outcome": true,
|
| 10 |
+
"claim_4_formula_K1024": true,
|
| 11 |
+
"claim_4_formula_K16": true,
|
| 12 |
+
"claim_4_formula_K256": true,
|
| 13 |
+
"claim_4_formula_K4096": true,
|
| 14 |
+
"claim_4_formula_K64": true,
|
| 15 |
+
"claim_4_outcome": true,
|
| 16 |
+
"claim_5_negative_control": true,
|
| 17 |
+
"claim_5_trial_accounting": true,
|
| 18 |
+
"frozen_results_sha256": true,
|
| 19 |
+
"paper_identity": true
|
| 20 |
+
},
|
| 21 |
+
"failed": [],
|
| 22 |
+
"passed": true,
|
| 23 |
+
"results_sha256": "af730f4bd42c31b6333a234b7a8eab76af6597edf2c9b4b89cc1ca7eedc2f41f"
|
| 24 |
+
}
|
repro/outputs/verification_stdout.txt
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checks": {
|
| 3 |
+
"all_audit_program_checks_passed": true,
|
| 4 |
+
"claim_3_formula_K1024": true,
|
| 5 |
+
"claim_3_formula_K16": true,
|
| 6 |
+
"claim_3_formula_K256": true,
|
| 7 |
+
"claim_3_formula_K4096": true,
|
| 8 |
+
"claim_3_formula_K64": true,
|
| 9 |
+
"claim_3_outcome": true,
|
| 10 |
+
"claim_4_formula_K1024": true,
|
| 11 |
+
"claim_4_formula_K16": true,
|
| 12 |
+
"claim_4_formula_K256": true,
|
| 13 |
+
"claim_4_formula_K4096": true,
|
| 14 |
+
"claim_4_formula_K64": true,
|
| 15 |
+
"claim_4_outcome": true,
|
| 16 |
+
"claim_5_negative_control": true,
|
| 17 |
+
"claim_5_trial_accounting": true,
|
| 18 |
+
"frozen_results_sha256": true,
|
| 19 |
+
"paper_identity": true
|
| 20 |
+
},
|
| 21 |
+
"failed": [],
|
| 22 |
+
"passed": true,
|
| 23 |
+
"results_sha256": "af730f4bd42c31b6333a234b7a8eab76af6597edf2c9b4b89cc1ca7eedc2f41f"
|
| 24 |
+
}
|
repro/src/audit.py
ADDED
|
@@ -0,0 +1,494 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
"""Deterministic CPU audits for the five official XarOZG8Un0 claims."""
|
| 3 |
+
|
| 4 |
+
from __future__ import annotations
|
| 5 |
+
|
| 6 |
+
import itertools
|
| 7 |
+
import json
|
| 8 |
+
import math
|
| 9 |
+
import random
|
| 10 |
+
from pathlib import Path
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
PAPER_ID = "XarOZG8Un0"
|
| 14 |
+
ARXIV_ID = "2603.02155"
|
| 15 |
+
SEED = 260302155
|
| 16 |
+
OUTPUT_DIR = Path(__file__).resolve().parents[1] / "outputs"
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
def logsumexp(values: list[float]) -> float:
|
| 20 |
+
peak = max(values)
|
| 21 |
+
return peak + math.log(sum(math.exp(value - peak) for value in values))
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
def optimal_policy(rewards: list[float], eta: float, reference: list[float] | None = None) -> list[float]:
|
| 25 |
+
if reference is None:
|
| 26 |
+
reference = [1 / len(rewards)] * len(rewards)
|
| 27 |
+
logits = [math.log(weight) + eta * reward for weight, reward in zip(reference, rewards)]
|
| 28 |
+
normalizer = logsumexp(logits)
|
| 29 |
+
return [math.exp(logit - normalizer) for logit in logits]
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
def kl_divergence(left: list[float], right: list[float]) -> float:
|
| 33 |
+
return sum(p * math.log(p / q) for p, q in zip(left, right) if p > 0)
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
def objective(policy: list[float], rewards: list[float], eta: float, reference: list[float]) -> float:
|
| 37 |
+
return sum(p * reward for p, reward in zip(policy, rewards)) - kl_divergence(policy, reference) / eta
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
def regularized_gap(policy: list[float], rewards: list[float], eta: float, reference: list[float]) -> float:
|
| 41 |
+
optimum = optimal_policy(rewards, eta, reference)
|
| 42 |
+
return objective(optimum, rewards, eta, reference) - objective(policy, rewards, eta, reference)
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
def harmonic(number: int) -> float:
|
| 46 |
+
return sum(1 / index for index in range(1, number + 1))
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
def realized_inverse_count_sum(actions: tuple[int, ...], arms: int) -> float:
|
| 50 |
+
counts = [0] * arms
|
| 51 |
+
total = 0.0
|
| 52 |
+
for action in actions:
|
| 53 |
+
total += 1 / max(counts[action], 1)
|
| 54 |
+
counts[action] += 1
|
| 55 |
+
return total
|
| 56 |
+
|
| 57 |
+
|
| 58 |
+
def realized_sqrt_count_sum(actions: tuple[int, ...], arms: int) -> float:
|
| 59 |
+
counts = [0] * arms
|
| 60 |
+
total = 0.0
|
| 61 |
+
for action in actions:
|
| 62 |
+
total += 1 / math.sqrt(max(counts[action], 1))
|
| 63 |
+
counts[action] += 1
|
| 64 |
+
return total
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
def paper_inverse_count_expression(actions: tuple[int, ...], arms: int) -> float:
|
| 68 |
+
counts_before_last = [0] * arms
|
| 69 |
+
for action in actions[:-1]:
|
| 70 |
+
counts_before_last[action] += 1
|
| 71 |
+
return sum(1 + harmonic(count) for count in counts_before_last)
|
| 72 |
+
|
| 73 |
+
|
| 74 |
+
def claim_1_fast_upper_bound() -> dict:
|
| 75 |
+
lemma_checks = 0
|
| 76 |
+
maximum_lemma_violation = -math.inf
|
| 77 |
+
reward_grid = (0.0, 0.5, 1.0)
|
| 78 |
+
increments = (0.0, 0.2, 0.7)
|
| 79 |
+
for arms in (2, 3):
|
| 80 |
+
reference = [1 / arms] * arms
|
| 81 |
+
for eta in (0.05, 0.5, 2.0, 5.0):
|
| 82 |
+
for rewards in itertools.product(reward_grid, repeat=arms):
|
| 83 |
+
for additions in itertools.product(increments, repeat=arms):
|
| 84 |
+
optimistic = [min(1.0, reward + addition) for reward, addition in zip(rewards, additions)]
|
| 85 |
+
policy = optimal_policy(optimistic, eta, reference)
|
| 86 |
+
left = regularized_gap(policy, list(rewards), eta, reference)
|
| 87 |
+
right = eta * sum(
|
| 88 |
+
probability * (estimate - reward) ** 2
|
| 89 |
+
for probability, estimate, reward in zip(policy, optimistic, rewards)
|
| 90 |
+
)
|
| 91 |
+
maximum_lemma_violation = max(maximum_lemma_violation, left - right)
|
| 92 |
+
lemma_checks += 1
|
| 93 |
+
|
| 94 |
+
sequence_checks = 0
|
| 95 |
+
maximum_inverse_violation = -math.inf
|
| 96 |
+
paper_equality_counterexample = None
|
| 97 |
+
for horizon in range(1, 8):
|
| 98 |
+
for actions in itertools.product(range(3), repeat=horizon):
|
| 99 |
+
observed = realized_inverse_count_sum(actions, 3)
|
| 100 |
+
counts = [actions.count(arm) for arm in range(3)]
|
| 101 |
+
exact = sum(1 + harmonic(count - 1) for count in counts if count)
|
| 102 |
+
upper = 3 + 3 * math.log(max(horizon, 1))
|
| 103 |
+
maximum_inverse_violation = max(maximum_inverse_violation, observed - upper)
|
| 104 |
+
if abs(observed - exact) > 1e-12:
|
| 105 |
+
raise AssertionError("exact inverse-count identity failed")
|
| 106 |
+
if paper_equality_counterexample is None:
|
| 107 |
+
paper_value = paper_inverse_count_expression(actions, 3)
|
| 108 |
+
if abs(observed - paper_value) > 1e-12:
|
| 109 |
+
paper_equality_counterexample = {
|
| 110 |
+
"actions": list(actions),
|
| 111 |
+
"observed": observed,
|
| 112 |
+
"paper_rhs": paper_value,
|
| 113 |
+
"relation": "paper RHS is an upper bound here, not the displayed equality",
|
| 114 |
+
}
|
| 115 |
+
sequence_checks += 1
|
| 116 |
+
|
| 117 |
+
delta = 0.05
|
| 118 |
+
scaling = []
|
| 119 |
+
for arms, horizon in ((2, 256), (4, 1024), (8, 4096), (16, 16384)):
|
| 120 |
+
eta = 0.5 * math.sqrt(horizon / arms)
|
| 121 |
+
peel_log = math.log(math.ceil(math.log(horizon)) / delta)
|
| 122 |
+
corrected_visit_bound = 6 * peel_log + 8 * arms * math.log(horizon)
|
| 123 |
+
explicit_bound = 8 * eta * math.log(arms * horizon / delta) * corrected_visit_bound
|
| 124 |
+
scale = eta * arms * math.log(arms * horizon / delta) * math.log(horizon)
|
| 125 |
+
scaling.append(
|
| 126 |
+
{
|
| 127 |
+
"K": arms,
|
| 128 |
+
"T": horizon,
|
| 129 |
+
"eta": eta,
|
| 130 |
+
"corrected_explicit_bound": explicit_bound,
|
| 131 |
+
"bound_over_eta_K_logKT_logT": explicit_bound / scale,
|
| 132 |
+
}
|
| 133 |
+
)
|
| 134 |
+
|
| 135 |
+
passed = maximum_lemma_violation <= 1e-12 and maximum_inverse_violation <= 1e-12
|
| 136 |
+
return {
|
| 137 |
+
"outcome": "VERIFIED_WITH_CONSTANT_CORRECTIONS" if passed else "NOT_VERIFIED",
|
| 138 |
+
"passed": passed,
|
| 139 |
+
"scope": "Theorem 4.2 high-regularization asymptotic rate and probability statement",
|
| 140 |
+
"checks": {
|
| 141 |
+
"optimistic_squared_error_lemma_cases": lemma_checks,
|
| 142 |
+
"maximum_lemma_violation": maximum_lemma_violation,
|
| 143 |
+
"exhaustive_action_sequences": sequence_checks,
|
| 144 |
+
"maximum_corrected_inverse_count_bound_violation": maximum_inverse_violation,
|
| 145 |
+
"paper_equality_counterexample": paper_equality_counterexample,
|
| 146 |
+
"scaling": scaling,
|
| 147 |
+
},
|
| 148 |
+
"source_defects": [
|
| 149 |
+
"Equation A.5 has 8 K log T, but the final substitution prints 4 K log T.",
|
| 150 |
+
"The realized harmonic-sum display is not an equality for unplayed/non-final arms; it is a safe upper bound.",
|
| 151 |
+
"The selected peeling index needs a separate T=1/X=1 boundary case.",
|
| 152 |
+
],
|
| 153 |
+
"conclusion": "The defects change constants or boundary bookkeeping, not the O~(eta K log^2 T) rate.",
|
| 154 |
+
}
|
| 155 |
+
|
| 156 |
+
|
| 157 |
+
def claim_2_slow_upper_bound() -> dict:
|
| 158 |
+
sequence_checks = 0
|
| 159 |
+
maximum_corrected_violation = -math.inf
|
| 160 |
+
paper_bound_counterexample = None
|
| 161 |
+
for horizon in range(1, 10):
|
| 162 |
+
for actions in itertools.product(range(3), repeat=horizon):
|
| 163 |
+
observed = realized_sqrt_count_sum(actions, 3)
|
| 164 |
+
corrected = 2 * math.sqrt(3 * horizon)
|
| 165 |
+
maximum_corrected_violation = max(maximum_corrected_violation, observed - corrected)
|
| 166 |
+
sequence_checks += 1
|
| 167 |
+
|
| 168 |
+
actions = tuple([0] * 10_000)
|
| 169 |
+
observed = realized_sqrt_count_sum(actions, 1)
|
| 170 |
+
printed_bound = 2 + math.sqrt(10_000)
|
| 171 |
+
if observed > printed_bound:
|
| 172 |
+
paper_bound_counterexample = {
|
| 173 |
+
"K": 1,
|
| 174 |
+
"T": 10_000,
|
| 175 |
+
"observed_sum": observed,
|
| 176 |
+
"paper_2K_plus_sqrtKT": printed_bound,
|
| 177 |
+
"difference": observed - printed_bound,
|
| 178 |
+
}
|
| 179 |
+
|
| 180 |
+
delta = 0.05
|
| 181 |
+
eta_invariance = []
|
| 182 |
+
arms = 8
|
| 183 |
+
horizon = 4096
|
| 184 |
+
corrected_visit_bound = 2 * math.sqrt(arms * horizon)
|
| 185 |
+
martingale_bound = 2 * math.sqrt(2 * horizon * math.log(1 / delta))
|
| 186 |
+
explicit_bound = 2 * math.sqrt(2 * math.log(horizon * arms / delta)) * (
|
| 187 |
+
corrected_visit_bound + martingale_bound
|
| 188 |
+
)
|
| 189 |
+
boundary = math.sqrt(horizon / arms)
|
| 190 |
+
for multiplier in (1, 2, 8, 32):
|
| 191 |
+
eta_invariance.append(
|
| 192 |
+
{"eta": multiplier * boundary, "eta_over_boundary": multiplier, "corrected_explicit_bound": explicit_bound}
|
| 193 |
+
)
|
| 194 |
+
|
| 195 |
+
passed = maximum_corrected_violation <= 1e-12 and paper_bound_counterexample is not None
|
| 196 |
+
return {
|
| 197 |
+
"outcome": "VERIFIED_WITH_CONSTANT_CORRECTION" if passed else "NOT_VERIFIED",
|
| 198 |
+
"passed": passed,
|
| 199 |
+
"scope": "Theorem 4.2 low-regularization eta-independent asymptotic rate",
|
| 200 |
+
"checks": {
|
| 201 |
+
"exhaustive_action_sequences": sequence_checks,
|
| 202 |
+
"maximum_2sqrtKT_bound_violation": maximum_corrected_violation,
|
| 203 |
+
"paper_constant_counterexample": paper_bound_counterexample,
|
| 204 |
+
"eta_invariance": eta_invariance,
|
| 205 |
+
},
|
| 206 |
+
"source_defects": [
|
| 207 |
+
"The source evaluates 2 + integral_1^N u^(-1/2) du incorrectly; it equals 2 sqrt(N), not 3/2 + sqrt(N)/2.",
|
| 208 |
+
"Consequently 2K + sqrt(KT) is not a valid bound for that displayed sum; 2 sqrt(KT) is valid by Cauchy-Schwarz.",
|
| 209 |
+
],
|
| 210 |
+
"conclusion": "The corrected proof remains eta-independent and has the claimed O~(sqrt(KT log T)) scaling.",
|
| 211 |
+
}
|
| 212 |
+
|
| 213 |
+
|
| 214 |
+
def reference_policy_regret_upper(eta: float, horizon: int) -> float:
|
| 215 |
+
return eta * horizon / 8
|
| 216 |
+
|
| 217 |
+
|
| 218 |
+
def claim_3_fast_lower_bound() -> dict:
|
| 219 |
+
counterfamily = []
|
| 220 |
+
for arms in (16, 64, 256, 1024, 4096):
|
| 221 |
+
horizon = arms
|
| 222 |
+
eta = 1 / arms
|
| 223 |
+
claimed_scale = eta * arms * math.log(horizon / (eta * eta * arms))
|
| 224 |
+
universal_upper = reference_policy_regret_upper(eta, horizon)
|
| 225 |
+
alpha = 2 * math.log(2) / eta
|
| 226 |
+
counterfamily.append(
|
| 227 |
+
{
|
| 228 |
+
"K": arms,
|
| 229 |
+
"T": horizon,
|
| 230 |
+
"eta": eta,
|
| 231 |
+
"eta_le_sqrt_T_over_K": eta <= math.sqrt(horizon / arms),
|
| 232 |
+
"claimed_lower_scale": claimed_scale,
|
| 233 |
+
"reference_policy_upper": universal_upper,
|
| 234 |
+
"lower_scale_over_upper": claimed_scale / universal_upper,
|
| 235 |
+
"paper_alpha": alpha,
|
| 236 |
+
"paper_reward_interval": [0.5 - alpha, 0.5 + alpha],
|
| 237 |
+
"reward_interval_is_subset_0_1": alpha <= 0.5,
|
| 238 |
+
}
|
| 239 |
+
)
|
| 240 |
+
|
| 241 |
+
hoeffding_checks = 0
|
| 242 |
+
maximum_hoeffding_violation = -math.inf
|
| 243 |
+
for arms in (2, 3, 5):
|
| 244 |
+
reference = [index + 1 for index in range(arms)]
|
| 245 |
+
total = sum(reference)
|
| 246 |
+
reference = [weight / total for weight in reference]
|
| 247 |
+
for eta in (0.01, 0.1, 1.0, 4.0):
|
| 248 |
+
for rewards in itertools.product((0.0, 0.5, 1.0), repeat=arms):
|
| 249 |
+
gap = regularized_gap(reference, list(rewards), eta, reference)
|
| 250 |
+
maximum_hoeffding_violation = max(maximum_hoeffding_violation, gap - eta / 8)
|
| 251 |
+
hoeffding_checks += 1
|
| 252 |
+
|
| 253 |
+
ratios = [row["lower_scale_over_upper"] for row in counterfamily]
|
| 254 |
+
falsified = (
|
| 255 |
+
maximum_hoeffding_violation <= 1e-12
|
| 256 |
+
and all(row["eta_le_sqrt_T_over_K"] for row in counterfamily)
|
| 257 |
+
and all(not row["reward_interval_is_subset_0_1"] for row in counterfamily)
|
| 258 |
+
and all(right > left for left, right in zip(ratios, ratios[1:]))
|
| 259 |
+
)
|
| 260 |
+
return {
|
| 261 |
+
"outcome": "FALSIFIED_AS_STATED" if falsified else "COUNTEREXAMPLE_CHECK_FAILED",
|
| 262 |
+
"passed": falsified,
|
| 263 |
+
"scope": "Theorem 5.3 with its literal quantifiers K>=2 and 0<eta<=sqrt(T/K)",
|
| 264 |
+
"checks": {
|
| 265 |
+
"hoeffding_lemma_fixtures": hoeffding_checks,
|
| 266 |
+
"maximum_reference_policy_upper_violation": maximum_hoeffding_violation,
|
| 267 |
+
"counterfamily": counterfamily,
|
| 268 |
+
},
|
| 269 |
+
"proof_defects": [
|
| 270 |
+
"The theorem says K arms; the full proof constructs 2K arms (the overview silently renames K/2 pairs).",
|
| 271 |
+
"The proof sets alpha=2 log(2)/eta, so for eta<4 log(2) its means leave the stipulated reward range [0,1].",
|
| 272 |
+
"The shared-prior construction therefore cannot prove the theorem over the stated eta range.",
|
| 273 |
+
],
|
| 274 |
+
"counterargument": (
|
| 275 |
+
"Always playing the reference policy has per-round regret at most eta/8 by Hoeffding's lemma. "
|
| 276 |
+
"For T=K and eta=1/K, its total regret is at most 1/8 for every valid reward instance, while "
|
| 277 |
+
"eta*K*log(T/(eta^2*K))=2*log(K), so no parameter-uniform Omega constant can exist."
|
| 278 |
+
),
|
| 279 |
+
"conclusion": "The literal lower bound and its global near-tightness claim are false without additional parameter restrictions.",
|
| 280 |
+
}
|
| 281 |
+
|
| 282 |
+
|
| 283 |
+
def slow_lower_separation(arms: int, eta: float, delta: float) -> float:
|
| 284 |
+
x = eta * delta
|
| 285 |
+
log_first = math.log(math.exp(x) + arms - 1)
|
| 286 |
+
log_second = logsumexp([x, 2 * x, math.log(arms - 2)])
|
| 287 |
+
log_denominator = 2 * math.log(2 * math.exp(x) + arms - 2)
|
| 288 |
+
return (log_first + log_second - log_denominator) / eta
|
| 289 |
+
|
| 290 |
+
|
| 291 |
+
def claim_4_slow_lower_bound() -> dict:
|
| 292 |
+
counterfamily = []
|
| 293 |
+
for arms in (16, 64, 256, 1024, 4096):
|
| 294 |
+
horizon = 1
|
| 295 |
+
eta = math.log(arms) / math.sqrt(arms)
|
| 296 |
+
claimed_scale = math.sqrt(arms * horizon)
|
| 297 |
+
universal_upper = reference_policy_regret_upper(eta, horizon)
|
| 298 |
+
delta = math.sqrt(2 * arms / horizon)
|
| 299 |
+
counterfamily.append(
|
| 300 |
+
{
|
| 301 |
+
"K": arms,
|
| 302 |
+
"T": horizon,
|
| 303 |
+
"eta": eta,
|
| 304 |
+
"threshold": math.sqrt(horizon * math.log(arms) ** 2 / arms),
|
| 305 |
+
"claimed_lower_scale": claimed_scale,
|
| 306 |
+
"reference_policy_upper": universal_upper,
|
| 307 |
+
"lower_scale_over_upper": claimed_scale / universal_upper,
|
| 308 |
+
"paper_r2_arm2_mean": 2 * delta,
|
| 309 |
+
"paper_instance_is_in_0_1": 2 * delta <= 1,
|
| 310 |
+
}
|
| 311 |
+
)
|
| 312 |
+
|
| 313 |
+
intended_domain = []
|
| 314 |
+
for arms in (9, 16, 64, 256):
|
| 315 |
+
horizon = 64 * arms
|
| 316 |
+
delta = math.sqrt(2 * arms / horizon)
|
| 317 |
+
eta = math.sqrt(horizon * math.log(arms) ** 2 / arms)
|
| 318 |
+
separation = slow_lower_separation(arms, eta, delta)
|
| 319 |
+
trajectory_kl = 2 * horizon * delta * delta / (arms - 1)
|
| 320 |
+
intended_domain.append(
|
| 321 |
+
{
|
| 322 |
+
"K": arms,
|
| 323 |
+
"T": horizon,
|
| 324 |
+
"eta_delta": eta * delta,
|
| 325 |
+
"sqrt2_logK": math.sqrt(2) * math.log(arms),
|
| 326 |
+
"separation_over_delta": separation / delta,
|
| 327 |
+
"repaired_uniform_constant": 1 - 1 / math.sqrt(2),
|
| 328 |
+
"trajectory_KL_upper": trajectory_kl,
|
| 329 |
+
"reward_valid": 2 * delta <= 1,
|
| 330 |
+
}
|
| 331 |
+
)
|
| 332 |
+
|
| 333 |
+
falsified = (
|
| 334 |
+
all(abs(row["eta"] - row["threshold"]) <= 1e-12 for row in counterfamily)
|
| 335 |
+
and all(not row["paper_instance_is_in_0_1"] for row in counterfamily)
|
| 336 |
+
and all(row["separation_over_delta"] > row["repaired_uniform_constant"] for row in intended_domain)
|
| 337 |
+
)
|
| 338 |
+
return {
|
| 339 |
+
"outcome": "FALSIFIED_AS_STATED; REPAIRED_PROOF_IN_INTENDED_DOMAIN" if falsified else "COUNTEREXAMPLE_CHECK_FAILED",
|
| 340 |
+
"passed": falsified,
|
| 341 |
+
"scope": "Theorem 5.1 literal domain and its two-point proof",
|
| 342 |
+
"checks": {"counterfamily": counterfamily, "intended_T_ge_8K_domain": intended_domain},
|
| 343 |
+
"proof_defects": [
|
| 344 |
+
"No T-versus-K assumption is stated; the two-point rewards are valid only when T>=8K.",
|
| 345 |
+
"At the theorem threshold eta*delta=sqrt(2)*log(K), not 2*log(K) as printed.",
|
| 346 |
+
"The printed trajectory-KL substitution misses a factor two: it is at most 4K/(K-1), still at most 4.5 for K>=9.",
|
| 347 |
+
],
|
| 348 |
+
"counterargument": (
|
| 349 |
+
"At T=1 and eta=log(K)/sqrt(K), the theorem condition holds exactly. The reference-policy algorithm "
|
| 350 |
+
"has regret at most log(K)/(8 sqrt(K)) for every valid instance, whereas the claimed scale is sqrt(K); "
|
| 351 |
+
"their ratio diverges."
|
| 352 |
+
),
|
| 353 |
+
"repair": (
|
| 354 |
+
"For T>=8K, the source construction is reward-valid. Replacing delta/2 by "
|
| 355 |
+
"(1-1/sqrt(2))*delta and retaining the correct KL constant preserves Omega(sqrt(KT))."
|
| 356 |
+
),
|
| 357 |
+
"conclusion": "The literal theorem is false without a horizon assumption, although its intended large-horizon rate is repairable.",
|
| 358 |
+
}
|
| 359 |
+
|
| 360 |
+
|
| 361 |
+
def choose_action(probabilities: list[float], generator: random.Random) -> int:
|
| 362 |
+
draw = generator.random()
|
| 363 |
+
cumulative = 0.0
|
| 364 |
+
for index, probability in enumerate(probabilities):
|
| 365 |
+
cumulative += probability
|
| 366 |
+
if draw <= cumulative:
|
| 367 |
+
return index
|
| 368 |
+
return len(probabilities) - 1
|
| 369 |
+
|
| 370 |
+
|
| 371 |
+
def optimism_trial(seed: int, reduced_bonus: bool, arms: int, horizon: int, delta: float) -> bool:
|
| 372 |
+
generator = random.Random(seed)
|
| 373 |
+
rewards = [0.2 + 0.6 * index / (arms - 1) for index in range(arms)]
|
| 374 |
+
counts = [0] * arms
|
| 375 |
+
sums = [0.0] * arms
|
| 376 |
+
eta = 0.5
|
| 377 |
+
for _ in range(horizon):
|
| 378 |
+
confidence_log = math.log(1 / delta) if reduced_bonus else math.log(horizon * arms / delta)
|
| 379 |
+
estimates = [sums[index] / counts[index] if counts[index] else 0.0 for index in range(arms)]
|
| 380 |
+
bonuses = [math.sqrt(2 * confidence_log / max(count, 1)) for count in counts]
|
| 381 |
+
optimistic = [min(1.0, estimate + bonus) for estimate, bonus in zip(estimates, bonuses)]
|
| 382 |
+
probabilities = optimal_policy(optimistic, eta)
|
| 383 |
+
action = choose_action(probabilities, generator)
|
| 384 |
+
sums[action] += generator.gauss(rewards[action], 1.0)
|
| 385 |
+
counts[action] += 1
|
| 386 |
+
for index in range(arms):
|
| 387 |
+
estimate = sums[index] / counts[index] if counts[index] else 0.0
|
| 388 |
+
bonus = math.sqrt(2 * confidence_log / max(counts[index], 1))
|
| 389 |
+
if abs(estimate - rewards[index]) > bonus:
|
| 390 |
+
return True
|
| 391 |
+
return False
|
| 392 |
+
|
| 393 |
+
|
| 394 |
+
def wilson_interval(successes: int, trials: int, z: float = 1.959963984540054) -> list[float]:
|
| 395 |
+
rate = successes / trials
|
| 396 |
+
denominator = 1 + z * z / trials
|
| 397 |
+
center = (rate + z * z / (2 * trials)) / denominator
|
| 398 |
+
radius = z * math.sqrt(rate * (1 - rate) / trials + z * z / (4 * trials * trials)) / denominator
|
| 399 |
+
return [max(0.0, center - radius), min(1.0, center + radius)]
|
| 400 |
+
|
| 401 |
+
|
| 402 |
+
def claim_5_bonus_and_peeling() -> dict:
|
| 403 |
+
trials = 5_000
|
| 404 |
+
arms = 4
|
| 405 |
+
horizon = 128
|
| 406 |
+
delta = 0.1
|
| 407 |
+
full_failures = sum(
|
| 408 |
+
optimism_trial(SEED + 104_729 * trial, False, arms, horizon, delta) for trial in range(trials)
|
| 409 |
+
)
|
| 410 |
+
reduced_failures = sum(
|
| 411 |
+
optimism_trial(SEED + 104_729 * trial, True, arms, horizon, delta) for trial in range(trials)
|
| 412 |
+
)
|
| 413 |
+
|
| 414 |
+
conditional_checks = 0
|
| 415 |
+
maximum_mean_residual = 0.0
|
| 416 |
+
maximum_variance_violation = -math.inf
|
| 417 |
+
generator = random.Random(SEED)
|
| 418 |
+
counts = [0, 1, 3, 9]
|
| 419 |
+
for _ in range(10_000):
|
| 420 |
+
raw = [generator.random() for _ in counts]
|
| 421 |
+
total = sum(raw)
|
| 422 |
+
probabilities = [value / total for value in raw]
|
| 423 |
+
y = [1 / max(count, 1) for count in counts]
|
| 424 |
+
expectation = sum(p * value for p, value in zip(probabilities, y))
|
| 425 |
+
conditional_mean = sum(p * (expectation - value) for p, value in zip(probabilities, y))
|
| 426 |
+
conditional_variance = sum(p * (expectation - value) ** 2 for p, value in zip(probabilities, y))
|
| 427 |
+
expected_y = expectation
|
| 428 |
+
maximum_mean_residual = max(maximum_mean_residual, abs(conditional_mean))
|
| 429 |
+
maximum_variance_violation = max(maximum_variance_violation, conditional_variance - expected_y)
|
| 430 |
+
counts[choose_action(probabilities, generator)] += 1
|
| 431 |
+
conditional_checks += 1
|
| 432 |
+
|
| 433 |
+
full_rate = full_failures / trials
|
| 434 |
+
reduced_rate = reduced_failures / trials
|
| 435 |
+
zero_failure_exact_upper = 1 - 0.05 ** (1 / trials) if full_failures == 0 else None
|
| 436 |
+
passed = (
|
| 437 |
+
full_rate <= delta
|
| 438 |
+
and reduced_rate > full_rate
|
| 439 |
+
and maximum_mean_residual <= 1e-15
|
| 440 |
+
and maximum_variance_violation <= 1e-15
|
| 441 |
+
)
|
| 442 |
+
return {
|
| 443 |
+
"outcome": "VERIFIED" if passed else "NOT_VERIFIED",
|
| 444 |
+
"passed": passed,
|
| 445 |
+
"scope": "Algorithm 1 bonus formula, simultaneous optimism, and peeling/Freedman martingale conditions",
|
| 446 |
+
"checks": {
|
| 447 |
+
"seed": SEED,
|
| 448 |
+
"trials": trials,
|
| 449 |
+
"K": arms,
|
| 450 |
+
"T": horizon,
|
| 451 |
+
"delta": delta,
|
| 452 |
+
"full_bonus_failures": full_failures,
|
| 453 |
+
"full_bonus_failure_rate": full_rate,
|
| 454 |
+
"full_bonus_wilson_95pct": wilson_interval(full_failures, trials),
|
| 455 |
+
"zero_failure_exact_one_sided_95pct_upper": zero_failure_exact_upper,
|
| 456 |
+
"reduced_bonus_failures": reduced_failures,
|
| 457 |
+
"reduced_bonus_failure_rate": reduced_rate,
|
| 458 |
+
"reduced_bonus_wilson_95pct": wilson_interval(reduced_failures, trials),
|
| 459 |
+
"conditional_identity_cases": conditional_checks,
|
| 460 |
+
"maximum_conditional_mean_residual": maximum_mean_residual,
|
| 461 |
+
"maximum_variance_minus_Ey": maximum_variance_violation,
|
| 462 |
+
},
|
| 463 |
+
"control": "Replacing log(TK/delta) by log(1/delta) must produce a larger simultaneous-optimism failure rate.",
|
| 464 |
+
"conclusion": "The exact bonus and the martingale mean/variance conditions used by the peeling/Freedman argument are supported.",
|
| 465 |
+
}
|
| 466 |
+
|
| 467 |
+
|
| 468 |
+
def main() -> None:
|
| 469 |
+
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
|
| 470 |
+
claims = {
|
| 471 |
+
"claim_1": claim_1_fast_upper_bound(),
|
| 472 |
+
"claim_2": claim_2_slow_upper_bound(),
|
| 473 |
+
"claim_3": claim_3_fast_lower_bound(),
|
| 474 |
+
"claim_4": claim_4_slow_lower_bound(),
|
| 475 |
+
"claim_5": claim_5_bonus_and_peeling(),
|
| 476 |
+
}
|
| 477 |
+
report = {
|
| 478 |
+
"paper_id": PAPER_ID,
|
| 479 |
+
"arxiv_id": ARXIV_ID,
|
| 480 |
+
"runtime": "local CPU; Python standard library only",
|
| 481 |
+
"fixed_seed": SEED,
|
| 482 |
+
"claims": claims,
|
| 483 |
+
"all_audits_passed": all(claim["passed"] for claim in claims.values()),
|
| 484 |
+
"scientific_outcomes": {
|
| 485 |
+
key: claim["outcome"] for key, claim in claims.items()
|
| 486 |
+
},
|
| 487 |
+
}
|
| 488 |
+
output_path = OUTPUT_DIR / "audit_results.json"
|
| 489 |
+
output_path.write_text(json.dumps(report, indent=2, sort_keys=True) + "\n", encoding="utf-8")
|
| 490 |
+
print(json.dumps(report, indent=2, sort_keys=True))
|
| 491 |
+
|
| 492 |
+
|
| 493 |
+
if __name__ == "__main__":
|
| 494 |
+
main()
|
repro/src/verify_results.py
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
"""Independent invariants for the frozen XarOZG8Un0 audit output."""
|
| 3 |
+
|
| 4 |
+
from __future__ import annotations
|
| 5 |
+
|
| 6 |
+
import hashlib
|
| 7 |
+
import json
|
| 8 |
+
import math
|
| 9 |
+
from pathlib import Path
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
ROOT = Path(__file__).resolve().parents[2]
|
| 13 |
+
RESULTS = ROOT / "repro" / "outputs" / "audit_results.json"
|
| 14 |
+
EXPECTED_RESULTS_SHA256 = "af730f4bd42c31b6333a234b7a8eab76af6597edf2c9b4b89cc1ca7eedc2f41f"
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
def close(left: float, right: float, tolerance: float = 1e-12) -> bool:
|
| 18 |
+
return abs(left - right) <= tolerance * max(1.0, abs(left), abs(right))
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
def main() -> None:
|
| 22 |
+
raw = RESULTS.read_bytes()
|
| 23 |
+
digest = hashlib.sha256(raw).hexdigest()
|
| 24 |
+
report = json.loads(raw)
|
| 25 |
+
checks: dict[str, bool] = {}
|
| 26 |
+
|
| 27 |
+
checks["frozen_results_sha256"] = digest == EXPECTED_RESULTS_SHA256
|
| 28 |
+
checks["paper_identity"] = report["paper_id"] == "XarOZG8Un0" and report["arxiv_id"] == "2603.02155"
|
| 29 |
+
checks["all_audit_program_checks_passed"] = report["all_audits_passed"] is True
|
| 30 |
+
|
| 31 |
+
claim_3 = report["claims"]["claim_3"]
|
| 32 |
+
checks["claim_3_outcome"] = claim_3["outcome"] == "FALSIFIED_AS_STATED"
|
| 33 |
+
for row in claim_3["checks"]["counterfamily"]:
|
| 34 |
+
expected_lower = 2 * math.log(row["K"])
|
| 35 |
+
checks[f"claim_3_formula_K{row['K']}"] = (
|
| 36 |
+
row["T"] == row["K"]
|
| 37 |
+
and close(row["eta"], 1 / row["K"])
|
| 38 |
+
and close(row["claimed_lower_scale"], expected_lower)
|
| 39 |
+
and close(row["reference_policy_upper"], 1 / 8)
|
| 40 |
+
and row["eta_le_sqrt_T_over_K"]
|
| 41 |
+
)
|
| 42 |
+
|
| 43 |
+
claim_4 = report["claims"]["claim_4"]
|
| 44 |
+
checks["claim_4_outcome"] = claim_4["outcome"].startswith("FALSIFIED_AS_STATED")
|
| 45 |
+
for row in claim_4["checks"]["counterfamily"]:
|
| 46 |
+
expected_eta = math.log(row["K"]) / math.sqrt(row["K"])
|
| 47 |
+
checks[f"claim_4_formula_K{row['K']}"] = (
|
| 48 |
+
row["T"] == 1
|
| 49 |
+
and close(row["eta"], expected_eta)
|
| 50 |
+
and close(row["threshold"], expected_eta)
|
| 51 |
+
and close(row["claimed_lower_scale"], math.sqrt(row["K"]))
|
| 52 |
+
and not row["paper_instance_is_in_0_1"]
|
| 53 |
+
)
|
| 54 |
+
|
| 55 |
+
claim_5 = report["claims"]["claim_5"]["checks"]
|
| 56 |
+
checks["claim_5_trial_accounting"] = (
|
| 57 |
+
claim_5["trials"] == 5000
|
| 58 |
+
and close(claim_5["full_bonus_failure_rate"], claim_5["full_bonus_failures"] / claim_5["trials"])
|
| 59 |
+
and close(claim_5["reduced_bonus_failure_rate"], claim_5["reduced_bonus_failures"] / claim_5["trials"])
|
| 60 |
+
)
|
| 61 |
+
checks["claim_5_negative_control"] = (
|
| 62 |
+
claim_5["full_bonus_failure_rate"] <= claim_5["delta"]
|
| 63 |
+
and claim_5["reduced_bonus_failure_rate"] > 100 * claim_5["full_bonus_failure_rate"]
|
| 64 |
+
)
|
| 65 |
+
|
| 66 |
+
failed = [name for name, passed in checks.items() if not passed]
|
| 67 |
+
verification = {
|
| 68 |
+
"results_sha256": digest,
|
| 69 |
+
"checks": checks,
|
| 70 |
+
"failed": failed,
|
| 71 |
+
"passed": not failed,
|
| 72 |
+
}
|
| 73 |
+
output = ROOT / "repro" / "outputs" / "verification.json"
|
| 74 |
+
output.write_text(json.dumps(verification, indent=2, sort_keys=True) + "\n", encoding="utf-8")
|
| 75 |
+
print(json.dumps(verification, indent=2, sort_keys=True))
|
| 76 |
+
if failed:
|
| 77 |
+
raise SystemExit(1)
|
| 78 |
+
|
| 79 |
+
|
| 80 |
+
if __name__ == "__main__":
|
| 81 |
+
main()
|