Update logbook: Reproduction: Bayesian Tensor Decomposition with Diffusion Model Prior
Browse files- README.md +15 -5
- bucket-icon.svg +5 -0
- index.html +82 -17
- logbook.css +2142 -0
- logbook.js +0 -0
- logbook.json +95 -0
- pages/claim-1-joint-probabilistic-model-cusp-diffusion-prior/page.md +722 -0
- pages/claim-2-theorem-3-1-cusp-tail-shrinkage/page.md +1759 -0
- pages/claim-3-split-gibbs-sampler-noise-adaptive-coupling/page.md +73 -0
- pages/claim-4-theorem-3-4-stationary-bias-bound/page.md +981 -0
- pages/claim-5-ffhq-imagenet-inpainting-table-1/page.md +345 -0
- pages/claim-6-ood-high-resolution-2048x2048-table-2/page.md +0 -0
- pages/conclusion/page.md +85 -0
- pages/executive-summary/page.md +0 -0
- pages/index.md +14 -0
- trackio-logo-light.png +0 -0
- trackio-logo.png +0 -0
- trackio-wordmark-dark.png +0 -0
- workspace.json +29 -0
README.md
CHANGED
|
@@ -1,10 +1,20 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
title: "Reproduction: Bayesian Tensor Decomposition with Diffusion Model Prior"
|
| 3 |
+
emoji: π―
|
| 4 |
+
colorFrom: yellow
|
| 5 |
+
colorTo: red
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
+
tags:
|
| 9 |
+
- trackio
|
| 10 |
+
- trackio-logbook
|
| 11 |
+
- open-experiment
|
| 12 |
+
- icml2026-repro
|
| 13 |
+
- open-reproductions
|
| 14 |
+
- paper-q806xA8NPR
|
| 15 |
+
- trackio
|
| 16 |
---
|
| 17 |
|
| 18 |
+
# Reproduction: Bayesian Tensor Decomposition with Diffusion Model Prior
|
| 19 |
+
|
| 20 |
+
An open experiment logbook, published with [Trackio](https://github.com/gradio-app/trackio).
|
bucket-icon.svg
ADDED
|
|
index.html
CHANGED
|
@@ -1,19 +1,84 @@
|
|
| 1 |
<!doctype html>
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
</html>
|
|
|
|
| 1 |
<!doctype html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="utf-8" />
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
+
<title>Reproduction: Bayesian Tensor Decomposition with Diffusion Model Prior</title>
|
| 7 |
+
<link rel="stylesheet" href="./logbook.css" />
|
| 8 |
+
</head>
|
| 9 |
+
<body>
|
| 10 |
+
<div id="app">
|
| 11 |
+
<aside id="sidebar">
|
| 12 |
+
<div id="book-head">
|
| 13 |
+
<img id="book-wordmark" src="./trackio-wordmark-dark.png" alt="" />
|
| 14 |
+
<div id="book-title" class="sr-only">Logbook</div>
|
| 15 |
+
</div>
|
| 16 |
+
<nav id="tree"></nav>
|
| 17 |
+
<div id="sidebar-foot" hidden>
|
| 18 |
+
<button id="connect-btn" type="button">
|
| 19 |
+
<span class="ico">β</span> Collaborate with your agent
|
| 20 |
+
</button>
|
| 21 |
+
</div>
|
| 22 |
+
</aside>
|
| 23 |
+
<main id="content">
|
| 24 |
+
<nav id="view-tabs" aria-label="Logbook views">
|
| 25 |
+
<a data-view="code" href="#/view/code/index">
|
| 26 |
+
<svg viewBox="0 0 24 24" aria-hidden="true">
|
| 27 |
+
<path d="m18 16 4-4-4-4" />
|
| 28 |
+
<path d="m6 8-4 4 4 4" />
|
| 29 |
+
<path d="m14.5 4-5 16" />
|
| 30 |
+
</svg>
|
| 31 |
+
<span>Logbook</span>
|
| 32 |
+
</a>
|
| 33 |
+
<a data-view="trace" href="#/view/trace">
|
| 34 |
+
<svg viewBox="0 0 24 24" aria-hidden="true">
|
| 35 |
+
<path d="M8 5h13" />
|
| 36 |
+
<path d="M13 12h8" />
|
| 37 |
+
<path d="M13 19h8" />
|
| 38 |
+
<path d="M3 10a2 2 0 0 0 2 2h3" />
|
| 39 |
+
<path d="M3 5v12a2 2 0 0 0 2 2h3" />
|
| 40 |
+
</svg>
|
| 41 |
+
<span>Traces</span>
|
| 42 |
+
</a>
|
| 43 |
+
<a data-view="workspace" href="#/view/workspace">
|
| 44 |
+
<svg viewBox="0 0 24 24" aria-hidden="true">
|
| 45 |
+
<path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" />
|
| 46 |
+
</svg>
|
| 47 |
+
<span>Workspace</span>
|
| 48 |
+
</a>
|
| 49 |
+
</nav>
|
| 50 |
+
<header id="logbook-header">
|
| 51 |
+
<h1 id="logbook-title"></h1>
|
| 52 |
+
<div id="logbook-cli"></div>
|
| 53 |
+
</header>
|
| 54 |
+
<div id="page"></div>
|
| 55 |
+
</main>
|
| 56 |
+
</div>
|
| 57 |
+
|
| 58 |
+
<div id="modal" hidden>
|
| 59 |
+
<div class="modal-backdrop"></div>
|
| 60 |
+
<div class="modal-card" role="dialog" aria-modal="true">
|
| 61 |
+
<div class="modal-head">
|
| 62 |
+
<div class="modal-title">
|
| 63 |
+
<img class="modal-logo" src="./trackio-logo.png" alt="" />
|
| 64 |
+
Collaborate with your agent
|
| 65 |
+
</div>
|
| 66 |
+
<div class="modal-actions">
|
| 67 |
+
<button id="copy-agent" class="btn">Copy for agent</button>
|
| 68 |
+
<button id="modal-close" class="btn icon" aria-label="Close">Γ</button>
|
| 69 |
+
</div>
|
| 70 |
+
</div>
|
| 71 |
+
<div class="modal-body">
|
| 72 |
+
<p class="modal-intro">
|
| 73 |
+
Point your coding agent at this logbook. It reads a compact,
|
| 74 |
+
token-efficient version β and if you've given it write access to this
|
| 75 |
+
Space, it can add findings that sync back automatically.
|
| 76 |
+
</p>
|
| 77 |
+
<ol id="connect-steps"></ol>
|
| 78 |
+
</div>
|
| 79 |
+
</div>
|
| 80 |
+
</div>
|
| 81 |
+
|
| 82 |
+
<script src="./logbook.js"></script>
|
| 83 |
+
</body>
|
| 84 |
</html>
|
logbook.css
ADDED
|
@@ -0,0 +1,2142 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
:root {
|
| 2 |
+
--bg: #ffffff;
|
| 3 |
+
--paper: #ffffff;
|
| 4 |
+
--panel: #ffffff;
|
| 5 |
+
--ink: #1f2937;
|
| 6 |
+
--muted: #6b7280;
|
| 7 |
+
--line: #e5e7eb;
|
| 8 |
+
--accent: #f97316;
|
| 9 |
+
--accent-strong: #ea580c;
|
| 10 |
+
--accent-soft: #fff7ed;
|
| 11 |
+
--accent-line: rgba(249, 115, 22, 0.16);
|
| 12 |
+
--grid-line: rgba(31, 41, 55, 0.02);
|
| 13 |
+
--code-bg: #f3f4f6;
|
| 14 |
+
--radius: 12px;
|
| 15 |
+
--sidebar-width: 280px;
|
| 16 |
+
--content-gutter: 40px;
|
| 17 |
+
--serif: ui-serif, "Iowan Old Style", "Palatino Linotype", Georgia, serif;
|
| 18 |
+
--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial,
|
| 19 |
+
sans-serif;
|
| 20 |
+
--mono: "SFMono-Regular", "Cascadia Mono", "JetBrains Mono", Menlo, Consolas,
|
| 21 |
+
ui-monospace, monospace;
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
* {
|
| 25 |
+
box-sizing: border-box;
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
html,
|
| 29 |
+
body {
|
| 30 |
+
margin: 0;
|
| 31 |
+
padding: 0;
|
| 32 |
+
}
|
| 33 |
+
|
| 34 |
+
html {
|
| 35 |
+
scroll-behavior: smooth;
|
| 36 |
+
scrollbar-gutter: stable;
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
body {
|
| 40 |
+
background: var(--bg);
|
| 41 |
+
color: var(--ink);
|
| 42 |
+
font-family: var(--sans);
|
| 43 |
+
font-size: 13px;
|
| 44 |
+
line-height: 1.65;
|
| 45 |
+
-webkit-font-smoothing: antialiased;
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
#app {
|
| 49 |
+
display: flex;
|
| 50 |
+
min-height: 100vh;
|
| 51 |
+
}
|
| 52 |
+
|
| 53 |
+
body[data-view="trace"] #sidebar-foot,
|
| 54 |
+
body[data-view="workspace"] #sidebar-foot {
|
| 55 |
+
display: none;
|
| 56 |
+
}
|
| 57 |
+
|
| 58 |
+
/* ---- sidebar (composition-book cover) ---- */
|
| 59 |
+
#sidebar {
|
| 60 |
+
width: var(--sidebar-width);
|
| 61 |
+
flex: 0 0 var(--sidebar-width);
|
| 62 |
+
background: #17181c;
|
| 63 |
+
color: #e7e7ea;
|
| 64 |
+
position: sticky;
|
| 65 |
+
top: 0;
|
| 66 |
+
height: 100vh;
|
| 67 |
+
overflow-y: auto;
|
| 68 |
+
padding: 22px 16px;
|
| 69 |
+
display: flex;
|
| 70 |
+
flex-direction: column;
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
#book-head {
|
| 74 |
+
display: flex;
|
| 75 |
+
align-items: center;
|
| 76 |
+
gap: 10px;
|
| 77 |
+
padding: 8px;
|
| 78 |
+
margin-bottom: 12px;
|
| 79 |
+
border-radius: 10px;
|
| 80 |
+
cursor: pointer;
|
| 81 |
+
transition: background 0.12s;
|
| 82 |
+
}
|
| 83 |
+
#book-head:hover {
|
| 84 |
+
background: rgba(255, 255, 255, 0.05);
|
| 85 |
+
}
|
| 86 |
+
#book-wordmark {
|
| 87 |
+
width: 154px;
|
| 88 |
+
height: auto;
|
| 89 |
+
object-fit: contain;
|
| 90 |
+
}
|
| 91 |
+
.sr-only {
|
| 92 |
+
position: absolute;
|
| 93 |
+
width: 1px;
|
| 94 |
+
height: 1px;
|
| 95 |
+
padding: 0;
|
| 96 |
+
margin: -1px;
|
| 97 |
+
overflow: hidden;
|
| 98 |
+
clip: rect(0, 0, 0, 0);
|
| 99 |
+
white-space: nowrap;
|
| 100 |
+
border: 0;
|
| 101 |
+
}
|
| 102 |
+
|
| 103 |
+
#tree {
|
| 104 |
+
flex: 1;
|
| 105 |
+
padding-top: 8px;
|
| 106 |
+
}
|
| 107 |
+
|
| 108 |
+
#tree .tree-label {
|
| 109 |
+
padding: 6px 10px 8px;
|
| 110 |
+
color: #777a83;
|
| 111 |
+
font-size: 10px;
|
| 112 |
+
font-weight: 700;
|
| 113 |
+
letter-spacing: 0.12em;
|
| 114 |
+
text-transform: uppercase;
|
| 115 |
+
}
|
| 116 |
+
|
| 117 |
+
#tree a {
|
| 118 |
+
display: block;
|
| 119 |
+
padding: 6px 10px;
|
| 120 |
+
border-radius: 8px;
|
| 121 |
+
color: #c3c4cb;
|
| 122 |
+
text-decoration: none;
|
| 123 |
+
font-size: 14px;
|
| 124 |
+
transition: background 0.12s, color 0.12s;
|
| 125 |
+
overflow: hidden;
|
| 126 |
+
text-overflow: ellipsis;
|
| 127 |
+
white-space: nowrap;
|
| 128 |
+
}
|
| 129 |
+
|
| 130 |
+
#tree a:hover {
|
| 131 |
+
background: rgba(255, 255, 255, 0.06);
|
| 132 |
+
color: #ffffff;
|
| 133 |
+
}
|
| 134 |
+
|
| 135 |
+
#tree a.active {
|
| 136 |
+
background: rgba(249, 115, 22, 0.16);
|
| 137 |
+
color: #fdba74;
|
| 138 |
+
font-weight: 600;
|
| 139 |
+
}
|
| 140 |
+
|
| 141 |
+
#tree a .tree-mark {
|
| 142 |
+
color: #6b6d76;
|
| 143 |
+
}
|
| 144 |
+
|
| 145 |
+
#tree a:hover .tree-mark,
|
| 146 |
+
#tree a.active .tree-mark {
|
| 147 |
+
color: inherit;
|
| 148 |
+
opacity: 0.6;
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
#tree .depth-1 {
|
| 152 |
+
padding-left: 22px;
|
| 153 |
+
}
|
| 154 |
+
#tree .depth-2 {
|
| 155 |
+
padding-left: 34px;
|
| 156 |
+
}
|
| 157 |
+
#tree .depth-3 {
|
| 158 |
+
padding-left: 46px;
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
|
| 162 |
+
/* ---- content ---- */
|
| 163 |
+
#content {
|
| 164 |
+
flex: 1;
|
| 165 |
+
min-width: 0;
|
| 166 |
+
padding: 24px
|
| 167 |
+
clamp(
|
| 168 |
+
var(--content-gutter),
|
| 169 |
+
calc(100vw - 960px),
|
| 170 |
+
calc(var(--sidebar-width) + var(--content-gutter))
|
| 171 |
+
)
|
| 172 |
+
120px var(--content-gutter);
|
| 173 |
+
background-color: var(--paper);
|
| 174 |
+
background-image:
|
| 175 |
+
linear-gradient(var(--grid-line) 1px, transparent 1px),
|
| 176 |
+
linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);
|
| 177 |
+
background-size: 26px 26px;
|
| 178 |
+
background-position: center top;
|
| 179 |
+
}
|
| 180 |
+
|
| 181 |
+
#logbook-header {
|
| 182 |
+
width: 100%;
|
| 183 |
+
max-width: 1080px;
|
| 184 |
+
margin: 0 auto 20px;
|
| 185 |
+
}
|
| 186 |
+
#logbook-title {
|
| 187 |
+
font-family: var(--serif);
|
| 188 |
+
font-size: 34px;
|
| 189 |
+
line-height: 1.15;
|
| 190 |
+
letter-spacing: -0.02em;
|
| 191 |
+
margin: 0 0 10px;
|
| 192 |
+
overflow-wrap: anywhere;
|
| 193 |
+
}
|
| 194 |
+
#logbook-cli {
|
| 195 |
+
display: grid;
|
| 196 |
+
gap: 7px;
|
| 197 |
+
}
|
| 198 |
+
|
| 199 |
+
#page {
|
| 200 |
+
width: 100%;
|
| 201 |
+
min-width: 0;
|
| 202 |
+
max-width: 1080px;
|
| 203 |
+
margin: 0 auto;
|
| 204 |
+
}
|
| 205 |
+
|
| 206 |
+
.page-section {
|
| 207 |
+
scroll-margin-top: 40px;
|
| 208 |
+
padding: 0 0 35px;
|
| 209 |
+
margin: 0 0 32px;
|
| 210 |
+
}
|
| 211 |
+
|
| 212 |
+
.page-section:last-child {
|
| 213 |
+
margin-bottom: 0;
|
| 214 |
+
}
|
| 215 |
+
|
| 216 |
+
.page-layout {
|
| 217 |
+
display: block;
|
| 218 |
+
}
|
| 219 |
+
|
| 220 |
+
.page-body {
|
| 221 |
+
min-width: 0;
|
| 222 |
+
}
|
| 223 |
+
|
| 224 |
+
.resource-anchor {
|
| 225 |
+
display: block;
|
| 226 |
+
height: 0;
|
| 227 |
+
overflow: hidden;
|
| 228 |
+
}
|
| 229 |
+
|
| 230 |
+
/* ---- pinned notes ---- */
|
| 231 |
+
.pinned-notes {
|
| 232 |
+
margin: 30px 0 32px;
|
| 233 |
+
}
|
| 234 |
+
.pinned-notes-list .cell {
|
| 235 |
+
margin: 0;
|
| 236 |
+
}
|
| 237 |
+
.pinned-notes-list .cell-title {
|
| 238 |
+
display: flex;
|
| 239 |
+
align-items: center;
|
| 240 |
+
gap: 7px;
|
| 241 |
+
}
|
| 242 |
+
.pin-ico {
|
| 243 |
+
flex: 0 0 auto;
|
| 244 |
+
width: 14px;
|
| 245 |
+
height: 14px;
|
| 246 |
+
fill: var(--accent);
|
| 247 |
+
stroke: none;
|
| 248 |
+
}
|
| 249 |
+
.pinned-notes-list .cell + .cell {
|
| 250 |
+
margin-top: 12px;
|
| 251 |
+
}
|
| 252 |
+
.book-intro.has-pinned-notes {
|
| 253 |
+
border-bottom: none;
|
| 254 |
+
padding-bottom: 22px;
|
| 255 |
+
margin-bottom: 30px;
|
| 256 |
+
}
|
| 257 |
+
.book-intro.book-intro-tight {
|
| 258 |
+
border-bottom: none;
|
| 259 |
+
padding-bottom: 4px;
|
| 260 |
+
margin-bottom: 20px;
|
| 261 |
+
}
|
| 262 |
+
|
| 263 |
+
#page h1 {
|
| 264 |
+
font-family: var(--serif);
|
| 265 |
+
font-size: 34px;
|
| 266 |
+
line-height: 1.15;
|
| 267 |
+
letter-spacing: -0.02em;
|
| 268 |
+
margin: 0 0 8px;
|
| 269 |
+
overflow-wrap: anywhere;
|
| 270 |
+
}
|
| 271 |
+
|
| 272 |
+
#page .page-section:not(.book-intro) h1 {
|
| 273 |
+
font-size: 26px;
|
| 274 |
+
}
|
| 275 |
+
|
| 276 |
+
#page h2 {
|
| 277 |
+
font-family: var(--serif);
|
| 278 |
+
font-size: 24px;
|
| 279 |
+
margin: 36px 0 10px;
|
| 280 |
+
}
|
| 281 |
+
|
| 282 |
+
#page h3 {
|
| 283 |
+
font-size: 17px;
|
| 284 |
+
font-weight: 700;
|
| 285 |
+
margin: 26px 0 2px;
|
| 286 |
+
letter-spacing: -0.01em;
|
| 287 |
+
}
|
| 288 |
+
|
| 289 |
+
#page h3::before {
|
| 290 |
+
content: "";
|
| 291 |
+
display: inline-block;
|
| 292 |
+
width: 7px;
|
| 293 |
+
height: 7px;
|
| 294 |
+
border-radius: 2px;
|
| 295 |
+
background: var(--accent);
|
| 296 |
+
margin-right: 10px;
|
| 297 |
+
vertical-align: middle;
|
| 298 |
+
transform: translateY(-1px);
|
| 299 |
+
}
|
| 300 |
+
|
| 301 |
+
#page p {
|
| 302 |
+
margin: 10px 0;
|
| 303 |
+
}
|
| 304 |
+
|
| 305 |
+
#page blockquote {
|
| 306 |
+
margin: 14px 0;
|
| 307 |
+
padding: 2px 16px;
|
| 308 |
+
border-left: 3px solid #fdba74;
|
| 309 |
+
color: var(--muted);
|
| 310 |
+
}
|
| 311 |
+
|
| 312 |
+
#page hr {
|
| 313 |
+
display: none;
|
| 314 |
+
}
|
| 315 |
+
|
| 316 |
+
#page code {
|
| 317 |
+
font-family: var(--mono);
|
| 318 |
+
font-size: 0.86em;
|
| 319 |
+
background: var(--code-bg);
|
| 320 |
+
padding: 2px 6px;
|
| 321 |
+
border-radius: 6px;
|
| 322 |
+
}
|
| 323 |
+
|
| 324 |
+
#page pre {
|
| 325 |
+
max-width: 100%;
|
| 326 |
+
background: var(--code-bg);
|
| 327 |
+
border: 1px solid var(--line);
|
| 328 |
+
border-radius: var(--radius);
|
| 329 |
+
padding: 14px 16px;
|
| 330 |
+
overflow-x: auto;
|
| 331 |
+
}
|
| 332 |
+
#page pre code {
|
| 333 |
+
background: none;
|
| 334 |
+
padding: 0;
|
| 335 |
+
font-size: 11.5px;
|
| 336 |
+
}
|
| 337 |
+
|
| 338 |
+
/* ---- code blocks + collapsible accordion ---- */
|
| 339 |
+
#page pre.hl {
|
| 340 |
+
background: #17181c;
|
| 341 |
+
border: none;
|
| 342 |
+
color: #e7e7ea;
|
| 343 |
+
font-size: 13px;
|
| 344 |
+
line-height: 1.58;
|
| 345 |
+
}
|
| 346 |
+
#page pre.hl code {
|
| 347 |
+
color: inherit;
|
| 348 |
+
font-family: var(--mono);
|
| 349 |
+
}
|
| 350 |
+
.code-accordion {
|
| 351 |
+
border: 1px solid rgba(249, 115, 22, 0.2);
|
| 352 |
+
border-radius: 8px;
|
| 353 |
+
overflow: hidden;
|
| 354 |
+
margin: 12px 0;
|
| 355 |
+
background: #17181c;
|
| 356 |
+
}
|
| 357 |
+
.code-accordion summary {
|
| 358 |
+
list-style: none;
|
| 359 |
+
cursor: pointer;
|
| 360 |
+
display: flex;
|
| 361 |
+
align-items: center;
|
| 362 |
+
gap: 9px;
|
| 363 |
+
padding: 9px 12px;
|
| 364 |
+
font-family: var(--mono);
|
| 365 |
+
font-size: 11.5px;
|
| 366 |
+
font-weight: 700;
|
| 367 |
+
color: #e7e7ea;
|
| 368 |
+
background: #1e2027;
|
| 369 |
+
user-select: none;
|
| 370 |
+
overflow-wrap: anywhere;
|
| 371 |
+
}
|
| 372 |
+
.code-accordion summary::-webkit-details-marker {
|
| 373 |
+
display: none;
|
| 374 |
+
}
|
| 375 |
+
.code-accordion summary::after {
|
| 376 |
+
content: "βΈ";
|
| 377 |
+
margin-left: auto;
|
| 378 |
+
color: var(--accent);
|
| 379 |
+
transition: transform 0.12s;
|
| 380 |
+
transform: rotate(180deg);
|
| 381 |
+
}
|
| 382 |
+
.code-accordion[open] summary::after {
|
| 383 |
+
transform: rotate(90deg);
|
| 384 |
+
}
|
| 385 |
+
.code-accordion .code-ico {
|
| 386 |
+
color: var(--accent);
|
| 387 |
+
font-weight: 700;
|
| 388 |
+
}
|
| 389 |
+
.code-accordion pre.hl {
|
| 390 |
+
margin: 0;
|
| 391 |
+
border-radius: 0;
|
| 392 |
+
border: none;
|
| 393 |
+
border-top: 1px solid rgba(249, 115, 22, 0.16);
|
| 394 |
+
}
|
| 395 |
+
.tok-comment {
|
| 396 |
+
color: #7a7d87;
|
| 397 |
+
font-style: italic;
|
| 398 |
+
}
|
| 399 |
+
.tok-string {
|
| 400 |
+
color: #a5d6a7;
|
| 401 |
+
}
|
| 402 |
+
.tok-keyword {
|
| 403 |
+
color: #fdba74;
|
| 404 |
+
}
|
| 405 |
+
.tok-number {
|
| 406 |
+
color: #7fd0e0;
|
| 407 |
+
}
|
| 408 |
+
|
| 409 |
+
#page a {
|
| 410 |
+
color: var(--accent);
|
| 411 |
+
}
|
| 412 |
+
|
| 413 |
+
#page ul {
|
| 414 |
+
padding-left: 20px;
|
| 415 |
+
}
|
| 416 |
+
|
| 417 |
+
.ts {
|
| 418 |
+
font-family: var(--mono);
|
| 419 |
+
font-size: 12px;
|
| 420 |
+
color: var(--muted);
|
| 421 |
+
background: none;
|
| 422 |
+
padding: 0;
|
| 423 |
+
}
|
| 424 |
+
|
| 425 |
+
/* ---- notebook-style cells ---- */
|
| 426 |
+
.cell {
|
| 427 |
+
max-width: 100%;
|
| 428 |
+
margin: 0 0 32px;
|
| 429 |
+
background: none;
|
| 430 |
+
border: none;
|
| 431 |
+
border-radius: 0;
|
| 432 |
+
box-shadow: none;
|
| 433 |
+
overflow: visible;
|
| 434 |
+
}
|
| 435 |
+
.cell-head {
|
| 436 |
+
display: flex;
|
| 437 |
+
justify-content: space-between;
|
| 438 |
+
gap: 16px;
|
| 439 |
+
align-items: baseline;
|
| 440 |
+
padding: 0 0 5px;
|
| 441 |
+
background: none;
|
| 442 |
+
border-bottom: none;
|
| 443 |
+
}
|
| 444 |
+
.cell-head.no-title {
|
| 445 |
+
justify-content: flex-end;
|
| 446 |
+
padding: 0 0 3px;
|
| 447 |
+
}
|
| 448 |
+
.cell-title {
|
| 449 |
+
flex: 1;
|
| 450 |
+
min-width: 0;
|
| 451 |
+
font-size: 13px;
|
| 452 |
+
font-weight: 650;
|
| 453 |
+
color: var(--ink);
|
| 454 |
+
line-height: 1.35;
|
| 455 |
+
overflow-wrap: anywhere;
|
| 456 |
+
}
|
| 457 |
+
.cell-meta {
|
| 458 |
+
flex: 0 0 auto;
|
| 459 |
+
display: flex;
|
| 460 |
+
align-items: center;
|
| 461 |
+
gap: 10px;
|
| 462 |
+
font-family: var(--sans);
|
| 463 |
+
font-size: 13px;
|
| 464 |
+
color: var(--muted);
|
| 465 |
+
}
|
| 466 |
+
.cell-open {
|
| 467 |
+
flex: 0 0 auto;
|
| 468 |
+
font-family: var(--mono);
|
| 469 |
+
font-size: 12px;
|
| 470 |
+
color: var(--accent);
|
| 471 |
+
text-decoration: none;
|
| 472 |
+
}
|
| 473 |
+
.cell-open:hover {
|
| 474 |
+
color: var(--accent-strong);
|
| 475 |
+
}
|
| 476 |
+
.cell-body {
|
| 477 |
+
min-width: 0;
|
| 478 |
+
padding: 0;
|
| 479 |
+
}
|
| 480 |
+
.cell.dashboard .cell-body {
|
| 481 |
+
padding: 0;
|
| 482 |
+
}
|
| 483 |
+
#page .cell-body h1,
|
| 484 |
+
#page .cell-body h2 {
|
| 485 |
+
font-family: var(--sans);
|
| 486 |
+
font-size: 17px;
|
| 487 |
+
font-weight: 700;
|
| 488 |
+
letter-spacing: -0.01em;
|
| 489 |
+
line-height: 1.35;
|
| 490 |
+
margin: 22px 0 6px;
|
| 491 |
+
}
|
| 492 |
+
#page .cell-body > :first-child {
|
| 493 |
+
margin-top: 0;
|
| 494 |
+
}
|
| 495 |
+
#page .cell-body > :last-child {
|
| 496 |
+
margin-bottom: 0;
|
| 497 |
+
}
|
| 498 |
+
.figure-fit {
|
| 499 |
+
position: relative;
|
| 500 |
+
overflow: hidden;
|
| 501 |
+
min-height: 160px;
|
| 502 |
+
border: 1px solid var(--line);
|
| 503 |
+
border-radius: 8px;
|
| 504 |
+
background: #fff;
|
| 505 |
+
}
|
| 506 |
+
.figure-fit[hidden] {
|
| 507 |
+
display: none;
|
| 508 |
+
}
|
| 509 |
+
.figure-fit:fullscreen,
|
| 510 |
+
.figure-fit:-webkit-full-screen {
|
| 511 |
+
width: 100%;
|
| 512 |
+
height: 100%;
|
| 513 |
+
border: none;
|
| 514 |
+
border-radius: 0;
|
| 515 |
+
}
|
| 516 |
+
.figure-frame {
|
| 517 |
+
display: block;
|
| 518 |
+
width: 100%;
|
| 519 |
+
min-height: 160px;
|
| 520 |
+
border: none;
|
| 521 |
+
background: #fff;
|
| 522 |
+
}
|
| 523 |
+
.figure-frame[hidden],
|
| 524 |
+
.figure-raw[hidden] {
|
| 525 |
+
display: none;
|
| 526 |
+
}
|
| 527 |
+
.fig-switch {
|
| 528 |
+
position: relative;
|
| 529 |
+
display: inline-flex;
|
| 530 |
+
flex: 0 0 auto;
|
| 531 |
+
border: 1px solid var(--line);
|
| 532 |
+
border-radius: 999px;
|
| 533 |
+
background: var(--code-bg);
|
| 534 |
+
padding: 2px;
|
| 535 |
+
}
|
| 536 |
+
.fig-switch button {
|
| 537 |
+
position: relative;
|
| 538 |
+
z-index: 1;
|
| 539 |
+
flex: 1;
|
| 540 |
+
min-width: 62px;
|
| 541 |
+
border: none;
|
| 542 |
+
background: none;
|
| 543 |
+
font-family: var(--sans);
|
| 544 |
+
font-size: 12px;
|
| 545 |
+
font-weight: 600;
|
| 546 |
+
color: var(--muted);
|
| 547 |
+
padding: 3px 12px;
|
| 548 |
+
border-radius: 999px;
|
| 549 |
+
cursor: pointer;
|
| 550 |
+
transition: color 0.15s;
|
| 551 |
+
}
|
| 552 |
+
.fig-switch button.active {
|
| 553 |
+
color: var(--accent-strong);
|
| 554 |
+
}
|
| 555 |
+
.fig-switch-thumb {
|
| 556 |
+
position: absolute;
|
| 557 |
+
top: 2px;
|
| 558 |
+
bottom: 2px;
|
| 559 |
+
left: 2px;
|
| 560 |
+
width: calc(50% - 2px);
|
| 561 |
+
border-radius: 999px;
|
| 562 |
+
background: var(--panel);
|
| 563 |
+
border: 1px solid rgba(249, 115, 22, 0.35);
|
| 564 |
+
box-shadow: 0 1px 4px rgba(31, 41, 55, 0.08);
|
| 565 |
+
transition: transform 0.18s ease;
|
| 566 |
+
}
|
| 567 |
+
.fig-switch.raw .fig-switch-thumb {
|
| 568 |
+
transform: translateX(100%);
|
| 569 |
+
}
|
| 570 |
+
#page .figure-raw pre {
|
| 571 |
+
margin: 0;
|
| 572 |
+
max-height: 420px;
|
| 573 |
+
overflow: auto;
|
| 574 |
+
font-family: var(--mono);
|
| 575 |
+
font-size: 13px;
|
| 576 |
+
line-height: 1.55;
|
| 577 |
+
background: var(--code-bg);
|
| 578 |
+
border: 1px solid var(--line);
|
| 579 |
+
border-radius: 8px;
|
| 580 |
+
padding: 12px 14px;
|
| 581 |
+
}
|
| 582 |
+
/* ---- figure fullscreen ---- */
|
| 583 |
+
.cell-fullscreen {
|
| 584 |
+
position: relative;
|
| 585 |
+
display: inline-flex;
|
| 586 |
+
flex: 0 0 auto;
|
| 587 |
+
}
|
| 588 |
+
.cell-fullscreen-btn {
|
| 589 |
+
display: inline-flex;
|
| 590 |
+
align-items: center;
|
| 591 |
+
justify-content: center;
|
| 592 |
+
width: 26px;
|
| 593 |
+
height: 26px;
|
| 594 |
+
padding: 0;
|
| 595 |
+
border: 1px solid var(--line);
|
| 596 |
+
border-radius: 999px;
|
| 597 |
+
background: var(--code-bg);
|
| 598 |
+
color: var(--muted);
|
| 599 |
+
cursor: pointer;
|
| 600 |
+
transition: color 0.15s, border-color 0.15s, background 0.15s;
|
| 601 |
+
}
|
| 602 |
+
.cell-fullscreen-btn:hover {
|
| 603 |
+
color: var(--accent-strong);
|
| 604 |
+
border-color: rgba(249, 115, 22, 0.35);
|
| 605 |
+
background: var(--accent-soft);
|
| 606 |
+
}
|
| 607 |
+
.cell-fullscreen-btn svg {
|
| 608 |
+
width: 14px;
|
| 609 |
+
height: 14px;
|
| 610 |
+
}
|
| 611 |
+
/* ---- copyable snippets ---- */
|
| 612 |
+
.snippet {
|
| 613 |
+
position: relative;
|
| 614 |
+
}
|
| 615 |
+
.copy-snippet {
|
| 616 |
+
position: absolute;
|
| 617 |
+
top: 7px;
|
| 618 |
+
right: 8px;
|
| 619 |
+
width: 24px;
|
| 620 |
+
height: 24px;
|
| 621 |
+
border: none;
|
| 622 |
+
border-radius: 6px;
|
| 623 |
+
background: rgba(255, 255, 255, 0.08);
|
| 624 |
+
color: #9a9da8;
|
| 625 |
+
font-size: 12px;
|
| 626 |
+
line-height: 1;
|
| 627 |
+
cursor: pointer;
|
| 628 |
+
opacity: 0;
|
| 629 |
+
transition: opacity 0.12s, color 0.12s, background 0.12s;
|
| 630 |
+
}
|
| 631 |
+
.snippet:hover .copy-snippet,
|
| 632 |
+
.jp-out:hover .copy-snippet,
|
| 633 |
+
.figure-raw:hover .copy-snippet,
|
| 634 |
+
.code-accordion summary:hover .copy-snippet {
|
| 635 |
+
opacity: 1;
|
| 636 |
+
}
|
| 637 |
+
.copy-snippet:hover {
|
| 638 |
+
color: #ffffff;
|
| 639 |
+
background: rgba(255, 255, 255, 0.16);
|
| 640 |
+
}
|
| 641 |
+
.copy-snippet.copied {
|
| 642 |
+
color: #52d08a;
|
| 643 |
+
opacity: 1;
|
| 644 |
+
}
|
| 645 |
+
.code-accordion .code-name {
|
| 646 |
+
user-select: text;
|
| 647 |
+
cursor: text;
|
| 648 |
+
}
|
| 649 |
+
.jp-out,
|
| 650 |
+
.figure-raw {
|
| 651 |
+
position: relative;
|
| 652 |
+
}
|
| 653 |
+
.jp-out .copy-snippet,
|
| 654 |
+
.figure-raw .copy-snippet {
|
| 655 |
+
background: var(--code-bg);
|
| 656 |
+
color: var(--muted);
|
| 657 |
+
border: 1px solid var(--line);
|
| 658 |
+
}
|
| 659 |
+
.jp-out .copy-snippet:hover,
|
| 660 |
+
.figure-raw .copy-snippet:hover {
|
| 661 |
+
color: var(--accent-strong);
|
| 662 |
+
background: var(--panel);
|
| 663 |
+
}
|
| 664 |
+
|
| 665 |
+
/* ---- jupyter-style code cells ---- */
|
| 666 |
+
.jp {
|
| 667 |
+
border: 1px solid var(--line);
|
| 668 |
+
border-radius: 10px;
|
| 669 |
+
overflow: hidden;
|
| 670 |
+
margin: 0;
|
| 671 |
+
background: var(--panel);
|
| 672 |
+
}
|
| 673 |
+
.jp-cmd {
|
| 674 |
+
display: flex;
|
| 675 |
+
align-items: baseline;
|
| 676 |
+
gap: 9px;
|
| 677 |
+
position: relative;
|
| 678 |
+
padding: 10px 16px 10px 0;
|
| 679 |
+
font-family: var(--mono);
|
| 680 |
+
font-size: 12px;
|
| 681 |
+
color: #8b8e98;
|
| 682 |
+
}
|
| 683 |
+
.jp-cmd-prompt {
|
| 684 |
+
color: var(--accent);
|
| 685 |
+
font-weight: 700;
|
| 686 |
+
}
|
| 687 |
+
#page .jp-cmd code {
|
| 688 |
+
min-width: 0;
|
| 689 |
+
color: #b6b9c2;
|
| 690 |
+
font-family: var(--mono);
|
| 691 |
+
font-size: 12px;
|
| 692 |
+
background: none;
|
| 693 |
+
padding: 0;
|
| 694 |
+
border-radius: 0;
|
| 695 |
+
overflow-wrap: anywhere;
|
| 696 |
+
}
|
| 697 |
+
.jp-cmd:hover .copy-snippet {
|
| 698 |
+
opacity: 1;
|
| 699 |
+
}
|
| 700 |
+
.jp-in-body .jp-cmd + .code-accordion,
|
| 701 |
+
.jp-in-body .jp-cmd + .snippet {
|
| 702 |
+
border-top: 1px solid rgba(255, 255, 255, 0.09);
|
| 703 |
+
}
|
| 704 |
+
.jp-gutter {
|
| 705 |
+
flex: 0 0 46px;
|
| 706 |
+
padding: 13px 0 0 13px;
|
| 707 |
+
font-family: var(--mono);
|
| 708 |
+
font-size: 10.5px;
|
| 709 |
+
letter-spacing: 0.07em;
|
| 710 |
+
text-transform: uppercase;
|
| 711 |
+
font-weight: 600;
|
| 712 |
+
user-select: none;
|
| 713 |
+
}
|
| 714 |
+
.jp-in {
|
| 715 |
+
display: flex;
|
| 716 |
+
background: #17181c;
|
| 717 |
+
}
|
| 718 |
+
.jp-in .jp-gutter {
|
| 719 |
+
color: #6f727d;
|
| 720 |
+
}
|
| 721 |
+
.jp-in-body {
|
| 722 |
+
flex: 1;
|
| 723 |
+
min-width: 0;
|
| 724 |
+
}
|
| 725 |
+
#page .jp-in-body pre.hl {
|
| 726 |
+
margin: 0;
|
| 727 |
+
border: none;
|
| 728 |
+
border-radius: 0;
|
| 729 |
+
background: none;
|
| 730 |
+
padding: 12px 16px 12px 0;
|
| 731 |
+
overflow-y: auto;
|
| 732 |
+
max-height: 26em;
|
| 733 |
+
}
|
| 734 |
+
.jp-in-body .code-accordion {
|
| 735 |
+
margin: 0;
|
| 736 |
+
border: none;
|
| 737 |
+
border-top: 1px solid rgba(255, 255, 255, 0.09);
|
| 738 |
+
border-radius: 0;
|
| 739 |
+
background: none;
|
| 740 |
+
}
|
| 741 |
+
.jp-in-body .code-accordion summary {
|
| 742 |
+
background: none;
|
| 743 |
+
padding: 9px 16px 9px 0;
|
| 744 |
+
}
|
| 745 |
+
.jp-in-body .code-accordion pre.hl {
|
| 746 |
+
border-top: 1px solid rgba(255, 255, 255, 0.09);
|
| 747 |
+
}
|
| 748 |
+
.jp-meta {
|
| 749 |
+
padding: 5px 14px;
|
| 750 |
+
font-family: var(--mono);
|
| 751 |
+
font-size: 11.5px;
|
| 752 |
+
color: var(--muted);
|
| 753 |
+
background: #fbfbfc;
|
| 754 |
+
border-top: 1px solid var(--line);
|
| 755 |
+
}
|
| 756 |
+
.jp-out {
|
| 757 |
+
display: flex;
|
| 758 |
+
border-top: 1px solid var(--line);
|
| 759 |
+
background: var(--panel);
|
| 760 |
+
}
|
| 761 |
+
.jp-out .jp-gutter {
|
| 762 |
+
color: var(--accent-strong);
|
| 763 |
+
}
|
| 764 |
+
.jp-out-body {
|
| 765 |
+
flex: 1;
|
| 766 |
+
min-width: 0;
|
| 767 |
+
}
|
| 768 |
+
#page .jp-out-pre {
|
| 769 |
+
min-width: 0;
|
| 770 |
+
margin: 0;
|
| 771 |
+
border: none;
|
| 772 |
+
border-radius: 0;
|
| 773 |
+
background: none;
|
| 774 |
+
color: var(--ink);
|
| 775 |
+
font-family: var(--mono);
|
| 776 |
+
font-size: 13px;
|
| 777 |
+
line-height: 1.55;
|
| 778 |
+
padding: 12px 16px 12px 0;
|
| 779 |
+
white-space: pre;
|
| 780 |
+
overflow-x: auto;
|
| 781 |
+
overflow-y: auto;
|
| 782 |
+
max-height: 26em;
|
| 783 |
+
}
|
| 784 |
+
.jp-artifacts {
|
| 785 |
+
display: flex;
|
| 786 |
+
flex-direction: column;
|
| 787 |
+
}
|
| 788 |
+
.jp-out-body .jp-out-pre + .jp-artifacts {
|
| 789 |
+
border-top: 1px solid var(--line);
|
| 790 |
+
}
|
| 791 |
+
.out-artifact {
|
| 792 |
+
display: flex;
|
| 793 |
+
align-items: baseline;
|
| 794 |
+
gap: 8px;
|
| 795 |
+
padding: 9px 16px 9px 0;
|
| 796 |
+
text-decoration: none;
|
| 797 |
+
color: inherit;
|
| 798 |
+
}
|
| 799 |
+
.out-artifact + .out-artifact {
|
| 800 |
+
border-top: 1px solid var(--line);
|
| 801 |
+
}
|
| 802 |
+
a.out-artifact:hover .out-artifact-name {
|
| 803 |
+
color: var(--accent-strong);
|
| 804 |
+
}
|
| 805 |
+
.out-artifact-ico {
|
| 806 |
+
flex: 0 0 auto;
|
| 807 |
+
font-size: 13px;
|
| 808 |
+
}
|
| 809 |
+
.out-artifact-name {
|
| 810 |
+
font-family: var(--mono);
|
| 811 |
+
font-size: 12.5px;
|
| 812 |
+
font-weight: 600;
|
| 813 |
+
color: var(--ink);
|
| 814 |
+
overflow: hidden;
|
| 815 |
+
text-overflow: ellipsis;
|
| 816 |
+
white-space: nowrap;
|
| 817 |
+
}
|
| 818 |
+
.out-artifact-meta {
|
| 819 |
+
flex: 0 0 auto;
|
| 820 |
+
margin-left: auto;
|
| 821 |
+
padding-left: 12px;
|
| 822 |
+
font-size: 12px;
|
| 823 |
+
color: var(--muted);
|
| 824 |
+
white-space: nowrap;
|
| 825 |
+
}
|
| 826 |
+
.out-artifact-state.open {
|
| 827 |
+
color: var(--accent);
|
| 828 |
+
font-weight: 600;
|
| 829 |
+
}
|
| 830 |
+
.trackio-embed {
|
| 831 |
+
border: 1px solid var(--line);
|
| 832 |
+
border-radius: var(--radius);
|
| 833 |
+
overflow: hidden;
|
| 834 |
+
background: var(--panel);
|
| 835 |
+
}
|
| 836 |
+
.trackio-cell-meta {
|
| 837 |
+
display: flex;
|
| 838 |
+
gap: 6px;
|
| 839 |
+
flex-wrap: wrap;
|
| 840 |
+
justify-content: flex-end;
|
| 841 |
+
}
|
| 842 |
+
|
| 843 |
+
/* ---- unfurl cards ---- */
|
| 844 |
+
.unfurl {
|
| 845 |
+
display: block;
|
| 846 |
+
border: 1px solid var(--line);
|
| 847 |
+
border-radius: var(--radius);
|
| 848 |
+
background: var(--panel);
|
| 849 |
+
margin: 12px 0;
|
| 850 |
+
overflow: hidden;
|
| 851 |
+
text-decoration: none;
|
| 852 |
+
color: inherit;
|
| 853 |
+
transition: border-color 0.14s, box-shadow 0.14s;
|
| 854 |
+
}
|
| 855 |
+
.unfurl:hover {
|
| 856 |
+
border-color: #cfcbe6;
|
| 857 |
+
box-shadow: 0 4px 18px rgba(30, 20, 80, 0.06);
|
| 858 |
+
}
|
| 859 |
+
|
| 860 |
+
.unfurl-body {
|
| 861 |
+
padding: 13px 16px;
|
| 862 |
+
display: flex;
|
| 863 |
+
gap: 12px;
|
| 864 |
+
align-items: flex-start;
|
| 865 |
+
}
|
| 866 |
+
|
| 867 |
+
.unfurl-ico {
|
| 868 |
+
font-size: 20px;
|
| 869 |
+
line-height: 1.3;
|
| 870 |
+
flex: 0 0 auto;
|
| 871 |
+
}
|
| 872 |
+
|
| 873 |
+
.unfurl-main {
|
| 874 |
+
min-width: 0;
|
| 875 |
+
flex: 1;
|
| 876 |
+
}
|
| 877 |
+
|
| 878 |
+
.unfurl-kind {
|
| 879 |
+
font-family: var(--mono);
|
| 880 |
+
font-size: 10.5px;
|
| 881 |
+
text-transform: uppercase;
|
| 882 |
+
letter-spacing: 0.08em;
|
| 883 |
+
color: var(--accent);
|
| 884 |
+
font-weight: 600;
|
| 885 |
+
}
|
| 886 |
+
|
| 887 |
+
.unfurl-title {
|
| 888 |
+
font-weight: 650;
|
| 889 |
+
font-size: 15px;
|
| 890 |
+
margin: 1px 0 2px;
|
| 891 |
+
white-space: nowrap;
|
| 892 |
+
overflow: hidden;
|
| 893 |
+
text-overflow: ellipsis;
|
| 894 |
+
}
|
| 895 |
+
|
| 896 |
+
.unfurl-desc {
|
| 897 |
+
color: var(--muted);
|
| 898 |
+
font-size: 13.5px;
|
| 899 |
+
line-height: 1.45;
|
| 900 |
+
}
|
| 901 |
+
|
| 902 |
+
.unfurl-meta {
|
| 903 |
+
margin-top: 6px;
|
| 904 |
+
display: flex;
|
| 905 |
+
flex-wrap: wrap;
|
| 906 |
+
gap: 6px;
|
| 907 |
+
}
|
| 908 |
+
|
| 909 |
+
.chip {
|
| 910 |
+
font-size: 11.5px;
|
| 911 |
+
background: var(--code-bg);
|
| 912 |
+
border-radius: 999px;
|
| 913 |
+
padding: 2px 9px;
|
| 914 |
+
color: var(--muted);
|
| 915 |
+
font-family: var(--mono);
|
| 916 |
+
}
|
| 917 |
+
|
| 918 |
+
.unfurl-raw {
|
| 919 |
+
font-family: var(--mono);
|
| 920 |
+
font-size: 11px;
|
| 921 |
+
color: var(--muted);
|
| 922 |
+
border-top: 1px solid var(--line);
|
| 923 |
+
padding: 7px 16px;
|
| 924 |
+
white-space: nowrap;
|
| 925 |
+
overflow: hidden;
|
| 926 |
+
text-overflow: ellipsis;
|
| 927 |
+
}
|
| 928 |
+
|
| 929 |
+
.unfurl.embed {
|
| 930 |
+
padding: 0;
|
| 931 |
+
overflow: hidden;
|
| 932 |
+
}
|
| 933 |
+
.embed-head {
|
| 934 |
+
display: flex;
|
| 935 |
+
align-items: center;
|
| 936 |
+
gap: 10px;
|
| 937 |
+
padding: 10px 14px;
|
| 938 |
+
border-bottom: 1px solid var(--line);
|
| 939 |
+
}
|
| 940 |
+
.embed-head .unfurl-kind {
|
| 941 |
+
flex: 0 0 auto;
|
| 942 |
+
}
|
| 943 |
+
.embed-title {
|
| 944 |
+
flex: 1;
|
| 945 |
+
min-width: 0;
|
| 946 |
+
font-weight: 650;
|
| 947 |
+
font-size: 14px;
|
| 948 |
+
color: var(--ink);
|
| 949 |
+
text-decoration: none;
|
| 950 |
+
white-space: nowrap;
|
| 951 |
+
overflow: hidden;
|
| 952 |
+
text-overflow: ellipsis;
|
| 953 |
+
}
|
| 954 |
+
.embed-title:hover {
|
| 955 |
+
color: var(--accent);
|
| 956 |
+
}
|
| 957 |
+
.embed-open {
|
| 958 |
+
flex: 0 0 auto;
|
| 959 |
+
font-family: var(--mono);
|
| 960 |
+
font-size: 12px;
|
| 961 |
+
color: var(--accent);
|
| 962 |
+
text-decoration: none;
|
| 963 |
+
}
|
| 964 |
+
.embed-frame {
|
| 965 |
+
display: block;
|
| 966 |
+
width: 100%;
|
| 967 |
+
height: 560px;
|
| 968 |
+
border: 0;
|
| 969 |
+
background: var(--code-bg);
|
| 970 |
+
}
|
| 971 |
+
|
| 972 |
+
.dashboard-shell {
|
| 973 |
+
display: block;
|
| 974 |
+
}
|
| 975 |
+
.dashboard-shell .dashboard-frame {
|
| 976 |
+
display: block;
|
| 977 |
+
width: 100%;
|
| 978 |
+
height: 900px;
|
| 979 |
+
border: 0;
|
| 980 |
+
background: var(--code-bg);
|
| 981 |
+
}
|
| 982 |
+
|
| 983 |
+
.unfurl.image {
|
| 984 |
+
padding: 0;
|
| 985 |
+
}
|
| 986 |
+
.unfurl.image img {
|
| 987 |
+
display: block;
|
| 988 |
+
width: 100%;
|
| 989 |
+
height: auto;
|
| 990 |
+
max-height: 460px;
|
| 991 |
+
object-fit: contain;
|
| 992 |
+
background: var(--code-bg);
|
| 993 |
+
}
|
| 994 |
+
|
| 995 |
+
.artifact-chip {
|
| 996 |
+
border: 1px solid var(--line);
|
| 997 |
+
background: var(--panel);
|
| 998 |
+
border-radius: var(--radius);
|
| 999 |
+
padding: 10px 14px;
|
| 1000 |
+
margin: 8px 0;
|
| 1001 |
+
font-size: 14px;
|
| 1002 |
+
}
|
| 1003 |
+
.cell.dashboard .artifact-chip {
|
| 1004 |
+
margin: 14px 18px 18px;
|
| 1005 |
+
}
|
| 1006 |
+
.artifact-chip code {
|
| 1007 |
+
color: var(--accent);
|
| 1008 |
+
}
|
| 1009 |
+
|
| 1010 |
+
/* ---- task board ---- */
|
| 1011 |
+
.board-wrap {
|
| 1012 |
+
overflow-x: auto;
|
| 1013 |
+
border: 1px solid var(--line);
|
| 1014 |
+
border-radius: var(--radius);
|
| 1015 |
+
margin: 12px 0 20px;
|
| 1016 |
+
background: var(--panel);
|
| 1017 |
+
}
|
| 1018 |
+
table.board {
|
| 1019 |
+
border-collapse: collapse;
|
| 1020 |
+
width: 100%;
|
| 1021 |
+
font-size: 14px;
|
| 1022 |
+
}
|
| 1023 |
+
table.board th,
|
| 1024 |
+
table.board td {
|
| 1025 |
+
text-align: left;
|
| 1026 |
+
padding: 9px 14px;
|
| 1027 |
+
border-bottom: 1px solid var(--line);
|
| 1028 |
+
vertical-align: top;
|
| 1029 |
+
}
|
| 1030 |
+
table.board thead th {
|
| 1031 |
+
background: var(--accent-soft);
|
| 1032 |
+
font-size: 12px;
|
| 1033 |
+
text-transform: uppercase;
|
| 1034 |
+
letter-spacing: 0.05em;
|
| 1035 |
+
color: #9a4a12;
|
| 1036 |
+
font-weight: 600;
|
| 1037 |
+
border-bottom: 1px solid var(--line);
|
| 1038 |
+
}
|
| 1039 |
+
table.board tbody tr:last-child td {
|
| 1040 |
+
border-bottom: none;
|
| 1041 |
+
}
|
| 1042 |
+
table.board .col-check {
|
| 1043 |
+
text-align: center;
|
| 1044 |
+
width: 92px;
|
| 1045 |
+
white-space: nowrap;
|
| 1046 |
+
}
|
| 1047 |
+
table.board tr.section-row td {
|
| 1048 |
+
background: var(--accent-soft);
|
| 1049 |
+
text-align: center;
|
| 1050 |
+
font-weight: 700;
|
| 1051 |
+
font-size: 13px;
|
| 1052 |
+
color: var(--accent-strong);
|
| 1053 |
+
padding: 7px 14px;
|
| 1054 |
+
letter-spacing: 0.02em;
|
| 1055 |
+
}
|
| 1056 |
+
.box {
|
| 1057 |
+
display: inline-flex;
|
| 1058 |
+
align-items: center;
|
| 1059 |
+
justify-content: center;
|
| 1060 |
+
width: 18px;
|
| 1061 |
+
height: 18px;
|
| 1062 |
+
border: 1.5px solid #cfcbe0;
|
| 1063 |
+
border-radius: 5px;
|
| 1064 |
+
font-size: 12px;
|
| 1065 |
+
color: #fff;
|
| 1066 |
+
line-height: 1;
|
| 1067 |
+
}
|
| 1068 |
+
.box.on {
|
| 1069 |
+
background: var(--accent);
|
| 1070 |
+
border-color: var(--accent);
|
| 1071 |
+
}
|
| 1072 |
+
.who-chip {
|
| 1073 |
+
display: inline-block;
|
| 1074 |
+
padding: 3px 12px;
|
| 1075 |
+
border-radius: 999px;
|
| 1076 |
+
font-size: 12.5px;
|
| 1077 |
+
font-weight: 600;
|
| 1078 |
+
white-space: nowrap;
|
| 1079 |
+
}
|
| 1080 |
+
.who-chip.muted {
|
| 1081 |
+
background: var(--code-bg);
|
| 1082 |
+
color: var(--muted);
|
| 1083 |
+
font-weight: 500;
|
| 1084 |
+
}
|
| 1085 |
+
|
| 1086 |
+
/* ---- status badges + clickable rows ---- */
|
| 1087 |
+
table.board .col-status {
|
| 1088 |
+
width: 130px;
|
| 1089 |
+
white-space: nowrap;
|
| 1090 |
+
}
|
| 1091 |
+
.badge {
|
| 1092 |
+
display: inline-block;
|
| 1093 |
+
padding: 3px 11px;
|
| 1094 |
+
border-radius: 999px;
|
| 1095 |
+
font-size: 12px;
|
| 1096 |
+
font-weight: 600;
|
| 1097 |
+
letter-spacing: 0.01em;
|
| 1098 |
+
}
|
| 1099 |
+
.badge.gray {
|
| 1100 |
+
background: var(--code-bg);
|
| 1101 |
+
color: var(--muted);
|
| 1102 |
+
}
|
| 1103 |
+
.badge.amber {
|
| 1104 |
+
background: var(--accent-soft);
|
| 1105 |
+
color: #b45309;
|
| 1106 |
+
}
|
| 1107 |
+
.badge.green {
|
| 1108 |
+
background: #e6f7ee;
|
| 1109 |
+
color: #1a8a55;
|
| 1110 |
+
}
|
| 1111 |
+
.badge.red {
|
| 1112 |
+
background: #fde8ec;
|
| 1113 |
+
color: #c62a4b;
|
| 1114 |
+
}
|
| 1115 |
+
table.board tr.linked-row {
|
| 1116 |
+
cursor: pointer;
|
| 1117 |
+
}
|
| 1118 |
+
table.board tr.linked-row:hover td {
|
| 1119 |
+
background: var(--accent-soft);
|
| 1120 |
+
}
|
| 1121 |
+
table.board tr.linked-row a {
|
| 1122 |
+
color: var(--ink);
|
| 1123 |
+
font-weight: 600;
|
| 1124 |
+
text-decoration: none;
|
| 1125 |
+
}
|
| 1126 |
+
table.board tr.linked-row:hover a {
|
| 1127 |
+
color: var(--accent-strong);
|
| 1128 |
+
}
|
| 1129 |
+
|
| 1130 |
+
/* ---- agent read hint ---- */
|
| 1131 |
+
.agent-hint {
|
| 1132 |
+
display: flex;
|
| 1133 |
+
align-items: center;
|
| 1134 |
+
flex-wrap: wrap;
|
| 1135 |
+
gap: 8px;
|
| 1136 |
+
margin: 0;
|
| 1137 |
+
font-size: 12.5px;
|
| 1138 |
+
color: var(--muted);
|
| 1139 |
+
}
|
| 1140 |
+
.agent-hint code {
|
| 1141 |
+
flex: 1 1 18rem;
|
| 1142 |
+
min-width: 0;
|
| 1143 |
+
background: var(--code-bg);
|
| 1144 |
+
padding: 2px 9px;
|
| 1145 |
+
border-radius: 6px;
|
| 1146 |
+
font-family: var(--mono);
|
| 1147 |
+
font-size: 12px;
|
| 1148 |
+
font-weight: 500;
|
| 1149 |
+
color: var(--ink);
|
| 1150 |
+
overflow: hidden;
|
| 1151 |
+
text-overflow: ellipsis;
|
| 1152 |
+
white-space: nowrap;
|
| 1153 |
+
}
|
| 1154 |
+
.agent-hint .copy {
|
| 1155 |
+
flex: 0 0 auto;
|
| 1156 |
+
background: none;
|
| 1157 |
+
color: var(--muted);
|
| 1158 |
+
border: 1px solid var(--line);
|
| 1159 |
+
border-radius: 6px;
|
| 1160 |
+
width: 22px;
|
| 1161 |
+
height: 22px;
|
| 1162 |
+
font-size: 11px;
|
| 1163 |
+
line-height: 1;
|
| 1164 |
+
cursor: pointer;
|
| 1165 |
+
transition: color 0.12s, border-color 0.12s;
|
| 1166 |
+
}
|
| 1167 |
+
.agent-hint .copy:hover {
|
| 1168 |
+
color: var(--accent-strong);
|
| 1169 |
+
border-color: var(--accent);
|
| 1170 |
+
}
|
| 1171 |
+
.agent-hint .copy.copied {
|
| 1172 |
+
color: #1a8a55;
|
| 1173 |
+
border-color: #1a8a55;
|
| 1174 |
+
}
|
| 1175 |
+
.agent-hint-note {
|
| 1176 |
+
margin-left: auto;
|
| 1177 |
+
font-size: 12px;
|
| 1178 |
+
color: var(--muted);
|
| 1179 |
+
}
|
| 1180 |
+
.hub-destination {
|
| 1181 |
+
display: flex;
|
| 1182 |
+
align-items: center;
|
| 1183 |
+
flex-wrap: wrap;
|
| 1184 |
+
gap: 8px;
|
| 1185 |
+
color: var(--muted);
|
| 1186 |
+
font-size: 12.5px;
|
| 1187 |
+
}
|
| 1188 |
+
.hub-destination a {
|
| 1189 |
+
display: inline-flex;
|
| 1190 |
+
align-items: center;
|
| 1191 |
+
gap: 6px;
|
| 1192 |
+
max-width: 100%;
|
| 1193 |
+
padding: 3px 9px;
|
| 1194 |
+
border: 1px solid var(--accent-line);
|
| 1195 |
+
border-radius: 999px;
|
| 1196 |
+
background: var(--accent-soft);
|
| 1197 |
+
color: var(--accent-strong);
|
| 1198 |
+
font-family: var(--mono);
|
| 1199 |
+
font-size: 12px;
|
| 1200 |
+
font-weight: 650;
|
| 1201 |
+
line-height: 1.5;
|
| 1202 |
+
text-decoration: none;
|
| 1203 |
+
overflow-wrap: anywhere;
|
| 1204 |
+
transition: border-color 0.12s, background 0.12s, color 0.12s;
|
| 1205 |
+
}
|
| 1206 |
+
.hub-destination a:hover {
|
| 1207 |
+
border-color: var(--accent);
|
| 1208 |
+
background: #ffedd5;
|
| 1209 |
+
color: #c2410c;
|
| 1210 |
+
}
|
| 1211 |
+
.hub-destination svg {
|
| 1212 |
+
width: 13px;
|
| 1213 |
+
height: 13px;
|
| 1214 |
+
flex: 0 0 auto;
|
| 1215 |
+
fill: none;
|
| 1216 |
+
stroke: currentColor;
|
| 1217 |
+
stroke-width: 1.8;
|
| 1218 |
+
stroke-linecap: round;
|
| 1219 |
+
stroke-linejoin: round;
|
| 1220 |
+
}
|
| 1221 |
+
|
| 1222 |
+
.index-paper-link {
|
| 1223 |
+
margin: 14px 0 30px;
|
| 1224 |
+
font-size: 19px;
|
| 1225 |
+
line-height: 1.35;
|
| 1226 |
+
font-weight: 700;
|
| 1227 |
+
}
|
| 1228 |
+
.index-paper-link a {
|
| 1229 |
+
text-underline-offset: 4px;
|
| 1230 |
+
text-decoration-thickness: 2px;
|
| 1231 |
+
}
|
| 1232 |
+
.art-ico {
|
| 1233 |
+
width: 1em;
|
| 1234 |
+
height: 1em;
|
| 1235 |
+
object-fit: contain;
|
| 1236 |
+
vertical-align: -0.15em;
|
| 1237 |
+
}
|
| 1238 |
+
.art-file-ico {
|
| 1239 |
+
width: 15px;
|
| 1240 |
+
height: 15px;
|
| 1241 |
+
flex: 0 0 auto;
|
| 1242 |
+
fill: none;
|
| 1243 |
+
stroke: currentColor;
|
| 1244 |
+
stroke-width: 1.7;
|
| 1245 |
+
stroke-linecap: round;
|
| 1246 |
+
stroke-linejoin: round;
|
| 1247 |
+
vertical-align: -0.2em;
|
| 1248 |
+
}
|
| 1249 |
+
.out-artifact-ico .art-file-ico {
|
| 1250 |
+
color: var(--muted);
|
| 1251 |
+
}
|
| 1252 |
+
|
| 1253 |
+
/* ---- scroll-to-resource highlight ---- */
|
| 1254 |
+
.res-flash {
|
| 1255 |
+
animation: res-flash 1.5s ease;
|
| 1256 |
+
border-radius: 8px;
|
| 1257 |
+
}
|
| 1258 |
+
@keyframes res-flash {
|
| 1259 |
+
0%,
|
| 1260 |
+
25% {
|
| 1261 |
+
box-shadow: 0 0 0 3px var(--accent);
|
| 1262 |
+
}
|
| 1263 |
+
100% {
|
| 1264 |
+
box-shadow: 0 0 0 3px rgba(249, 115, 22, 0);
|
| 1265 |
+
}
|
| 1266 |
+
}
|
| 1267 |
+
|
| 1268 |
+
/* ---- inline resource chips ---- */
|
| 1269 |
+
#page .res-chip {
|
| 1270 |
+
display: inline-flex;
|
| 1271 |
+
align-items: center;
|
| 1272 |
+
gap: 5px;
|
| 1273 |
+
max-width: 100%;
|
| 1274 |
+
padding: 0 9px 0 6px;
|
| 1275 |
+
margin: 0 1px;
|
| 1276 |
+
border: 1px solid var(--line);
|
| 1277 |
+
border-radius: 999px;
|
| 1278 |
+
background: var(--panel);
|
| 1279 |
+
font-family: var(--mono);
|
| 1280 |
+
font-size: 0.78em;
|
| 1281 |
+
font-weight: 600;
|
| 1282 |
+
color: var(--ink);
|
| 1283 |
+
text-decoration: none;
|
| 1284 |
+
white-space: nowrap;
|
| 1285 |
+
overflow: hidden;
|
| 1286 |
+
text-overflow: ellipsis;
|
| 1287 |
+
vertical-align: middle;
|
| 1288 |
+
line-height: 1.65;
|
| 1289 |
+
transform: translateY(-0.08em);
|
| 1290 |
+
transition: border-color 0.12s, background 0.12s, color 0.12s;
|
| 1291 |
+
}
|
| 1292 |
+
.res-chip-ico {
|
| 1293 |
+
font-size: 1.05em;
|
| 1294 |
+
line-height: 1;
|
| 1295 |
+
}
|
| 1296 |
+
#page .res-chip:hover {
|
| 1297 |
+
border-color: var(--accent);
|
| 1298 |
+
background: var(--accent-soft);
|
| 1299 |
+
color: var(--accent-strong);
|
| 1300 |
+
}
|
| 1301 |
+
|
| 1302 |
+
/* ---- connect footer + modal ---- */
|
| 1303 |
+
#sidebar-foot {
|
| 1304 |
+
margin-top: auto;
|
| 1305 |
+
padding-top: 14px;
|
| 1306 |
+
border-top: 1px solid rgba(255, 255, 255, 0.1);
|
| 1307 |
+
}
|
| 1308 |
+
|
| 1309 |
+
#connect-btn {
|
| 1310 |
+
width: 100%;
|
| 1311 |
+
display: flex;
|
| 1312 |
+
align-items: center;
|
| 1313 |
+
gap: 8px;
|
| 1314 |
+
background: rgba(255, 255, 255, 0.05);
|
| 1315 |
+
color: #c3c4cb;
|
| 1316 |
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
| 1317 |
+
border-radius: 9px;
|
| 1318 |
+
padding: 9px 12px;
|
| 1319 |
+
font-size: 13.5px;
|
| 1320 |
+
font-family: var(--sans);
|
| 1321 |
+
cursor: pointer;
|
| 1322 |
+
transition: background 0.12s, color 0.12s, border-color 0.12s;
|
| 1323 |
+
}
|
| 1324 |
+
#connect-btn:hover {
|
| 1325 |
+
background: rgba(249, 115, 22, 0.14);
|
| 1326 |
+
border-color: rgba(249, 115, 22, 0.4);
|
| 1327 |
+
color: #fdba74;
|
| 1328 |
+
}
|
| 1329 |
+
#connect-btn .ico {
|
| 1330 |
+
font-size: 15px;
|
| 1331 |
+
}
|
| 1332 |
+
|
| 1333 |
+
#modal[hidden] {
|
| 1334 |
+
display: none;
|
| 1335 |
+
}
|
| 1336 |
+
#modal {
|
| 1337 |
+
position: fixed;
|
| 1338 |
+
inset: 0;
|
| 1339 |
+
z-index: 100;
|
| 1340 |
+
display: flex;
|
| 1341 |
+
align-items: center;
|
| 1342 |
+
justify-content: center;
|
| 1343 |
+
padding: 24px;
|
| 1344 |
+
}
|
| 1345 |
+
.modal-backdrop {
|
| 1346 |
+
position: absolute;
|
| 1347 |
+
inset: 0;
|
| 1348 |
+
background: rgba(20, 18, 30, 0.5);
|
| 1349 |
+
backdrop-filter: blur(2px);
|
| 1350 |
+
}
|
| 1351 |
+
.modal-card {
|
| 1352 |
+
position: relative;
|
| 1353 |
+
background: var(--panel);
|
| 1354 |
+
border-radius: 16px;
|
| 1355 |
+
width: 100%;
|
| 1356 |
+
max-width: 620px;
|
| 1357 |
+
max-height: 85vh;
|
| 1358 |
+
overflow-y: auto;
|
| 1359 |
+
box-shadow: 0 24px 70px rgba(20, 15, 50, 0.28);
|
| 1360 |
+
}
|
| 1361 |
+
.modal-head {
|
| 1362 |
+
display: flex;
|
| 1363 |
+
align-items: center;
|
| 1364 |
+
justify-content: space-between;
|
| 1365 |
+
gap: 12px;
|
| 1366 |
+
padding: 18px 22px;
|
| 1367 |
+
border-bottom: 1px solid var(--line);
|
| 1368 |
+
position: sticky;
|
| 1369 |
+
top: 0;
|
| 1370 |
+
background: var(--panel);
|
| 1371 |
+
}
|
| 1372 |
+
.modal-title {
|
| 1373 |
+
display: flex;
|
| 1374 |
+
align-items: center;
|
| 1375 |
+
gap: 10px;
|
| 1376 |
+
font-family: var(--serif);
|
| 1377 |
+
font-size: 21px;
|
| 1378 |
+
letter-spacing: -0.01em;
|
| 1379 |
+
}
|
| 1380 |
+
.modal-logo {
|
| 1381 |
+
width: 26px;
|
| 1382 |
+
height: 26px;
|
| 1383 |
+
object-fit: contain;
|
| 1384 |
+
}
|
| 1385 |
+
.modal-actions {
|
| 1386 |
+
display: flex;
|
| 1387 |
+
align-items: center;
|
| 1388 |
+
gap: 8px;
|
| 1389 |
+
}
|
| 1390 |
+
.btn {
|
| 1391 |
+
font-family: var(--sans);
|
| 1392 |
+
font-size: 13.5px;
|
| 1393 |
+
font-weight: 600;
|
| 1394 |
+
border: 1px solid var(--line);
|
| 1395 |
+
background: var(--panel);
|
| 1396 |
+
color: var(--ink);
|
| 1397 |
+
border-radius: 9px;
|
| 1398 |
+
padding: 8px 13px;
|
| 1399 |
+
cursor: pointer;
|
| 1400 |
+
transition: background 0.12s, border-color 0.12s, color 0.12s;
|
| 1401 |
+
}
|
| 1402 |
+
.btn:hover {
|
| 1403 |
+
border-color: var(--accent);
|
| 1404 |
+
color: var(--accent-strong);
|
| 1405 |
+
}
|
| 1406 |
+
.btn.copied {
|
| 1407 |
+
border-color: #1a8a55;
|
| 1408 |
+
color: #1a8a55;
|
| 1409 |
+
}
|
| 1410 |
+
.btn.icon {
|
| 1411 |
+
font-size: 18px;
|
| 1412 |
+
line-height: 1;
|
| 1413 |
+
padding: 6px 11px;
|
| 1414 |
+
font-weight: 400;
|
| 1415 |
+
}
|
| 1416 |
+
.modal-body {
|
| 1417 |
+
padding: 20px 22px 26px;
|
| 1418 |
+
}
|
| 1419 |
+
.modal-intro {
|
| 1420 |
+
margin: 0 0 20px;
|
| 1421 |
+
color: var(--muted);
|
| 1422 |
+
line-height: 1.55;
|
| 1423 |
+
}
|
| 1424 |
+
#connect-steps {
|
| 1425 |
+
list-style: none;
|
| 1426 |
+
margin: 0;
|
| 1427 |
+
padding: 0;
|
| 1428 |
+
}
|
| 1429 |
+
#connect-steps li {
|
| 1430 |
+
margin-bottom: 18px;
|
| 1431 |
+
}
|
| 1432 |
+
.step-title {
|
| 1433 |
+
font-weight: 600;
|
| 1434 |
+
font-size: 14.5px;
|
| 1435 |
+
margin-bottom: 8px;
|
| 1436 |
+
}
|
| 1437 |
+
.codeblock {
|
| 1438 |
+
display: flex;
|
| 1439 |
+
align-items: center;
|
| 1440 |
+
gap: 8px;
|
| 1441 |
+
background: #17181c;
|
| 1442 |
+
border-radius: 10px;
|
| 1443 |
+
padding: 11px 12px 11px 15px;
|
| 1444 |
+
}
|
| 1445 |
+
.codeblock code {
|
| 1446 |
+
flex: 1;
|
| 1447 |
+
min-width: 0;
|
| 1448 |
+
overflow-x: auto;
|
| 1449 |
+
white-space: nowrap;
|
| 1450 |
+
font-family: var(--mono);
|
| 1451 |
+
font-size: 13px;
|
| 1452 |
+
color: #f0efff;
|
| 1453 |
+
background: none;
|
| 1454 |
+
padding: 0;
|
| 1455 |
+
}
|
| 1456 |
+
.codeblock .copy {
|
| 1457 |
+
flex: 0 0 auto;
|
| 1458 |
+
background: rgba(255, 255, 255, 0.08);
|
| 1459 |
+
color: #c3c4cb;
|
| 1460 |
+
border: 1px solid rgba(255, 255, 255, 0.14);
|
| 1461 |
+
border-radius: 7px;
|
| 1462 |
+
width: 30px;
|
| 1463 |
+
height: 30px;
|
| 1464 |
+
font-size: 14px;
|
| 1465 |
+
cursor: pointer;
|
| 1466 |
+
transition: background 0.12s, color 0.12s;
|
| 1467 |
+
}
|
| 1468 |
+
.codeblock .copy:hover {
|
| 1469 |
+
background: rgba(249, 115, 22, 0.2);
|
| 1470 |
+
color: #fdba74;
|
| 1471 |
+
}
|
| 1472 |
+
.codeblock .copy.copied {
|
| 1473 |
+
color: #52d08a;
|
| 1474 |
+
}
|
| 1475 |
+
|
| 1476 |
+
/* ---- top-level logbook views ---- */
|
| 1477 |
+
#view-tabs {
|
| 1478 |
+
position: sticky;
|
| 1479 |
+
top: 0;
|
| 1480 |
+
z-index: 30;
|
| 1481 |
+
width: 100%;
|
| 1482 |
+
max-width: 1080px;
|
| 1483 |
+
margin: 0 auto 24px;
|
| 1484 |
+
padding-top: 10px;
|
| 1485 |
+
display: flex;
|
| 1486 |
+
align-items: center;
|
| 1487 |
+
justify-content: flex-start;
|
| 1488 |
+
gap: 26px;
|
| 1489 |
+
border-bottom: 1px solid var(--line);
|
| 1490 |
+
background: var(--paper);
|
| 1491 |
+
}
|
| 1492 |
+
#view-tabs a {
|
| 1493 |
+
display: inline-flex;
|
| 1494 |
+
align-items: center;
|
| 1495 |
+
gap: 8px;
|
| 1496 |
+
min-height: 44px;
|
| 1497 |
+
margin-bottom: -1px;
|
| 1498 |
+
color: var(--muted);
|
| 1499 |
+
border-bottom: 2px solid transparent;
|
| 1500 |
+
text-decoration: none;
|
| 1501 |
+
font-size: 13.5px;
|
| 1502 |
+
font-weight: 600;
|
| 1503 |
+
transition: color 0.12s, border-color 0.12s;
|
| 1504 |
+
}
|
| 1505 |
+
#view-tabs a:hover {
|
| 1506 |
+
color: var(--ink);
|
| 1507 |
+
}
|
| 1508 |
+
#view-tabs a.active {
|
| 1509 |
+
color: var(--accent-strong);
|
| 1510 |
+
border-bottom-color: var(--accent);
|
| 1511 |
+
}
|
| 1512 |
+
#view-tabs svg {
|
| 1513 |
+
width: 18px;
|
| 1514 |
+
height: 18px;
|
| 1515 |
+
flex: 0 0 auto;
|
| 1516 |
+
fill: none;
|
| 1517 |
+
stroke: currentColor;
|
| 1518 |
+
stroke-width: 2;
|
| 1519 |
+
stroke-linecap: round;
|
| 1520 |
+
stroke-linejoin: round;
|
| 1521 |
+
}
|
| 1522 |
+
.workspace-file svg,
|
| 1523 |
+
.workspace-folder summary svg,
|
| 1524 |
+
.workspace-download svg {
|
| 1525 |
+
width: 17px;
|
| 1526 |
+
height: 17px;
|
| 1527 |
+
flex: 0 0 auto;
|
| 1528 |
+
fill: none;
|
| 1529 |
+
stroke: currentColor;
|
| 1530 |
+
stroke-width: 1.7;
|
| 1531 |
+
stroke-linecap: round;
|
| 1532 |
+
stroke-linejoin: round;
|
| 1533 |
+
}
|
| 1534 |
+
|
| 1535 |
+
#page.trace-page,
|
| 1536 |
+
#page.workspace-page {
|
| 1537 |
+
max-width: 1080px;
|
| 1538 |
+
}
|
| 1539 |
+
.view-loading {
|
| 1540 |
+
padding: 72px 0;
|
| 1541 |
+
color: var(--muted);
|
| 1542 |
+
text-align: center;
|
| 1543 |
+
}
|
| 1544 |
+
.view-empty {
|
| 1545 |
+
margin: 48px 0;
|
| 1546 |
+
padding: 44px 28px;
|
| 1547 |
+
border: 1px dashed #d8dbe1;
|
| 1548 |
+
border-radius: var(--radius);
|
| 1549 |
+
background: rgba(255, 255, 255, 0.72);
|
| 1550 |
+
text-align: center;
|
| 1551 |
+
}
|
| 1552 |
+
.view-empty h2 {
|
| 1553 |
+
margin: 0 0 7px;
|
| 1554 |
+
font-size: 18px;
|
| 1555 |
+
}
|
| 1556 |
+
.view-empty p {
|
| 1557 |
+
max-width: 560px;
|
| 1558 |
+
margin: 0 auto;
|
| 1559 |
+
color: var(--muted);
|
| 1560 |
+
}
|
| 1561 |
+
.view-empty code {
|
| 1562 |
+
display: inline-block;
|
| 1563 |
+
margin-top: 18px;
|
| 1564 |
+
padding: 7px 10px;
|
| 1565 |
+
border-radius: 7px;
|
| 1566 |
+
background: var(--code-bg);
|
| 1567 |
+
font-family: var(--mono);
|
| 1568 |
+
font-size: 12px;
|
| 1569 |
+
}
|
| 1570 |
+
#page .repo-ref-link {
|
| 1571 |
+
display: inline-block;
|
| 1572 |
+
margin-top: 18px;
|
| 1573 |
+
padding: 8px 14px;
|
| 1574 |
+
border-radius: 8px;
|
| 1575 |
+
background: var(--accent-strong, #2158d0);
|
| 1576 |
+
color: #fff;
|
| 1577 |
+
font-weight: 600;
|
| 1578 |
+
text-decoration: none;
|
| 1579 |
+
}
|
| 1580 |
+
#page .repo-ref-link:hover,
|
| 1581 |
+
#page .repo-ref-link:focus-visible {
|
| 1582 |
+
color: #fff;
|
| 1583 |
+
filter: brightness(0.95);
|
| 1584 |
+
}
|
| 1585 |
+
.view-eyebrow {
|
| 1586 |
+
margin-bottom: 4px;
|
| 1587 |
+
color: var(--accent-strong);
|
| 1588 |
+
font-family: var(--mono);
|
| 1589 |
+
font-size: 11px;
|
| 1590 |
+
font-weight: 700;
|
| 1591 |
+
letter-spacing: 0.12em;
|
| 1592 |
+
text-transform: uppercase;
|
| 1593 |
+
}
|
| 1594 |
+
|
| 1595 |
+
/* ---- trace ---- */
|
| 1596 |
+
.trace-session {
|
| 1597 |
+
scroll-margin-top: 24px;
|
| 1598 |
+
}
|
| 1599 |
+
.trace-session + .trace-session {
|
| 1600 |
+
margin-top: 44px;
|
| 1601 |
+
padding-top: 40px;
|
| 1602 |
+
border-top: 1px solid var(--line);
|
| 1603 |
+
}
|
| 1604 |
+
.trace-session-title {
|
| 1605 |
+
margin: 0 0 14px;
|
| 1606 |
+
color: var(--ink);
|
| 1607 |
+
font-family: var(--serif);
|
| 1608 |
+
font-size: 22px;
|
| 1609 |
+
line-height: 1.2;
|
| 1610 |
+
letter-spacing: -0.02em;
|
| 1611 |
+
overflow-wrap: anywhere;
|
| 1612 |
+
}
|
| 1613 |
+
.workspace-header h1 {
|
| 1614 |
+
margin: 0;
|
| 1615 |
+
color: var(--ink);
|
| 1616 |
+
font-size: 30px;
|
| 1617 |
+
line-height: 1.2;
|
| 1618 |
+
letter-spacing: -0.025em;
|
| 1619 |
+
}
|
| 1620 |
+
.trace-meta {
|
| 1621 |
+
display: flex;
|
| 1622 |
+
flex-wrap: wrap;
|
| 1623 |
+
gap: 9px 20px;
|
| 1624 |
+
margin-bottom: 34px;
|
| 1625 |
+
padding: 14px 16px;
|
| 1626 |
+
border: 1px solid var(--line);
|
| 1627 |
+
border-radius: 10px;
|
| 1628 |
+
background: rgba(255, 255, 255, 0.78);
|
| 1629 |
+
color: var(--muted);
|
| 1630 |
+
font-family: var(--mono);
|
| 1631 |
+
font-size: 11px;
|
| 1632 |
+
}
|
| 1633 |
+
.trace-meta strong {
|
| 1634 |
+
color: var(--ink);
|
| 1635 |
+
font-weight: 650;
|
| 1636 |
+
}
|
| 1637 |
+
.trace-source-missing {
|
| 1638 |
+
color: #b45309;
|
| 1639 |
+
}
|
| 1640 |
+
.trace-timeline {
|
| 1641 |
+
position: relative;
|
| 1642 |
+
}
|
| 1643 |
+
.trace-timeline::before {
|
| 1644 |
+
content: "";
|
| 1645 |
+
position: absolute;
|
| 1646 |
+
top: 0;
|
| 1647 |
+
bottom: 0;
|
| 1648 |
+
left: 82px;
|
| 1649 |
+
width: 1px;
|
| 1650 |
+
background: #dedfe3;
|
| 1651 |
+
}
|
| 1652 |
+
.trace-load-controls {
|
| 1653 |
+
display: flex;
|
| 1654 |
+
align-items: center;
|
| 1655 |
+
justify-content: space-between;
|
| 1656 |
+
gap: 16px;
|
| 1657 |
+
margin: 22px 0 0 100px;
|
| 1658 |
+
padding-top: 16px;
|
| 1659 |
+
border-top: 1px solid var(--line);
|
| 1660 |
+
}
|
| 1661 |
+
.trace-load-progress {
|
| 1662 |
+
color: var(--muted);
|
| 1663 |
+
font-family: var(--mono);
|
| 1664 |
+
font-size: 11px;
|
| 1665 |
+
}
|
| 1666 |
+
.trace-load-more {
|
| 1667 |
+
padding: 7px 12px;
|
| 1668 |
+
border: 1px solid var(--line-strong);
|
| 1669 |
+
border-radius: 7px;
|
| 1670 |
+
background: var(--paper);
|
| 1671 |
+
color: var(--ink);
|
| 1672 |
+
cursor: pointer;
|
| 1673 |
+
font: 650 12px/1.2 var(--sans);
|
| 1674 |
+
}
|
| 1675 |
+
.trace-load-more:hover:not(:disabled) {
|
| 1676 |
+
border-color: var(--accent);
|
| 1677 |
+
color: var(--accent-strong);
|
| 1678 |
+
}
|
| 1679 |
+
.trace-load-more:disabled {
|
| 1680 |
+
cursor: default;
|
| 1681 |
+
opacity: 0.65;
|
| 1682 |
+
}
|
| 1683 |
+
.trace-entry {
|
| 1684 |
+
--trace-depth: 0;
|
| 1685 |
+
position: relative;
|
| 1686 |
+
display: grid;
|
| 1687 |
+
grid-template-columns: 100px minmax(0, 1fr);
|
| 1688 |
+
margin: 0 0 18px calc(var(--trace-depth) * 24px);
|
| 1689 |
+
}
|
| 1690 |
+
.trace-rail {
|
| 1691 |
+
position: relative;
|
| 1692 |
+
min-height: 36px;
|
| 1693 |
+
padding: 4px 28px 0 0;
|
| 1694 |
+
color: #8a8d95;
|
| 1695 |
+
text-align: right;
|
| 1696 |
+
font-family: var(--mono);
|
| 1697 |
+
}
|
| 1698 |
+
.trace-number,
|
| 1699 |
+
.trace-elapsed {
|
| 1700 |
+
display: block;
|
| 1701 |
+
white-space: nowrap;
|
| 1702 |
+
}
|
| 1703 |
+
.trace-number {
|
| 1704 |
+
font-size: 12px;
|
| 1705 |
+
font-weight: 650;
|
| 1706 |
+
}
|
| 1707 |
+
.trace-elapsed {
|
| 1708 |
+
margin-top: 3px;
|
| 1709 |
+
font-size: 10px;
|
| 1710 |
+
}
|
| 1711 |
+
.trace-dot {
|
| 1712 |
+
position: absolute;
|
| 1713 |
+
top: 10px;
|
| 1714 |
+
right: 11px;
|
| 1715 |
+
width: 11px;
|
| 1716 |
+
height: 11px;
|
| 1717 |
+
border: 2px solid var(--paper);
|
| 1718 |
+
border-radius: 50%;
|
| 1719 |
+
background: var(--accent);
|
| 1720 |
+
box-shadow: 0 0 0 1px #d7d9de;
|
| 1721 |
+
}
|
| 1722 |
+
.trace-card {
|
| 1723 |
+
min-width: 0;
|
| 1724 |
+
overflow: hidden;
|
| 1725 |
+
border: 1px solid #dddfe4;
|
| 1726 |
+
border-radius: 11px;
|
| 1727 |
+
background: rgba(255, 255, 255, 0.92);
|
| 1728 |
+
}
|
| 1729 |
+
.trace-card > header {
|
| 1730 |
+
display: flex;
|
| 1731 |
+
align-items: center;
|
| 1732 |
+
gap: 10px;
|
| 1733 |
+
min-height: 37px;
|
| 1734 |
+
padding: 8px 13px;
|
| 1735 |
+
border-bottom: 1px solid #eceef1;
|
| 1736 |
+
}
|
| 1737 |
+
.trace-status .trace-card > header {
|
| 1738 |
+
border-bottom: 0;
|
| 1739 |
+
padding-bottom: 5px;
|
| 1740 |
+
}
|
| 1741 |
+
.trace-kind {
|
| 1742 |
+
font-family: var(--mono);
|
| 1743 |
+
font-size: 10.5px;
|
| 1744 |
+
font-weight: 750;
|
| 1745 |
+
letter-spacing: 0.08em;
|
| 1746 |
+
text-transform: uppercase;
|
| 1747 |
+
}
|
| 1748 |
+
.trace-turn {
|
| 1749 |
+
color: var(--muted);
|
| 1750 |
+
font: 10px var(--mono);
|
| 1751 |
+
}
|
| 1752 |
+
.trace-status-badge {
|
| 1753 |
+
margin-left: auto;
|
| 1754 |
+
padding: 1px 6px;
|
| 1755 |
+
border-radius: 999px;
|
| 1756 |
+
background: #eef0f3;
|
| 1757 |
+
color: var(--muted);
|
| 1758 |
+
font: 9.5px var(--mono);
|
| 1759 |
+
text-transform: uppercase;
|
| 1760 |
+
}
|
| 1761 |
+
.trace-status-badge-error,
|
| 1762 |
+
.trace-status-badge-failed {
|
| 1763 |
+
background: #fef2f2;
|
| 1764 |
+
color: #b91c1c;
|
| 1765 |
+
}
|
| 1766 |
+
.trace-body {
|
| 1767 |
+
margin: 0;
|
| 1768 |
+
padding: 15px 17px 17px;
|
| 1769 |
+
overflow-wrap: anywhere;
|
| 1770 |
+
white-space: pre-wrap;
|
| 1771 |
+
font-family: var(--sans);
|
| 1772 |
+
font-size: 13px;
|
| 1773 |
+
line-height: 1.65;
|
| 1774 |
+
}
|
| 1775 |
+
.trace-reasoning .trace-card {
|
| 1776 |
+
border-style: dashed;
|
| 1777 |
+
border-color: #d7b98a;
|
| 1778 |
+
background: #fffdf8;
|
| 1779 |
+
}
|
| 1780 |
+
.trace-reasoning .trace-kind {
|
| 1781 |
+
color: #9a6b22;
|
| 1782 |
+
}
|
| 1783 |
+
.trace-reasoning .trace-body {
|
| 1784 |
+
font-style: italic;
|
| 1785 |
+
}
|
| 1786 |
+
.trace-user .trace-card {
|
| 1787 |
+
border-left: 3px solid #f3a66d;
|
| 1788 |
+
}
|
| 1789 |
+
.trace-tool_call .trace-card,
|
| 1790 |
+
.trace-tool_result .trace-card {
|
| 1791 |
+
border-color: #2d3036;
|
| 1792 |
+
background: #191a1e;
|
| 1793 |
+
color: #ececf0;
|
| 1794 |
+
}
|
| 1795 |
+
.trace-tool_call .trace-card > header,
|
| 1796 |
+
.trace-tool_result .trace-card > header {
|
| 1797 |
+
border-bottom-color: rgba(255, 255, 255, 0.1);
|
| 1798 |
+
}
|
| 1799 |
+
.trace-tool_call .trace-kind,
|
| 1800 |
+
.trace-tool_result .trace-kind {
|
| 1801 |
+
color: #f5a66d;
|
| 1802 |
+
}
|
| 1803 |
+
.trace-tool_call .trace-turn,
|
| 1804 |
+
.trace-tool_result .trace-turn {
|
| 1805 |
+
color: #979aa3;
|
| 1806 |
+
}
|
| 1807 |
+
.trace-tool_call .trace-body,
|
| 1808 |
+
.trace-tool_result .trace-body,
|
| 1809 |
+
.trace-output pre {
|
| 1810 |
+
font-family: var(--mono);
|
| 1811 |
+
font-size: 11.5px;
|
| 1812 |
+
line-height: 1.6;
|
| 1813 |
+
}
|
| 1814 |
+
#page .trace-tool_call pre.trace-body,
|
| 1815 |
+
#page .trace-tool_result pre.trace-body {
|
| 1816 |
+
margin: 0;
|
| 1817 |
+
padding: 15px 17px 17px;
|
| 1818 |
+
border: 0;
|
| 1819 |
+
border-radius: 0;
|
| 1820 |
+
background: transparent;
|
| 1821 |
+
color: #ececf0;
|
| 1822 |
+
}
|
| 1823 |
+
.trace-output {
|
| 1824 |
+
border-top: 1px dashed rgba(255, 255, 255, 0.14);
|
| 1825 |
+
}
|
| 1826 |
+
.trace-output summary {
|
| 1827 |
+
padding: 9px 14px;
|
| 1828 |
+
color: #aaaeb7;
|
| 1829 |
+
cursor: pointer;
|
| 1830 |
+
font: 700 10px var(--mono);
|
| 1831 |
+
letter-spacing: 0.06em;
|
| 1832 |
+
text-transform: uppercase;
|
| 1833 |
+
}
|
| 1834 |
+
#page .trace-output pre {
|
| 1835 |
+
max-height: 480px;
|
| 1836 |
+
margin: 0;
|
| 1837 |
+
padding: 0 16px 16px;
|
| 1838 |
+
border: 0;
|
| 1839 |
+
border-radius: 0;
|
| 1840 |
+
background: transparent;
|
| 1841 |
+
overflow: auto;
|
| 1842 |
+
color: #d7d8dd;
|
| 1843 |
+
white-space: pre-wrap;
|
| 1844 |
+
}
|
| 1845 |
+
|
| 1846 |
+
/* ---- workspace ---- */
|
| 1847 |
+
.workspace-header {
|
| 1848 |
+
padding-bottom: 24px;
|
| 1849 |
+
}
|
| 1850 |
+
.workspace-header p {
|
| 1851 |
+
margin: 0;
|
| 1852 |
+
color: var(--muted);
|
| 1853 |
+
font-family: var(--mono);
|
| 1854 |
+
font-size: 11px;
|
| 1855 |
+
}
|
| 1856 |
+
.workspace-inventory {
|
| 1857 |
+
overflow: hidden;
|
| 1858 |
+
border: 1px solid var(--line);
|
| 1859 |
+
border-radius: 11px;
|
| 1860 |
+
background: rgba(255, 255, 255, 0.92);
|
| 1861 |
+
}
|
| 1862 |
+
.workspace-folder > summary {
|
| 1863 |
+
display: flex;
|
| 1864 |
+
align-items: center;
|
| 1865 |
+
gap: 8px;
|
| 1866 |
+
min-height: 39px;
|
| 1867 |
+
padding: 8px 13px;
|
| 1868 |
+
background: #fafafa;
|
| 1869 |
+
cursor: pointer;
|
| 1870 |
+
font-weight: 650;
|
| 1871 |
+
list-style: none;
|
| 1872 |
+
}
|
| 1873 |
+
.workspace-folder > summary::-webkit-details-marker {
|
| 1874 |
+
display: none;
|
| 1875 |
+
}
|
| 1876 |
+
.workspace-folder > summary::after {
|
| 1877 |
+
content: "βΊ";
|
| 1878 |
+
margin-left: auto;
|
| 1879 |
+
color: #989ba2;
|
| 1880 |
+
transform: rotate(90deg);
|
| 1881 |
+
}
|
| 1882 |
+
.workspace-folder:not([open]) > summary::after {
|
| 1883 |
+
transform: rotate(0);
|
| 1884 |
+
}
|
| 1885 |
+
.workspace-folder-children {
|
| 1886 |
+
padding-left: 20px;
|
| 1887 |
+
}
|
| 1888 |
+
.workspace-file {
|
| 1889 |
+
display: grid;
|
| 1890 |
+
grid-template-columns: minmax(180px, 1fr) 72px 78px 180px 36px;
|
| 1891 |
+
align-items: center;
|
| 1892 |
+
min-height: 44px;
|
| 1893 |
+
padding: 7px 10px 7px 13px;
|
| 1894 |
+
color: var(--muted);
|
| 1895 |
+
font-family: var(--mono);
|
| 1896 |
+
font-size: 10.5px;
|
| 1897 |
+
}
|
| 1898 |
+
.workspace-file-name {
|
| 1899 |
+
display: flex;
|
| 1900 |
+
align-items: center;
|
| 1901 |
+
min-width: 0;
|
| 1902 |
+
gap: 8px;
|
| 1903 |
+
color: var(--ink);
|
| 1904 |
+
font-family: var(--sans);
|
| 1905 |
+
font-size: 12.5px;
|
| 1906 |
+
font-weight: 550;
|
| 1907 |
+
}
|
| 1908 |
+
.workspace-file-name span {
|
| 1909 |
+
overflow: hidden;
|
| 1910 |
+
text-overflow: ellipsis;
|
| 1911 |
+
white-space: nowrap;
|
| 1912 |
+
}
|
| 1913 |
+
.workspace-file-type {
|
| 1914 |
+
width: fit-content;
|
| 1915 |
+
padding: 1px 6px;
|
| 1916 |
+
border-radius: 999px;
|
| 1917 |
+
background: var(--accent-soft);
|
| 1918 |
+
color: var(--accent-strong);
|
| 1919 |
+
text-transform: uppercase;
|
| 1920 |
+
}
|
| 1921 |
+
.workspace-download {
|
| 1922 |
+
display: inline-flex;
|
| 1923 |
+
align-items: center;
|
| 1924 |
+
justify-content: center;
|
| 1925 |
+
width: 30px;
|
| 1926 |
+
height: 30px;
|
| 1927 |
+
border-radius: 7px;
|
| 1928 |
+
color: var(--muted);
|
| 1929 |
+
}
|
| 1930 |
+
.workspace-download:hover {
|
| 1931 |
+
background: var(--accent-soft);
|
| 1932 |
+
color: var(--accent-strong);
|
| 1933 |
+
}
|
| 1934 |
+
.workspace-unpublished {
|
| 1935 |
+
color: #9ca3af;
|
| 1936 |
+
text-align: center;
|
| 1937 |
+
}
|
| 1938 |
+
|
| 1939 |
+
.workspace-header {
|
| 1940 |
+
display: flex;
|
| 1941 |
+
align-items: center;
|
| 1942 |
+
justify-content: space-between;
|
| 1943 |
+
gap: 16px;
|
| 1944 |
+
flex-wrap: wrap;
|
| 1945 |
+
}
|
| 1946 |
+
.workspace-toggle {
|
| 1947 |
+
display: inline-flex;
|
| 1948 |
+
align-items: center;
|
| 1949 |
+
padding: 2px;
|
| 1950 |
+
border: 1px solid var(--line);
|
| 1951 |
+
border-radius: 999px;
|
| 1952 |
+
background: #fafafa;
|
| 1953 |
+
}
|
| 1954 |
+
.workspace-toggle-btn {
|
| 1955 |
+
padding: 4px 13px;
|
| 1956 |
+
border: 0;
|
| 1957 |
+
border-radius: 999px;
|
| 1958 |
+
background: transparent;
|
| 1959 |
+
color: var(--muted);
|
| 1960 |
+
font-family: var(--sans);
|
| 1961 |
+
font-size: 12px;
|
| 1962 |
+
font-weight: 600;
|
| 1963 |
+
cursor: pointer;
|
| 1964 |
+
}
|
| 1965 |
+
.workspace-toggle-btn:hover {
|
| 1966 |
+
color: var(--accent-strong);
|
| 1967 |
+
}
|
| 1968 |
+
.workspace-toggle-btn.is-active {
|
| 1969 |
+
background: var(--accent);
|
| 1970 |
+
color: #ffffff;
|
| 1971 |
+
}
|
| 1972 |
+
.workspace-group + .workspace-group {
|
| 1973 |
+
margin-top: 18px;
|
| 1974 |
+
}
|
| 1975 |
+
.workspace-group-head,
|
| 1976 |
+
.workspace-hub-group-head {
|
| 1977 |
+
display: flex;
|
| 1978 |
+
align-items: center;
|
| 1979 |
+
gap: 8px;
|
| 1980 |
+
margin: 0;
|
| 1981 |
+
padding: 8px 13px;
|
| 1982 |
+
background: #fafafa;
|
| 1983 |
+
border-bottom: 1px solid var(--line);
|
| 1984 |
+
color: var(--ink);
|
| 1985 |
+
font-family: var(--sans);
|
| 1986 |
+
font-size: 12px;
|
| 1987 |
+
font-weight: 650;
|
| 1988 |
+
text-transform: capitalize;
|
| 1989 |
+
}
|
| 1990 |
+
.workspace-group-count,
|
| 1991 |
+
.workspace-hub-count {
|
| 1992 |
+
padding: 0 7px;
|
| 1993 |
+
border-radius: 999px;
|
| 1994 |
+
background: var(--accent-soft);
|
| 1995 |
+
color: var(--accent-strong);
|
| 1996 |
+
font-family: var(--mono);
|
| 1997 |
+
font-size: 10.5px;
|
| 1998 |
+
}
|
| 1999 |
+
.workspace-group {
|
| 2000 |
+
overflow: hidden;
|
| 2001 |
+
border: 1px solid var(--line);
|
| 2002 |
+
border-radius: 11px;
|
| 2003 |
+
background: rgba(255, 255, 255, 0.92);
|
| 2004 |
+
}
|
| 2005 |
+
|
| 2006 |
+
.workspace-hub {
|
| 2007 |
+
margin-top: 28px;
|
| 2008 |
+
}
|
| 2009 |
+
.workspace-hub-title {
|
| 2010 |
+
margin: 0 0 14px;
|
| 2011 |
+
font-family: var(--sans);
|
| 2012 |
+
font-size: 16px;
|
| 2013 |
+
font-weight: 700;
|
| 2014 |
+
color: var(--ink);
|
| 2015 |
+
}
|
| 2016 |
+
.workspace-hub-group {
|
| 2017 |
+
overflow: hidden;
|
| 2018 |
+
border: 1px solid var(--line);
|
| 2019 |
+
border-radius: 11px;
|
| 2020 |
+
background: rgba(255, 255, 255, 0.92);
|
| 2021 |
+
}
|
| 2022 |
+
.workspace-hub-group + .workspace-hub-group {
|
| 2023 |
+
margin-top: 14px;
|
| 2024 |
+
}
|
| 2025 |
+
.workspace-hub-list {
|
| 2026 |
+
display: flex;
|
| 2027 |
+
flex-direction: column;
|
| 2028 |
+
}
|
| 2029 |
+
.workspace-hub-link {
|
| 2030 |
+
padding: 9px 13px;
|
| 2031 |
+
color: var(--accent-strong);
|
| 2032 |
+
font-family: var(--mono);
|
| 2033 |
+
font-size: 12px;
|
| 2034 |
+
text-decoration: none;
|
| 2035 |
+
overflow: hidden;
|
| 2036 |
+
text-overflow: ellipsis;
|
| 2037 |
+
white-space: nowrap;
|
| 2038 |
+
}
|
| 2039 |
+
.workspace-hub-link + .workspace-hub-link {
|
| 2040 |
+
border-top: 1px solid var(--line);
|
| 2041 |
+
}
|
| 2042 |
+
.workspace-hub-link:hover {
|
| 2043 |
+
background: var(--accent-soft);
|
| 2044 |
+
text-decoration: underline;
|
| 2045 |
+
}
|
| 2046 |
+
|
| 2047 |
+
/* --- UI nits --- */
|
| 2048 |
+
/* Flush group headers: #page h3/h2 (ID selectors) otherwise inject a top margin
|
| 2049 |
+
that, with overflow:hidden on the card, shows as whitespace above "Jobs" etc. */
|
| 2050 |
+
#page .workspace-hub-title {
|
| 2051 |
+
margin: 0 0 14px;
|
| 2052 |
+
}
|
| 2053 |
+
#page .workspace-hub-group-head,
|
| 2054 |
+
#page .workspace-group-head {
|
| 2055 |
+
margin: 0;
|
| 2056 |
+
}
|
| 2057 |
+
/* HF brand logo before the "Hugging Face artifacts" heading */
|
| 2058 |
+
.workspace-hub-title {
|
| 2059 |
+
display: flex;
|
| 2060 |
+
align-items: center;
|
| 2061 |
+
gap: 9px;
|
| 2062 |
+
}
|
| 2063 |
+
.workspace-hub-logo {
|
| 2064 |
+
width: 22px;
|
| 2065 |
+
height: 22px;
|
| 2066 |
+
flex: none;
|
| 2067 |
+
}
|
| 2068 |
+
/* Center empty-state placeholders (heading, body, command) */
|
| 2069 |
+
.view-empty {
|
| 2070 |
+
display: flex;
|
| 2071 |
+
flex-direction: column;
|
| 2072 |
+
align-items: center;
|
| 2073 |
+
}
|
| 2074 |
+
#page .view-empty h2,
|
| 2075 |
+
#page .view-empty p {
|
| 2076 |
+
text-align: center;
|
| 2077 |
+
}
|
| 2078 |
+
|
| 2079 |
+
@media (max-width: 720px) {
|
| 2080 |
+
#app {
|
| 2081 |
+
flex-direction: column;
|
| 2082 |
+
}
|
| 2083 |
+
#sidebar {
|
| 2084 |
+
width: 100%;
|
| 2085 |
+
flex: none;
|
| 2086 |
+
height: auto;
|
| 2087 |
+
position: static;
|
| 2088 |
+
}
|
| 2089 |
+
#content {
|
| 2090 |
+
display: block;
|
| 2091 |
+
width: 100%;
|
| 2092 |
+
padding: 28px 20px 80px;
|
| 2093 |
+
overflow-x: hidden;
|
| 2094 |
+
}
|
| 2095 |
+
#view-tabs {
|
| 2096 |
+
margin: 0 0 20px;
|
| 2097 |
+
gap: 18px;
|
| 2098 |
+
justify-content: flex-start;
|
| 2099 |
+
overflow-x: auto;
|
| 2100 |
+
}
|
| 2101 |
+
#view-tabs a {
|
| 2102 |
+
flex: 0 0 auto;
|
| 2103 |
+
}
|
| 2104 |
+
.trace-timeline::before {
|
| 2105 |
+
left: 16px;
|
| 2106 |
+
}
|
| 2107 |
+
.trace-entry {
|
| 2108 |
+
grid-template-columns: 32px minmax(0, 1fr);
|
| 2109 |
+
margin-left: calc(var(--trace-depth) * 10px);
|
| 2110 |
+
}
|
| 2111 |
+
.trace-rail {
|
| 2112 |
+
padding: 0;
|
| 2113 |
+
}
|
| 2114 |
+
.trace-number,
|
| 2115 |
+
.trace-elapsed {
|
| 2116 |
+
display: none;
|
| 2117 |
+
}
|
| 2118 |
+
.trace-dot {
|
| 2119 |
+
top: 10px;
|
| 2120 |
+
right: 10px;
|
| 2121 |
+
}
|
| 2122 |
+
.workspace-file {
|
| 2123 |
+
grid-template-columns: minmax(150px, 1fr) 66px 34px;
|
| 2124 |
+
}
|
| 2125 |
+
.workspace-file-size,
|
| 2126 |
+
.workspace-file-time {
|
| 2127 |
+
display: none;
|
| 2128 |
+
}
|
| 2129 |
+
#page {
|
| 2130 |
+
width: 100%;
|
| 2131 |
+
max-width: 100%;
|
| 2132 |
+
}
|
| 2133 |
+
#page h1,
|
| 2134 |
+
#logbook-title {
|
| 2135 |
+
font-size: 30px;
|
| 2136 |
+
}
|
| 2137 |
+
.cell-head {
|
| 2138 |
+
align-items: flex-start;
|
| 2139 |
+
flex-direction: column;
|
| 2140 |
+
gap: 4px;
|
| 2141 |
+
}
|
| 2142 |
+
}
|
logbook.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
logbook.json
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 2,
|
| 3 |
+
"title": "Reproduction: Bayesian Tensor Decomposition with Diffusion Model Prior",
|
| 4 |
+
"emoji": "π―",
|
| 5 |
+
"space_id": "riteshhf/repro-bayesian-tensor-decomposition-with-diffusion-model-prior",
|
| 6 |
+
"paper": null,
|
| 7 |
+
"tags": [
|
| 8 |
+
"icml2026-repro",
|
| 9 |
+
"open-reproductions",
|
| 10 |
+
"paper-q806xA8NPR",
|
| 11 |
+
"trackio"
|
| 12 |
+
],
|
| 13 |
+
"updated_at": "2026-08-02T13:41:24+00:00",
|
| 14 |
+
"root": {
|
| 15 |
+
"slug": "index",
|
| 16 |
+
"title": "Reproduction: Bayesian Tensor Decomposition with Diffusion Model Prior",
|
| 17 |
+
"file": "pages/index.md",
|
| 18 |
+
"children": [
|
| 19 |
+
{
|
| 20 |
+
"slug": "executive-summary",
|
| 21 |
+
"title": "Executive summary",
|
| 22 |
+
"file": "pages/executive-summary/page.md",
|
| 23 |
+
"children": []
|
| 24 |
+
},
|
| 25 |
+
{
|
| 26 |
+
"slug": "claim-1-joint-probabilistic-model-cusp-diffusion-prior",
|
| 27 |
+
"title": "Claim 1: Joint probabilistic model (CUSP + diffusion prior)",
|
| 28 |
+
"file": "pages/claim-1-joint-probabilistic-model-cusp-diffusion-prior/page.md",
|
| 29 |
+
"children": []
|
| 30 |
+
},
|
| 31 |
+
{
|
| 32 |
+
"slug": "claim-2-theorem-3-1-cusp-tail-shrinkage",
|
| 33 |
+
"title": "Claim 2: Theorem 3.1 β CUSP tail shrinkage",
|
| 34 |
+
"file": "pages/claim-2-theorem-3-1-cusp-tail-shrinkage/page.md",
|
| 35 |
+
"children": []
|
| 36 |
+
},
|
| 37 |
+
{
|
| 38 |
+
"slug": "claim-3-split-gibbs-sampler-noise-adaptive-coupling",
|
| 39 |
+
"title": "Claim 3: Split Gibbs sampler + noise-adaptive coupling",
|
| 40 |
+
"file": "pages/claim-3-split-gibbs-sampler-noise-adaptive-coupling/page.md",
|
| 41 |
+
"children": []
|
| 42 |
+
},
|
| 43 |
+
{
|
| 44 |
+
"slug": "claim-4-theorem-3-4-stationary-bias-bound",
|
| 45 |
+
"title": "Claim 4: Theorem 3.4 β stationary bias bound",
|
| 46 |
+
"file": "pages/claim-4-theorem-3-4-stationary-bias-bound/page.md",
|
| 47 |
+
"children": []
|
| 48 |
+
},
|
| 49 |
+
{
|
| 50 |
+
"slug": "claim-5-ffhq-imagenet-inpainting-table-1",
|
| 51 |
+
"title": "Claim 5: FFHQ / ImageNet inpainting (Table 1)",
|
| 52 |
+
"file": "pages/claim-5-ffhq-imagenet-inpainting-table-1/page.md",
|
| 53 |
+
"children": []
|
| 54 |
+
},
|
| 55 |
+
{
|
| 56 |
+
"slug": "claim-6-ood-high-resolution-2048x2048-table-2",
|
| 57 |
+
"title": "Claim 6: OOD high-resolution 2048x2048 (Table 2)",
|
| 58 |
+
"file": "pages/claim-6-ood-high-resolution-2048x2048-table-2/page.md",
|
| 59 |
+
"children": []
|
| 60 |
+
},
|
| 61 |
+
{
|
| 62 |
+
"slug": "conclusion",
|
| 63 |
+
"title": "Conclusion",
|
| 64 |
+
"file": "pages/conclusion/page.md",
|
| 65 |
+
"children": []
|
| 66 |
+
}
|
| 67 |
+
]
|
| 68 |
+
},
|
| 69 |
+
"traces": [],
|
| 70 |
+
"workspace": {
|
| 71 |
+
"file": "workspace.json",
|
| 72 |
+
"file_count": 0,
|
| 73 |
+
"total_size": 0,
|
| 74 |
+
"bucket_id": null
|
| 75 |
+
},
|
| 76 |
+
"agent_view_tokens": 22519,
|
| 77 |
+
"trace_view_tokens": 71531,
|
| 78 |
+
"workspace_view_tokens": 4030,
|
| 79 |
+
"revision": "fc6af605318d03986efa",
|
| 80 |
+
"traces_ref": {
|
| 81 |
+
"repo_id": "riteshhf/repro-bayesian-tensor-decomposition-with-diffusion-model-prior-traces",
|
| 82 |
+
"repo_type": "dataset",
|
| 83 |
+
"repo_url": "https://huggingface.co/datasets/riteshhf/repro-bayesian-tensor-decomposition-with-diffusion-model-prior-traces",
|
| 84 |
+
"private": true,
|
| 85 |
+
"viewer_path": "trackio/index.json"
|
| 86 |
+
},
|
| 87 |
+
"trace_dataset": "https://huggingface.co/datasets/riteshhf/repro-bayesian-tensor-decomposition-with-diffusion-model-prior-traces",
|
| 88 |
+
"workspace_ref": {
|
| 89 |
+
"repo_id": "riteshhf/repro-bayesian-tensor-decomposition-with-diffusion-model-prior-artifacts",
|
| 90 |
+
"repo_type": "bucket",
|
| 91 |
+
"repo_url": "https://huggingface.co/buckets/riteshhf/repro-bayesian-tensor-decomposition-with-diffusion-model-prior-artifacts",
|
| 92 |
+
"private": true
|
| 93 |
+
},
|
| 94 |
+
"workspace_bucket": "https://huggingface.co/buckets/riteshhf/repro-bayesian-tensor-decomposition-with-diffusion-model-prior-artifacts"
|
| 95 |
+
}
|
pages/claim-1-joint-probabilistic-model-cusp-diffusion-prior/page.md
ADDED
|
@@ -0,0 +1,722 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Claim 1: Joint probabilistic model (CUSP + diffusion prior)
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
---
|
| 5 |
+
<!-- trackio-cell
|
| 6 |
+
{"type": "markdown", "id": "cell_555853742813", "created_at": "2026-08-02T10:26:15+00:00", "title": "Claim and method"}
|
| 7 |
+
-->
|
| 8 |
+
## What is claimed
|
| 9 |
+
|
| 10 |
+
Claim 1 is a **modelling claim**: DiffBCP defines a single joint probability over the observed tensor $\mathscr{Y}$, the reconstructed tensor $\mathscr{X}$, the CP weights $\lambda$, the factor matrices $A^{(1:N)}$ and the noise precision $\tau$ (Section 3.1, Eq. 3):
|
| 11 |
+
|
| 12 |
+
```
|
| 13 |
+
p(Y, X, lambda, A^(1:N), tau) β p(Y | X, tau) Β· p(X | A^(1:N), lambda) Β· p(A^(1:N)) Β· p(lambda) Β· p(X) Β· p(tau)
|
| 14 |
+
```
|
| 15 |
+
|
| 16 |
+
with (i) `p(X | A, lambda) = delta(X - CP(lambda, A^(1),...,A^(N)))` a **hard** low-rank constraint, (ii) `p(lambda)` the **CUSP** (cumulative shrinkage process) prior of Legramanti et al. (2020) giving automatic CP-rank selection, and (iii) `p(X)` an **off-the-shelf pre-trained diffusion model** acting as a soft, learned data prior on the same reconstructed tensor.
|
| 17 |
+
|
| 18 |
+
## How this was verified
|
| 19 |
+
|
| 20 |
+
Official implementation, audited at the exact commit:
|
| 21 |
+
[github.com/taozerui/DiffBCP@10d13acc4db9d875edc3d2e22aa9db0f49e93b00](https://github.com/taozerui/DiffBCP/tree/10d13acc4db9d875edc3d2e22aa9db0f49e93b00) (repo: [github.com/taozerui/DiffBCP](https://github.com/taozerui/DiffBCP), single commit `init`, pushed 2026-06-27).
|
| 22 |
+
|
| 23 |
+
Paper: [arXiv:2606.03212](https://arxiv.org/abs/2606.03212) Β· OpenReview [q806xA8NPR](https://openreview.net/forum?id=q806xA8NPR).
|
| 24 |
+
|
| 25 |
+
Every factor of Eq. 3 was located in the code and each latent-variable prior was checked against the corresponding conjugate update by an **independent re-derivation of the augmented log-target** (see Claim 3 for the numerical results β the two claims share one audit script).
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
---
|
| 29 |
+
<!-- trackio-cell
|
| 30 |
+
{"type": "markdown", "id": "cell_bd695531cdb8", "created_at": "2026-08-02T10:26:33+00:00", "title": "Eq. 3 factor-by-factor audit"}
|
| 31 |
+
-->
|
| 32 |
+
## Factor-by-factor correspondence (Eq. 3 β code)
|
| 33 |
+
|
| 34 |
+
| Eq. 3 factor | Paper | Implementation (commit `10d13ac`) | Verified |
|
| 35 |
+
|---|---|---|---|
|
| 36 |
+
| `p(Y \| X, tau)` | iid `Normal(y_i \| x_i, tau^-1)`, `i in Omega` | `cusp_cp.py:409-414` `_post_sample_tau`, masked residual; operator `src/tasks/completion.py` | yes |
|
| 37 |
+
| `p(X \| A, lambda)` | `delta(X - CP(lambda, A^(1..N)))` | `cusp_cp.py:219-238` `forward()`, `opt_einsum` CP contraction; X is never a free variable | yes |
|
| 38 |
+
| `p(A^(1:N))` | `a^(n)_ir ~ Normal(0,1)` | identity term in `Sigma^(n)` at `cusp_cp.py:386-389` (`torch.eye(rank) + ...`) | yes |
|
| 39 |
+
| `p(lambda)` | CUSP: `lambda_r\|theta_r ~ N(0,theta_r)`, `theta_r\|pi_r ~ (1-pi_r)P0 + pi_r delta_theta_inf`, `pi_r = sum_{l<=r} omega_l`, `nu_l ~ Beta(1,beta)` | `cusp_cp.py:183-203` (priors), `302-333` (stick-breaking + spike/slab), `416-452` (updates) | yes, with one caveat (below) |
|
| 40 |
+
| `p(X)` | pre-trained diffusion score `s_psi` | `src/models/edm/edm.py` + `src/samplers/pnp_edm/denoiser_edm.py`; EDM wrapper over the guided-diffusion ADM UNet | yes |
|
| 41 |
+
| `p(tau)` | `Gamma(alpha_0, kappa_0)` | `cusp_cp.py:183` `dist.Gamma(tau_alpha, tau_beta)`, defaults `1e-3, 1e-3` | yes |
|
| 42 |
+
|
| 43 |
+
The hybrid-prior structure is real and is not a reparameterisation: `p(X)` enters only through the augmented variable and the split-Gibbs coupling `phi(Z,X;rho)` (Eq. 5), while `p(X\|A,lambda)` remains a hard constraint. Setting `sampler.decomposition.use=false` collapses the method to PnP-DM; setting `num_iters` with no diffusion block collapses it to a CUSP Bayesian CP. Both ablation paths exist in the code.
|
| 44 |
+
|
| 45 |
+
**Naming note for future readers:** the code swaps the paper's symbols. In `src/samplers/pnp_edm/pnp_edm.py` the variable `z` is the *CP reconstruction* (the paper's $\mathscr{X}$) and `x` is the *diffusion-denoised* draw (the paper's $\mathscr{Z}$). The logged metrics `psnr_z` / `psnr_x` follow the code's convention, so `psnr_z` is the quantity Table 1 reports.
|
| 46 |
+
|
| 47 |
+
|
| 48 |
+
---
|
| 49 |
+
<!-- trackio-cell
|
| 50 |
+
{"type": "code", "id": "cell_bdd04bfed822", "created_at": "2026-08-02T10:26:40+00:00", "title": "Run: python gibbs_conditionals.py (exit 0)", "command": [".venv-repro/bin/python", "audits/gibbs_conditionals.py", "audits/gibbs_results.json"], "exit_code": 0, "duration_s": 2.131}
|
| 51 |
+
-->
|
| 52 |
+
````bash
|
| 53 |
+
$ .venv-repro/bin/python audits/gibbs_conditionals.py audits/gibbs_results.json
|
| 54 |
+
````
|
| 55 |
+
|
| 56 |
+
exit 0 Β· 2.1s
|
| 57 |
+
|
| 58 |
+
|
| 59 |
+
````python title=gibbs_conditionals.py
|
| 60 |
+
"""Numerical audit of the DiffBCP split Gibbs sampler (Claims 1 and 3).
|
| 61 |
+
|
| 62 |
+
Claim 1 says the model is the joint of Eq. 3; Claim 3 says Algorithm 1 splits
|
| 63 |
+
inference into conjugate Gaussian/Gamma updates for the latent variables plus a
|
| 64 |
+
diffusion-guided denoising step for Z, with coupling schedule tau*rho^2 = c.
|
| 65 |
+
|
| 66 |
+
This script checks the *implementation* at
|
| 67 |
+
github.com/taozerui/DiffBCP (src/samplers/decomposition/cusp_cp.py,
|
| 68 |
+
src/samplers/pnp_edm/pnp_edm.py) against an independent re-derivation of the
|
| 69 |
+
full conditionals from the augmented target
|
| 70 |
+
|
| 71 |
+
log p = -tau/2 * sum_{i in Omega} (y_i - x_i)^2 [likelihood]
|
| 72 |
+
-1/(2 rho^2) * ||Z - X||_F^2 [coupling, Eq. 5]
|
| 73 |
+
-1/2 * sum_r P_r * lambda_r^2 [CUSP weight prior]
|
| 74 |
+
-1/2 * ||A||_F^2 [factor prior]
|
| 75 |
+
+ (alpha_0-1) log tau - kappa_0 tau [noise prior]
|
| 76 |
+
with X = CP(lambda, A^(1..N)).
|
| 77 |
+
|
| 78 |
+
Each conditional is recovered numerically by evaluating this log-target on a
|
| 79 |
+
grid / by finite differences and completing the square, then compared with the
|
| 80 |
+
mean and covariance the code actually uses. CPU only, no GPU needed.
|
| 81 |
+
|
| 82 |
+
Checks
|
| 83 |
+
1. lambda_r conditional vs Eq. 6 (code _post_sample_lambda)
|
| 84 |
+
2. a^(n)_i conditional vs Eq. 7 (code _post_sample_factors)
|
| 85 |
+
3. tau conditional vs Eq. 8 (code _post_sample_tau)
|
| 86 |
+
4. nu_r conditional vs Eq. 10 (code _post_sample_nu)
|
| 87 |
+
5. tau*rho^2 = c schedule (code pnp_edm.py line 88)
|
| 88 |
+
6. Which role theta_r plays: the model declares lambda_r|theta_r ~ N(0,theta_r)
|
| 89 |
+
(theta = VARIANCE) but Eq. 6 and the code both use theta_r as a PRECISION.
|
| 90 |
+
Quantify what that does to the CUSP spike.
|
| 91 |
+
"""
|
| 92 |
+
|
| 93 |
+
from __future__ import annotations
|
| 94 |
+
|
| 95 |
+
import json
|
| 96 |
+
import sys
|
| 97 |
+
|
| 98 |
+
import numpy as np
|
| 99 |
+
import torch
|
| 100 |
+
|
| 101 |
+
sys.path.insert(0, "DiffBCP")
|
| 102 |
+
from src.samplers.decomposition.cusp_cp import CUSP_CP, khatri_rao # noqa: E402
|
| 103 |
+
|
| 104 |
+
SEED = 20260802
|
| 105 |
+
OUT = sys.argv[1] if len(sys.argv) > 1 else "audits/gibbs_results.json"
|
| 106 |
+
torch.set_default_dtype(torch.float64)
|
| 107 |
+
|
| 108 |
+
|
| 109 |
+
def cp_full(lam, factors):
|
| 110 |
+
"""Dense CP reconstruction from lambda and factor matrices."""
|
| 111 |
+
out = None
|
| 112 |
+
for r in range(lam.shape[0]):
|
| 113 |
+
comp = factors[0][:, r]
|
| 114 |
+
for f in factors[1:]:
|
| 115 |
+
comp = torch.tensordot(comp, f[:, r], dims=0)
|
| 116 |
+
out = comp * lam[r] if out is None else out + comp * lam[r]
|
| 117 |
+
return out
|
| 118 |
+
|
| 119 |
+
|
| 120 |
+
def log_target(lam, factors, tau, Y, Z, mask, theta_as_precision, rho):
|
| 121 |
+
"""Independent re-derivation of the augmented log-target (up to consts)."""
|
| 122 |
+
X = cp_full(lam, factors)
|
| 123 |
+
ll = -0.5 * tau * (((Y - X) ** 2) * mask).sum()
|
| 124 |
+
coup = -0.5 / rho**2 * ((Z - X) ** 2).sum()
|
| 125 |
+
lam_pri = -0.5 * (theta_as_precision * lam**2).sum()
|
| 126 |
+
fac_pri = -0.5 * sum((f**2).sum() for f in factors)
|
| 127 |
+
return ll + coup + lam_pri + fac_pri
|
| 128 |
+
|
| 129 |
+
|
| 130 |
+
def quad_fit(f, x0, h=1e-4):
|
| 131 |
+
"""Recover (mean, var) of a 1-D Gaussian from a log-density by curvature."""
|
| 132 |
+
fm, f0, fp = f(x0 - h), f(x0), f(x0 + h)
|
| 133 |
+
d2 = (fp - 2 * f0 + fm) / h**2 # = -1/var
|
| 134 |
+
d1 = (fp - fm) / (2 * h)
|
| 135 |
+
var = -1.0 / d2
|
| 136 |
+
mean = x0 + d1 * var
|
| 137 |
+
return mean, var
|
| 138 |
+
|
| 139 |
+
|
| 140 |
+
def main() -> dict:
|
| 141 |
+
rng = np.random.default_rng(SEED)
|
| 142 |
+
torch.manual_seed(SEED)
|
| 143 |
+
res: dict = {}
|
| 144 |
+
|
| 145 |
+
# ---- small synthetic problem -----------------------------------------
|
| 146 |
+
shape = [4, 5, 3]
|
| 147 |
+
R = 6
|
| 148 |
+
rho = 0.7
|
| 149 |
+
m = CUSP_CP(
|
| 150 |
+
shape=shape,
|
| 151 |
+
orig_shape=shape,
|
| 152 |
+
init_rank=R,
|
| 153 |
+
use_patch=False,
|
| 154 |
+
theta_infty=1e-3,
|
| 155 |
+
nu_beta=5.0,
|
| 156 |
+
theta_alpha=2.0,
|
| 157 |
+
theta_beta=2.0,
|
| 158 |
+
).double()
|
| 159 |
+
for f in m.cp_factors:
|
| 160 |
+
f.data = torch.randn_like(f.data) * 0.5
|
| 161 |
+
m.cp_lambda.data = torch.randn(R, dtype=torch.float64)
|
| 162 |
+
m.theta.data = torch.rand(R, dtype=torch.float64) + 0.5
|
| 163 |
+
m.tau.data = torch.tensor(3.7, dtype=torch.float64)
|
| 164 |
+
|
| 165 |
+
Y = torch.randn(*shape, dtype=torch.float64)
|
| 166 |
+
Z = torch.randn(*shape, dtype=torch.float64)
|
| 167 |
+
mask = (torch.rand(*shape) < 0.6).double()
|
| 168 |
+
|
| 169 |
+
factors = [f.data for f in m.cp_factors]
|
| 170 |
+
lam = m.cp_lambda.data
|
| 171 |
+
theta = m.theta.data
|
| 172 |
+
tau = m.tau.data
|
| 173 |
+
|
| 174 |
+
# ---- 1. lambda_r conditional (Eq. 6) ---------------------------------
|
| 175 |
+
lam_rows = []
|
| 176 |
+
for r in range(R):
|
| 177 |
+
# autograd curvature: the conditional is exactly Gaussian, so one
|
| 178 |
+
# gradient + one Hessian entry recover (mean, var) to machine precision.
|
| 179 |
+
v = lam[r].clone().requires_grad_(True)
|
| 180 |
+
l2 = torch.cat([lam[:r], v.reshape(1), lam[r + 1 :]])
|
| 181 |
+
val = log_target(l2, factors, tau, Y, Z, mask, theta, rho)
|
| 182 |
+
(d1,) = torch.autograd.grad(val, v, create_graph=True)
|
| 183 |
+
(d2,) = torch.autograd.grad(d1, v)
|
| 184 |
+
num_var = float(-1.0 / d2)
|
| 185 |
+
num_mean = float(lam[r]) + float(d1) * num_var
|
| 186 |
+
|
| 187 |
+
# what the code computes (Eq. 6), replicated exactly
|
| 188 |
+
C_r = m.compute_single_factor(r)
|
| 189 |
+
x_hat = cp_full(lam, factors)
|
| 190 |
+
D_r = x_hat - lam[r] * C_r
|
| 191 |
+
sig = 1.0 / (theta[r] + tau * ((C_r**2) * mask).sum() + (C_r**2).sum() / rho**2)
|
| 192 |
+
mu = sig * (
|
| 193 |
+
(tau * C_r * (Y - D_r) * mask).sum() + (C_r * (Z - D_r)).sum() / rho**2
|
| 194 |
+
)
|
| 195 |
+
lam_rows.append(
|
| 196 |
+
{
|
| 197 |
+
"r": r,
|
| 198 |
+
"code_mean": float(mu),
|
| 199 |
+
"numeric_mean": float(num_mean),
|
| 200 |
+
"mean_abs_err": abs(float(mu) - float(num_mean)),
|
| 201 |
+
"code_var": float(sig),
|
| 202 |
+
"numeric_var": float(num_var),
|
| 203 |
+
"var_rel_err": abs(float(sig) - float(num_var)) / float(num_var),
|
| 204 |
+
}
|
| 205 |
+
)
|
| 206 |
+
res["eq6_lambda"] = {
|
| 207 |
+
"rows": lam_rows,
|
| 208 |
+
"max_mean_abs_err": max(x["mean_abs_err"] for x in lam_rows),
|
| 209 |
+
"max_var_rel_err": max(x["var_rel_err"] for x in lam_rows),
|
| 210 |
+
}
|
| 211 |
+
|
| 212 |
+
# ---- 2. a^(n)_i conditional (Eq. 7) ----------------------------------
|
| 213 |
+
dim = len(shape)
|
| 214 |
+
fac_rows = []
|
| 215 |
+
for n in (0, 1, 2):
|
| 216 |
+
i = 1
|
| 217 |
+
# numeric: Hessian and gradient of the log-target wrt row a^(n)_i
|
| 218 |
+
base = factors[n][i].clone()
|
| 219 |
+
|
| 220 |
+
def g(vec, n=n, i=i):
|
| 221 |
+
fs = [f.clone() for f in factors]
|
| 222 |
+
fs[n] = fs[n].clone()
|
| 223 |
+
fs[n][i] = vec
|
| 224 |
+
return log_target(lam, fs, tau, Y, Z, mask, theta, rho)
|
| 225 |
+
|
| 226 |
+
v = base.clone().requires_grad_(True)
|
| 227 |
+
val = g(v)
|
| 228 |
+
grad = torch.autograd.grad(val, v, create_graph=True)[0]
|
| 229 |
+
H = torch.stack([torch.autograd.grad(grad[k], v, retain_graph=True)[0] for k in range(R)])
|
| 230 |
+
num_cov = torch.linalg.inv(-H)
|
| 231 |
+
num_mean = base + num_cov @ grad.detach()
|
| 232 |
+
|
| 233 |
+
# code's Eq. 7
|
| 234 |
+
other = [factors[j] for j in range(dim) if j != n]
|
| 235 |
+
B = khatri_rao(other[-2], other[-1])
|
| 236 |
+
for j in range(3, dim):
|
| 237 |
+
B = khatri_rao(other[-j], B)
|
| 238 |
+
B = (lam[None, :] * B).T # (R, prod)
|
| 239 |
+
BBT = B @ B.T
|
| 240 |
+
perm = [n] + [j for j in range(dim) if j != n]
|
| 241 |
+
mask_n = mask.permute(*perm).contiguous().view(shape[n], -1)
|
| 242 |
+
Y_n = Y.permute(*perm).contiguous().view(shape[n], -1)
|
| 243 |
+
Z_n = Z.permute(*perm).contiguous().view(shape[n], -1)
|
| 244 |
+
Bi = B[:, mask_n[i] == 1]
|
| 245 |
+
Sig = torch.linalg.inv(torch.eye(R, dtype=torch.float64) + tau * (Bi @ Bi.T) + BBT / rho**2)
|
| 246 |
+
yi = Y_n[i, mask_n[i] == 1]
|
| 247 |
+
Mu = Sig @ (tau * (Bi @ yi) + (B @ Z_n[i]) / rho**2)
|
| 248 |
+
|
| 249 |
+
fac_rows.append(
|
| 250 |
+
{
|
| 251 |
+
"mode": n,
|
| 252 |
+
"row": i,
|
| 253 |
+
"mean_max_abs_err": float((Mu - num_mean).abs().max()),
|
| 254 |
+
"cov_max_abs_err": float((Sig - num_cov).abs().max()),
|
| 255 |
+
"cov_max_rel_err": float(
|
| 256 |
+
((Sig - num_cov).abs() / num_cov.abs().clamp_min(1e-12)).max()
|
| 257 |
+
),
|
| 258 |
+
}
|
| 259 |
+
)
|
| 260 |
+
res["eq7_factors"] = {
|
| 261 |
+
"rows": fac_rows,
|
| 262 |
+
"max_mean_abs_err": max(x["mean_max_abs_err"] for x in fac_rows),
|
| 263 |
+
"max_cov_abs_err": max(x["cov_max_abs_err"] for x in fac_rows),
|
| 264 |
+
}
|
| 265 |
+
|
| 266 |
+
# ---- 3. tau conditional (Eq. 8) --------------------------------------
|
| 267 |
+
X = cp_full(lam, factors)
|
| 268 |
+
resid = (Y - X)[mask == 1]
|
| 269 |
+
a_post = 1e-3 + 0.5 * resid.numel()
|
| 270 |
+
b_post = 1e-3 + 0.5 * (resid**2).sum()
|
| 271 |
+
# Independent re-derivation: log p(tau | rest) collects the Gaussian
|
| 272 |
+
# likelihood normaliser (|Omega|/2) log tau, the exponent -tau/2 * SSR, and
|
| 273 |
+
# the Gamma(alpha_0, kappa_0) prior. Recover (shape, rate) by autograd.
|
| 274 |
+
alpha_0 = kappa_0 = 1e-3
|
| 275 |
+
ssr = (resid**2).sum()
|
| 276 |
+
t = torch.tensor(float(a_post / b_post), dtype=torch.float64, requires_grad=True)
|
| 277 |
+
lp = (
|
| 278 |
+
0.5 * resid.numel() * torch.log(t)
|
| 279 |
+
- 0.5 * t * ssr
|
| 280 |
+
+ (alpha_0 - 1.0) * torch.log(t)
|
| 281 |
+
- kappa_0 * t
|
| 282 |
+
)
|
| 283 |
+
(g1,) = torch.autograd.grad(lp, t, create_graph=True)
|
| 284 |
+
(g2,) = torch.autograd.grad(g1, t)
|
| 285 |
+
# Gamma(a,b): dlogp/dt = (a-1)/t - b ; d2logp/dt2 = -(a-1)/t^2
|
| 286 |
+
a_num = 1.0 - float(g2) * float(t) ** 2
|
| 287 |
+
b_num = (a_num - 1.0) / float(t) - float(g1)
|
| 288 |
+
res["eq8_tau"] = {
|
| 289 |
+
"code_shape": float(a_post),
|
| 290 |
+
"numeric_shape": float(a_num),
|
| 291 |
+
"shape_rel_err": abs(float(a_post) - float(a_num)) / float(a_post),
|
| 292 |
+
"code_rate": float(b_post),
|
| 293 |
+
"numeric_rate": float(b_num),
|
| 294 |
+
"rate_rel_err": abs(float(b_post) - float(b_num)) / float(b_post),
|
| 295 |
+
"n_observed": int(resid.numel()),
|
| 296 |
+
}
|
| 297 |
+
|
| 298 |
+
# ---- 4. nu_r conditional (Eq. 10) ------------------------------------
|
| 299 |
+
# Eq. 10: Beta(1 + #{zeta_h == r}, beta + #{zeta_h > r}); code matches.
|
| 300 |
+
zeta = torch.tensor([0.0, 2.0, 2.0, 4.0, 1.0, 5.0], dtype=torch.float64)
|
| 301 |
+
m.zeta.data = zeta
|
| 302 |
+
beta_nu = 5.0
|
| 303 |
+
nu_rows = []
|
| 304 |
+
for r in range(R - 1):
|
| 305 |
+
code_a = 1.0 + float((zeta == r).sum())
|
| 306 |
+
code_b = beta_nu + float((zeta > r).sum())
|
| 307 |
+
nu_rows.append({"r": r, "alpha": code_a, "beta": code_b})
|
| 308 |
+
res["eq10_nu"] = {"rows": nu_rows, "matches_paper_form": True}
|
| 309 |
+
|
| 310 |
+
# ---- 5. tau rho^2 = c schedule ---------------------------------------
|
| 311 |
+
c = 100.0
|
| 312 |
+
sched = []
|
| 313 |
+
for tau_val in (0.5, 4.0, 25.0, 400.0, 1600.0):
|
| 314 |
+
rho_iter = float(np.sqrt(c / tau_val)) # pnp_edm.py line 88
|
| 315 |
+
sched.append(
|
| 316 |
+
{
|
| 317 |
+
"tau": tau_val,
|
| 318 |
+
"rho": rho_iter,
|
| 319 |
+
"tau_rho2": tau_val * rho_iter**2,
|
| 320 |
+
"abs_err_vs_c": abs(tau_val * rho_iter**2 - c),
|
| 321 |
+
}
|
| 322 |
+
)
|
| 323 |
+
# with the paper's clip rho in [0.3, 10]
|
| 324 |
+
clipped = []
|
| 325 |
+
for tau_val in (0.5, 4.0, 25.0, 400.0, 1600.0, 5000.0):
|
| 326 |
+
r_ = float(np.clip(np.sqrt(c / tau_val), 0.3, 10.0))
|
| 327 |
+
clipped.append({"tau": tau_val, "rho_clipped": r_, "tau_rho2": tau_val * r_**2})
|
| 328 |
+
res["schedule"] = {
|
| 329 |
+
"unclipped": sched,
|
| 330 |
+
"max_abs_err_vs_c": max(x["abs_err_vs_c"] for x in sched),
|
| 331 |
+
"clipped": clipped,
|
| 332 |
+
"note": "clip to [rho_min, rho_max] breaks the exact invariant at extreme tau",
|
| 333 |
+
}
|
| 334 |
+
|
| 335 |
+
# ---- 6. theta: variance or precision? --------------------------------
|
| 336 |
+
# Model: lambda_r | theta_r ~ N(0, theta_r) => prior precision 1/theta_r.
|
| 337 |
+
# Eq. 6 / code: sigma_r = (theta_r + ...)^-1 => theta_r used as a precision.
|
| 338 |
+
th_inf = 1e-3
|
| 339 |
+
res["theta_role"] = {
|
| 340 |
+
"theta_infty": th_inf,
|
| 341 |
+
"prior_precision_if_theta_is_variance": 1.0 / th_inf,
|
| 342 |
+
"prior_precision_as_implemented": th_inf,
|
| 343 |
+
"ratio": (1.0 / th_inf) / th_inf,
|
| 344 |
+
"note": (
|
| 345 |
+
"A spike component (theta_r = theta_infty = 1e-3) should contribute "
|
| 346 |
+
"prior precision 1/theta_infty = 1000 (hard shrinkage). Eq. 6 and "
|
| 347 |
+
"cusp_cp.py:349 instead add theta_r = 1e-3, i.e. an essentially flat "
|
| 348 |
+
"prior - a factor 1e6 weaker than the model definition implies."
|
| 349 |
+
),
|
| 350 |
+
}
|
| 351 |
+
|
| 352 |
+
# Empirically: posterior sd of an unconstrained lambda_r under both readings.
|
| 353 |
+
r = 0
|
| 354 |
+
C_r = m.compute_single_factor(r)
|
| 355 |
+
data_prec = float(tau * ((C_r**2) * mask).sum() + (C_r**2).sum() / rho**2)
|
| 356 |
+
res["theta_role"]["posterior_sd_spike_as_implemented"] = float(
|
| 357 |
+
(1.0 / (th_inf + data_prec)) ** 0.5
|
| 358 |
+
)
|
| 359 |
+
res["theta_role"]["posterior_sd_spike_as_defined"] = float(
|
| 360 |
+
(1.0 / (1.0 / th_inf + data_prec)) ** 0.5
|
| 361 |
+
)
|
| 362 |
+
res["theta_role"]["data_precision"] = data_prec
|
| 363 |
+
|
| 364 |
+
return res
|
| 365 |
+
|
| 366 |
+
|
| 367 |
+
if __name__ == "__main__":
|
| 368 |
+
r = main()
|
| 369 |
+
with open(OUT, "w") as f:
|
| 370 |
+
json.dump(r, f, indent=2)
|
| 371 |
+
|
| 372 |
+
print("=" * 78)
|
| 373 |
+
print("1. lambda_r full conditional (Eq. 6) vs numeric curvature of the target")
|
| 374 |
+
e = r["eq6_lambda"]
|
| 375 |
+
print(f" max |mean_code - mean_numeric| over r : {e['max_mean_abs_err']:.3e}")
|
| 376 |
+
print(f" max relative var error : {e['max_var_rel_err']:.3e}")
|
| 377 |
+
print()
|
| 378 |
+
print("2. a^(n)_i full conditional (Eq. 7) vs autograd Hessian of the target")
|
| 379 |
+
e = r["eq7_factors"]
|
| 380 |
+
print(f" max |mean_code - mean_numeric| : {e['max_mean_abs_err']:.3e}")
|
| 381 |
+
print(f" max |cov_code - cov_numeric| : {e['max_cov_abs_err']:.3e}")
|
| 382 |
+
print()
|
| 383 |
+
print("3. tau full conditional (Eq. 8)")
|
| 384 |
+
e = r["eq8_tau"]
|
| 385 |
+
print(
|
| 386 |
+
f" shape {e['code_shape']:.6f} vs {e['numeric_shape']:.6f} (rel {e['shape_rel_err']:.2e}); "
|
| 387 |
+
f"rate {e['code_rate']:.6f} vs {e['numeric_rate']:.6f} (rel {e['rate_rel_err']:.2e})"
|
| 388 |
+
)
|
| 389 |
+
print(f" |Omega| = {e['n_observed']}")
|
| 390 |
+
print()
|
| 391 |
+
print("4. nu_r full conditional (Eq. 10): Beta(1+#{zeta==r}, beta+#{zeta>r})")
|
| 392 |
+
for x in r["eq10_nu"]["rows"]:
|
| 393 |
+
print(f" r={x['r']} alpha={x['alpha']:.0f} beta={x['beta']:.0f}")
|
| 394 |
+
print()
|
| 395 |
+
print("5. noise-adaptive coupling schedule rho = sqrt(c/tau) => tau*rho^2 = c")
|
| 396 |
+
print(f" {'tau':>8} {'rho':>10} {'tau*rho^2':>12}")
|
| 397 |
+
for x in r["schedule"]["unclipped"]:
|
| 398 |
+
print(f" {x['tau']:>8.1f} {x['rho']:>10.5f} {x['tau_rho2']:>12.8f}")
|
| 399 |
+
print(f" max |tau*rho^2 - c| = {r['schedule']['max_abs_err_vs_c']:.3e}")
|
| 400 |
+
print(" with the paper's clip rho in [0.3, 10]:")
|
| 401 |
+
for x in r["schedule"]["clipped"]:
|
| 402 |
+
print(f" {x['tau']:>8.1f} {x['rho_clipped']:>10.5f} {x['tau_rho2']:>12.4f}")
|
| 403 |
+
print()
|
| 404 |
+
print("6. role of theta_r (model: lambda_r|theta_r ~ N(0, theta_r))")
|
| 405 |
+
e = r["theta_role"]
|
| 406 |
+
print(f" prior precision a spike SHOULD contribute : {e['prior_precision_if_theta_is_variance']:.1f}")
|
| 407 |
+
print(f" prior precision Eq. 6 / the code contributes: {e['prior_precision_as_implemented']:.4f}")
|
| 408 |
+
print(f" data precision for this component : {e['data_precision']:.4f}")
|
| 409 |
+
print(f" posterior sd of a spiked lambda_r, as implemented : {e['posterior_sd_spike_as_implemented']:.6f}")
|
| 410 |
+
print(f" posterior sd of a spiked lambda_r, as defined : {e['posterior_sd_spike_as_defined']:.6f}")
|
| 411 |
+
print("=" * 78)
|
| 412 |
+
|
| 413 |
+
````
|
| 414 |
+
|
| 415 |
+
|
| 416 |
+
````json title=gibbs_results.json
|
| 417 |
+
{
|
| 418 |
+
"eq6_lambda": {
|
| 419 |
+
"rows": [
|
| 420 |
+
{
|
| 421 |
+
"r": 0,
|
| 422 |
+
"code_mean": -1.5776097839304997,
|
| 423 |
+
"numeric_mean": -1.5776097839304994,
|
| 424 |
+
"mean_abs_err": 2.220446049250313e-16,
|
| 425 |
+
"code_var": 0.330998373864371,
|
| 426 |
+
"numeric_var": 0.33099837386437087,
|
| 427 |
+
"var_rel_err": 3.3541645889779475e-16
|
| 428 |
+
},
|
| 429 |
+
{
|
| 430 |
+
"r": 1,
|
| 431 |
+
"code_mean": 0.11591799628578246,
|
| 432 |
+
"numeric_mean": 0.11591799628578242,
|
| 433 |
+
"mean_abs_err": 4.163336342344337e-17,
|
| 434 |
+
"code_var": 0.4118227827092282,
|
| 435 |
+
"numeric_var": 0.4118227827092282,
|
| 436 |
+
"var_rel_err": 0.0
|
| 437 |
+
},
|
| 438 |
+
{
|
| 439 |
+
"r": 2,
|
| 440 |
+
"code_mean": -1.030035188143817,
|
| 441 |
+
"numeric_mean": -1.030035188143817,
|
| 442 |
+
"mean_abs_err": 0.0,
|
| 443 |
+
"code_var": 0.6964626268170525,
|
| 444 |
+
"numeric_var": 0.6964626268170525,
|
| 445 |
+
"var_rel_err": 0.0
|
| 446 |
+
},
|
| 447 |
+
{
|
| 448 |
+
"r": 3,
|
| 449 |
+
"code_mean": 0.5043542821653874,
|
| 450 |
+
"numeric_mean": 0.5043542821653875,
|
| 451 |
+
"mean_abs_err": 1.1102230246251565e-16,
|
| 452 |
+
"code_var": 0.7211285799470005,
|
| 453 |
+
"numeric_var": 0.7211285799470005,
|
| 454 |
+
"var_rel_err": 0.0
|
| 455 |
+
},
|
| 456 |
+
{
|
| 457 |
+
"r": 4,
|
| 458 |
+
"code_mean": -0.5150136142152674,
|
| 459 |
+
"numeric_mean": -0.5150136142152675,
|
| 460 |
+
"mean_abs_err": 1.1102230246251565e-16,
|
| 461 |
+
"code_var": 0.6567404570718043,
|
| 462 |
+
"numeric_var": 0.6567404570718043,
|
| 463 |
+
"var_rel_err": 0.0
|
| 464 |
+
},
|
| 465 |
+
{
|
| 466 |
+
"r": 5,
|
| 467 |
+
"code_mean": 0.2054574169230304,
|
| 468 |
+
"numeric_mean": 0.20545741692303066,
|
| 469 |
+
"mean_abs_err": 2.498001805406602e-16,
|
| 470 |
+
"code_var": 0.23397225366543375,
|
| 471 |
+
"numeric_var": 0.23397225366543375,
|
| 472 |
+
"var_rel_err": 0.0
|
| 473 |
+
}
|
| 474 |
+
],
|
| 475 |
+
"max_mean_abs_err": 2.498001805406602e-16,
|
| 476 |
+
"max_var_rel_err": 3.3541645889779475e-16
|
| 477 |
+
},
|
| 478 |
+
"eq7_factors": {
|
| 479 |
+
"rows": [
|
| 480 |
+
{
|
| 481 |
+
"mode": 0,
|
| 482 |
+
"row": 1,
|
| 483 |
+
"mean_max_abs_err": 2.220446049250313e-16,
|
| 484 |
+
"cov_max_abs_err": 2.7755575615628914e-17,
|
| 485 |
+
"cov_max_rel_err": 4.00313981534898e-14
|
| 486 |
+
},
|
| 487 |
+
{
|
| 488 |
+
"mode": 1,
|
| 489 |
+
"row": 1,
|
| 490 |
+
"mean_max_abs_err": 2.220446049250313e-16,
|
| 491 |
+
"cov_max_abs_err": 5.551115123125783e-17,
|
| 492 |
+
"cov_max_rel_err": 4.066713758061742e-16
|
| 493 |
+
},
|
| 494 |
+
{
|
| 495 |
+
"mode": 2,
|
| 496 |
+
"row": 1,
|
| 497 |
+
"mean_max_abs_err": 6.106226635438361e-16,
|
| 498 |
+
"cov_max_abs_err": 1.1102230246251565e-16,
|
| 499 |
+
"cov_max_rel_err": 1.9142225442645865e-15
|
| 500 |
+
}
|
| 501 |
+
],
|
| 502 |
+
"max_mean_abs_err": 6.106226635438361e-16,
|
| 503 |
+
"max_cov_abs_err": 1.1102230246251565e-16
|
| 504 |
+
},
|
| 505 |
+
"eq8_tau": {
|
| 506 |
+
"code_shape": 17.501,
|
| 507 |
+
"numeric_shape": 17.500999999999998,
|
| 508 |
+
"shape_rel_err": 2.0300061018230392e-16,
|
| 509 |
+
"code_rate": 16.69515405233521,
|
| 510 |
+
"numeric_rate": 16.695154052335205,
|
| 511 |
+
"rate_rel_err": 2.1279909533410808e-16,
|
| 512 |
+
"n_observed": 35
|
| 513 |
+
},
|
| 514 |
+
"eq10_nu": {
|
| 515 |
+
"rows": [
|
| 516 |
+
{
|
| 517 |
+
"r": 0,
|
| 518 |
+
"alpha": 2.0,
|
| 519 |
+
"beta": 10.0
|
| 520 |
+
},
|
| 521 |
+
{
|
| 522 |
+
"r": 1,
|
| 523 |
+
"alpha": 2.0,
|
| 524 |
+
"beta": 9.0
|
| 525 |
+
},
|
| 526 |
+
{
|
| 527 |
+
"r": 2,
|
| 528 |
+
"alpha": 3.0,
|
| 529 |
+
"beta": 7.0
|
| 530 |
+
},
|
| 531 |
+
{
|
| 532 |
+
"r": 3,
|
| 533 |
+
"alpha": 1.0,
|
| 534 |
+
"beta": 7.0
|
| 535 |
+
},
|
| 536 |
+
{
|
| 537 |
+
"r": 4,
|
| 538 |
+
"alpha": 2.0,
|
| 539 |
+
"beta": 6.0
|
| 540 |
+
}
|
| 541 |
+
],
|
| 542 |
+
"matches_paper_form": true
|
| 543 |
+
},
|
| 544 |
+
"schedule": {
|
| 545 |
+
"unclipped": [
|
| 546 |
+
{
|
| 547 |
+
"tau": 0.5,
|
| 548 |
+
"rho": 14.142135623730951,
|
| 549 |
+
"tau_rho2": 100.00000000000001,
|
| 550 |
+
"abs_err_vs_c": 1.4210854715202004e-14
|
| 551 |
+
},
|
| 552 |
+
{
|
| 553 |
+
"tau": 4.0,
|
| 554 |
+
"rho": 5.0,
|
| 555 |
+
"tau_rho2": 100.0,
|
| 556 |
+
"abs_err_vs_c": 0.0
|
| 557 |
+
},
|
| 558 |
+
{
|
| 559 |
+
"tau": 25.0,
|
| 560 |
+
"rho": 2.0,
|
| 561 |
+
"tau_rho2": 100.0,
|
| 562 |
+
"abs_err_vs_c": 0.0
|
| 563 |
+
},
|
| 564 |
+
{
|
| 565 |
+
"tau": 400.0,
|
| 566 |
+
"rho": 0.5,
|
| 567 |
+
"tau_rho2": 100.0,
|
| 568 |
+
"abs_err_vs_c": 0.0
|
| 569 |
+
},
|
| 570 |
+
{
|
| 571 |
+
"tau": 1600.0,
|
| 572 |
+
"rho": 0.25,
|
| 573 |
+
"tau_rho2": 100.0,
|
| 574 |
+
"abs_err_vs_c": 0.0
|
| 575 |
+
}
|
| 576 |
+
],
|
| 577 |
+
"max_abs_err_vs_c": 1.4210854715202004e-14,
|
| 578 |
+
"clipped": [
|
| 579 |
+
{
|
| 580 |
+
"tau": 0.5,
|
| 581 |
+
"rho_clipped": 10.0,
|
| 582 |
+
"tau_rho2": 50.0
|
| 583 |
+
},
|
| 584 |
+
{
|
| 585 |
+
"tau": 4.0,
|
| 586 |
+
"rho_clipped": 5.0,
|
| 587 |
+
"tau_rho2": 100.0
|
| 588 |
+
},
|
| 589 |
+
{
|
| 590 |
+
"tau": 25.0,
|
| 591 |
+
"rho_clipped": 2.0,
|
| 592 |
+
"tau_rho2": 100.0
|
| 593 |
+
},
|
| 594 |
+
{
|
| 595 |
+
"tau": 400.0,
|
| 596 |
+
"rho_clipped": 0.5,
|
| 597 |
+
"tau_rho2": 100.0
|
| 598 |
+
},
|
| 599 |
+
{
|
| 600 |
+
"tau": 1600.0,
|
| 601 |
+
"rho_clipped": 0.3,
|
| 602 |
+
"tau_rho2": 144.0
|
| 603 |
+
},
|
| 604 |
+
{
|
| 605 |
+
"tau": 5000.0,
|
| 606 |
+
"rho_clipped": 0.3,
|
| 607 |
+
"tau_rho2": 450.0
|
| 608 |
+
}
|
| 609 |
+
],
|
| 610 |
+
"note": "clip to [rho_min, rho_max] breaks the exact invariant at extreme tau"
|
| 611 |
+
},
|
| 612 |
+
"theta_role": {
|
| 613 |
+
"theta_infty": 0.001,
|
| 614 |
+
"prior_precision_if_theta_is_variance": 1000.0,
|
| 615 |
+
"prior_precision_as_implemented": 0.001,
|
| 616 |
+
"ratio": 1000000.0,
|
| 617 |
+
"note": "A spike component (theta_r = theta_infty = 1e-3) should contribute prior precision 1/theta_infty = 1000 (hard shrinkage). Eq. 6 and cusp_cp.py:349 instead add theta_r = 1e-3, i.e. an essentially flat prior - a factor 1e6 weaker than the model definition implies.",
|
| 618 |
+
"posterior_sd_spike_as_implemented": 0.6544036887027223,
|
| 619 |
+
"posterior_sd_spike_as_defined": 0.031585935463005754,
|
| 620 |
+
"data_precision": 2.3341163390352344
|
| 621 |
+
}
|
| 622 |
+
}
|
| 623 |
+
````
|
| 624 |
+
|
| 625 |
+
|
| 626 |
+
````output
|
| 627 |
+
==============================================================================
|
| 628 |
+
1. lambda_r full conditional (Eq. 6) vs numeric curvature of the target
|
| 629 |
+
max |mean_code - mean_numeric| over r : 2.498e-16
|
| 630 |
+
max relative var error : 3.354e-16
|
| 631 |
+
|
| 632 |
+
2. a^(n)_i full conditional (Eq. 7) vs autograd Hessian of the target
|
| 633 |
+
max |mean_code - mean_numeric| : 6.106e-16
|
| 634 |
+
max |cov_code - cov_numeric| : 1.110e-16
|
| 635 |
+
|
| 636 |
+
3. tau full conditional (Eq. 8)
|
| 637 |
+
shape 17.501000 vs 17.501000 (rel 2.03e-16); rate 16.695154 vs 16.695154 (rel 2.13e-16)
|
| 638 |
+
|Omega| = 35
|
| 639 |
+
|
| 640 |
+
4. nu_r full conditional (Eq. 10): Beta(1+#{zeta==r}, beta+#{zeta>r})
|
| 641 |
+
r=0 alpha=2 beta=10
|
| 642 |
+
r=1 alpha=2 beta=9
|
| 643 |
+
r=2 alpha=3 beta=7
|
| 644 |
+
r=3 alpha=1 beta=7
|
| 645 |
+
r=4 alpha=2 beta=6
|
| 646 |
+
|
| 647 |
+
5. noise-adaptive coupling schedule rho = sqrt(c/tau) => tau*rho^2 = c
|
| 648 |
+
tau rho tau*rho^2
|
| 649 |
+
0.5 14.14214 100.00000000
|
| 650 |
+
4.0 5.00000 100.00000000
|
| 651 |
+
25.0 2.00000 100.00000000
|
| 652 |
+
400.0 0.50000 100.00000000
|
| 653 |
+
1600.0 0.25000 100.00000000
|
| 654 |
+
max |tau*rho^2 - c| = 1.421e-14
|
| 655 |
+
with the paper's clip rho in [0.3, 10]:
|
| 656 |
+
0.5 10.00000 50.0000
|
| 657 |
+
4.0 5.00000 100.0000
|
| 658 |
+
25.0 2.00000 100.0000
|
| 659 |
+
400.0 0.50000 100.0000
|
| 660 |
+
1600.0 0.30000 144.0000
|
| 661 |
+
5000.0 0.30000 450.0000
|
| 662 |
+
|
| 663 |
+
6. role of theta_r (model: lambda_r|theta_r ~ N(0, theta_r))
|
| 664 |
+
prior precision a spike SHOULD contribute : 1000.0
|
| 665 |
+
prior precision Eq. 6 / the code contributes: 0.0010
|
| 666 |
+
data precision for this component : 2.3341
|
| 667 |
+
posterior sd of a spiked lambda_r, as implemented : 0.654404
|
| 668 |
+
posterior sd of a spiked lambda_r, as defined : 0.031586
|
| 669 |
+
==============================================================================
|
| 670 |
+
|
| 671 |
+
````
|
| 672 |
+
|
| 673 |
+
|
| 674 |
+
---
|
| 675 |
+
<!-- trackio-cell
|
| 676 |
+
{"type": "markdown", "id": "cell_39c76a3c96e6", "created_at": "2026-08-02T10:27:02+00:00", "title": "Finding: theta_r convention mismatch"}
|
| 677 |
+
-->
|
| 678 |
+
## Finding: `theta_r` is used as a precision but defined as a variance
|
| 679 |
+
|
| 680 |
+
This is the one substantive discrepancy the Claim-1 audit turned up, and it matters for the *automatic rank selection* half of the claim.
|
| 681 |
+
|
| 682 |
+
The model in Section 3.1 declares `lambda_r | theta_r ~ N(0, theta_r)` β so `theta_r` is a **variance**, and the CUSP spike `theta_r = theta_inf = 1e-3` is meant to be a hard shrinkage atom (prior precision `1/theta_inf = 1000`).
|
| 683 |
+
|
| 684 |
+
But **Eq. 6 of the paper and the code agree with each other and disagree with that definition**:
|
| 685 |
+
|
| 686 |
+
```
|
| 687 |
+
Eq. 6 sigma_r = ( theta_r + tau*||O*C^r||_F^2 + rho^-2*||C^r||_F^2 )^-1
|
| 688 |
+
cusp_cp.py:349-350 sigma = 1.0 / (theta[r] + tau*(...).sum() + (...).sum()/rho**2)
|
| 689 |
+
```
|
| 690 |
+
|
| 691 |
+
i.e. `theta_r` is **added as a precision**. A self-consistent derivation of the conditional from `lambda_r ~ N(0, theta_r)` would add `1/theta_r`. Meanwhile `_post_sample_theta` (`cusp_cp.py:444-452`) draws `theta_r ~ InvGamma(alpha_theta + 1/2, beta_theta + lambda_r^2/2)`, which *is* the conjugate update for `theta_r` as a variance. So the two ends of the same variable use opposite conventions.
|
| 692 |
+
|
| 693 |
+
Measured consequence (from the audit above, at `theta_inf = 1e-3`, the paper's default):
|
| 694 |
+
|
| 695 |
+
| | prior precision contributed by a spiked component | posterior sd of that `lambda_r` |
|
| 696 |
+
|---|---|---|
|
| 697 |
+
| as the model defines it (`1/theta_r`) | 1000 | 0.0316 |
|
| 698 |
+
| as Eq. 6 / the code implement it (`theta_r`) | 0.001 | 0.6544 |
|
| 699 |
+
|
| 700 |
+
A **1e6 factor** in the wrong direction: a component the CUSP prior has decided to shrink receives an essentially flat prior instead of a hard one, so it is *not* shrunk by Eq. 6 at all β it is 20x wider than intended.
|
| 701 |
+
|
| 702 |
+
**Why the method still works.** Pruning in DiffBCP is not actually carried by Eq. 6. It is carried by the separate rank-adaptation step `_adapt_tune` (`cusp_cp.py:454-486`), which drops components with `|lambda_r| < 1e-4` outright and is what Remark 3.3 / Algorithm 2 describe. So the reported empirical behaviour is unaffected; what is affected is the *stated mechanism* β Theorem 3.1's shrinkage is a statement about the prior (which is implemented correctly; see [Claim 2](#/claim-2-theorem-3-1-cusp-tail-shrinkage)), not about the conditional in Eq. 6 that the sampler actually uses.
|
| 703 |
+
|
| 704 |
+
Two smaller deviations of the same kind, both in the CUSP auxiliary updates:
|
| 705 |
+
|
| 706 |
+
- **Eq. 9 (`zeta_r`)** should evaluate the *same* `lambda_r` under both branches β `Normal(lambda_r; 0, theta_inf)` for `h <= r` and `Student-t(lambda_r)` for `h > r`. The code (`cusp_cp.py:426-431`) instead indexes the density **vectors** `normal_pdf[:r]` / `student_t_pdf[r:]`, i.e. it uses `lambda_h` for the `h`-th mixture weight rather than `lambda_r`, plus an off-by-one (`h < r` vs `h <= r`) and a `+0.001` numerical floor.
|
| 707 |
+
- **Eq. 11 (`theta_r`)** applies the InvGamma slab when `zeta_r > r`; the code applies it when `zeta_r == 0` (`cusp_cp.py:448`), and the initialiser `_sample_theta` (`cusp_cp.py:328-333`) uses `zeta[r] <= r`, the opposite branch again.
|
| 708 |
+
|
| 709 |
+
None of these change the headline results β they change what the CUSP block provably does. Flagged for the next agent.
|
| 710 |
+
|
| 711 |
+
|
| 712 |
+
---
|
| 713 |
+
<!-- trackio-cell
|
| 714 |
+
{"type": "markdown", "id": "cell_23d25ee17613", "created_at": "2026-08-02T10:27:12+00:00", "title": "Verdict"}
|
| 715 |
+
-->
|
| 716 |
+
## Verdict β Claim 1: **supported**
|
| 717 |
+
|
| 718 |
+
The joint model of Eq. 3 is real, is implemented as written, and is the first Bayesian tensor decomposition to admit an off-the-shelf diffusion model as the data prior (the plug-and-play literature it extends β [PnP-DM](https://github.com/zihuiwu/PnP-DM-public), Wu et al. 2024 β has no tensor factorisation; the Bayesian CP literature it extends has no learned prior).
|
| 719 |
+
|
| 720 |
+
All six factors of Eq. 3 are present in the code, and the three conjugate conditionals that make the model tractable reproduce **to double precision** against an independent re-derivation (Claim 3).
|
| 721 |
+
|
| 722 |
+
One caveat, documented above: the CUSP scale parameter `theta_r` is declared as a variance but used as a precision in Eq. 6 and in the code, which neutralises the shrinkage that Eq. 6 was supposed to apply. Rank adaptation is carried instead by the explicit prune-and-grow step. This does not falsify the claim β the prior *is* the CUSP prior β but the shrinkage pathway in the sampler is not the one Eq. 6 describes.
|
pages/claim-2-theorem-3-1-cusp-tail-shrinkage/page.md
ADDED
|
@@ -0,0 +1,1759 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Claim 2: Theorem 3.1 β CUSP tail shrinkage
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
---
|
| 5 |
+
<!-- trackio-cell
|
| 6 |
+
{"type": "markdown", "id": "cell_71f79b39ac85", "created_at": "2026-08-02T10:27:48+00:00", "title": "Claim and method"}
|
| 7 |
+
-->
|
| 8 |
+
## What is claimed
|
| 9 |
+
|
| 10 |
+
Theorem 3.1 states that under the CUSP prior, with factors bounded in second moment ($\mathbb{E}[(a^{(n)}_{i_n r})^2] \le \eta_n$), the tail probability of each rank-$r$ component $x_{r,\underline{i}} = \lambda_r \prod_n a^{(n)}_{i_n r}$ obeys
|
| 11 |
+
|
| 12 |
+
```
|
| 13 |
+
P( x_{r,i}^2 >= eps ) <= (1/eps) * [ (beta/(1+beta))^r * (beta_theta/(alpha_theta - 1) - theta_inf) + theta_inf ] * prod_n eta_n
|
| 14 |
+
```
|
| 15 |
+
|
| 16 |
+
so the tail **shrinks geometrically in $r$ at rate $\beta/(1+\beta)$**, down to a floor set by $\theta_\infty$, and Remark 3.2 adds that smaller $\beta$ gives stronger shrinkage.
|
| 17 |
+
|
| 18 |
+
## How this was verified
|
| 19 |
+
|
| 20 |
+
This is a theory claim, so the reproduction is an **independent numerical audit**, not a benchmark β it needs no GPU. The script re-derives the bound from scratch, samples the full CUSP hierarchy, and checks three things:
|
| 21 |
+
|
| 22 |
+
- **A. the exact moment identity** $\mathbb{E}[\lambda_r^2] = (\beta/(1+\beta))^r(\beta_\theta/(\alpha_\theta-1) - \theta_\infty) + \theta_\infty$ that App. B.1 derives, against (i) a closed-form evaluation of the stick-breaking expectation and (ii) a 400k-draw Monte-Carlo estimate;
|
| 23 |
+
- **B. the tail bound itself** on a grid of $(r, \beta, \epsilon)$, plus the decay rate;
|
| 24 |
+
- **C. a control that relaxes the theorem's hypothesis** β factors drawn with $\mathbb{E}[a^2] = 3 > \eta_n = 1$ while the bound still uses $\eta_n = 1$. The bound must then break.
|
| 25 |
+
|
| 26 |
+
Hyper-parameters are the paper's FFHQ/ImageNet defaults (App. D.1): $\alpha_\theta = 2$, $\beta_\theta = 2$, $\theta_\infty = 10^{-3}$, and $N = 4$ factor modes (the paper's patch tensor is $16\times16\times3\times961$).
|
| 27 |
+
|
| 28 |
+
This audit is a check of the stated inequality, not a substitute for the proof.
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
---
|
| 32 |
+
<!-- trackio-cell
|
| 33 |
+
{"type": "code", "id": "cell_0531197c94b4", "created_at": "2026-08-02T10:28:01+00:00", "title": "Run: python thm31_cusp_tail.py (exit 0)", "command": [".venv-repro/bin/python", "audits/thm31_cusp_tail.py", "audits/thm31_results.json"], "exit_code": 0, "duration_s": 9.109}
|
| 34 |
+
-->
|
| 35 |
+
````bash
|
| 36 |
+
$ .venv-repro/bin/python audits/thm31_cusp_tail.py audits/thm31_results.json
|
| 37 |
+
````
|
| 38 |
+
|
| 39 |
+
exit 0 Β· 9.1s
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
````python title=thm31_cusp_tail.py
|
| 43 |
+
"""Numerical audit of Theorem 3.1 (CUSP tail shrinkage) of DiffBCP.
|
| 44 |
+
|
| 45 |
+
Theorem 3.1 states, for x_{r,i} = lambda_r * prod_n a^{(n)}_{i_n r} with
|
| 46 |
+
E[(a^{(n)})^2] <= eta_n:
|
| 47 |
+
|
| 48 |
+
P( x_{r,i}^2 >= eps )
|
| 49 |
+
<= (1/eps) * [ (beta/(1+beta))^r * (beta_th/(alpha_th-1) - theta_inf)
|
| 50 |
+
+ theta_inf ] * prod_n eta_n
|
| 51 |
+
|
| 52 |
+
under the CUSP prior
|
| 53 |
+
lambda_r | theta_r ~ N(0, theta_r)
|
| 54 |
+
theta_r | pi_r ~ (1-pi_r) P0 + pi_r delta_{theta_inf}, P0=InvGamma(a_th,b_th)
|
| 55 |
+
pi_r = sum_{l<=r} omega_l, omega_l = nu_l prod_{m<l}(1-nu_m), nu_l ~iid Beta(1,beta).
|
| 56 |
+
|
| 57 |
+
This script is an independent numerical audit, not a proof replacement. It does
|
| 58 |
+
NOT need a GPU. Three things are checked:
|
| 59 |
+
|
| 60 |
+
A. EXACT identity E[lambda_r^2] = (beta/(1+beta))^r (b_th/(a_th-1) - th_inf)
|
| 61 |
+
+ th_inf, by direct high-precision numerical integration over the law of
|
| 62 |
+
pi_r (checked to double precision against a closed form), plus a large
|
| 63 |
+
Monte-Carlo cross-check.
|
| 64 |
+
B. The stated tail bound holds for the sampled hierarchy across a grid of
|
| 65 |
+
(r, beta, eps), and the bound decays geometrically in r at rate
|
| 66 |
+
beta/(1+beta) down to the theta_inf floor.
|
| 67 |
+
C. CONTROL: relax the theorem's second-moment condition E[(a)^2] <= eta_n by
|
| 68 |
+
drawing factors with second moment > eta_n. The bound must then fail.
|
| 69 |
+
|
| 70 |
+
Reference: arXiv:2606.03212 (Tao & Zhao, ICML 2026), Theorem 3.1 / App. B.1.
|
| 71 |
+
"""
|
| 72 |
+
|
| 73 |
+
from __future__ import annotations
|
| 74 |
+
|
| 75 |
+
import json
|
| 76 |
+
import sys
|
| 77 |
+
|
| 78 |
+
import numpy as np
|
| 79 |
+
|
| 80 |
+
SEED = 20260802
|
| 81 |
+
OUT = sys.argv[1] if len(sys.argv) > 1 else "audits/thm31_results.json"
|
| 82 |
+
|
| 83 |
+
|
| 84 |
+
def bound_moment(r: int, beta: float, a_th: float, b_th: float, th_inf: float) -> float:
|
| 85 |
+
"""RHS second-moment factor of Theorem 3.1 (before dividing by eps)."""
|
| 86 |
+
return (beta / (1.0 + beta)) ** r * (b_th / (a_th - 1.0) - th_inf) + th_inf
|
| 87 |
+
|
| 88 |
+
|
| 89 |
+
def sample_lambda_sq(
|
| 90 |
+
rng, n: int, r: int, beta: float, a_th: float, b_th: float, th_inf: float
|
| 91 |
+
):
|
| 92 |
+
"""Draw n iid replicates of lambda_r^2 from the CUSP hierarchy."""
|
| 93 |
+
# nu_1..nu_r ~ Beta(1,beta) -> pi_r = 1 - prod_{m<=r}(1-nu_m)
|
| 94 |
+
nu = rng.beta(1.0, beta, size=(n, r))
|
| 95 |
+
pi_r = 1.0 - np.prod(1.0 - nu, axis=1)
|
| 96 |
+
spike = rng.random(n) < pi_r
|
| 97 |
+
# P0 = InvGamma(a_th, b_th): 1/Gamma(shape=a_th, rate=b_th)
|
| 98 |
+
theta = np.where(spike, th_inf, b_th / rng.gamma(shape=a_th, size=n))
|
| 99 |
+
lam = rng.normal(0.0, np.sqrt(theta))
|
| 100 |
+
return lam**2, theta, pi_r
|
| 101 |
+
|
| 102 |
+
|
| 103 |
+
def main() -> dict:
|
| 104 |
+
rng = np.random.default_rng(SEED)
|
| 105 |
+
# Paper's FFHQ/ImageNet hyper-parameters (App. D.1).
|
| 106 |
+
a_th, b_th, th_inf = 2.0, 2.0, 1e-3
|
| 107 |
+
res: dict = {"hyper": {"alpha_theta": a_th, "beta_theta": b_th, "theta_infty": th_inf}}
|
| 108 |
+
|
| 109 |
+
# ---------- A. exact identity for E[lambda_r^2] ----------
|
| 110 |
+
# E[pi_r] = 1 - (beta/(1+beta))^r because the nu_m are iid and
|
| 111 |
+
# E[1-nu] = beta/(1+beta). Verify that against an exact evaluation of
|
| 112 |
+
# E[prod_{m<=r}(1-nu_m)] = (E[1-nu])^r using the Beta moment, in float64.
|
| 113 |
+
identity_rows = []
|
| 114 |
+
for beta in (0.5, 2.0, 5.0, 20.0):
|
| 115 |
+
e_1mnu = beta / (1.0 + beta) # E[1-nu], nu~Beta(1,beta)
|
| 116 |
+
for r in (1, 2, 5, 10, 25, 50, 100):
|
| 117 |
+
e_prod_closed = e_1mnu**r
|
| 118 |
+
# independent evaluation: log-space product of the same moment
|
| 119 |
+
e_prod_log = np.exp(r * np.log(e_1mnu))
|
| 120 |
+
e_lam2 = (1.0 - (1.0 - e_prod_closed)) * (b_th / (a_th - 1.0)) + (
|
| 121 |
+
1.0 - e_prod_closed
|
| 122 |
+
) * th_inf
|
| 123 |
+
thm = bound_moment(r, beta, a_th, b_th, th_inf)
|
| 124 |
+
identity_rows.append(
|
| 125 |
+
{
|
| 126 |
+
"beta": beta,
|
| 127 |
+
"r": r,
|
| 128 |
+
"E_pi_r": 1.0 - e_prod_closed,
|
| 129 |
+
"E_lambda_sq_from_mixture": e_lam2,
|
| 130 |
+
"E_lambda_sq_theorem": thm,
|
| 131 |
+
"abs_err": abs(e_lam2 - thm),
|
| 132 |
+
"prod_repr_abs_err": abs(e_prod_closed - e_prod_log),
|
| 133 |
+
}
|
| 134 |
+
)
|
| 135 |
+
res["A_identity"] = identity_rows
|
| 136 |
+
res["A_max_abs_err"] = max(x["abs_err"] for x in identity_rows)
|
| 137 |
+
|
| 138 |
+
# Monte-Carlo cross-check of E[lambda_r^2] itself.
|
| 139 |
+
mc_rows = []
|
| 140 |
+
n_mc = 400_000
|
| 141 |
+
for beta in (2.0, 5.0):
|
| 142 |
+
for r in (1, 5, 20, 50):
|
| 143 |
+
lam2, theta, pi_r = sample_lambda_sq(rng, n_mc, r, beta, a_th, b_th, th_inf)
|
| 144 |
+
thm = bound_moment(r, beta, a_th, b_th, th_inf)
|
| 145 |
+
se = lam2.std(ddof=1) / np.sqrt(n_mc)
|
| 146 |
+
mc_rows.append(
|
| 147 |
+
{
|
| 148 |
+
"beta": beta,
|
| 149 |
+
"r": r,
|
| 150 |
+
"mc_E_lambda_sq": float(lam2.mean()),
|
| 151 |
+
"mc_se": float(se),
|
| 152 |
+
"theorem_E_lambda_sq": thm,
|
| 153 |
+
"z_score": float((lam2.mean() - thm) / se),
|
| 154 |
+
"mc_E_pi_r": float(pi_r.mean()),
|
| 155 |
+
"closed_E_pi_r": 1.0 - (beta / (1.0 + beta)) ** r,
|
| 156 |
+
}
|
| 157 |
+
)
|
| 158 |
+
res["A_monte_carlo"] = mc_rows
|
| 159 |
+
|
| 160 |
+
# ---------- B. the tail bound itself ----------
|
| 161 |
+
# N=4 factor modes (the paper's patch tensor is 16x16x3x961 -> N=4),
|
| 162 |
+
# a ~ N(0,1) so E[a^2] = 1 = eta_n exactly.
|
| 163 |
+
N = 4
|
| 164 |
+
eta = np.ones(N)
|
| 165 |
+
prod_eta = float(np.prod(eta))
|
| 166 |
+
n_mc = 400_000
|
| 167 |
+
tail_rows = []
|
| 168 |
+
for beta in (2.0, 5.0, 20.0):
|
| 169 |
+
for r in (1, 5, 10, 25, 50):
|
| 170 |
+
lam2, _, _ = sample_lambda_sq(rng, n_mc, r, beta, a_th, b_th, th_inf)
|
| 171 |
+
a = rng.normal(0.0, 1.0, size=(n_mc, N))
|
| 172 |
+
x2 = lam2 * np.prod(a**2, axis=1)
|
| 173 |
+
for eps in (1e-4, 1e-3, 1e-2, 1e-1, 1.0, 10.0):
|
| 174 |
+
emp = float((x2 >= eps).mean())
|
| 175 |
+
bnd = bound_moment(r, beta, a_th, b_th, th_inf) * prod_eta / eps
|
| 176 |
+
tail_rows.append(
|
| 177 |
+
{
|
| 178 |
+
"beta": beta,
|
| 179 |
+
"r": r,
|
| 180 |
+
"eps": eps,
|
| 181 |
+
"empirical_tail": emp,
|
| 182 |
+
"theorem_bound": bnd,
|
| 183 |
+
"holds": bool(emp <= bnd),
|
| 184 |
+
"slack": bnd - emp,
|
| 185 |
+
}
|
| 186 |
+
)
|
| 187 |
+
res["B_tail"] = tail_rows
|
| 188 |
+
res["B_all_hold"] = all(x["holds"] for x in tail_rows)
|
| 189 |
+
res["B_n_checks"] = len(tail_rows)
|
| 190 |
+
|
| 191 |
+
# geometric decay rate of the bound (above the theta_inf floor)
|
| 192 |
+
decay = []
|
| 193 |
+
for beta in (2.0, 5.0, 20.0):
|
| 194 |
+
ratios = []
|
| 195 |
+
for r in range(1, 15):
|
| 196 |
+
num = bound_moment(r + 1, beta, a_th, b_th, th_inf) - th_inf
|
| 197 |
+
den = bound_moment(r, beta, a_th, b_th, th_inf) - th_inf
|
| 198 |
+
ratios.append(num / den)
|
| 199 |
+
decay.append(
|
| 200 |
+
{
|
| 201 |
+
"beta": beta,
|
| 202 |
+
"measured_ratio": float(np.mean(ratios)),
|
| 203 |
+
"predicted_ratio": beta / (1.0 + beta),
|
| 204 |
+
"max_abs_dev": float(np.max(np.abs(np.array(ratios) - beta / (1 + beta)))),
|
| 205 |
+
}
|
| 206 |
+
)
|
| 207 |
+
res["B_decay"] = decay
|
| 208 |
+
|
| 209 |
+
# ---------- C. control: violate E[a^2] <= eta_n ----------
|
| 210 |
+
# Keep eta_n = 1 in the bound but draw factors with second moment 3.0.
|
| 211 |
+
# Probed at large r and large eps, where the theta_inf floor makes the
|
| 212 |
+
# Markov bound tight enough for the broken assumption to show up.
|
| 213 |
+
ctrl = []
|
| 214 |
+
n_mc = 400_000
|
| 215 |
+
for beta in (5.0,):
|
| 216 |
+
for r in (25, 50, 100):
|
| 217 |
+
lam2, _, _ = sample_lambda_sq(rng, n_mc, r, beta, a_th, b_th, th_inf)
|
| 218 |
+
a_ok = rng.normal(0.0, 1.0, size=(n_mc, N)) # E[a^2]=1 = eta (control-)
|
| 219 |
+
a_bad = rng.normal(0.0, np.sqrt(3.0), size=(n_mc, N)) # E[a^2]=3 > eta
|
| 220 |
+
x2_ok = lam2 * np.prod(a_ok**2, axis=1)
|
| 221 |
+
x2_bad = lam2 * np.prod(a_bad**2, axis=1)
|
| 222 |
+
for eps in (1.0, 10.0, 100.0):
|
| 223 |
+
bnd = bound_moment(r, beta, a_th, b_th, th_inf) * prod_eta / eps
|
| 224 |
+
ctrl.append(
|
| 225 |
+
{
|
| 226 |
+
"beta": beta,
|
| 227 |
+
"r": r,
|
| 228 |
+
"eps": eps,
|
| 229 |
+
"empirical_tail_eta_respected": float((x2_ok >= eps).mean()),
|
| 230 |
+
"empirical_tail_eta_violated": float((x2_bad >= eps).mean()),
|
| 231 |
+
"theorem_bound_with_eta_1": bnd,
|
| 232 |
+
"holds_when_respected": bool(float((x2_ok >= eps).mean()) <= bnd),
|
| 233 |
+
"violated": bool(float((x2_bad >= eps).mean()) > bnd),
|
| 234 |
+
}
|
| 235 |
+
)
|
| 236 |
+
res["C_control"] = ctrl
|
| 237 |
+
res["C_any_violated"] = any(x["violated"] for x in ctrl)
|
| 238 |
+
res["C_all_hold_when_respected"] = all(x["holds_when_respected"] for x in ctrl)
|
| 239 |
+
|
| 240 |
+
return res
|
| 241 |
+
|
| 242 |
+
|
| 243 |
+
if __name__ == "__main__":
|
| 244 |
+
r = main()
|
| 245 |
+
with open(OUT, "w") as f:
|
| 246 |
+
json.dump(r, f, indent=2)
|
| 247 |
+
|
| 248 |
+
print("=" * 78)
|
| 249 |
+
print("A. E[lambda_r^2] closed form vs Theorem 3.1 expression")
|
| 250 |
+
print(f" max |mixture form - theorem form| over 28 (beta,r) pairs : {r['A_max_abs_err']:.3e}")
|
| 251 |
+
print(" Monte-Carlo cross-check (400k draws each):")
|
| 252 |
+
print(f" {'beta':>5} {'r':>4} {'MC E[l^2]':>12} {'theorem':>12} {'z':>7}")
|
| 253 |
+
for x in r["A_monte_carlo"]:
|
| 254 |
+
print(
|
| 255 |
+
f" {x['beta']:>5} {x['r']:>4} {x['mc_E_lambda_sq']:>12.6f} "
|
| 256 |
+
f"{x['theorem_E_lambda_sq']:>12.6f} {x['z_score']:>7.2f}"
|
| 257 |
+
)
|
| 258 |
+
print()
|
| 259 |
+
print("B. Tail bound P(x^2 >= eps) <= bound (N=4, a~N(0,1), eta_n=1)")
|
| 260 |
+
print(f" checks: {r['B_n_checks']}, all hold: {r['B_all_hold']}")
|
| 261 |
+
print(f" {'beta':>5} {'r':>4} {'eps':>8} {'empirical':>12} {'bound':>12} {'ok':>4}")
|
| 262 |
+
for x in r["B_tail"]:
|
| 263 |
+
if x["eps"] in (1e-3,):
|
| 264 |
+
print(
|
| 265 |
+
f" {x['beta']:>5} {x['r']:>4} {x['eps']:>8.0e} {x['empirical_tail']:>12.6f} "
|
| 266 |
+
f"{x['theorem_bound']:>12.6f} {str(x['holds']):>5}"
|
| 267 |
+
)
|
| 268 |
+
print(" geometric decay of the bound above the theta_inf floor:")
|
| 269 |
+
for x in r["B_decay"]:
|
| 270 |
+
print(
|
| 271 |
+
f" beta={x['beta']:<5} measured r->r+1 ratio={x['measured_ratio']:.12f} "
|
| 272 |
+
f"predicted beta/(1+beta)={x['predicted_ratio']:.12f} "
|
| 273 |
+
f"max dev={x['max_abs_dev']:.2e}"
|
| 274 |
+
)
|
| 275 |
+
print()
|
| 276 |
+
print("C. CONTROL - keep the bound's eta_n=1 but draw factors with E[a^2]=3")
|
| 277 |
+
print(
|
| 278 |
+
f" {'r':>4} {'eps':>7} {'bound':>11} {'tail|E[a^2]=1':>14} {'ok':>5} "
|
| 279 |
+
f"{'tail|E[a^2]=3':>14} {'violated':>9}"
|
| 280 |
+
)
|
| 281 |
+
for x in r["C_control"]:
|
| 282 |
+
print(
|
| 283 |
+
f" {x['r']:>4} {x['eps']:>7.0f} {x['theorem_bound_with_eta_1']:>11.6f} "
|
| 284 |
+
f"{x['empirical_tail_eta_respected']:>14.6f} {str(x['holds_when_respected']):>5} "
|
| 285 |
+
f"{x['empirical_tail_eta_violated']:>14.6f} {str(x['violated']):>9}"
|
| 286 |
+
)
|
| 287 |
+
print(
|
| 288 |
+
f" bound holds whenever E[a^2]<=eta: {r['C_all_hold_when_respected']}; "
|
| 289 |
+
f"any violation once eta is broken: {r['C_any_violated']}"
|
| 290 |
+
)
|
| 291 |
+
print("=" * 78)
|
| 292 |
+
|
| 293 |
+
````
|
| 294 |
+
|
| 295 |
+
|
| 296 |
+
````json title=thm31_results.json
|
| 297 |
+
{
|
| 298 |
+
"hyper": {
|
| 299 |
+
"alpha_theta": 2.0,
|
| 300 |
+
"beta_theta": 2.0,
|
| 301 |
+
"theta_infty": 0.001
|
| 302 |
+
},
|
| 303 |
+
"A_identity": [
|
| 304 |
+
{
|
| 305 |
+
"beta": 0.5,
|
| 306 |
+
"r": 1,
|
| 307 |
+
"E_pi_r": 0.6666666666666667,
|
| 308 |
+
"E_lambda_sq_from_mixture": 0.6673333333333332,
|
| 309 |
+
"E_lambda_sq_theorem": 0.6673333333333333,
|
| 310 |
+
"abs_err": 1.1102230246251565e-16,
|
| 311 |
+
"prod_repr_abs_err": 0.0
|
| 312 |
+
},
|
| 313 |
+
{
|
| 314 |
+
"beta": 0.5,
|
| 315 |
+
"r": 2,
|
| 316 |
+
"E_pi_r": 0.8888888888888888,
|
| 317 |
+
"E_lambda_sq_from_mixture": 0.2231111111111112,
|
| 318 |
+
"E_lambda_sq_theorem": 0.22311111111111112,
|
| 319 |
+
"abs_err": 8.326672684688674e-17,
|
| 320 |
+
"prod_repr_abs_err": 1.3877787807814457e-17
|
| 321 |
+
},
|
| 322 |
+
{
|
| 323 |
+
"beta": 0.5,
|
| 324 |
+
"r": 5,
|
| 325 |
+
"E_pi_r": 0.9958847736625515,
|
| 326 |
+
"E_lambda_sq_from_mixture": 0.009226337448559633,
|
| 327 |
+
"E_lambda_sq_theorem": 0.00922633744855967,
|
| 328 |
+
"abs_err": 3.642919299551295e-17,
|
| 329 |
+
"prod_repr_abs_err": 1.734723475976807e-18
|
| 330 |
+
},
|
| 331 |
+
{
|
| 332 |
+
"beta": 0.5,
|
| 333 |
+
"r": 10,
|
| 334 |
+
"E_pi_r": 0.9999830649121916,
|
| 335 |
+
"E_lambda_sq_from_mixture": 0.0010338532405290374,
|
| 336 |
+
"E_lambda_sq_theorem": 0.0010338532405290521,
|
| 337 |
+
"abs_err": 1.474514954580286e-17,
|
| 338 |
+
"prod_repr_abs_err": 1.3552527156068805e-20
|
| 339 |
+
},
|
| 340 |
+
{
|
| 341 |
+
"beta": 0.5,
|
| 342 |
+
"r": 25,
|
| 343 |
+
"E_pi_r": 0.9999999999988197,
|
| 344 |
+
"E_lambda_sq_from_mixture": 0.001000000002359376,
|
| 345 |
+
"E_lambda_sq_theorem": 0.0010000000023592905,
|
| 346 |
+
"abs_err": 8.543513119185775e-17,
|
| 347 |
+
"prod_repr_abs_err": 2.0194839173657902e-28
|
| 348 |
+
},
|
| 349 |
+
{
|
| 350 |
+
"beta": 0.5,
|
| 351 |
+
"r": 50,
|
| 352 |
+
"E_pi_r": 1.0,
|
| 353 |
+
"E_lambda_sq_from_mixture": 0.001,
|
| 354 |
+
"E_lambda_sq_theorem": 0.001,
|
| 355 |
+
"abs_err": 0.0,
|
| 356 |
+
"prod_repr_abs_err": 7.346839692639297e-40
|
| 357 |
+
},
|
| 358 |
+
{
|
| 359 |
+
"beta": 0.5,
|
| 360 |
+
"r": 100,
|
| 361 |
+
"E_pi_r": 1.0,
|
| 362 |
+
"E_lambda_sq_from_mixture": 0.001,
|
| 363 |
+
"E_lambda_sq_theorem": 0.001,
|
| 364 |
+
"abs_err": 0.0,
|
| 365 |
+
"prod_repr_abs_err": 1.5192908393215678e-63
|
| 366 |
+
},
|
| 367 |
+
{
|
| 368 |
+
"beta": 2.0,
|
| 369 |
+
"r": 1,
|
| 370 |
+
"E_pi_r": 0.33333333333333337,
|
| 371 |
+
"E_lambda_sq_from_mixture": 1.3336666666666666,
|
| 372 |
+
"E_lambda_sq_theorem": 1.3336666666666666,
|
| 373 |
+
"abs_err": 0.0,
|
| 374 |
+
"prod_repr_abs_err": 0.0
|
| 375 |
+
},
|
| 376 |
+
{
|
| 377 |
+
"beta": 2.0,
|
| 378 |
+
"r": 2,
|
| 379 |
+
"E_pi_r": 0.5555555555555556,
|
| 380 |
+
"E_lambda_sq_from_mixture": 0.8894444444444444,
|
| 381 |
+
"E_lambda_sq_theorem": 0.8894444444444445,
|
| 382 |
+
"abs_err": 1.1102230246251565e-16,
|
| 383 |
+
"prod_repr_abs_err": 5.551115123125783e-17
|
| 384 |
+
},
|
| 385 |
+
{
|
| 386 |
+
"beta": 2.0,
|
| 387 |
+
"r": 5,
|
| 388 |
+
"E_pi_r": 0.8683127572016461,
|
| 389 |
+
"E_lambda_sq_from_mixture": 0.2642427983539094,
|
| 390 |
+
"E_lambda_sq_theorem": 0.2642427983539094,
|
| 391 |
+
"abs_err": 0.0,
|
| 392 |
+
"prod_repr_abs_err": 0.0
|
| 393 |
+
},
|
| 394 |
+
{
|
| 395 |
+
"beta": 2.0,
|
| 396 |
+
"r": 10,
|
| 397 |
+
"E_pi_r": 0.9826584700841674,
|
| 398 |
+
"E_lambda_sq_from_mixture": 0.03566571830174937,
|
| 399 |
+
"E_lambda_sq_theorem": 0.03566571830174938,
|
| 400 |
+
"abs_err": 1.3877787807814457e-17,
|
| 401 |
+
"prod_repr_abs_err": 0.0
|
| 402 |
+
},
|
| 403 |
+
{
|
| 404 |
+
"beta": 2.0,
|
| 405 |
+
"r": 25,
|
| 406 |
+
"E_pi_r": 0.9999603978719577,
|
| 407 |
+
"E_lambda_sq_from_mixture": 0.0010791646539566105,
|
| 408 |
+
"E_lambda_sq_theorem": 0.0010791646539566897,
|
| 409 |
+
"abs_err": 7.914675859144182e-17,
|
| 410 |
+
"prod_repr_abs_err": 6.776263578034403e-21
|
| 411 |
+
},
|
| 412 |
+
{
|
| 413 |
+
"beta": 2.0,
|
| 414 |
+
"r": 50,
|
| 415 |
+
"E_pi_r": 0.9999999984316714,
|
| 416 |
+
"E_lambda_sq_from_mixture": 0.0010000031350888277,
|
| 417 |
+
"E_lambda_sq_theorem": 0.0010000031350887624,
|
| 418 |
+
"abs_err": 6.526897078362737e-17,
|
| 419 |
+
"prod_repr_abs_err": 4.1359030627651384e-25
|
| 420 |
+
},
|
| 421 |
+
{
|
| 422 |
+
"beta": 2.0,
|
| 423 |
+
"r": 100,
|
| 424 |
+
"E_pi_r": 1.0,
|
| 425 |
+
"E_lambda_sq_from_mixture": 0.001,
|
| 426 |
+
"E_lambda_sq_theorem": 0.001000000000000005,
|
| 427 |
+
"abs_err": 4.9873299934333204e-18,
|
| 428 |
+
"prod_repr_abs_err": 1.925929944387236e-33
|
| 429 |
+
},
|
| 430 |
+
{
|
| 431 |
+
"beta": 5.0,
|
| 432 |
+
"r": 1,
|
| 433 |
+
"E_pi_r": 0.16666666666666663,
|
| 434 |
+
"E_lambda_sq_from_mixture": 1.6668333333333334,
|
| 435 |
+
"E_lambda_sq_theorem": 1.6668333333333334,
|
| 436 |
+
"abs_err": 0.0,
|
| 437 |
+
"prod_repr_abs_err": 0.0
|
| 438 |
+
},
|
| 439 |
+
{
|
| 440 |
+
"beta": 5.0,
|
| 441 |
+
"r": 2,
|
| 442 |
+
"E_pi_r": 0.30555555555555547,
|
| 443 |
+
"E_lambda_sq_from_mixture": 1.3891944444444446,
|
| 444 |
+
"E_lambda_sq_theorem": 1.3891944444444446,
|
| 445 |
+
"abs_err": 0.0,
|
| 446 |
+
"prod_repr_abs_err": 1.1102230246251565e-16
|
| 447 |
+
},
|
| 448 |
+
{
|
| 449 |
+
"beta": 5.0,
|
| 450 |
+
"r": 5,
|
| 451 |
+
"E_pi_r": 0.598122427983539,
|
| 452 |
+
"E_lambda_sq_from_mixture": 0.8043532664609055,
|
| 453 |
+
"E_lambda_sq_theorem": 0.8043532664609057,
|
| 454 |
+
"abs_err": 1.1102230246251565e-16,
|
| 455 |
+
"prod_repr_abs_err": 5.551115123125783e-17
|
| 456 |
+
},
|
| 457 |
+
{
|
| 458 |
+
"beta": 5.0,
|
| 459 |
+
"r": 10,
|
| 460 |
+
"E_pi_r": 0.8384944171101543,
|
| 461 |
+
"E_lambda_sq_from_mixture": 0.3238496601968016,
|
| 462 |
+
"E_lambda_sq_theorem": 0.3238496601968017,
|
| 463 |
+
"abs_err": 1.1102230246251565e-16,
|
| 464 |
+
"prod_repr_abs_err": 0.0
|
| 465 |
+
},
|
| 466 |
+
{
|
| 467 |
+
"beta": 5.0,
|
| 468 |
+
"r": 25,
|
| 469 |
+
"E_pi_r": 0.9895174039896039,
|
| 470 |
+
"E_lambda_sq_from_mixture": 0.021954709424781883,
|
| 471 |
+
"E_lambda_sq_theorem": 0.02195470942478183,
|
| 472 |
+
"abs_err": 5.204170427930421e-17,
|
| 473 |
+
"prod_repr_abs_err": 0.0
|
| 474 |
+
},
|
| 475 |
+
{
|
| 476 |
+
"beta": 5.0,
|
| 477 |
+
"r": 50,
|
| 478 |
+
"E_pi_r": 0.9998901151808828,
|
| 479 |
+
"E_lambda_sq_from_mixture": 0.001219659753415329,
|
| 480 |
+
"E_lambda_sq_theorem": 0.0012196597534152279,
|
| 481 |
+
"abs_err": 1.0104764247564901e-16,
|
| 482 |
+
"prod_repr_abs_err": 2.710505431213761e-20
|
| 483 |
+
},
|
| 484 |
+
{
|
| 485 |
+
"beta": 5.0,
|
| 486 |
+
"r": 100,
|
| 487 |
+
"E_pi_r": 0.9999999879253265,
|
| 488 |
+
"E_lambda_sq_from_mixture": 0.001000024137272293,
|
| 489 |
+
"E_lambda_sq_theorem": 0.0010000241372722714,
|
| 490 |
+
"abs_err": 2.168404344971009e-17,
|
| 491 |
+
"prod_repr_abs_err": 3.308722450212111e-24
|
| 492 |
+
},
|
| 493 |
+
{
|
| 494 |
+
"beta": 20.0,
|
| 495 |
+
"r": 1,
|
| 496 |
+
"E_pi_r": 0.04761904761904767,
|
| 497 |
+
"E_lambda_sq_from_mixture": 1.9048095238095237,
|
| 498 |
+
"E_lambda_sq_theorem": 1.9048095238095237,
|
| 499 |
+
"abs_err": 0.0,
|
| 500 |
+
"prod_repr_abs_err": 0.0
|
| 501 |
+
},
|
| 502 |
+
{
|
| 503 |
+
"beta": 20.0,
|
| 504 |
+
"r": 2,
|
| 505 |
+
"E_pi_r": 0.09297052154195018,
|
| 506 |
+
"E_lambda_sq_from_mixture": 1.8141519274376416,
|
| 507 |
+
"E_lambda_sq_theorem": 1.8141519274376416,
|
| 508 |
+
"abs_err": 0.0,
|
| 509 |
+
"prod_repr_abs_err": 0.0
|
| 510 |
+
},
|
| 511 |
+
{
|
| 512 |
+
"beta": 20.0,
|
| 513 |
+
"r": 5,
|
| 514 |
+
"E_pi_r": 0.21647383353154115,
|
| 515 |
+
"E_lambda_sq_from_mixture": 1.5672688067704492,
|
| 516 |
+
"E_lambda_sq_theorem": 1.5672688067704492,
|
| 517 |
+
"abs_err": 0.0,
|
| 518 |
+
"prod_repr_abs_err": 0.0
|
| 519 |
+
},
|
| 520 |
+
{
|
| 521 |
+
"beta": 20.0,
|
| 522 |
+
"r": 10,
|
| 523 |
+
"E_pi_r": 0.386086746459241,
|
| 524 |
+
"E_lambda_sq_from_mixture": 1.2282125938279773,
|
| 525 |
+
"E_lambda_sq_theorem": 1.228212593827977,
|
| 526 |
+
"abs_err": 2.220446049250313e-16,
|
| 527 |
+
"prod_repr_abs_err": 0.0
|
| 528 |
+
},
|
| 529 |
+
{
|
| 530 |
+
"beta": 20.0,
|
| 531 |
+
"r": 25,
|
| 532 |
+
"E_pi_r": 0.7046972283022382,
|
| 533 |
+
"E_lambda_sq_from_mixture": 0.5913102406238258,
|
| 534 |
+
"E_lambda_sq_theorem": 0.5913102406238258,
|
| 535 |
+
"abs_err": 0.0,
|
| 536 |
+
"prod_repr_abs_err": 5.551115123125783e-17
|
| 537 |
+
},
|
| 538 |
+
{
|
| 539 |
+
"beta": 20.0,
|
| 540 |
+
"r": 50,
|
| 541 |
+
"E_pi_r": 0.9127962730276196,
|
| 542 |
+
"E_lambda_sq_from_mixture": 0.1753202502177885,
|
| 543 |
+
"E_lambda_sq_theorem": 0.17532025021778844,
|
| 544 |
+
"abs_err": 5.551115123125783e-17,
|
| 545 |
+
"prod_repr_abs_err": 2.7755575615628914e-17
|
| 546 |
+
},
|
| 547 |
+
{
|
| 548 |
+
"beta": 20.0,
|
| 549 |
+
"r": 100,
|
| 550 |
+
"E_pi_r": 0.9923955100021266,
|
| 551 |
+
"E_lambda_sq_from_mixture": 0.016201375505749013,
|
| 552 |
+
"E_lambda_sq_theorem": 0.01620137550574906,
|
| 553 |
+
"abs_err": 4.85722573273506e-17,
|
| 554 |
+
"prod_repr_abs_err": 4.336808689942018e-18
|
| 555 |
+
}
|
| 556 |
+
],
|
| 557 |
+
"A_max_abs_err": 2.220446049250313e-16,
|
| 558 |
+
"A_monte_carlo": [
|
| 559 |
+
{
|
| 560 |
+
"beta": 2.0,
|
| 561 |
+
"r": 1,
|
| 562 |
+
"mc_E_lambda_sq": 1.3363415334075306,
|
| 563 |
+
"mc_se": 0.013183586564056021,
|
| 564 |
+
"theorem_E_lambda_sq": 1.3336666666666666,
|
| 565 |
+
"z_score": 0.20289370634216047,
|
| 566 |
+
"mc_E_pi_r": 0.33334064595808466,
|
| 567 |
+
"closed_E_pi_r": 0.33333333333333337
|
| 568 |
+
},
|
| 569 |
+
{
|
| 570 |
+
"beta": 2.0,
|
| 571 |
+
"r": 5,
|
| 572 |
+
"mc_E_lambda_sq": 0.26654341323404335,
|
| 573 |
+
"mc_se": 0.0048954353373640664,
|
| 574 |
+
"theorem_E_lambda_sq": 0.2642427983539094,
|
| 575 |
+
"z_score": 0.4699510302127091,
|
| 576 |
+
"mc_E_pi_r": 0.8683031616080991,
|
| 577 |
+
"closed_E_pi_r": 0.8683127572016461
|
| 578 |
+
},
|
| 579 |
+
{
|
| 580 |
+
"beta": 2.0,
|
| 581 |
+
"r": 20,
|
| 582 |
+
"mc_E_lambda_sq": 0.0014504571218063287,
|
| 583 |
+
"mc_se": 9.62082046067725e-05,
|
| 584 |
+
"theorem_E_lambda_sq": 0.0016011565909836126,
|
| 585 |
+
"z_score": -1.5663889560483024,
|
| 586 |
+
"mc_E_pi_r": 0.9997005189772835,
|
| 587 |
+
"closed_E_pi_r": 0.9996992713401783
|
| 588 |
+
},
|
| 589 |
+
{
|
| 590 |
+
"beta": 2.0,
|
| 591 |
+
"r": 50,
|
| 592 |
+
"mc_E_lambda_sq": 0.000999763008043795,
|
| 593 |
+
"mc_se": 2.2278579362341794e-06,
|
| 594 |
+
"theorem_E_lambda_sq": 0.0010000031350887624,
|
| 595 |
+
"z_score": -0.10778382277516242,
|
| 596 |
+
"mc_E_pi_r": 0.9999999985312246,
|
| 597 |
+
"closed_E_pi_r": 0.9999999984316714
|
| 598 |
+
},
|
| 599 |
+
{
|
| 600 |
+
"beta": 5.0,
|
| 601 |
+
"r": 1,
|
| 602 |
+
"mc_E_lambda_sq": 1.6965731080853301,
|
| 603 |
+
"mc_se": 0.022614307989825406,
|
| 604 |
+
"theorem_E_lambda_sq": 1.6668333333333334,
|
| 605 |
+
"z_score": 1.3150866595333013,
|
| 606 |
+
"mc_E_pi_r": 0.16658488282542508,
|
| 607 |
+
"closed_E_pi_r": 0.16666666666666663
|
| 608 |
+
},
|
| 609 |
+
{
|
| 610 |
+
"beta": 5.0,
|
| 611 |
+
"r": 5,
|
| 612 |
+
"mc_E_lambda_sq": 0.8070802569460827,
|
| 613 |
+
"mc_se": 0.007590419241694327,
|
| 614 |
+
"theorem_E_lambda_sq": 0.8043532664609057,
|
| 615 |
+
"z_score": 0.35926743943174844,
|
| 616 |
+
"mc_E_pi_r": 0.5982940953182472,
|
| 617 |
+
"closed_E_pi_r": 0.598122427983539
|
| 618 |
+
},
|
| 619 |
+
{
|
| 620 |
+
"beta": 5.0,
|
| 621 |
+
"r": 20,
|
| 622 |
+
"mc_E_lambda_sq": 0.05504515005037655,
|
| 623 |
+
"mc_se": 0.0018462675101996297,
|
| 624 |
+
"theorem_E_lambda_sq": 0.053142022555873115,
|
| 625 |
+
"z_score": 1.0307972620379686,
|
| 626 |
+
"mc_E_pi_r": 0.9739525389111032,
|
| 627 |
+
"closed_E_pi_r": 0.9739159466954111
|
| 628 |
+
},
|
| 629 |
+
{
|
| 630 |
+
"beta": 5.0,
|
| 631 |
+
"r": 50,
|
| 632 |
+
"mc_E_lambda_sq": 0.0012838060859512769,
|
| 633 |
+
"mc_se": 9.735324534318055e-05,
|
| 634 |
+
"theorem_E_lambda_sq": 0.0012196597534152279,
|
| 635 |
+
"z_score": 0.6589028676951276,
|
| 636 |
+
"mc_E_pi_r": 0.999889818439095,
|
| 637 |
+
"closed_E_pi_r": 0.9998901151808828
|
| 638 |
+
}
|
| 639 |
+
],
|
| 640 |
+
"B_tail": [
|
| 641 |
+
{
|
| 642 |
+
"beta": 2.0,
|
| 643 |
+
"r": 1,
|
| 644 |
+
"eps": 0.0001,
|
| 645 |
+
"empirical_tail": 0.5746325,
|
| 646 |
+
"theorem_bound": 13336.666666666664,
|
| 647 |
+
"holds": true,
|
| 648 |
+
"slack": 13336.092034166664
|
| 649 |
+
},
|
| 650 |
+
{
|
| 651 |
+
"beta": 2.0,
|
| 652 |
+
"r": 1,
|
| 653 |
+
"eps": 0.001,
|
| 654 |
+
"empirical_tail": 0.42967,
|
| 655 |
+
"theorem_bound": 1333.6666666666665,
|
| 656 |
+
"holds": true,
|
| 657 |
+
"slack": 1333.2369966666665
|
| 658 |
+
},
|
| 659 |
+
{
|
| 660 |
+
"beta": 2.0,
|
| 661 |
+
"r": 1,
|
| 662 |
+
"eps": 0.01,
|
| 663 |
+
"empirical_tail": 0.2859175,
|
| 664 |
+
"theorem_bound": 133.36666666666665,
|
| 665 |
+
"holds": true,
|
| 666 |
+
"slack": 133.08074916666664
|
| 667 |
+
},
|
| 668 |
+
{
|
| 669 |
+
"beta": 2.0,
|
| 670 |
+
"r": 1,
|
| 671 |
+
"eps": 0.1,
|
| 672 |
+
"empirical_tail": 0.156305,
|
| 673 |
+
"theorem_bound": 13.336666666666664,
|
| 674 |
+
"holds": true,
|
| 675 |
+
"slack": 13.180361666666665
|
| 676 |
+
},
|
| 677 |
+
{
|
| 678 |
+
"beta": 2.0,
|
| 679 |
+
"r": 1,
|
| 680 |
+
"eps": 1.0,
|
| 681 |
+
"empirical_tail": 0.06259,
|
| 682 |
+
"theorem_bound": 1.3336666666666666,
|
| 683 |
+
"holds": true,
|
| 684 |
+
"slack": 1.2710766666666666
|
| 685 |
+
},
|
| 686 |
+
{
|
| 687 |
+
"beta": 2.0,
|
| 688 |
+
"r": 1,
|
| 689 |
+
"eps": 10.0,
|
| 690 |
+
"empirical_tail": 0.0157475,
|
| 691 |
+
"theorem_bound": 0.13336666666666666,
|
| 692 |
+
"holds": true,
|
| 693 |
+
"slack": 0.11761916666666666
|
| 694 |
+
},
|
| 695 |
+
{
|
| 696 |
+
"beta": 2.0,
|
| 697 |
+
"r": 5,
|
| 698 |
+
"eps": 0.0001,
|
| 699 |
+
"empirical_tail": 0.2849125,
|
| 700 |
+
"theorem_bound": 2642.427983539094,
|
| 701 |
+
"holds": true,
|
| 702 |
+
"slack": 2642.143071039094
|
| 703 |
+
},
|
| 704 |
+
{
|
| 705 |
+
"beta": 2.0,
|
| 706 |
+
"r": 5,
|
| 707 |
+
"eps": 0.001,
|
| 708 |
+
"empirical_tail": 0.14784,
|
| 709 |
+
"theorem_bound": 264.2427983539094,
|
| 710 |
+
"holds": true,
|
| 711 |
+
"slack": 264.0949583539094
|
| 712 |
+
},
|
| 713 |
+
{
|
| 714 |
+
"beta": 2.0,
|
| 715 |
+
"r": 5,
|
| 716 |
+
"eps": 0.01,
|
| 717 |
+
"empirical_tail": 0.06983,
|
| 718 |
+
"theorem_bound": 26.42427983539094,
|
| 719 |
+
"holds": true,
|
| 720 |
+
"slack": 26.35444983539094
|
| 721 |
+
},
|
| 722 |
+
{
|
| 723 |
+
"beta": 2.0,
|
| 724 |
+
"r": 5,
|
| 725 |
+
"eps": 0.1,
|
| 726 |
+
"empirical_tail": 0.0322875,
|
| 727 |
+
"theorem_bound": 2.642427983539094,
|
| 728 |
+
"holds": true,
|
| 729 |
+
"slack": 2.610140483539094
|
| 730 |
+
},
|
| 731 |
+
{
|
| 732 |
+
"beta": 2.0,
|
| 733 |
+
"r": 5,
|
| 734 |
+
"eps": 1.0,
|
| 735 |
+
"empirical_tail": 0.012515,
|
| 736 |
+
"theorem_bound": 0.2642427983539094,
|
| 737 |
+
"holds": true,
|
| 738 |
+
"slack": 0.2517277983539094
|
| 739 |
+
},
|
| 740 |
+
{
|
| 741 |
+
"beta": 2.0,
|
| 742 |
+
"r": 5,
|
| 743 |
+
"eps": 10.0,
|
| 744 |
+
"empirical_tail": 0.00304,
|
| 745 |
+
"theorem_bound": 0.02642427983539094,
|
| 746 |
+
"holds": true,
|
| 747 |
+
"slack": 0.023384279835390938
|
| 748 |
+
},
|
| 749 |
+
{
|
| 750 |
+
"beta": 2.0,
|
| 751 |
+
"r": 10,
|
| 752 |
+
"eps": 0.0001,
|
| 753 |
+
"empirical_tail": 0.222155,
|
| 754 |
+
"theorem_bound": 356.6571830174938,
|
| 755 |
+
"holds": true,
|
| 756 |
+
"slack": 356.43502801749383
|
| 757 |
+
},
|
| 758 |
+
{
|
| 759 |
+
"beta": 2.0,
|
| 760 |
+
"r": 10,
|
| 761 |
+
"eps": 0.001,
|
| 762 |
+
"empirical_tail": 0.086905,
|
| 763 |
+
"theorem_bound": 35.66571830174938,
|
| 764 |
+
"holds": true,
|
| 765 |
+
"slack": 35.57881330174938
|
| 766 |
+
},
|
| 767 |
+
{
|
| 768 |
+
"beta": 2.0,
|
| 769 |
+
"r": 10,
|
| 770 |
+
"eps": 0.01,
|
| 771 |
+
"empirical_tail": 0.022885,
|
| 772 |
+
"theorem_bound": 3.5665718301749383,
|
| 773 |
+
"holds": true,
|
| 774 |
+
"slack": 3.5436868301749382
|
| 775 |
+
},
|
| 776 |
+
{
|
| 777 |
+
"beta": 2.0,
|
| 778 |
+
"r": 10,
|
| 779 |
+
"eps": 0.1,
|
| 780 |
+
"empirical_tail": 0.0052725,
|
| 781 |
+
"theorem_bound": 0.3566571830174938,
|
| 782 |
+
"holds": true,
|
| 783 |
+
"slack": 0.35138468301749376
|
| 784 |
+
},
|
| 785 |
+
{
|
| 786 |
+
"beta": 2.0,
|
| 787 |
+
"r": 10,
|
| 788 |
+
"eps": 1.0,
|
| 789 |
+
"empirical_tail": 0.00161,
|
| 790 |
+
"theorem_bound": 0.03566571830174938,
|
| 791 |
+
"holds": true,
|
| 792 |
+
"slack": 0.03405571830174938
|
| 793 |
+
},
|
| 794 |
+
{
|
| 795 |
+
"beta": 2.0,
|
| 796 |
+
"r": 10,
|
| 797 |
+
"eps": 10.0,
|
| 798 |
+
"empirical_tail": 0.0003625,
|
| 799 |
+
"theorem_bound": 0.003566571830174938,
|
| 800 |
+
"holds": true,
|
| 801 |
+
"slack": 0.003204071830174938
|
| 802 |
+
},
|
| 803 |
+
{
|
| 804 |
+
"beta": 2.0,
|
| 805 |
+
"r": 25,
|
| 806 |
+
"eps": 0.0001,
|
| 807 |
+
"empirical_tail": 0.2114025,
|
| 808 |
+
"theorem_bound": 10.791646539566896,
|
| 809 |
+
"holds": true,
|
| 810 |
+
"slack": 10.580244039566896
|
| 811 |
+
},
|
| 812 |
+
{
|
| 813 |
+
"beta": 2.0,
|
| 814 |
+
"r": 25,
|
| 815 |
+
"eps": 0.001,
|
| 816 |
+
"empirical_tail": 0.0777325,
|
| 817 |
+
"theorem_bound": 1.0791646539566897,
|
| 818 |
+
"holds": true,
|
| 819 |
+
"slack": 1.0014321539566897
|
| 820 |
+
},
|
| 821 |
+
{
|
| 822 |
+
"beta": 2.0,
|
| 823 |
+
"r": 25,
|
| 824 |
+
"eps": 0.01,
|
| 825 |
+
"empirical_tail": 0.0164575,
|
| 826 |
+
"theorem_bound": 0.10791646539566896,
|
| 827 |
+
"holds": true,
|
| 828 |
+
"slack": 0.09145896539566896
|
| 829 |
+
},
|
| 830 |
+
{
|
| 831 |
+
"beta": 2.0,
|
| 832 |
+
"r": 25,
|
| 833 |
+
"eps": 0.1,
|
| 834 |
+
"empirical_tail": 0.00139,
|
| 835 |
+
"theorem_bound": 0.010791646539566897,
|
| 836 |
+
"holds": true,
|
| 837 |
+
"slack": 0.009401646539566896
|
| 838 |
+
},
|
| 839 |
+
{
|
| 840 |
+
"beta": 2.0,
|
| 841 |
+
"r": 25,
|
| 842 |
+
"eps": 1.0,
|
| 843 |
+
"empirical_tail": 2.75e-05,
|
| 844 |
+
"theorem_bound": 0.0010791646539566897,
|
| 845 |
+
"holds": true,
|
| 846 |
+
"slack": 0.0010516646539566897
|
| 847 |
+
},
|
| 848 |
+
{
|
| 849 |
+
"beta": 2.0,
|
| 850 |
+
"r": 25,
|
| 851 |
+
"eps": 10.0,
|
| 852 |
+
"empirical_tail": 0.0,
|
| 853 |
+
"theorem_bound": 0.00010791646539566897,
|
| 854 |
+
"holds": true,
|
| 855 |
+
"slack": 0.00010791646539566897
|
| 856 |
+
},
|
| 857 |
+
{
|
| 858 |
+
"beta": 2.0,
|
| 859 |
+
"r": 50,
|
| 860 |
+
"eps": 0.0001,
|
| 861 |
+
"empirical_tail": 0.21304,
|
| 862 |
+
"theorem_bound": 10.000031350887623,
|
| 863 |
+
"holds": true,
|
| 864 |
+
"slack": 9.786991350887623
|
| 865 |
+
},
|
| 866 |
+
{
|
| 867 |
+
"beta": 2.0,
|
| 868 |
+
"r": 50,
|
| 869 |
+
"eps": 0.001,
|
| 870 |
+
"empirical_tail": 0.0777825,
|
| 871 |
+
"theorem_bound": 1.0000031350887624,
|
| 872 |
+
"holds": true,
|
| 873 |
+
"slack": 0.9222206350887624
|
| 874 |
+
},
|
| 875 |
+
{
|
| 876 |
+
"beta": 2.0,
|
| 877 |
+
"r": 50,
|
| 878 |
+
"eps": 0.01,
|
| 879 |
+
"empirical_tail": 0.0158175,
|
| 880 |
+
"theorem_bound": 0.10000031350887624,
|
| 881 |
+
"holds": true,
|
| 882 |
+
"slack": 0.08418281350887624
|
| 883 |
+
},
|
| 884 |
+
{
|
| 885 |
+
"beta": 2.0,
|
| 886 |
+
"r": 50,
|
| 887 |
+
"eps": 0.1,
|
| 888 |
+
"empirical_tail": 0.0013675,
|
| 889 |
+
"theorem_bound": 0.010000031350887624,
|
| 890 |
+
"holds": true,
|
| 891 |
+
"slack": 0.008632531350887623
|
| 892 |
+
},
|
| 893 |
+
{
|
| 894 |
+
"beta": 2.0,
|
| 895 |
+
"r": 50,
|
| 896 |
+
"eps": 1.0,
|
| 897 |
+
"empirical_tail": 3.5e-05,
|
| 898 |
+
"theorem_bound": 0.0010000031350887624,
|
| 899 |
+
"holds": true,
|
| 900 |
+
"slack": 0.0009650031350887624
|
| 901 |
+
},
|
| 902 |
+
{
|
| 903 |
+
"beta": 2.0,
|
| 904 |
+
"r": 50,
|
| 905 |
+
"eps": 10.0,
|
| 906 |
+
"empirical_tail": 0.0,
|
| 907 |
+
"theorem_bound": 0.00010000031350887624,
|
| 908 |
+
"holds": true,
|
| 909 |
+
"slack": 0.00010000031350887624
|
| 910 |
+
},
|
| 911 |
+
{
|
| 912 |
+
"beta": 5.0,
|
| 913 |
+
"r": 1,
|
| 914 |
+
"eps": 0.0001,
|
| 915 |
+
"empirical_tail": 0.6658,
|
| 916 |
+
"theorem_bound": 16668.333333333332,
|
| 917 |
+
"holds": true,
|
| 918 |
+
"slack": 16667.667533333333
|
| 919 |
+
},
|
| 920 |
+
{
|
| 921 |
+
"beta": 5.0,
|
| 922 |
+
"r": 1,
|
| 923 |
+
"eps": 0.001,
|
| 924 |
+
"empirical_tail": 0.5167725,
|
| 925 |
+
"theorem_bound": 1666.8333333333333,
|
| 926 |
+
"holds": true,
|
| 927 |
+
"slack": 1666.3165608333334
|
| 928 |
+
},
|
| 929 |
+
{
|
| 930 |
+
"beta": 5.0,
|
| 931 |
+
"r": 1,
|
| 932 |
+
"eps": 0.01,
|
| 933 |
+
"empirical_tail": 0.352675,
|
| 934 |
+
"theorem_bound": 166.68333333333334,
|
| 935 |
+
"holds": true,
|
| 936 |
+
"slack": 166.33065833333333
|
| 937 |
+
},
|
| 938 |
+
{
|
| 939 |
+
"beta": 5.0,
|
| 940 |
+
"r": 1,
|
| 941 |
+
"eps": 0.1,
|
| 942 |
+
"empirical_tail": 0.195085,
|
| 943 |
+
"theorem_bound": 16.668333333333333,
|
| 944 |
+
"holds": true,
|
| 945 |
+
"slack": 16.473248333333334
|
| 946 |
+
},
|
| 947 |
+
{
|
| 948 |
+
"beta": 5.0,
|
| 949 |
+
"r": 1,
|
| 950 |
+
"eps": 1.0,
|
| 951 |
+
"empirical_tail": 0.0784575,
|
| 952 |
+
"theorem_bound": 1.6668333333333334,
|
| 953 |
+
"holds": true,
|
| 954 |
+
"slack": 1.5883758333333333
|
| 955 |
+
},
|
| 956 |
+
{
|
| 957 |
+
"beta": 5.0,
|
| 958 |
+
"r": 1,
|
| 959 |
+
"eps": 10.0,
|
| 960 |
+
"empirical_tail": 0.0192575,
|
| 961 |
+
"theorem_bound": 0.16668333333333335,
|
| 962 |
+
"holds": true,
|
| 963 |
+
"slack": 0.14742583333333334
|
| 964 |
+
},
|
| 965 |
+
{
|
| 966 |
+
"beta": 5.0,
|
| 967 |
+
"r": 5,
|
| 968 |
+
"eps": 0.0001,
|
| 969 |
+
"empirical_tail": 0.4297425,
|
| 970 |
+
"theorem_bound": 8043.532664609056,
|
| 971 |
+
"holds": true,
|
| 972 |
+
"slack": 8043.102922109056
|
| 973 |
+
},
|
| 974 |
+
{
|
| 975 |
+
"beta": 5.0,
|
| 976 |
+
"r": 5,
|
| 977 |
+
"eps": 0.001,
|
| 978 |
+
"empirical_tail": 0.289985,
|
| 979 |
+
"theorem_bound": 804.3532664609056,
|
| 980 |
+
"holds": true,
|
| 981 |
+
"slack": 804.0632814609056
|
| 982 |
+
},
|
| 983 |
+
{
|
| 984 |
+
"beta": 5.0,
|
| 985 |
+
"r": 5,
|
| 986 |
+
"eps": 0.01,
|
| 987 |
+
"empirical_tail": 0.1779125,
|
| 988 |
+
"theorem_bound": 80.43532664609056,
|
| 989 |
+
"holds": true,
|
| 990 |
+
"slack": 80.25741414609055
|
| 991 |
+
},
|
| 992 |
+
{
|
| 993 |
+
"beta": 5.0,
|
| 994 |
+
"r": 5,
|
| 995 |
+
"eps": 0.1,
|
| 996 |
+
"empirical_tail": 0.09466,
|
| 997 |
+
"theorem_bound": 8.043532664609057,
|
| 998 |
+
"holds": true,
|
| 999 |
+
"slack": 7.948872664609056
|
| 1000 |
+
},
|
| 1001 |
+
{
|
| 1002 |
+
"beta": 5.0,
|
| 1003 |
+
"r": 5,
|
| 1004 |
+
"eps": 1.0,
|
| 1005 |
+
"empirical_tail": 0.037635,
|
| 1006 |
+
"theorem_bound": 0.8043532664609057,
|
| 1007 |
+
"holds": true,
|
| 1008 |
+
"slack": 0.7667182664609057
|
| 1009 |
+
},
|
| 1010 |
+
{
|
| 1011 |
+
"beta": 5.0,
|
| 1012 |
+
"r": 5,
|
| 1013 |
+
"eps": 10.0,
|
| 1014 |
+
"empirical_tail": 0.0093925,
|
| 1015 |
+
"theorem_bound": 0.08043532664609057,
|
| 1016 |
+
"holds": true,
|
| 1017 |
+
"slack": 0.07104282664609057
|
| 1018 |
+
},
|
| 1019 |
+
{
|
| 1020 |
+
"beta": 5.0,
|
| 1021 |
+
"r": 10,
|
| 1022 |
+
"eps": 0.0001,
|
| 1023 |
+
"empirical_tail": 0.298835,
|
| 1024 |
+
"theorem_bound": 3238.496601968017,
|
| 1025 |
+
"holds": true,
|
| 1026 |
+
"slack": 3238.197766968017
|
| 1027 |
+
},
|
| 1028 |
+
{
|
| 1029 |
+
"beta": 5.0,
|
| 1030 |
+
"r": 10,
|
| 1031 |
+
"eps": 0.001,
|
| 1032 |
+
"empirical_tail": 0.1626825,
|
| 1033 |
+
"theorem_bound": 323.8496601968017,
|
| 1034 |
+
"holds": true,
|
| 1035 |
+
"slack": 323.6869776968017
|
| 1036 |
+
},
|
| 1037 |
+
{
|
| 1038 |
+
"beta": 5.0,
|
| 1039 |
+
"r": 10,
|
| 1040 |
+
"eps": 0.01,
|
| 1041 |
+
"empirical_tail": 0.0813425,
|
| 1042 |
+
"theorem_bound": 32.38496601968017,
|
| 1043 |
+
"holds": true,
|
| 1044 |
+
"slack": 32.30362351968017
|
| 1045 |
+
},
|
| 1046 |
+
{
|
| 1047 |
+
"beta": 5.0,
|
| 1048 |
+
"r": 10,
|
| 1049 |
+
"eps": 0.1,
|
| 1050 |
+
"empirical_tail": 0.0392025,
|
| 1051 |
+
"theorem_bound": 3.2384966019680173,
|
| 1052 |
+
"holds": true,
|
| 1053 |
+
"slack": 3.1992941019680172
|
| 1054 |
+
},
|
| 1055 |
+
{
|
| 1056 |
+
"beta": 5.0,
|
| 1057 |
+
"r": 10,
|
| 1058 |
+
"eps": 1.0,
|
| 1059 |
+
"empirical_tail": 0.0151925,
|
| 1060 |
+
"theorem_bound": 0.3238496601968017,
|
| 1061 |
+
"holds": true,
|
| 1062 |
+
"slack": 0.3086571601968017
|
| 1063 |
+
},
|
| 1064 |
+
{
|
| 1065 |
+
"beta": 5.0,
|
| 1066 |
+
"r": 10,
|
| 1067 |
+
"eps": 10.0,
|
| 1068 |
+
"empirical_tail": 0.0038825,
|
| 1069 |
+
"theorem_bound": 0.032384966019680175,
|
| 1070 |
+
"holds": true,
|
| 1071 |
+
"slack": 0.028502466019680175
|
| 1072 |
+
},
|
| 1073 |
+
{
|
| 1074 |
+
"beta": 5.0,
|
| 1075 |
+
"r": 25,
|
| 1076 |
+
"eps": 0.0001,
|
| 1077 |
+
"empirical_tail": 0.2196575,
|
| 1078 |
+
"theorem_bound": 219.5470942478183,
|
| 1079 |
+
"holds": true,
|
| 1080 |
+
"slack": 219.3274367478183
|
| 1081 |
+
},
|
| 1082 |
+
{
|
| 1083 |
+
"beta": 5.0,
|
| 1084 |
+
"r": 25,
|
| 1085 |
+
"eps": 0.001,
|
| 1086 |
+
"empirical_tail": 0.0839425,
|
| 1087 |
+
"theorem_bound": 21.95470942478183,
|
| 1088 |
+
"holds": true,
|
| 1089 |
+
"slack": 21.87076692478183
|
| 1090 |
+
},
|
| 1091 |
+
{
|
| 1092 |
+
"beta": 5.0,
|
| 1093 |
+
"r": 25,
|
| 1094 |
+
"eps": 0.01,
|
| 1095 |
+
"empirical_tail": 0.0204725,
|
| 1096 |
+
"theorem_bound": 2.195470942478183,
|
| 1097 |
+
"holds": true,
|
| 1098 |
+
"slack": 2.174998442478183
|
| 1099 |
+
},
|
| 1100 |
+
{
|
| 1101 |
+
"beta": 5.0,
|
| 1102 |
+
"r": 25,
|
| 1103 |
+
"eps": 0.1,
|
| 1104 |
+
"empirical_tail": 0.0038125,
|
| 1105 |
+
"theorem_bound": 0.2195470942478183,
|
| 1106 |
+
"holds": true,
|
| 1107 |
+
"slack": 0.2157345942478183
|
| 1108 |
+
},
|
| 1109 |
+
{
|
| 1110 |
+
"beta": 5.0,
|
| 1111 |
+
"r": 25,
|
| 1112 |
+
"eps": 1.0,
|
| 1113 |
+
"empirical_tail": 0.000995,
|
| 1114 |
+
"theorem_bound": 0.02195470942478183,
|
| 1115 |
+
"holds": true,
|
| 1116 |
+
"slack": 0.02095970942478183
|
| 1117 |
+
},
|
| 1118 |
+
{
|
| 1119 |
+
"beta": 5.0,
|
| 1120 |
+
"r": 25,
|
| 1121 |
+
"eps": 10.0,
|
| 1122 |
+
"empirical_tail": 0.0002425,
|
| 1123 |
+
"theorem_bound": 0.002195470942478183,
|
| 1124 |
+
"holds": true,
|
| 1125 |
+
"slack": 0.0019529709424781828
|
| 1126 |
+
},
|
| 1127 |
+
{
|
| 1128 |
+
"beta": 5.0,
|
| 1129 |
+
"r": 50,
|
| 1130 |
+
"eps": 0.0001,
|
| 1131 |
+
"empirical_tail": 0.21154,
|
| 1132 |
+
"theorem_bound": 12.196597534152279,
|
| 1133 |
+
"holds": true,
|
| 1134 |
+
"slack": 11.98505753415228
|
| 1135 |
+
},
|
| 1136 |
+
{
|
| 1137 |
+
"beta": 5.0,
|
| 1138 |
+
"r": 50,
|
| 1139 |
+
"eps": 0.001,
|
| 1140 |
+
"empirical_tail": 0.077315,
|
| 1141 |
+
"theorem_bound": 1.2196597534152278,
|
| 1142 |
+
"holds": true,
|
| 1143 |
+
"slack": 1.1423447534152278
|
| 1144 |
+
},
|
| 1145 |
+
{
|
| 1146 |
+
"beta": 5.0,
|
| 1147 |
+
"r": 50,
|
| 1148 |
+
"eps": 0.01,
|
| 1149 |
+
"empirical_tail": 0.0163475,
|
| 1150 |
+
"theorem_bound": 0.12196597534152279,
|
| 1151 |
+
"holds": true,
|
| 1152 |
+
"slack": 0.10561847534152279
|
| 1153 |
+
},
|
| 1154 |
+
{
|
| 1155 |
+
"beta": 5.0,
|
| 1156 |
+
"r": 50,
|
| 1157 |
+
"eps": 0.1,
|
| 1158 |
+
"empirical_tail": 0.0014675,
|
| 1159 |
+
"theorem_bound": 0.012196597534152278,
|
| 1160 |
+
"holds": true,
|
| 1161 |
+
"slack": 0.010729097534152278
|
| 1162 |
+
},
|
| 1163 |
+
{
|
| 1164 |
+
"beta": 5.0,
|
| 1165 |
+
"r": 50,
|
| 1166 |
+
"eps": 1.0,
|
| 1167 |
+
"empirical_tail": 3e-05,
|
| 1168 |
+
"theorem_bound": 0.0012196597534152279,
|
| 1169 |
+
"holds": true,
|
| 1170 |
+
"slack": 0.0011896597534152278
|
| 1171 |
+
},
|
| 1172 |
+
{
|
| 1173 |
+
"beta": 5.0,
|
| 1174 |
+
"r": 50,
|
| 1175 |
+
"eps": 10.0,
|
| 1176 |
+
"empirical_tail": 0.0,
|
| 1177 |
+
"theorem_bound": 0.00012196597534152279,
|
| 1178 |
+
"holds": true,
|
| 1179 |
+
"slack": 0.00012196597534152279
|
| 1180 |
+
},
|
| 1181 |
+
{
|
| 1182 |
+
"beta": 20.0,
|
| 1183 |
+
"r": 1,
|
| 1184 |
+
"eps": 0.0001,
|
| 1185 |
+
"empirical_tail": 0.731235,
|
| 1186 |
+
"theorem_bound": 19048.095238095237,
|
| 1187 |
+
"holds": true,
|
| 1188 |
+
"slack": 19047.364003095237
|
| 1189 |
+
},
|
| 1190 |
+
{
|
| 1191 |
+
"beta": 20.0,
|
| 1192 |
+
"r": 1,
|
| 1193 |
+
"eps": 0.001,
|
| 1194 |
+
"empirical_tail": 0.582175,
|
| 1195 |
+
"theorem_bound": 1904.8095238095236,
|
| 1196 |
+
"holds": true,
|
| 1197 |
+
"slack": 1904.2273488095236
|
| 1198 |
+
},
|
| 1199 |
+
{
|
| 1200 |
+
"beta": 20.0,
|
| 1201 |
+
"r": 1,
|
| 1202 |
+
"eps": 0.01,
|
| 1203 |
+
"empirical_tail": 0.40205,
|
| 1204 |
+
"theorem_bound": 190.48095238095237,
|
| 1205 |
+
"holds": true,
|
| 1206 |
+
"slack": 190.07890238095237
|
| 1207 |
+
},
|
| 1208 |
+
{
|
| 1209 |
+
"beta": 20.0,
|
| 1210 |
+
"r": 1,
|
| 1211 |
+
"eps": 0.1,
|
| 1212 |
+
"empirical_tail": 0.22319,
|
| 1213 |
+
"theorem_bound": 19.048095238095236,
|
| 1214 |
+
"holds": true,
|
| 1215 |
+
"slack": 18.824905238095237
|
| 1216 |
+
},
|
| 1217 |
+
{
|
| 1218 |
+
"beta": 20.0,
|
| 1219 |
+
"r": 1,
|
| 1220 |
+
"eps": 1.0,
|
| 1221 |
+
"empirical_tail": 0.090205,
|
| 1222 |
+
"theorem_bound": 1.9048095238095237,
|
| 1223 |
+
"holds": true,
|
| 1224 |
+
"slack": 1.8146045238095236
|
| 1225 |
+
},
|
| 1226 |
+
{
|
| 1227 |
+
"beta": 20.0,
|
| 1228 |
+
"r": 1,
|
| 1229 |
+
"eps": 10.0,
|
| 1230 |
+
"empirical_tail": 0.0222,
|
| 1231 |
+
"theorem_bound": 0.19048095238095236,
|
| 1232 |
+
"holds": true,
|
| 1233 |
+
"slack": 0.16828095238095236
|
| 1234 |
+
},
|
| 1235 |
+
{
|
| 1236 |
+
"beta": 20.0,
|
| 1237 |
+
"r": 5,
|
| 1238 |
+
"eps": 0.0001,
|
| 1239 |
+
"empirical_tail": 0.6387125,
|
| 1240 |
+
"theorem_bound": 15672.688067704492,
|
| 1241 |
+
"holds": true,
|
| 1242 |
+
"slack": 15672.049355204492
|
| 1243 |
+
},
|
| 1244 |
+
{
|
| 1245 |
+
"beta": 20.0,
|
| 1246 |
+
"r": 5,
|
| 1247 |
+
"eps": 0.001,
|
| 1248 |
+
"empirical_tail": 0.4920175,
|
| 1249 |
+
"theorem_bound": 1567.2688067704491,
|
| 1250 |
+
"holds": true,
|
| 1251 |
+
"slack": 1566.7767892704492
|
| 1252 |
+
},
|
| 1253 |
+
{
|
| 1254 |
+
"beta": 20.0,
|
| 1255 |
+
"r": 5,
|
| 1256 |
+
"eps": 0.01,
|
| 1257 |
+
"empirical_tail": 0.333505,
|
| 1258 |
+
"theorem_bound": 156.72688067704493,
|
| 1259 |
+
"holds": true,
|
| 1260 |
+
"slack": 156.39337567704493
|
| 1261 |
+
},
|
| 1262 |
+
{
|
| 1263 |
+
"beta": 20.0,
|
| 1264 |
+
"r": 5,
|
| 1265 |
+
"eps": 0.1,
|
| 1266 |
+
"empirical_tail": 0.1837225,
|
| 1267 |
+
"theorem_bound": 15.672688067704492,
|
| 1268 |
+
"holds": true,
|
| 1269 |
+
"slack": 15.488965567704492
|
| 1270 |
+
},
|
| 1271 |
+
{
|
| 1272 |
+
"beta": 20.0,
|
| 1273 |
+
"r": 5,
|
| 1274 |
+
"eps": 1.0,
|
| 1275 |
+
"empirical_tail": 0.0736375,
|
| 1276 |
+
"theorem_bound": 1.5672688067704492,
|
| 1277 |
+
"holds": true,
|
| 1278 |
+
"slack": 1.4936313067704492
|
| 1279 |
+
},
|
| 1280 |
+
{
|
| 1281 |
+
"beta": 20.0,
|
| 1282 |
+
"r": 5,
|
| 1283 |
+
"eps": 10.0,
|
| 1284 |
+
"empirical_tail": 0.018425,
|
| 1285 |
+
"theorem_bound": 0.15672688067704493,
|
| 1286 |
+
"holds": true,
|
| 1287 |
+
"slack": 0.13830188067704494
|
| 1288 |
+
},
|
| 1289 |
+
{
|
| 1290 |
+
"beta": 20.0,
|
| 1291 |
+
"r": 10,
|
| 1292 |
+
"eps": 0.0001,
|
| 1293 |
+
"empirical_tail": 0.5478225,
|
| 1294 |
+
"theorem_bound": 12282.12593827977,
|
| 1295 |
+
"holds": true,
|
| 1296 |
+
"slack": 12281.57811577977
|
| 1297 |
+
},
|
| 1298 |
+
{
|
| 1299 |
+
"beta": 20.0,
|
| 1300 |
+
"r": 10,
|
| 1301 |
+
"eps": 0.001,
|
| 1302 |
+
"empirical_tail": 0.4024225,
|
| 1303 |
+
"theorem_bound": 1228.2125938279771,
|
| 1304 |
+
"holds": true,
|
| 1305 |
+
"slack": 1227.810171327977
|
| 1306 |
+
},
|
| 1307 |
+
{
|
| 1308 |
+
"beta": 20.0,
|
| 1309 |
+
"r": 10,
|
| 1310 |
+
"eps": 0.01,
|
| 1311 |
+
"empirical_tail": 0.26482,
|
| 1312 |
+
"theorem_bound": 122.8212593827977,
|
| 1313 |
+
"holds": true,
|
| 1314 |
+
"slack": 122.5564393827977
|
| 1315 |
+
},
|
| 1316 |
+
{
|
| 1317 |
+
"beta": 20.0,
|
| 1318 |
+
"r": 10,
|
| 1319 |
+
"eps": 0.1,
|
| 1320 |
+
"empirical_tail": 0.144695,
|
| 1321 |
+
"theorem_bound": 12.282125938279771,
|
| 1322 |
+
"holds": true,
|
| 1323 |
+
"slack": 12.13743093827977
|
| 1324 |
+
},
|
| 1325 |
+
{
|
| 1326 |
+
"beta": 20.0,
|
| 1327 |
+
"r": 10,
|
| 1328 |
+
"eps": 1.0,
|
| 1329 |
+
"empirical_tail": 0.0579925,
|
| 1330 |
+
"theorem_bound": 1.228212593827977,
|
| 1331 |
+
"holds": true,
|
| 1332 |
+
"slack": 1.170220093827977
|
| 1333 |
+
},
|
| 1334 |
+
{
|
| 1335 |
+
"beta": 20.0,
|
| 1336 |
+
"r": 10,
|
| 1337 |
+
"eps": 10.0,
|
| 1338 |
+
"empirical_tail": 0.01475,
|
| 1339 |
+
"theorem_bound": 0.12282125938279771,
|
| 1340 |
+
"holds": true,
|
| 1341 |
+
"slack": 0.10807125938279771
|
| 1342 |
+
},
|
| 1343 |
+
{
|
| 1344 |
+
"beta": 20.0,
|
| 1345 |
+
"r": 25,
|
| 1346 |
+
"eps": 0.0001,
|
| 1347 |
+
"empirical_tail": 0.3730075,
|
| 1348 |
+
"theorem_bound": 5913.102406238258,
|
| 1349 |
+
"holds": true,
|
| 1350 |
+
"slack": 5912.729398738257
|
| 1351 |
+
},
|
| 1352 |
+
{
|
| 1353 |
+
"beta": 20.0,
|
| 1354 |
+
"r": 25,
|
| 1355 |
+
"eps": 0.001,
|
| 1356 |
+
"empirical_tail": 0.2344375,
|
| 1357 |
+
"theorem_bound": 591.3102406238257,
|
| 1358 |
+
"holds": true,
|
| 1359 |
+
"slack": 591.0758031238257
|
| 1360 |
+
},
|
| 1361 |
+
{
|
| 1362 |
+
"beta": 20.0,
|
| 1363 |
+
"r": 25,
|
| 1364 |
+
"eps": 0.01,
|
| 1365 |
+
"empirical_tail": 0.1362475,
|
| 1366 |
+
"theorem_bound": 59.13102406238257,
|
| 1367 |
+
"holds": true,
|
| 1368 |
+
"slack": 58.99477656238257
|
| 1369 |
+
},
|
| 1370 |
+
{
|
| 1371 |
+
"beta": 20.0,
|
| 1372 |
+
"r": 25,
|
| 1373 |
+
"eps": 0.1,
|
| 1374 |
+
"empirical_tail": 0.0704275,
|
| 1375 |
+
"theorem_bound": 5.913102406238258,
|
| 1376 |
+
"holds": true,
|
| 1377 |
+
"slack": 5.8426749062382575
|
| 1378 |
+
},
|
| 1379 |
+
{
|
| 1380 |
+
"beta": 20.0,
|
| 1381 |
+
"r": 25,
|
| 1382 |
+
"eps": 1.0,
|
| 1383 |
+
"empirical_tail": 0.0279275,
|
| 1384 |
+
"theorem_bound": 0.5913102406238258,
|
| 1385 |
+
"holds": true,
|
| 1386 |
+
"slack": 0.5633827406238258
|
| 1387 |
+
},
|
| 1388 |
+
{
|
| 1389 |
+
"beta": 20.0,
|
| 1390 |
+
"r": 25,
|
| 1391 |
+
"eps": 10.0,
|
| 1392 |
+
"empirical_tail": 0.0067625,
|
| 1393 |
+
"theorem_bound": 0.059131024062382576,
|
| 1394 |
+
"holds": true,
|
| 1395 |
+
"slack": 0.05236852406238258
|
| 1396 |
+
},
|
| 1397 |
+
{
|
| 1398 |
+
"beta": 20.0,
|
| 1399 |
+
"r": 50,
|
| 1400 |
+
"eps": 0.0001,
|
| 1401 |
+
"empirical_tail": 0.25799,
|
| 1402 |
+
"theorem_bound": 1753.2025021778843,
|
| 1403 |
+
"holds": true,
|
| 1404 |
+
"slack": 1752.9445121778842
|
| 1405 |
+
},
|
| 1406 |
+
{
|
| 1407 |
+
"beta": 20.0,
|
| 1408 |
+
"r": 50,
|
| 1409 |
+
"eps": 0.001,
|
| 1410 |
+
"empirical_tail": 0.122985,
|
| 1411 |
+
"theorem_bound": 175.32025021778844,
|
| 1412 |
+
"holds": true,
|
| 1413 |
+
"slack": 175.19726521778844
|
| 1414 |
+
},
|
| 1415 |
+
{
|
| 1416 |
+
"beta": 20.0,
|
| 1417 |
+
"r": 50,
|
| 1418 |
+
"eps": 0.01,
|
| 1419 |
+
"empirical_tail": 0.051105,
|
| 1420 |
+
"theorem_bound": 17.532025021778843,
|
| 1421 |
+
"holds": true,
|
| 1422 |
+
"slack": 17.480920021778843
|
| 1423 |
+
},
|
| 1424 |
+
{
|
| 1425 |
+
"beta": 20.0,
|
| 1426 |
+
"r": 50,
|
| 1427 |
+
"eps": 0.1,
|
| 1428 |
+
"empirical_tail": 0.02153,
|
| 1429 |
+
"theorem_bound": 1.7532025021778843,
|
| 1430 |
+
"holds": true,
|
| 1431 |
+
"slack": 1.7316725021778843
|
| 1432 |
+
},
|
| 1433 |
+
{
|
| 1434 |
+
"beta": 20.0,
|
| 1435 |
+
"r": 50,
|
| 1436 |
+
"eps": 1.0,
|
| 1437 |
+
"empirical_tail": 0.0081675,
|
| 1438 |
+
"theorem_bound": 0.17532025021778844,
|
| 1439 |
+
"holds": true,
|
| 1440 |
+
"slack": 0.16715275021778844
|
| 1441 |
+
},
|
| 1442 |
+
{
|
| 1443 |
+
"beta": 20.0,
|
| 1444 |
+
"r": 50,
|
| 1445 |
+
"eps": 10.0,
|
| 1446 |
+
"empirical_tail": 0.00208,
|
| 1447 |
+
"theorem_bound": 0.017532025021778842,
|
| 1448 |
+
"holds": true,
|
| 1449 |
+
"slack": 0.015452025021778842
|
| 1450 |
+
}
|
| 1451 |
+
],
|
| 1452 |
+
"B_all_hold": true,
|
| 1453 |
+
"B_n_checks": 90,
|
| 1454 |
+
"B_decay": [
|
| 1455 |
+
{
|
| 1456 |
+
"beta": 2.0,
|
| 1457 |
+
"measured_ratio": 0.6666666666666666,
|
| 1458 |
+
"predicted_ratio": 0.6666666666666666,
|
| 1459 |
+
"max_abs_dev": 1.1102230246251565e-16
|
| 1460 |
+
},
|
| 1461 |
+
{
|
| 1462 |
+
"beta": 5.0,
|
| 1463 |
+
"measured_ratio": 0.8333333333333336,
|
| 1464 |
+
"predicted_ratio": 0.8333333333333334,
|
| 1465 |
+
"max_abs_dev": 2.220446049250313e-16
|
| 1466 |
+
},
|
| 1467 |
+
{
|
| 1468 |
+
"beta": 20.0,
|
| 1469 |
+
"measured_ratio": 0.9523809523809524,
|
| 1470 |
+
"predicted_ratio": 0.9523809523809523,
|
| 1471 |
+
"max_abs_dev": 2.220446049250313e-16
|
| 1472 |
+
}
|
| 1473 |
+
],
|
| 1474 |
+
"C_control": [
|
| 1475 |
+
{
|
| 1476 |
+
"beta": 5.0,
|
| 1477 |
+
"r": 25,
|
| 1478 |
+
"eps": 1.0,
|
| 1479 |
+
"empirical_tail_eta_respected": 0.0010075,
|
| 1480 |
+
"empirical_tail_eta_violated": 0.0175125,
|
| 1481 |
+
"theorem_bound_with_eta_1": 0.02195470942478183,
|
| 1482 |
+
"holds_when_respected": true,
|
| 1483 |
+
"violated": false
|
| 1484 |
+
},
|
| 1485 |
+
{
|
| 1486 |
+
"beta": 5.0,
|
| 1487 |
+
"r": 25,
|
| 1488 |
+
"eps": 10.0,
|
| 1489 |
+
"empirical_tail_eta_respected": 0.0002225,
|
| 1490 |
+
"empirical_tail_eta_violated": 0.00334,
|
| 1491 |
+
"theorem_bound_with_eta_1": 0.002195470942478183,
|
| 1492 |
+
"holds_when_respected": true,
|
| 1493 |
+
"violated": true
|
| 1494 |
+
},
|
| 1495 |
+
{
|
| 1496 |
+
"beta": 5.0,
|
| 1497 |
+
"r": 25,
|
| 1498 |
+
"eps": 100.0,
|
| 1499 |
+
"empirical_tail_eta_respected": 3e-05,
|
| 1500 |
+
"empirical_tail_eta_violated": 0.0009325,
|
| 1501 |
+
"theorem_bound_with_eta_1": 0.0002195470942478183,
|
| 1502 |
+
"holds_when_respected": true,
|
| 1503 |
+
"violated": true
|
| 1504 |
+
},
|
| 1505 |
+
{
|
| 1506 |
+
"beta": 5.0,
|
| 1507 |
+
"r": 50,
|
| 1508 |
+
"eps": 1.0,
|
| 1509 |
+
"empirical_tail_eta_respected": 4.75e-05,
|
| 1510 |
+
"empirical_tail_eta_violated": 0.013525,
|
| 1511 |
+
"theorem_bound_with_eta_1": 0.0012196597534152279,
|
| 1512 |
+
"holds_when_respected": true,
|
| 1513 |
+
"violated": true
|
| 1514 |
+
},
|
| 1515 |
+
{
|
| 1516 |
+
"beta": 5.0,
|
| 1517 |
+
"r": 50,
|
| 1518 |
+
"eps": 10.0,
|
| 1519 |
+
"empirical_tail_eta_respected": 0.0,
|
| 1520 |
+
"empirical_tail_eta_violated": 0.001085,
|
| 1521 |
+
"theorem_bound_with_eta_1": 0.00012196597534152279,
|
| 1522 |
+
"holds_when_respected": true,
|
| 1523 |
+
"violated": true
|
| 1524 |
+
},
|
| 1525 |
+
{
|
| 1526 |
+
"beta": 5.0,
|
| 1527 |
+
"r": 50,
|
| 1528 |
+
"eps": 100.0,
|
| 1529 |
+
"empirical_tail_eta_respected": 0.0,
|
| 1530 |
+
"empirical_tail_eta_violated": 3e-05,
|
| 1531 |
+
"theorem_bound_with_eta_1": 1.219659753415228e-05,
|
| 1532 |
+
"holds_when_respected": true,
|
| 1533 |
+
"violated": true
|
| 1534 |
+
},
|
| 1535 |
+
{
|
| 1536 |
+
"beta": 5.0,
|
| 1537 |
+
"r": 100,
|
| 1538 |
+
"eps": 1.0,
|
| 1539 |
+
"empirical_tail_eta_respected": 3e-05,
|
| 1540 |
+
"empirical_tail_eta_violated": 0.013355,
|
| 1541 |
+
"theorem_bound_with_eta_1": 0.0010000241372722714,
|
| 1542 |
+
"holds_when_respected": true,
|
| 1543 |
+
"violated": true
|
| 1544 |
+
},
|
| 1545 |
+
{
|
| 1546 |
+
"beta": 5.0,
|
| 1547 |
+
"r": 100,
|
| 1548 |
+
"eps": 10.0,
|
| 1549 |
+
"empirical_tail_eta_respected": 0.0,
|
| 1550 |
+
"empirical_tail_eta_violated": 0.001045,
|
| 1551 |
+
"theorem_bound_with_eta_1": 0.00010000241372722714,
|
| 1552 |
+
"holds_when_respected": true,
|
| 1553 |
+
"violated": true
|
| 1554 |
+
},
|
| 1555 |
+
{
|
| 1556 |
+
"beta": 5.0,
|
| 1557 |
+
"r": 100,
|
| 1558 |
+
"eps": 100.0,
|
| 1559 |
+
"empirical_tail_eta_respected": 0.0,
|
| 1560 |
+
"empirical_tail_eta_violated": 2.25e-05,
|
| 1561 |
+
"theorem_bound_with_eta_1": 1.0000241372722715e-05,
|
| 1562 |
+
"holds_when_respected": true,
|
| 1563 |
+
"violated": true
|
| 1564 |
+
}
|
| 1565 |
+
],
|
| 1566 |
+
"C_any_violated": true,
|
| 1567 |
+
"C_all_hold_when_respected": true
|
| 1568 |
+
}
|
| 1569 |
+
````
|
| 1570 |
+
|
| 1571 |
+
|
| 1572 |
+
````output
|
| 1573 |
+
==============================================================================
|
| 1574 |
+
A. E[lambda_r^2] closed form vs Theorem 3.1 expression
|
| 1575 |
+
max |mixture form - theorem form| over 28 (beta,r) pairs : 2.220e-16
|
| 1576 |
+
Monte-Carlo cross-check (400k draws each):
|
| 1577 |
+
beta r MC E[l^2] theorem z
|
| 1578 |
+
2.0 1 1.336342 1.333667 0.20
|
| 1579 |
+
2.0 5 0.266543 0.264243 0.47
|
| 1580 |
+
2.0 20 0.001450 0.001601 -1.57
|
| 1581 |
+
2.0 50 0.001000 0.001000 -0.11
|
| 1582 |
+
5.0 1 1.696573 1.666833 1.32
|
| 1583 |
+
5.0 5 0.807080 0.804353 0.36
|
| 1584 |
+
5.0 20 0.055045 0.053142 1.03
|
| 1585 |
+
5.0 50 0.001284 0.001220 0.66
|
| 1586 |
+
|
| 1587 |
+
B. Tail bound P(x^2 >= eps) <= bound (N=4, a~N(0,1), eta_n=1)
|
| 1588 |
+
checks: 90, all hold: True
|
| 1589 |
+
beta r eps empirical bound ok
|
| 1590 |
+
2.0 1 1e-03 0.429670 1333.666667 True
|
| 1591 |
+
2.0 5 1e-03 0.147840 264.242798 True
|
| 1592 |
+
2.0 10 1e-03 0.086905 35.665718 True
|
| 1593 |
+
2.0 25 1e-03 0.077732 1.079165 True
|
| 1594 |
+
2.0 50 1e-03 0.077783 1.000003 True
|
| 1595 |
+
5.0 1 1e-03 0.516772 1666.833333 True
|
| 1596 |
+
5.0 5 1e-03 0.289985 804.353266 True
|
| 1597 |
+
5.0 10 1e-03 0.162683 323.849660 True
|
| 1598 |
+
5.0 25 1e-03 0.083943 21.954709 True
|
| 1599 |
+
5.0 50 1e-03 0.077315 1.219660 True
|
| 1600 |
+
20.0 1 1e-03 0.582175 1904.809524 True
|
| 1601 |
+
20.0 5 1e-03 0.492017 1567.268807 True
|
| 1602 |
+
20.0 10 1e-03 0.402423 1228.212594 True
|
| 1603 |
+
20.0 25 1e-03 0.234437 591.310241 True
|
| 1604 |
+
20.0 50 1e-03 0.122985 175.320250 True
|
| 1605 |
+
geometric decay of the bound above the theta_inf floor:
|
| 1606 |
+
beta=2.0 measured r->r+1 ratio=0.666666666667 predicted beta/(1+beta)=0.666666666667 max dev=1.11e-16
|
| 1607 |
+
beta=5.0 measured r->r+1 ratio=0.833333333333 predicted beta/(1+beta)=0.833333333333 max dev=2.22e-16
|
| 1608 |
+
beta=20.0 measured r->r+1 ratio=0.952380952381 predicted beta/(1+beta)=0.952380952381 max dev=2.22e-16
|
| 1609 |
+
|
| 1610 |
+
C. CONTROL - keep the bound's eta_n=1 but draw factors with E[a^2]=3
|
| 1611 |
+
r eps bound tail|E[a^2]=1 ok tail|E[a^2]=3 violated
|
| 1612 |
+
25 1 0.021955 0.001007 True 0.017513 False
|
| 1613 |
+
25 10 0.002195 0.000222 True 0.003340 True
|
| 1614 |
+
25 100 0.000220 0.000030 True 0.000932 True
|
| 1615 |
+
50 1 0.001220 0.000048 True 0.013525 True
|
| 1616 |
+
50 10 0.000122 0.000000 True 0.001085 True
|
| 1617 |
+
50 100 0.000012 0.000000 True 0.000030 True
|
| 1618 |
+
100 1 0.001000 0.000030 True 0.013355 True
|
| 1619 |
+
100 10 0.000100 0.000000 True 0.001045 True
|
| 1620 |
+
100 100 0.000010 0.000000 True 0.000023 True
|
| 1621 |
+
bound holds whenever E[a^2]<=eta: True; any violation once eta is broken: True
|
| 1622 |
+
==============================================================================
|
| 1623 |
+
|
| 1624 |
+
````
|
| 1625 |
+
|
| 1626 |
+
|
| 1627 |
+
---
|
| 1628 |
+
<!-- trackio-cell
|
| 1629 |
+
{"type": "figure", "id": "cell_93861d84df18", "created_at": "2026-08-02T10:28:10+00:00", "title": "Bound vs empirical tail, and the beta-controlled shrinkage rate"}
|
| 1630 |
+
-->
|
| 1631 |
+
````html
|
| 1632 |
+
<html>
|
| 1633 |
+
<head><meta charset="utf-8" /></head>
|
| 1634 |
+
<body>
|
| 1635 |
+
<div style="height:430px; width:1000px;"> <script>window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
|
| 1636 |
+
<script charset="utf-8" src="https://cdn.plot.ly/plotly-3.7.0.min.js" integrity="sha256-jvTGqxNp8AGWEcvNLVuKr+8j5dGe9Yw51LQkmDH+IYA=" crossorigin="anonymous"></script> <div id="d9671702-e92a-49cf-ab59-9a0f9856d844" class="plotly-graph-div" style="height:100%; width:100%;"></div> <script> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("d9671702-e92a-49cf-ab59-9a0f9856d844")) { Plotly.newPlot( "d9671702-e92a-49cf-ab59-9a0f9856d844", [{"line":{"color":"#4C78A8","width":2},"mode":"lines+markers","name":"bound, beta=2","x":[1,5,10,25,50],"y":[1333.6666666666665,264.2427983539094,35.66571830174938,1.0791646539566897,1.0000031350887624],"type":"scatter","xaxis":"x","yaxis":"y"},{"line":{"color":"#4C78A8","dash":"dot","width":2},"marker":{"symbol":"x"},"mode":"lines+markers","name":"empirical, beta=2","showlegend":true,"x":[1,5,10,25,50],"y":[0.42967,0.14784,0.086905,0.0777325,0.0777825],"type":"scatter","xaxis":"x","yaxis":"y"},{"line":{"color":"#F58518","width":2},"mode":"lines+markers","name":"bound, beta=5","x":[1,5,10,25,50],"y":[1666.8333333333333,804.3532664609056,323.8496601968017,21.95470942478183,1.2196597534152278],"type":"scatter","xaxis":"x","yaxis":"y"},{"line":{"color":"#F58518","dash":"dot","width":2},"marker":{"symbol":"x"},"mode":"lines+markers","name":"empirical, beta=5","showlegend":true,"x":[1,5,10,25,50],"y":[0.5167725,0.289985,0.1626825,0.0839425,0.077315],"type":"scatter","xaxis":"x","yaxis":"y"},{"line":{"color":"#54A24B","width":2},"mode":"lines+markers","name":"bound, beta=20","x":[1,5,10,25,50],"y":[1904.8095238095236,1567.2688067704491,1228.2125938279771,591.3102406238257,175.32025021778844],"type":"scatter","xaxis":"x","yaxis":"y"},{"line":{"color":"#54A24B","dash":"dot","width":2},"marker":{"symbol":"x"},"mode":"lines+markers","name":"empirical, beta=20","showlegend":true,"x":[1,5,10,25,50],"y":[0.582175,0.4920175,0.4024225,0.2344375,0.122985],"type":"scatter","xaxis":"x","yaxis":"y"},{"line":{"color":"#4C78A8","width":2},"mode":"lines","name":"E[lambda_r^2], beta=2","showlegend":true,"x":{"dtype":"i1","bdata":"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PA=="},"y":{"dtype":"f8","bdata":"AAAAAAAAAEAjlNHbslb1P8vtDzJUduw\u002fzsatg0j84j+gWYPJ1lXZP06MSKBa6dA\u002f2QaYCWWXxj8E9uPJCTW+P487sUM0ObQ\u002fg37JKaEiqz9zg2PrxkKiPyO46dhqsJg\u002fooOrL\u002f7MkD9Awa59axWHP+znkzxgEoA\u002fuFhZIlzLdj+mXnrow49wP4cadi4S0Gg\u002fBK4hwsNFYz+uIChJdChfP3JOa8y8O1o\u002fS8JCeULzVj+GD33s8MJUP1iYTjllTVM\u002fj\u002fOEbF1UUj8I21M5WK5RPwQgMxeqP1E\u002fAU4dq+D1UD9VF2S4r8RQP42d6Gvko1A\u002fB\u002fdAjgeOUD+uMtFPdH9QPx0F3NC8dVA\u002faJE4fEJvUD9ERHbu8GpQP9YQSuUPaFA\u002f40PXiSRmUD9Bu4r33GRQPypgApYCZFA\u002fxXin\u002f3BjUD\u002fXM8DwD2NQP+QFJjzPYlA\u002f7JEUGaRiUD9H7whXh2JQP4MtASt0YlA\u002fqwH8YmdiUD\u002fGOaPdXmJQP9gJaC9ZYlA\u002fOT\u002frZVViUD96DZjfUmJQP1DstTBRYlA\u002f34B0EVBiUD+TjvNRT2JQP2FCSNJOYlA\u002f6mQrfU5iUD\u002fwe21ETmJQP0mLmR5OYlA\u002fhZVhBU5iUD9XnJH0TWJQP45LXOlNYlA\u002fCGvj4U1iUD8="},"type":"scatter","xaxis":"x2","yaxis":"y2"},{"line":{"color":"#F58518","width":2},"mode":"lines","name":"E[lambda_r^2], beta=5","showlegend":true,"x":{"dtype":"i1","bdata":"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PA=="},"y":{"dtype":"f8","bdata":"AAAAAAAAAEASyuhtWav6P8vHKvQjOvY\u002fkHAMZHeG8j\u002fBT+bXeeHuP+8rvA9Dvek\u002fwbhDvmp05T9uAwolYeLhP1WDXvVc0d0\u002fDutx2d3b2D8obNfs87nUP2kCrKdbSNE\u002fPv9kMWTTzD+XehpD9ArIPwwMh\u002fyWDsQ\u002fmdq2QUm8wD8auBJMZu+7P92P8R1sUrc\u002fVO7VTEZ6sz+35z7JJkawPxVv12FuNas\u002fyR6iDl\u002fCpj\u002fgW6CeJw2jPzzIPS1I7J8\u002f91U79ezFmj++9uObS3uWPw\u002fSxSbF55I\u002fpBEENarZjz+SF5MgGuKKP4ac32R3voY\u002f+rV0yG9Lgz\u002fb9XAblGuAPy1Whha6DHw\u002fOwQ6prMOeD+cavqdA7t0P5dqxUFG9XE\u002f0X8yP6ZLbz8EjpNb5nFrPy1v5B1xPGg\u002fJoDSv+SPZT9KjsPGb1VjP2hvjEwOemE\u002fAlYSeM\u002fbXz9WOeIxj0ddP8h2D6JZIVs\u002f\u002fCk1qtdWWT9RP\u002f+wwNhXP22mpzZYmlY\u002fsFEJJgGRVT+8tdpC47NUP3LeM7Cf+1M\u002fXoBTCxJiUz+j3O0BHOJSPzLUw6R5d1I\u002f1HfLAZ0eUj+F1VHPj9RRP0TOQSXallE\u002fjR3fbG1jUT9KijfTkjhRPz06gajcFFE\u002fiPeTLxr3UD8="},"type":"scatter","xaxis":"x2","yaxis":"y2"},{"line":{"color":"#54A24B","width":2},"mode":"lines","name":"E[lambda_r^2], beta=20","showlegend":true,"x":{"dtype":"i1","bdata":"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PA=="},"y":{"dtype":"f8","bdata":"AAAAAAAAAECX8B2NGXr+P90e5SvEBv0\u002faekohh2l+z8sYeMMTlT6P5zr0XSIE\u002fk\u002fCJRTOQni9z+3xjwlFr\u002f2P2nSV+H9qfU\u002fIAJNiBei9D+EbLA\u002fwqbzP3a59tVkt\u002fI\u002fIRsVZW3T8T+FkJP5UPrwP0c92z2LK\u002fA\u002fSW4aUzzN7j8FPmFpI1btP2RlEh3n8Os\u002fs37Tr62c6j9S+K\u002fBp1jpP0y1stIPJOg\u002f2I2Eyin+5j\u002fkT8aFQublPwde4Giv2+Q\u002fTV8F+M3d4z94nSh0A+ziPxy0q3y8BeI\u002fzhKKtWwq4T+SkctxjlngP9TjE8REJd8\u002fAkavjV6q3T\u002fY+LBNg0HcP77HvhDX6do\u002fTu7LXIii2T+0vWqxz2rYPy3AMg7vQdc\u002fcDzxfjEn1j8Egl2t6hnVP0nEDXh2GdQ\u002fTX1sjjgl0z9GXnERnDzSP5+64zgTX9E\u002fxB7v\u002fBaM0D+Fy6qHTYbPP45GGCeQB84\u002fpDUrjgybzD8Nh8+O5D\u002fLP1kFbI9E9ck\u002fZa7oCWO6yD9kT9kQgI7HPzGHgdrkcMY\u002f6uBqUeNgxT\u002f7HUmq1V3EP84C7P4dZ8M\u002ffg0B7iV8wj8DbWo\u002fXpzBP0Na84w+x8A\u002ffDtZ3on4vz+6KX1c63W+Pw7oAO21Bb0\u002fUp1NIQmnuz8="},"type":"scatter","xaxis":"x2","yaxis":"y2"}], {"template":{"data":{"barpolar":[{"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"white","showlakes":true,"showland":true,"subunitcolor":"#C8D4E3"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"white","polar":{"angularaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""},"bgcolor":"white","radialaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"yaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"zaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"baxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"bgcolor":"white","caxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0.0,0.45],"title":{"text":"component index r"}},"yaxis":{"anchor":"x","domain":[0.0,1.0],"title":{"text":"probability"},"type":"log"},"xaxis2":{"anchor":"y2","domain":[0.55,1.0],"title":{"text":"component index r"}},"yaxis2":{"anchor":"x2","domain":[0.0,1.0],"title":{"text":"E[lambda_r^2]"},"type":"log"},"annotations":[{"font":{"size":16},"showarrow":false,"text":"Tail bound vs empirical tail (eps = 1e-3)","x":0.225,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"},{"font":{"size":16},"showarrow":false,"text":"E[lambda_r^2]: shrinkage rate is set by beta","x":0.775,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"},{"showarrow":false,"text":"theta_inf floor","x":1,"xanchor":"right","xref":"x2 domain","y":0.001,"yanchor":"top","yref":"y2"}],"shapes":[{"line":{"color":"#888","dash":"dash","width":1},"type":"line","x0":0,"x1":1,"xref":"x2 domain","y0":0.001,"y1":0.001,"yref":"y2"}],"legend":{"font":{"size":10},"orientation":"h","y":-0.22},"margin":{"t":80,"b":90},"height":430,"width":1000,"title":{"text":"Theorem 3.1 numerical audit (400k Monte-Carlo draws per point)"}}, {"responsive": true} ) }; </script> </div>
|
| 1637 |
+
</body>
|
| 1638 |
+
</html>
|
| 1639 |
+
````
|
| 1640 |
+
|
| 1641 |
+
````raw
|
| 1642 |
+
beta,r,eps,empirical_tail,theorem_bound,holds
|
| 1643 |
+
2.0,1,0.0001,0.57463250,13336.66666667,True
|
| 1644 |
+
2.0,1,0.001,0.42967000,1333.66666667,True
|
| 1645 |
+
2.0,1,0.01,0.28591750,133.36666667,True
|
| 1646 |
+
2.0,1,0.1,0.15630500,13.33666667,True
|
| 1647 |
+
2.0,1,1.0,0.06259000,1.33366667,True
|
| 1648 |
+
2.0,1,10.0,0.01574750,0.13336667,True
|
| 1649 |
+
2.0,5,0.0001,0.28491250,2642.42798354,True
|
| 1650 |
+
2.0,5,0.001,0.14784000,264.24279835,True
|
| 1651 |
+
2.0,5,0.01,0.06983000,26.42427984,True
|
| 1652 |
+
2.0,5,0.1,0.03228750,2.64242798,True
|
| 1653 |
+
2.0,5,1.0,0.01251500,0.26424280,True
|
| 1654 |
+
2.0,5,10.0,0.00304000,0.02642428,True
|
| 1655 |
+
2.0,10,0.0001,0.22215500,356.65718302,True
|
| 1656 |
+
2.0,10,0.001,0.08690500,35.66571830,True
|
| 1657 |
+
2.0,10,0.01,0.02288500,3.56657183,True
|
| 1658 |
+
2.0,10,0.1,0.00527250,0.35665718,True
|
| 1659 |
+
2.0,10,1.0,0.00161000,0.03566572,True
|
| 1660 |
+
2.0,10,10.0,0.00036250,0.00356657,True
|
| 1661 |
+
2.0,25,0.0001,0.21140250,10.79164654,True
|
| 1662 |
+
2.0,25,0.001,0.07773250,1.07916465,True
|
| 1663 |
+
2.0,25,0.01,0.01645750,0.10791647,True
|
| 1664 |
+
2.0,25,0.1,0.00139000,0.01079165,True
|
| 1665 |
+
2.0,25,1.0,0.00002750,0.00107916,True
|
| 1666 |
+
2.0,25,10.0,0.00000000,0.00010792,True
|
| 1667 |
+
2.0,50,0.0001,0.21304000,10.00003135,True
|
| 1668 |
+
2.0,50,0.001,0.07778250,1.00000314,True
|
| 1669 |
+
2.0,50,0.01,0.01581750,0.10000031,True
|
| 1670 |
+
2.0,50,0.1,0.00136750,0.01000003,True
|
| 1671 |
+
2.0,50,1.0,0.00003500,0.00100000,True
|
| 1672 |
+
2.0,50,10.0,0.00000000,0.00010000,True
|
| 1673 |
+
5.0,1,0.0001,0.66580000,16668.33333333,True
|
| 1674 |
+
5.0,1,0.001,0.51677250,1666.83333333,True
|
| 1675 |
+
5.0,1,0.01,0.35267500,166.68333333,True
|
| 1676 |
+
5.0,1,0.1,0.19508500,16.66833333,True
|
| 1677 |
+
5.0,1,1.0,0.07845750,1.66683333,True
|
| 1678 |
+
5.0,1,10.0,0.01925750,0.16668333,True
|
| 1679 |
+
5.0,5,0.0001,0.42974250,8043.53266461,True
|
| 1680 |
+
5.0,5,0.001,0.28998500,804.35326646,True
|
| 1681 |
+
5.0,5,0.01,0.17791250,80.43532665,True
|
| 1682 |
+
5.0,5,0.1,0.09466000,8.04353266,True
|
| 1683 |
+
5.0,5,1.0,0.03763500,0.80435327,True
|
| 1684 |
+
5.0,5,10.0,0.00939250,0.08043533,True
|
| 1685 |
+
5.0,10,0.0001,0.29883500,3238.49660197,True
|
| 1686 |
+
5.0,10,0.001,0.16268250,323.84966020,True
|
| 1687 |
+
5.0,10,0.01,0.08134250,32.38496602,True
|
| 1688 |
+
5.0,10,0.1,0.03920250,3.23849660,True
|
| 1689 |
+
5.0,10,1.0,0.01519250,0.32384966,True
|
| 1690 |
+
5.0,10,10.0,0.00388250,0.03238497,True
|
| 1691 |
+
5.0,25,0.0001,0.21965750,219.54709425,True
|
| 1692 |
+
5.0,25,0.001,0.08394250,21.95470942,True
|
| 1693 |
+
5.0,25,0.01,0.02047250,2.19547094,True
|
| 1694 |
+
5.0,25,0.1,0.00381250,0.21954709,True
|
| 1695 |
+
5.0,25,1.0,0.00099500,0.02195471,True
|
| 1696 |
+
5.0,25,10.0,0.00024250,0.00219547,True
|
| 1697 |
+
5.0,50,0.0001,0.21154000,12.19659753,True
|
| 1698 |
+
5.0,50,0.001,0.07731500,1.21965975,True
|
| 1699 |
+
5.0,50,0.01,0.01634750,0.12196598,True
|
| 1700 |
+
5.0,50,0.1,0.00146750,0.01219660,True
|
| 1701 |
+
5.0,50,1.0,0.00003000,0.00121966,True
|
| 1702 |
+
5.0,50,10.0,0.00000000,0.00012197,True
|
| 1703 |
+
20.0,1,0.0001,0.73123500,19048.09523810,True
|
| 1704 |
+
20.0,1,0.001,0.58217500,1904.80952381,True
|
| 1705 |
+
20.0,1,0.01,0.40205000,190.48095238,True
|
| 1706 |
+
20.0,1,0.1,0.22319000,19.04809524,True
|
| 1707 |
+
20.0,1,1.0,0.09020500,1.90480952,True
|
| 1708 |
+
20.0,1,10.0,0.02220000,0.19048095,True
|
| 1709 |
+
20.0,5,0.0001,0.63871250,15672.68806770,True
|
| 1710 |
+
20.0,5,0.001,0.49201750,1567.26880677,True
|
| 1711 |
+
20.0,5,0.01,0.33350500,156.72688068,True
|
| 1712 |
+
20.0,5,0.1,0.18372250,15.67268807,True
|
| 1713 |
+
20.0,5,1.0,0.07363750,1.56726881,True
|
| 1714 |
+
20.0,5,10.0,0.01842500,0.15672688,True
|
| 1715 |
+
20.0,10,0.0001,0.54782250,12282.12593828,True
|
| 1716 |
+
20.0,10,0.001,0.40242250,1228.21259383,True
|
| 1717 |
+
20.0,10,0.01,0.26482000,122.82125938,True
|
| 1718 |
+
20.0,10,0.1,0.14469500,12.28212594,True
|
| 1719 |
+
20.0,10,1.0,0.05799250,1.22821259,True
|
| 1720 |
+
20.0,10,10.0,0.01475000,0.12282126,True
|
| 1721 |
+
20.0,25,0.0001,0.37300750,5913.10240624,True
|
| 1722 |
+
20.0,25,0.001,0.23443750,591.31024062,True
|
| 1723 |
+
20.0,25,0.01,0.13624750,59.13102406,True
|
| 1724 |
+
20.0,25,0.1,0.07042750,5.91310241,True
|
| 1725 |
+
20.0,25,1.0,0.02792750,0.59131024,True
|
| 1726 |
+
20.0,25,10.0,0.00676250,0.05913102,True
|
| 1727 |
+
20.0,50,0.0001,0.25799000,1753.20250218,True
|
| 1728 |
+
20.0,50,0.001,0.12298500,175.32025022,True
|
| 1729 |
+
20.0,50,0.01,0.05110500,17.53202502,True
|
| 1730 |
+
20.0,50,0.1,0.02153000,1.75320250,True
|
| 1731 |
+
20.0,50,1.0,0.00816750,0.17532025,True
|
| 1732 |
+
20.0,50,10.0,0.00208000,0.01753203,True
|
| 1733 |
+
|
| 1734 |
+
````
|
| 1735 |
+
|
| 1736 |
+
|
| 1737 |
+
---
|
| 1738 |
+
<!-- trackio-cell
|
| 1739 |
+
{"type": "markdown", "id": "cell_a9dd6ecdf7b2", "created_at": "2026-08-02T10:28:29+00:00", "title": "Result and verdict"}
|
| 1740 |
+
-->
|
| 1741 |
+
## Result β Claim 2: **supported**
|
| 1742 |
+
|
| 1743 |
+
| Check | Result |
|
| 1744 |
+
|---|---|
|
| 1745 |
+
| A. $\mathbb{E}[\lambda_r^2]$ mixture form vs Theorem 3.1 expression, 28 $(\beta,r)$ pairs | max abs error **2.2e-16** (double precision) |
|
| 1746 |
+
| A. Monte-Carlo cross-check, 400k draws, 8 configs | all within **\|z\| < 1.6** of the closed form |
|
| 1747 |
+
| B. tail bound $P(x^2 \ge \epsilon) \le$ bound | **60 / 60 checks hold** over $\beta \in \{2,5,20\}$, $r \in \{1,5,10,25,50\}$, $\epsilon \in \{10^{-4} \ldots 10\}$ |
|
| 1748 |
+
| B. geometric decay rate above the $\theta_\infty$ floor | measured ratio matches $\beta/(1+\beta)$ to **β€ 2.2e-16** for every $\beta$ |
|
| 1749 |
+
| C. control, hypothesis $\mathbb{E}[a^2] \le \eta_n$ relaxed | bound **violated in 8 / 9 probes** (and still holds in all 9 when the hypothesis is respected) |
|
| 1750 |
+
|
| 1751 |
+
The measured $r \to r+1$ ratios are exactly $\beta/(1+\beta)$: **0.666666666667** at $\beta=2$, **0.833333333333** at $\beta=5$, **0.952380952381** at $\beta=20$. This is precisely Remark 3.2's statement that $\beta$ controls the shrinkage rate and smaller $\beta$ shrinks harder.
|
| 1752 |
+
|
| 1753 |
+
The control matters because the bound is a Markov inequality and is therefore very loose at small $\epsilon$ (at $r=1,\beta=5,\epsilon=10^{-3}$ the bound is 1666 against an empirical tail of 0.52 β vacuous). It only becomes informative at large $r$, where the $\theta_\infty$ floor dominates. Probing there is what makes the control bite: at $r=50, \epsilon=1$ the bound is 1.2e-3 and the empirical tail is 4.8e-5 when $\mathbb{E}[a^2] = \eta_n$, but jumps to 1.35e-2 β **11x above the bound** β once $\mathbb{E}[a^2] = 3$. So the audit is sensitive to the hypothesis, not just trivially satisfied.
|
| 1754 |
+
|
| 1755 |
+
## Caveat carried over from Claim 1
|
| 1756 |
+
|
| 1757 |
+
Theorem 3.1 is a statement about the CUSP **prior**, and the prior is implemented faithfully (`cusp_cp.py:183-203, 302-333`). It is *not* a statement about the posterior conditional the sampler uses, and as [Claim 1](#/claim-1-joint-probabilistic-model-cusp-diffusion-prior) documents, Eq. 6 adds $\theta_r$ where the model definition implies $1/\theta_r$ β so the theorem's shrinkage does not propagate into the Gibbs update the way the narrative suggests. The theorem as stated is correct; the bridge from it to the running sampler is weaker than the paper implies.
|
| 1758 |
+
|
| 1759 |
+
Script: `audits/thm31_cusp_tail.py` (seed 20260802), raw results `audits/thm31_results.json`.
|
pages/claim-3-split-gibbs-sampler-noise-adaptive-coupling/page.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Claim 3: Split Gibbs sampler + noise-adaptive coupling
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
---
|
| 5 |
+
<!-- trackio-cell
|
| 6 |
+
{"type": "markdown", "id": "cell_790ae9e9266a", "created_at": "2026-08-02T10:28:59+00:00", "title": "Claim and method"}
|
| 7 |
+
-->
|
| 8 |
+
## What is claimed
|
| 9 |
+
|
| 10 |
+
Claim 3 has two parts (Section 3.2, Algorithm 1):
|
| 11 |
+
|
| 12 |
+
1. A **split Gibbs sampler** ([Vono et al., 2019](https://arxiv.org/abs/1905.11937)) introduces an augmented variable $\mathscr{Z}$ with quadratic coupling $\phi(\mathscr{Z},\mathscr{X};\rho) = \|\mathscr{Z}-\mathscr{X}\|_F^2 / 2\rho^2$ (Eq. 5). This **decouples** inference into (a) conjugate Gaussian/Gamma full conditionals for $\lambda$ (Eq. 6), $A^{(n)}$ (Eq. 7), $\tau$ (Eq. 8) and the CUSP auxiliaries $\zeta,
|
| 13 |
+
u,\theta$ (Eqs. 9-11), and (b) a diffusion-model-guided **denoising step** for $\mathscr{Z}$ (Eq. 12), solved by running the EDM reverse SDE from the time $T_i$ with $\sigma(T_i) = \rho$ down to 0.
|
| 14 |
+
2. A **noise-adaptive coupling schedule** $\tau\rho^2 = c$, motivated by the observation that $\tau$ and $\rho^{-2}$ only ever appear together in Eqs. 6-7, so the landscape depends on their ratio rather than $\rho$ alone.
|
| 15 |
+
|
| 16 |
+
## How this was verified
|
| 17 |
+
|
| 18 |
+
The decoupling claim is only meaningful if the "conjugate" conditionals really are the exact full conditionals of the augmented target. So the audit **re-derives the augmented log-target independently**
|
| 19 |
+
|
| 20 |
+
```
|
| 21 |
+
log p = -tau/2 * sum_{i in Omega} (y_i - x_i)^2 [likelihood]
|
| 22 |
+
-1/(2 rho^2) * ||Z - X||_F^2 [coupling, Eq. 5]
|
| 23 |
+
-1/2 * sum_r theta_r * lambda_r^2 [CUSP weight prior, as implemented]
|
| 24 |
+
-1/2 * ||A||_F^2 [factor prior]
|
| 25 |
+
+ (alpha_0 - 1) log tau - kappa_0 tau [noise prior]
|
| 26 |
+
with X = CP(lambda, A^(1..N))
|
| 27 |
+
```
|
| 28 |
+
|
| 29 |
+
and recovers each conditional **numerically by autograd** (gradient + Hessian of that target), then compares against the mean/covariance the code actually samples from. Because each conditional is exactly Gaussian (or Gamma) in the relevant variable, one gradient and one Hessian recover it exactly β so agreement is expected at machine precision, and anything larger is a real discrepancy.
|
| 30 |
+
|
| 31 |
+
Problem instance: a $4\times5\times3$ tensor, $R=6$ components, 60% observed, $\rho = 0.7$, float64. Small on purpose β the point is exactness, not scale. CPU only.
|
| 32 |
+
|
| 33 |
+
Code audited at [github.com/taozerui/DiffBCP@10d13acc4db9d875edc3d2e22aa9db0f49e93b00](https://github.com/taozerui/DiffBCP/tree/10d13acc4db9d875edc3d2e22aa9db0f49e93b00). The run cell with full output is on the [Claim 1 page](#/claim-1-joint-probabilistic-model-cusp-diffusion-prior) β the two claims share `audits/gibbs_conditionals.py`.
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
---
|
| 37 |
+
<!-- trackio-cell
|
| 38 |
+
{"type": "markdown", "id": "cell_858c8b44e93f", "created_at": "2026-08-02T10:29:22+00:00", "title": "Result and verdict"}
|
| 39 |
+
-->
|
| 40 |
+
## Result β Claim 3: **supported**
|
| 41 |
+
|
| 42 |
+
### Part 1: the conditionals really are conjugate and exact
|
| 43 |
+
|
| 44 |
+
| Conditional | Paper | Code | Agreement with autograd re-derivation |
|
| 45 |
+
|---|---|---|---|
|
| 46 |
+
| $\lambda_r$ (Gaussian) | Eq. 6 | `cusp_cp.py:335-357` | mean **2.5e-16**, variance rel. **3.4e-16** |
|
| 47 |
+
| $a^{(n)}_{i:}$ (multivariate Gaussian, $R\times R$) | Eq. 7 | `cusp_cp.py:359-406` | mean **6.1e-16**, covariance **1.1e-16** |
|
| 48 |
+
| $\tau$ (Gamma) | Eq. 8 | `cusp_cp.py:408-414` | shape rel. **2.0e-16**, rate rel. **2.1e-16** |
|
| 49 |
+
| $
|
| 50 |
+
u_r$ (Beta) | Eq. 10 | `cusp_cp.py:434-442` | $\mathrm{Beta}(1+\#\{\zeta_h=r\},\, \beta+\#\{\zeta_h>r\})$ β matches the paper's form exactly |
|
| 51 |
+
|
| 52 |
+
All at double precision. The split really does buy conjugacy: every latent-variable block has a closed-form conditional, and the only non-conjugate object left is $\mathscr{Z}$, which is handled by the diffusion denoiser.
|
| 53 |
+
|
| 54 |
+
The $\mathscr{Z}$ step is implemented as claimed: `denoiser_edm.py:128` finds $i_{start} = \min\{i : \sigma(t_i) < \rho\}$ and integrates the reverse SDE from there to $t=0$ (`lmbd = 2` for the SDE mode the paper's scripts use, `mode=vp_sde`), which is exactly "find $T_i$ such that $\sigma(T_i)=\rho$, then solve Eq. 2 from $T_i$ to 0".
|
| 55 |
+
|
| 56 |
+
Two of the CUSP auxiliary updates (Eqs. 9 and 11) deviate from the paper's written form; details on the [Claim 1 page](#/claim-1-joint-probabilistic-model-cusp-diffusion-prior). They do not affect the conjugacy claim.
|
| 57 |
+
|
| 58 |
+
### Part 2: the $\tau\rho^2 = c$ schedule
|
| 59 |
+
|
| 60 |
+
`pnp_edm.py:88` computes `rho_iter = np.sqrt(anneal_const / self.decomposition.tau.item())`, i.e. $\rho = \sqrt{c/\tau}$, so $\tau\rho^2 = c$ **identically** β max deviation over a $\tau$ sweep of $0.5 \to 1600$ is **1.4e-14** (float round-off).
|
| 61 |
+
|
| 62 |
+
The invariant is *not* exact end-to-end, though, because line 89 then clips $\rho$ to $[\rho_{\min}, \rho_{\max}] = [0.3, 10]$ following Wu et al. (2024):
|
| 63 |
+
|
| 64 |
+
| $\tau$ | $\rho$ after clip | $\tau\rho^2$ | |
|
| 65 |
+
|---|---|---|---|
|
| 66 |
+
| 0.5 | 10.0 | 50.0 | clipped at $\rho_{\max}$ |
|
| 67 |
+
| 4 β 400 | 5.0 β 0.5 | **100.0** | invariant holds |
|
| 68 |
+
| 1600 | 0.3 | 144.0 | clipped at $\rho_{\min}$ |
|
| 69 |
+
| 5000 | 0.3 | 450.0 | clipped at $\rho_{\min}$ |
|
| 70 |
+
|
| 71 |
+
Since the paper's denoising setting is $\sigma = 0.05$, the true $\tau \approx 1/\sigma^2 = 400$, giving $\rho = \sqrt{100/400} = 0.5$ β just inside the clip. So in the paper's own configuration the invariant holds during the useful part of the chain and only binds early (when $\tau$ is still small) and if $\tau$ overshoots. Worth knowing: the claimed hyperparameter-insensitivity comes from the $\tau\rho^2=c$ rule *plus* a clip that the paper's own sensitivity study (App. D.5, Table 5) sweeps as a separate hyperparameter $\rho_{\min}$.
|
| 72 |
+
|
| 73 |
+
Also note the first iteration is a special case: `pnp_edm.py:85-86` sets $\rho = c$ (not $\sqrt{c/\tau}$) at $i=0$, i.e. $\rho = 100$ before clipping to 10, because $\tau$ has not been sampled yet.
|
pages/claim-4-theorem-3-4-stationary-bias-bound/page.md
ADDED
|
@@ -0,0 +1,981 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Claim 4: Theorem 3.4 β stationary bias bound
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
---
|
| 5 |
+
<!-- trackio-cell
|
| 6 |
+
{"type": "markdown", "id": "cell_45e0bb955f7a", "created_at": "2026-08-02T10:29:59+00:00", "title": "Claim and method"}
|
| 7 |
+
-->
|
| 8 |
+
## What is claimed
|
| 9 |
+
|
| 10 |
+
Theorem 3.4 quantifies the bias that the *inexact* diffusion denoising step introduces into the split Gibbs chain. Writing $q_\rho(\mathscr{Z}\mid\Theta)$ for the conditional the practical diffusion sampler actually induces (vs. the exact $\pi_\rho(\mathscr{Z}\mid\Theta)$), and $\tilde\pi_\rho$ for the stationary law of the resulting chain, Eq. 16 states
|
| 11 |
+
|
| 12 |
+
```
|
| 13 |
+
KL( pi_{rho,X} || pi~_{rho,X} ) = E_{Theta ~ pi_{rho,X}} [ log E_{Z ~ pi_{rho,Z}} ( q_rho(Z|Theta) / pi_rho(Z|Theta) ) ]
|
| 14 |
+
```
|
| 15 |
+
|
| 16 |
+
Together with Eq. 14 ($D_{TV}(\pi_{\rho,\mathscr{X}}, \pi_0) \to 0$ as $\rho \to 0$) and Corollary 3.5, this is meant to characterise a **trade-off**: small $\rho$ reduces the split-Gibbs smoothing bias but makes the denoising step harder, increasing the stationary bias.
|
| 17 |
+
|
| 18 |
+
**The hypothesis matters.** Eq. 16 is stated under an explicit *compatibility* assumption: that the chain admits a stationary joint $\tilde\pi_\rho$ whose conditionals are exactly $\tilde\pi_\rho(\Theta\mid\mathscr{Z}) = \pi_\rho(\Theta\mid\mathscr{Z})$ **and** $\tilde\pi_\rho(\mathscr{Z}\mid\Theta) = q_\rho(\mathscr{Z}\mid\Theta)$. App. B.2's derivation uses both.
|
| 19 |
+
|
| 20 |
+
## How this was verified
|
| 21 |
+
|
| 22 |
+
Numerical audit in three parts, all in double precision, no GPU:
|
| 23 |
+
|
| 24 |
+
- **Part 1 β the identity under its own hypothesis.** On finite state spaces, build a joint $\tilde\pi$ that shares $\pi_\rho$'s $\Theta\mid\mathscr{Z}$ conditional *by construction* ($\tilde\pi(\mathscr{Z},\Theta) \propto g(\mathscr{Z})\,\pi_\rho(\Theta\mid\mathscr{Z})$), then set $q_\rho := \tilde\pi(\mathscr{Z}\mid\Theta)$. Compatibility then holds exactly and the chain is literally the Gibbs sampler for $\tilde\pi$. Check both sides of Eq. 16 over 200 random instances with $3\!-\!8$ states per block.
|
| 25 |
+
- **Part 2 β CONTROL, hypothesis relaxed.** Perturb $q_\rho$ arbitrarily (multiplicative noise at 5%, 20%, 50%). The pair $(q_\rho(\mathscr{Z}\mid\Theta), \pi_\rho(\Theta\mid\mathscr{Z}))$ is then generically **incompatible** β no joint has both as its conditionals. Compute the chain's *true* stationary marginal as the dominant left eigenvector of $P(\Theta'\mid\Theta) = \sum_{\mathscr{Z}} q_\rho(\mathscr{Z}\mid\Theta)\,\pi_\rho(\Theta'\mid\mathscr{Z})$, and compare LHS vs RHS.
|
| 26 |
+
- **Part 3 β the $\rho$ trade-off.** A linear-Gaussian instance where $\pi_\rho(\mathscr{Z}\mid\Theta)$ is exactly Gaussian and the practical denoiser is $q_\rho = \mathcal{N}(a\Theta(1+d),\, v(1+d))$ with $d = \kappa/\rho$ β the error grows as $\rho\to0$, mimicking a learned score being less accurate at low noise levels. The chain is then a linear-Gaussian AR process with a closed-form stationary law, so the bias curve is exact.
|
| 27 |
+
|
| 28 |
+
Script: `audits/thm34_stationary_bias.py` (seed 20260802).
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
---
|
| 32 |
+
<!-- trackio-cell
|
| 33 |
+
{"type": "code", "id": "cell_b425cbbc716c", "created_at": "2026-08-02T10:30:05+00:00", "title": "Run: python thm34_stationary_bias.py (exit 0)", "command": [".venv-repro/bin/python", "audits/thm34_stationary_bias.py", "audits/thm34_results.json"], "exit_code": 0, "duration_s": 0.195}
|
| 34 |
+
-->
|
| 35 |
+
````bash
|
| 36 |
+
$ .venv-repro/bin/python audits/thm34_stationary_bias.py audits/thm34_results.json
|
| 37 |
+
````
|
| 38 |
+
|
| 39 |
+
exit 0 Β· 0.2s
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
````python title=thm34_stationary_bias.py
|
| 43 |
+
"""Numerical audit of Theorem 3.4 (stationary bias of inexact split Gibbs).
|
| 44 |
+
|
| 45 |
+
Theorem 3.4 of DiffBCP (arXiv:2606.03212, App. B.2) states, for the inexact
|
| 46 |
+
two-block chain Z^{k+1} ~ q_rho(.|Theta^k), Theta^{k+1} ~ pi_rho(.|Z^{k+1}):
|
| 47 |
+
|
| 48 |
+
KL( pi_{rho,X} || pi~_{rho,X} )
|
| 49 |
+
= E_{Theta ~ pi_{rho,X}} [ log E_{Z ~ pi_{rho,Z}} ( q_rho(Z|Theta)
|
| 50 |
+
/ pi_rho(Z|Theta) ) ] (16)
|
| 51 |
+
|
| 52 |
+
*under the stated compatibility assumption*: the chain admits a stationary joint
|
| 53 |
+
pi~_rho whose conditionals are exactly pi~(Theta|Z) = pi_rho(Theta|Z) and
|
| 54 |
+
pi~(Z|Theta) = q_rho(Z|Theta).
|
| 55 |
+
|
| 56 |
+
This is an independent numerical audit, not a proof replacement, and needs no
|
| 57 |
+
GPU. Everything is done on finite state spaces so the "stationary distribution"
|
| 58 |
+
is an exact eigenvector, and all quantities are double precision.
|
| 59 |
+
|
| 60 |
+
PART 1 - identity under the theorem's own assumption.
|
| 61 |
+
Build a joint pi~ that shares pi_rho's Theta|Z conditional by construction
|
| 62 |
+
(so the pair of conditionals IS compatible and the chain is literally the
|
| 63 |
+
Gibbs sampler for pi~). Check Eq. 16 to double precision, over many
|
| 64 |
+
random instances and several state-space sizes.
|
| 65 |
+
|
| 66 |
+
PART 2 - CONTROL: relax the compatibility assumption.
|
| 67 |
+
Perturb q_rho(Z|Theta) arbitrarily. The pair (q_rho(Z|Theta),
|
| 68 |
+
pi_rho(Theta|Z)) is then generically incompatible: no joint has both as
|
| 69 |
+
its conditionals. Compute the chain's true stationary law on Theta as the
|
| 70 |
+
dominant left eigenvector of P(Theta'|Theta) = sum_Z q_rho(Z|Theta)
|
| 71 |
+
pi_rho(Theta'|Z), and compare LHS vs RHS of Eq. 16.
|
| 72 |
+
|
| 73 |
+
PART 3 - the rho trade-off (the second half of the claim).
|
| 74 |
+
A linear-Gaussian instance where pi_rho(Z|Theta) is exact in closed form
|
| 75 |
+
and the practical denoiser q_rho is inexact with an error that GROWS as
|
| 76 |
+
rho shrinks (denoising at a low noise level is harder). Sweep rho and
|
| 77 |
+
show the total bias is U-shaped: the split-Gibbs smoothing bias of Eq. 14
|
| 78 |
+
falls with rho while the Theorem-3.4 stationary bias rises.
|
| 79 |
+
|
| 80 |
+
Reference: arXiv:2606.03212, Theorem 3.4, Eq. 14-17, App. B.2.
|
| 81 |
+
"""
|
| 82 |
+
|
| 83 |
+
from __future__ import annotations
|
| 84 |
+
|
| 85 |
+
import json
|
| 86 |
+
import sys
|
| 87 |
+
|
| 88 |
+
import numpy as np
|
| 89 |
+
|
| 90 |
+
SEED = 20260802
|
| 91 |
+
OUT = sys.argv[1] if len(sys.argv) > 1 else "audits/thm34_results.json"
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
# --------------------------------------------------------------------------
|
| 95 |
+
# discrete helpers
|
| 96 |
+
# --------------------------------------------------------------------------
|
| 97 |
+
def kl(p: np.ndarray, q: np.ndarray) -> float:
|
| 98 |
+
m = p > 0
|
| 99 |
+
return float(np.sum(p[m] * np.log(p[m] / q[m])))
|
| 100 |
+
|
| 101 |
+
|
| 102 |
+
def stationary(P: np.ndarray) -> np.ndarray:
|
| 103 |
+
"""Left Perron eigenvector of a row-stochastic matrix P."""
|
| 104 |
+
w, V = np.linalg.eig(P.T)
|
| 105 |
+
i = int(np.argmin(np.abs(w - 1.0)))
|
| 106 |
+
v = np.real(V[:, i])
|
| 107 |
+
v = np.abs(v)
|
| 108 |
+
return v / v.sum()
|
| 109 |
+
|
| 110 |
+
|
| 111 |
+
def rhs_eq16(pi_Z_given_T, q_Z_given_T, pi_Z_marg, pi_T_marg) -> float:
|
| 112 |
+
"""E_{Theta~pi_{rho,X}} log E_{Z~pi_{rho,Z}} [ q(Z|Theta)/pi(Z|Theta) ]."""
|
| 113 |
+
ratio = q_Z_given_T / pi_Z_given_T # (nT, nZ)
|
| 114 |
+
inner = ratio @ pi_Z_marg # E over Z ~ pi_{rho,Z}
|
| 115 |
+
return float(np.sum(pi_T_marg * np.log(inner)))
|
| 116 |
+
|
| 117 |
+
|
| 118 |
+
def build_instance(rng, nT: int, nZ: int):
|
| 119 |
+
"""A strictly positive joint pi_rho(Z,Theta) and its conditionals."""
|
| 120 |
+
joint = rng.random((nT, nZ)) + 0.15
|
| 121 |
+
joint /= joint.sum()
|
| 122 |
+
pi_T = joint.sum(axis=1) # pi_{rho,X}(Theta)
|
| 123 |
+
pi_Z = joint.sum(axis=0) # pi_{rho,Z}(Z)
|
| 124 |
+
pi_Z_given_T = joint / pi_T[:, None] # pi_rho(Z|Theta) (nT,nZ)
|
| 125 |
+
pi_T_given_Z = joint / pi_Z[None, :] # pi_rho(Theta|Z) (nT,nZ)
|
| 126 |
+
return joint, pi_T, pi_Z, pi_Z_given_T, pi_T_given_Z
|
| 127 |
+
|
| 128 |
+
|
| 129 |
+
# --------------------------------------------------------------------------
|
| 130 |
+
def part1_compatible(rng, n_inst=200):
|
| 131 |
+
"""Identity under the theorem's compatibility assumption."""
|
| 132 |
+
rows = []
|
| 133 |
+
for _ in range(n_inst):
|
| 134 |
+
nT = int(rng.integers(3, 9))
|
| 135 |
+
nZ = int(rng.integers(3, 9))
|
| 136 |
+
joint, pi_T, pi_Z, pi_Z_given_T, pi_T_given_Z = build_instance(rng, nT, nZ)
|
| 137 |
+
|
| 138 |
+
# Build pi~ sharing pi_rho's Theta|Z conditional: pi~(Z,Th) β g(Z) pi_rho(Th|Z).
|
| 139 |
+
g = rng.random(nZ) + 0.15
|
| 140 |
+
g /= g.sum()
|
| 141 |
+
jt = pi_T_given_Z * g[None, :]
|
| 142 |
+
jt /= jt.sum()
|
| 143 |
+
tilde_T = jt.sum(axis=1) # pi~_{rho,X}(Theta)
|
| 144 |
+
q_Z_given_T = jt / tilde_T[:, None] # q_rho(Z|Theta) := pi~(Z|Theta)
|
| 145 |
+
|
| 146 |
+
# sanity: the chain built from (q, pi_rho(Th|Z)) is the Gibbs sampler of pi~
|
| 147 |
+
P = q_Z_given_T @ pi_T_given_Z.T # P(Theta'|Theta)
|
| 148 |
+
stat = stationary(P)
|
| 149 |
+
|
| 150 |
+
lhs = kl(pi_T, tilde_T)
|
| 151 |
+
rhs = rhs_eq16(pi_Z_given_T, q_Z_given_T, pi_Z, pi_T)
|
| 152 |
+
rows.append(
|
| 153 |
+
{
|
| 154 |
+
"nT": nT,
|
| 155 |
+
"nZ": nZ,
|
| 156 |
+
"lhs_KL": lhs,
|
| 157 |
+
"rhs_eq16": rhs,
|
| 158 |
+
"abs_err": abs(lhs - rhs),
|
| 159 |
+
"stationary_matches_tilde": float(np.abs(stat - tilde_T).max()),
|
| 160 |
+
}
|
| 161 |
+
)
|
| 162 |
+
return rows
|
| 163 |
+
|
| 164 |
+
|
| 165 |
+
def part2_incompatible(rng, n_inst=200):
|
| 166 |
+
"""Control: drop compatibility, use the chain's true stationary law."""
|
| 167 |
+
rows = []
|
| 168 |
+
for _ in range(n_inst):
|
| 169 |
+
nT = int(rng.integers(3, 9))
|
| 170 |
+
nZ = int(rng.integers(3, 9))
|
| 171 |
+
joint, pi_T, pi_Z, pi_Z_given_T, pi_T_given_Z = build_instance(rng, nT, nZ)
|
| 172 |
+
|
| 173 |
+
for eps in (0.05, 0.2, 0.5):
|
| 174 |
+
# arbitrary multiplicative perturbation of the denoising conditional
|
| 175 |
+
pert = 1.0 + eps * rng.normal(size=(nT, nZ))
|
| 176 |
+
q = np.clip(pi_Z_given_T * pert, 1e-12, None)
|
| 177 |
+
q /= q.sum(axis=1, keepdims=True)
|
| 178 |
+
|
| 179 |
+
P = q @ pi_T_given_Z.T # P(Theta'|Theta)
|
| 180 |
+
tilde_T = stationary(P) # TRUE stationary marginal on Theta
|
| 181 |
+
|
| 182 |
+
lhs = kl(pi_T, tilde_T)
|
| 183 |
+
rhs = rhs_eq16(pi_Z_given_T, q, pi_Z, pi_T)
|
| 184 |
+
rows.append(
|
| 185 |
+
{
|
| 186 |
+
"nT": nT,
|
| 187 |
+
"nZ": nZ,
|
| 188 |
+
"perturb_eps": eps,
|
| 189 |
+
"lhs_KL": lhs,
|
| 190 |
+
"rhs_eq16": rhs,
|
| 191 |
+
"abs_err": abs(lhs - rhs),
|
| 192 |
+
"rel_err": abs(lhs - rhs) / max(lhs, 1e-300),
|
| 193 |
+
}
|
| 194 |
+
)
|
| 195 |
+
return rows
|
| 196 |
+
|
| 197 |
+
|
| 198 |
+
# --------------------------------------------------------------------------
|
| 199 |
+
def part3_gaussian_tradeoff():
|
| 200 |
+
"""Linear-Gaussian instance: bias vs coupling strength rho.
|
| 201 |
+
|
| 202 |
+
Model (X(Theta) = Theta, scalar):
|
| 203 |
+
p(Theta) = N(0, t2)
|
| 204 |
+
p(Y|Theta) = N(Theta, sig2) observed y
|
| 205 |
+
p(Z) = N(0, s2) the "diffusion prior"
|
| 206 |
+
coupling exp(-(Z-Theta)^2/(2 rho^2))
|
| 207 |
+
|
| 208 |
+
pi_rho(Z|Theta) = N(a*Theta, v) with v = 1/(1/s2 + 1/rho^2), a = v/rho^2.
|
| 209 |
+
pi_rho(Theta|Z) = N(b0*y + b1*Z, w).
|
| 210 |
+
The exact denoiser is replaced by q_rho(Z|Theta) = N(a*Theta*(1+d), v*(1+d))
|
| 211 |
+
with d = kappa / rho: the practical diffusion sampler degrades as the
|
| 212 |
+
target noise level rho gets small.
|
| 213 |
+
"""
|
| 214 |
+
t2, sig2, s2, y = 4.0, 0.25, 1.0, 1.3
|
| 215 |
+
kappa = 0.02
|
| 216 |
+
|
| 217 |
+
# rho -> 0 limit: the unsmoothed posterior pi_0 on Theta
|
| 218 |
+
# pi_0(Theta) β N(y;Theta,sig2) N(Theta;0,t2) N(Theta;0,s2)
|
| 219 |
+
prec0 = 1 / sig2 + 1 / t2 + 1 / s2
|
| 220 |
+
mean0 = (y / sig2) / prec0
|
| 221 |
+
|
| 222 |
+
rows = []
|
| 223 |
+
for rho in np.geomspace(0.02, 5.0, 60):
|
| 224 |
+
v = 1.0 / (1.0 / s2 + 1.0 / rho**2)
|
| 225 |
+
a = v / rho**2
|
| 226 |
+
# pi_rho(Theta|Z) = N(b0*y + b1*Z, w)
|
| 227 |
+
w = 1.0 / (1 / sig2 + 1 / t2 + 1 / rho**2)
|
| 228 |
+
b0 = w / sig2
|
| 229 |
+
b1 = w / rho**2
|
| 230 |
+
|
| 231 |
+
# exact marginal pi_{rho,X}(Theta): integrate Z out of the joint.
|
| 232 |
+
# p_rho(Theta) β N(y;Theta,sig2) N(Theta;0,t2) N(Theta;0,s2+rho^2)
|
| 233 |
+
prec_r = 1 / sig2 + 1 / t2 + 1 / (s2 + rho**2)
|
| 234 |
+
mean_r = (y / sig2) / prec_r
|
| 235 |
+
var_r = 1.0 / prec_r
|
| 236 |
+
|
| 237 |
+
# inexact denoiser
|
| 238 |
+
d = kappa / rho
|
| 239 |
+
a_q, v_q = a * (1 + d), v * (1 + d)
|
| 240 |
+
|
| 241 |
+
# stationary law of the linear-Gaussian chain
|
| 242 |
+
# Z' = a_q Theta + N(0, v_q); Theta' = b0 y + b1 Z' + N(0, w)
|
| 243 |
+
# => Theta' = b0 y + b1 a_q Theta + N(0, b1^2 v_q + w)
|
| 244 |
+
A = b1 * a_q
|
| 245 |
+
c = b0 * y
|
| 246 |
+
q_var_step = b1**2 * v_q + w
|
| 247 |
+
if abs(A) >= 1.0: # non-stationary
|
| 248 |
+
continue
|
| 249 |
+
mean_t = c / (1 - A)
|
| 250 |
+
var_t = q_var_step / (1 - A**2)
|
| 251 |
+
|
| 252 |
+
# KL( pi_{rho,X} || pi~_{rho,X} ) for two Gaussians
|
| 253 |
+
kl_bias = float(
|
| 254 |
+
np.log(np.sqrt(var_t / var_r))
|
| 255 |
+
+ (var_r + (mean_r - mean_t) ** 2) / (2 * var_t)
|
| 256 |
+
- 0.5
|
| 257 |
+
)
|
| 258 |
+
# Eq. 14 smoothing bias: how far pi_{rho,X} is from pi_0
|
| 259 |
+
smooth_bias = abs(mean_r - mean0)
|
| 260 |
+
rows.append(
|
| 261 |
+
{
|
| 262 |
+
"rho": float(rho),
|
| 263 |
+
"denoiser_rel_error_d": float(d),
|
| 264 |
+
"mean_pi_rho": float(mean_r),
|
| 265 |
+
"mean_pi_tilde": float(mean_t),
|
| 266 |
+
"mean_pi_0": float(mean0),
|
| 267 |
+
"kl_stationary_bias_thm34": kl_bias,
|
| 268 |
+
"smoothing_bias_eq14": float(smooth_bias),
|
| 269 |
+
"total_mean_bias": float(abs(mean_t - mean0)),
|
| 270 |
+
}
|
| 271 |
+
)
|
| 272 |
+
return rows, {"mean_pi_0": float(mean0), "kappa": kappa}
|
| 273 |
+
|
| 274 |
+
|
| 275 |
+
# --------------------------------------------------------------------------
|
| 276 |
+
if __name__ == "__main__":
|
| 277 |
+
rng = np.random.default_rng(SEED)
|
| 278 |
+
res: dict = {}
|
| 279 |
+
|
| 280 |
+
p1 = part1_compatible(rng)
|
| 281 |
+
res["part1_compatible"] = {
|
| 282 |
+
"n_instances": len(p1),
|
| 283 |
+
"max_abs_err": max(x["abs_err"] for x in p1),
|
| 284 |
+
"median_abs_err": float(np.median([x["abs_err"] for x in p1])),
|
| 285 |
+
"max_stationary_mismatch": max(x["stationary_matches_tilde"] for x in p1),
|
| 286 |
+
"median_KL": float(np.median([x["lhs_KL"] for x in p1])),
|
| 287 |
+
"rows": p1[:5],
|
| 288 |
+
}
|
| 289 |
+
|
| 290 |
+
p2 = part2_incompatible(rng)
|
| 291 |
+
res["part2_incompatible"] = {
|
| 292 |
+
"n_instances": len(p2),
|
| 293 |
+
"by_eps": {
|
| 294 |
+
str(e): {
|
| 295 |
+
"median_lhs_KL": float(
|
| 296 |
+
np.median([x["lhs_KL"] for x in p2 if x["perturb_eps"] == e])
|
| 297 |
+
),
|
| 298 |
+
"median_rhs": float(
|
| 299 |
+
np.median([x["rhs_eq16"] for x in p2 if x["perturb_eps"] == e])
|
| 300 |
+
),
|
| 301 |
+
"median_abs_err": float(
|
| 302 |
+
np.median([x["abs_err"] for x in p2 if x["perturb_eps"] == e])
|
| 303 |
+
),
|
| 304 |
+
"median_rel_err": float(
|
| 305 |
+
np.median([x["rel_err"] for x in p2 if x["perturb_eps"] == e])
|
| 306 |
+
),
|
| 307 |
+
"frac_rhs_exceeds_lhs": float(
|
| 308 |
+
np.mean(
|
| 309 |
+
[x["rhs_eq16"] >= x["lhs_KL"] for x in p2 if x["perturb_eps"] == e]
|
| 310 |
+
)
|
| 311 |
+
),
|
| 312 |
+
}
|
| 313 |
+
for e in (0.05, 0.2, 0.5)
|
| 314 |
+
},
|
| 315 |
+
}
|
| 316 |
+
|
| 317 |
+
p3, p3meta = part3_gaussian_tradeoff()
|
| 318 |
+
best = min(p3, key=lambda x: x["total_mean_bias"])
|
| 319 |
+
res["part3_tradeoff"] = {"meta": p3meta, "argmin_rho": best, "curve": p3}
|
| 320 |
+
|
| 321 |
+
with open(OUT, "w") as f:
|
| 322 |
+
json.dump(res, f, indent=2)
|
| 323 |
+
|
| 324 |
+
print("=" * 78)
|
| 325 |
+
print("PART 1 - Eq. 16 under the theorem's compatibility assumption")
|
| 326 |
+
a = res["part1_compatible"]
|
| 327 |
+
print(f" random instances : {a['n_instances']}")
|
| 328 |
+
print(f" median KL magnitude : {a['median_KL']:.6f}")
|
| 329 |
+
print(f" max |LHS - RHS| (double precision): {a['max_abs_err']:.3e}")
|
| 330 |
+
print(f" max |chain stationary - pi~| : {a['max_stationary_mismatch']:.3e}")
|
| 331 |
+
print()
|
| 332 |
+
print("PART 2 - CONTROL: compatibility assumption relaxed")
|
| 333 |
+
print(f" {'eps':>6} {'median LHS KL':>14} {'median RHS':>12} {'median rel err':>15} {'RHS>=LHS':>9}")
|
| 334 |
+
for e, v in res["part2_incompatible"]["by_eps"].items():
|
| 335 |
+
print(
|
| 336 |
+
f" {e:>6} {v['median_lhs_KL']:>14.6f} {v['median_rhs']:>12.6f} "
|
| 337 |
+
f"{v['median_rel_err']:>15.3f} {v['frac_rhs_exceeds_lhs']:>9.2f}"
|
| 338 |
+
)
|
| 339 |
+
print()
|
| 340 |
+
print("PART 3 - rho trade-off (linear-Gaussian instance, denoiser error d=kappa/rho)")
|
| 341 |
+
print(f" {'rho':>7} {'d':>8} {'KL bias (Thm 3.4)':>19} {'smooth bias (Eq14)':>20} {'total':>9}")
|
| 342 |
+
for x in p3[::7]:
|
| 343 |
+
print(
|
| 344 |
+
f" {x['rho']:>7.3f} {x['denoiser_rel_error_d']:>8.3f} "
|
| 345 |
+
f"{x['kl_stationary_bias_thm34']:>19.6f} {x['smoothing_bias_eq14']:>20.6f} "
|
| 346 |
+
f"{x['total_mean_bias']:>9.6f}"
|
| 347 |
+
)
|
| 348 |
+
print(
|
| 349 |
+
f" total bias minimised at rho = {best['rho']:.3f} "
|
| 350 |
+
f"(total {best['total_mean_bias']:.6f}) -> interior optimum, not rho->0"
|
| 351 |
+
)
|
| 352 |
+
print("=" * 78)
|
| 353 |
+
|
| 354 |
+
````
|
| 355 |
+
|
| 356 |
+
|
| 357 |
+
````json title=thm34_results.json
|
| 358 |
+
{
|
| 359 |
+
"part1_compatible": {
|
| 360 |
+
"n_instances": 200,
|
| 361 |
+
"max_abs_err": 3.122502256758253e-16,
|
| 362 |
+
"median_abs_err": 7.719519468096792e-17,
|
| 363 |
+
"max_stationary_mismatch": 3.885780586188048e-16,
|
| 364 |
+
"median_KL": 0.001966349863603231,
|
| 365 |
+
"rows": [
|
| 366 |
+
{
|
| 367 |
+
"nT": 4,
|
| 368 |
+
"nZ": 3,
|
| 369 |
+
"lhs_KL": 1.5575271738582685e-05,
|
| 370 |
+
"rhs_eq16": 1.557527173848771e-05,
|
| 371 |
+
"abs_err": 9.497611030973019e-17,
|
| 372 |
+
"stationary_matches_tilde": 3.3306690738754696e-16
|
| 373 |
+
},
|
| 374 |
+
{
|
| 375 |
+
"nT": 5,
|
| 376 |
+
"nZ": 7,
|
| 377 |
+
"lhs_KL": 0.0030953487086931644,
|
| 378 |
+
"rhs_eq16": 0.003095348708693251,
|
| 379 |
+
"abs_err": 8.673617379884035e-17,
|
| 380 |
+
"stationary_matches_tilde": 8.326672684688674e-17
|
| 381 |
+
},
|
| 382 |
+
{
|
| 383 |
+
"nT": 5,
|
| 384 |
+
"nZ": 4,
|
| 385 |
+
"lhs_KL": 0.0005829392118902486,
|
| 386 |
+
"rhs_eq16": 0.0005829392118902113,
|
| 387 |
+
"abs_err": 3.729655473350135e-17,
|
| 388 |
+
"stationary_matches_tilde": 1.6653345369377348e-16
|
| 389 |
+
},
|
| 390 |
+
{
|
| 391 |
+
"nT": 7,
|
| 392 |
+
"nZ": 3,
|
| 393 |
+
"lhs_KL": 0.0029539764112014406,
|
| 394 |
+
"rhs_eq16": 0.002953976411201178,
|
| 395 |
+
"abs_err": 2.6281060661048627e-16,
|
| 396 |
+
"stationary_matches_tilde": 8.326672684688674e-17
|
| 397 |
+
},
|
| 398 |
+
{
|
| 399 |
+
"nT": 5,
|
| 400 |
+
"nZ": 3,
|
| 401 |
+
"lhs_KL": 0.03549316683464985,
|
| 402 |
+
"rhs_eq16": 0.03549316683464993,
|
| 403 |
+
"abs_err": 8.326672684688674e-17,
|
| 404 |
+
"stationary_matches_tilde": 1.3877787807814457e-16
|
| 405 |
+
}
|
| 406 |
+
]
|
| 407 |
+
},
|
| 408 |
+
"part2_incompatible": {
|
| 409 |
+
"n_instances": 600,
|
| 410 |
+
"by_eps": {
|
| 411 |
+
"0.05": {
|
| 412 |
+
"median_lhs_KL": 3.8217381771655146e-06,
|
| 413 |
+
"median_rhs": -0.00032654372564377954,
|
| 414 |
+
"median_abs_err": 0.002074970812112212,
|
| 415 |
+
"median_rel_err": 504.3207752076437,
|
| 416 |
+
"frac_rhs_exceeds_lhs": 0.44
|
| 417 |
+
},
|
| 418 |
+
"0.2": {
|
| 419 |
+
"median_lhs_KL": 7.025826881023516e-05,
|
| 420 |
+
"median_rhs": -0.0003521785066373704,
|
| 421 |
+
"median_abs_err": 0.009066452524033156,
|
| 422 |
+
"median_rel_err": 101.80175935656729,
|
| 423 |
+
"frac_rhs_exceeds_lhs": 0.475
|
| 424 |
+
},
|
| 425 |
+
"0.5": {
|
| 426 |
+
"median_lhs_KL": 0.0004686904875496711,
|
| 427 |
+
"median_rhs": 0.005475568395599844,
|
| 428 |
+
"median_abs_err": 0.02823599266660788,
|
| 429 |
+
"median_rel_err": 53.8431678849091,
|
| 430 |
+
"frac_rhs_exceeds_lhs": 0.55
|
| 431 |
+
}
|
| 432 |
+
}
|
| 433 |
+
},
|
| 434 |
+
"part3_tradeoff": {
|
| 435 |
+
"meta": {
|
| 436 |
+
"mean_pi_0": 0.9904761904761905,
|
| 437 |
+
"kappa": 0.02
|
| 438 |
+
},
|
| 439 |
+
"argmin_rho": {
|
| 440 |
+
"rho": 0.5290988047749335,
|
| 441 |
+
"denoiser_rel_error_d": 0.03780012318967067,
|
| 442 |
+
"mean_pi_rho": 1.0335335448318392,
|
| 443 |
+
"mean_pi_tilde": 1.0556684120457538,
|
| 444 |
+
"mean_pi_0": 0.9904761904761905,
|
| 445 |
+
"kl_stationary_bias_thm34": 0.0013181723233328668,
|
| 446 |
+
"smoothing_bias_eq14": 0.043057354355648725,
|
| 447 |
+
"total_mean_bias": 0.06519222156956328
|
| 448 |
+
},
|
| 449 |
+
"curve": [
|
| 450 |
+
{
|
| 451 |
+
"rho": 0.15673901657062217,
|
| 452 |
+
"denoiser_rel_error_d": 0.12760064748134084,
|
| 453 |
+
"mean_pi_rho": 0.995020695955275,
|
| 454 |
+
"mean_pi_tilde": 33.20509379509673,
|
| 455 |
+
"mean_pi_0": 0.9904761904761905,
|
| 456 |
+
"kl_stationary_bias_thm34": 82.50549012727839,
|
| 457 |
+
"smoothing_bias_eq14": 0.004544505479084471,
|
| 458 |
+
"total_mean_bias": 32.21461760462054
|
| 459 |
+
},
|
| 460 |
+
{
|
| 461 |
+
"rho": 0.17211557359805288,
|
| 462 |
+
"denoiser_rel_error_d": 0.11620098972976527,
|
| 463 |
+
"mean_pi_rho": 0.9959341852173955,
|
| 464 |
+
"mean_pi_tilde": 3.68395305093466,
|
| 465 |
+
"mean_pi_0": 0.9904761904761905,
|
| 466 |
+
"kl_stationary_bias_thm34": 5.388658618465695,
|
| 467 |
+
"smoothing_bias_eq14": 0.005457994741205008,
|
| 468 |
+
"total_mean_bias": 2.6934768604584693
|
| 469 |
+
},
|
| 470 |
+
{
|
| 471 |
+
"rho": 0.18900061594835335,
|
| 472 |
+
"denoiser_rel_error_d": 0.10581976095498671,
|
| 473 |
+
"mean_pi_rho": 0.9970260314171713,
|
| 474 |
+
"mean_pi_tilde": 2.207783116815612,
|
| 475 |
+
"mean_pi_0": 0.9904761904761905,
|
| 476 |
+
"kl_stationary_bias_thm34": 1.8496401146902999,
|
| 477 |
+
"smoothing_bias_eq14": 0.006549840940980767,
|
| 478 |
+
"total_mean_bias": 1.2173069263394214
|
| 479 |
+
},
|
| 480 |
+
{
|
| 481 |
+
"rho": 0.20754213045402808,
|
| 482 |
+
"denoiser_rel_error_d": 0.09636597618154512,
|
| 483 |
+
"mean_pi_rho": 0.9983287603601947,
|
| 484 |
+
"mean_pi_tilde": 1.697206203292443,
|
| 485 |
+
"mean_pi_0": 0.9904761904761905,
|
| 486 |
+
"kl_stationary_bias_thm34": 0.8076772756543225,
|
| 487 |
+
"smoothing_bias_eq14": 0.007852569884004179,
|
| 488 |
+
"total_mean_bias": 0.7067300128162526
|
| 489 |
+
},
|
| 490 |
+
{
|
| 491 |
+
"rho": 0.22790262188969385,
|
| 492 |
+
"denoiser_rel_error_d": 0.08775677890042052,
|
| 493 |
+
"mean_pi_rho": 0.9998798380493512,
|
| 494 |
+
"mean_pi_tilde": 1.4466723310639464,
|
| 495 |
+
"mean_pi_0": 0.9904761904761905,
|
| 496 |
+
"kl_stationary_bias_thm34": 0.38904130616904875,
|
| 497 |
+
"smoothing_bias_eq14": 0.0094036475731607,
|
| 498 |
+
"total_mean_bias": 0.4561961405877559
|
| 499 |
+
},
|
| 500 |
+
{
|
| 501 |
+
"rho": 0.25026053722476227,
|
| 502 |
+
"denoiser_rel_error_d": 0.07991671488356847,
|
| 503 |
+
"mean_pi_rho": 1.0017219926669907,
|
| 504 |
+
"mean_pi_tilde": 1.3031728798862359,
|
| 505 |
+
"mean_pi_0": 0.9904761904761905,
|
| 506 |
+
"kl_stationary_bias_thm34": 0.19718314193653286,
|
| 507 |
+
"smoothing_bias_eq14": 0.01124580219080018,
|
| 508 |
+
"total_mean_bias": 0.31269668941004536
|
| 509 |
+
},
|
| 510 |
+
{
|
| 511 |
+
"rho": 0.27481182959948597,
|
| 512 |
+
"denoiser_rel_error_d": 0.07277707087481729,
|
| 513 |
+
"mean_pi_rho": 1.003903355800071,
|
| 514 |
+
"mean_pi_tilde": 1.2138787954127879,
|
| 515 |
+
"mean_pi_0": 0.9904761904761905,
|
| 516 |
+
"kl_stationary_bias_thm34": 0.1029085298471859,
|
| 517 |
+
"smoothing_bias_eq14": 0.013427165323880441,
|
| 518 |
+
"total_mean_bias": 0.22340260493659736
|
| 519 |
+
},
|
| 520 |
+
{
|
| 521 |
+
"rho": 0.30177167573163965,
|
| 522 |
+
"denoiser_rel_error_d": 0.06627527236116638,
|
| 523 |
+
"mean_pi_rho": 1.0064773169292822,
|
| 524 |
+
"mean_pi_tilde": 1.1556820137552488,
|
| 525 |
+
"mean_pi_0": 0.9904761904761905,
|
| 526 |
+
"kl_stationary_bias_thm34": 0.054648566547275346,
|
| 527 |
+
"smoothing_bias_eq14": 0.016001126453091707,
|
| 528 |
+
"total_mean_bias": 0.1652058232790583
|
| 529 |
+
},
|
| 530 |
+
{
|
| 531 |
+
"rho": 0.33137636180583185,
|
| 532 |
+
"denoiser_rel_error_d": 0.06035433514632794,
|
| 533 |
+
"mean_pi_rho": 1.009501957061109,
|
| 534 |
+
"mean_pi_tilde": 1.1168831518762548,
|
| 535 |
+
"mean_pi_0": 0.9904761904761905,
|
| 536 |
+
"kl_stationary_bias_thm34": 0.029313036728830122,
|
| 537 |
+
"smoothing_bias_eq14": 0.019025766584918502,
|
| 538 |
+
"total_mean_bias": 0.12640696140006424
|
| 539 |
+
},
|
| 540 |
+
{
|
| 541 |
+
"rho": 0.3638853543740865,
|
| 542 |
+
"denoiser_rel_error_d": 0.054962365919897185,
|
| 543 |
+
"mean_pi_rho": 1.013038902411374,
|
| 544 |
+
"mean_pi_tilde": 1.0909422524942174,
|
| 545 |
+
"mean_pi_0": 0.9904761904761905,
|
| 546 |
+
"kl_stationary_bias_thm34": 0.015802804856128838,
|
| 547 |
+
"smoothing_bias_eq14": 0.022562711935183444,
|
| 548 |
+
"total_mean_bias": 0.10046606201802688
|
| 549 |
+
},
|
| 550 |
+
{
|
| 551 |
+
"rho": 0.3995835744178423,
|
| 552 |
+
"denoiser_rel_error_d": 0.05005210744495246,
|
| 553 |
+
"mean_pi_rho": 1.0171514253711003,
|
| 554 |
+
"mean_pi_tilde": 1.07393656523747,
|
| 555 |
+
"mean_pi_0": 0.9904761904761905,
|
| 556 |
+
"kl_stationary_bias_thm34": 0.008531258085756277,
|
| 557 |
+
"smoothing_bias_eq14": 0.02667523489490975,
|
| 558 |
+
"total_mean_bias": 0.08346037476127943
|
| 559 |
+
},
|
| 560 |
+
{
|
| 561 |
+
"rho": 0.43878389450210253,
|
| 562 |
+
"denoiser_rel_error_d": 0.045580524377938775,
|
| 563 |
+
"mean_pi_rho": 1.0219016297029146,
|
| 564 |
+
"mean_pi_tilde": 1.0633880233767479,
|
| 565 |
+
"mean_pi_0": 0.9904761904761905,
|
| 566 |
+
"kl_stationary_bias_thm34": 0.004598874032742395,
|
| 567 |
+
"smoothing_bias_eq14": 0.03142543922672414,
|
| 568 |
+
"total_mean_bias": 0.07291183290055736
|
| 569 |
+
},
|
| 570 |
+
{
|
| 571 |
+
"rho": 0.4818298809077256,
|
| 572 |
+
"denoiser_rel_error_d": 0.041508426090805614,
|
| 573 |
+
"mean_pi_rho": 1.0273466056397693,
|
| 574 |
+
"mean_pi_tilde": 1.057667678839557,
|
| 575 |
+
"mean_pi_0": 0.9904761904761905,
|
| 576 |
+
"kl_stationary_bias_thm34": 0.002469499832476574,
|
| 577 |
+
"smoothing_bias_eq14": 0.03687041516357881,
|
| 578 |
+
"total_mean_bias": 0.06719148836336641
|
| 579 |
+
},
|
| 580 |
+
{
|
| 581 |
+
"rho": 0.5290988047749335,
|
| 582 |
+
"denoiser_rel_error_d": 0.03780012318967067,
|
| 583 |
+
"mean_pi_rho": 1.0335335448318392,
|
| 584 |
+
"mean_pi_tilde": 1.0556684120457538,
|
| 585 |
+
"mean_pi_0": 0.9904761904761905,
|
| 586 |
+
"kl_stationary_bias_thm34": 0.0013181723233328668,
|
| 587 |
+
"smoothing_bias_eq14": 0.043057354355648725,
|
| 588 |
+
"total_mean_bias": 0.06519222156956328
|
| 589 |
+
},
|
| 590 |
+
{
|
| 591 |
+
"rho": 0.5810049486488263,
|
| 592 |
+
"denoiser_rel_error_d": 0.03442311471961058,
|
| 593 |
+
"mean_pi_rho": 1.0404939766456411,
|
| 594 |
+
"mean_pi_tilde": 1.0566125661468322,
|
| 595 |
+
"mean_pi_0": 0.9904761904761905,
|
| 596 |
+
"kl_stationary_bias_thm34": 0.0006980872488455692,
|
| 597 |
+
"smoothing_bias_eq14": 0.05001778616945063,
|
| 598 |
+
"total_mean_bias": 0.06613637567064168
|
| 599 |
+
},
|
| 600 |
+
{
|
| 601 |
+
"rho": 0.6380032374067043,
|
| 602 |
+
"denoiser_rel_error_d": 0.03134780331412443,
|
| 603 |
+
"mean_pi_rho": 1.0482375238504622,
|
| 604 |
+
"mean_pi_tilde": 1.0599321629505463,
|
| 605 |
+
"mean_pi_0": 0.9904761904761905,
|
| 606 |
+
"kl_stationary_bias_thm34": 0.000366141391066499,
|
| 607 |
+
"smoothing_bias_eq14": 0.057761333374271695,
|
| 608 |
+
"total_mean_bias": 0.06945597247435575
|
| 609 |
+
},
|
| 610 |
+
{
|
| 611 |
+
"rho": 0.7005932253900049,
|
| 612 |
+
"denoiser_rel_error_d": 0.02854723579273328,
|
| 613 |
+
"mean_pi_rho": 1.0567458498326885,
|
| 614 |
+
"mean_pi_tilde": 1.0651908263038885,
|
| 615 |
+
"mean_pi_0": 0.9904761904761905,
|
| 616 |
+
"kl_stationary_bias_thm34": 0.00018987495270361698,
|
| 617 |
+
"smoothing_bias_eq14": 0.06626965935649798,
|
| 618 |
+
"total_mean_bias": 0.074714635827698
|
| 619 |
+
},
|
| 620 |
+
{
|
| 621 |
+
"rho": 0.7693234746855729,
|
| 622 |
+
"denoiser_rel_error_d": 0.02599686693321573,
|
| 623 |
+
"mean_pi_rho": 1.065967720722269,
|
| 624 |
+
"mean_pi_tilde": 1.0720315480803613,
|
| 625 |
+
"mean_pi_0": 0.9904761904761905,
|
| 626 |
+
"kl_stationary_bias_thm34": 9.720732596407711e-05,
|
| 627 |
+
"smoothing_bias_eq14": 0.07549153024607858,
|
| 628 |
+
"total_mean_bias": 0.08155535760417076
|
| 629 |
+
},
|
| 630 |
+
{
|
| 631 |
+
"rho": 0.844796362929157,
|
| 632 |
+
"denoiser_rel_error_d": 0.02367434434809133,
|
| 633 |
+
"mean_pi_rho": 1.0758162438097045,
|
| 634 |
+
"mean_pi_tilde": 1.080141975035254,
|
| 635 |
+
"mean_pi_0": 0.9904761904761905,
|
| 636 |
+
"kl_stationary_bias_thm34": 4.9061670883143726e-05,
|
| 637 |
+
"smoothing_bias_eq14": 0.08534005333351402,
|
| 638 |
+
"total_mean_bias": 0.0896657845590636
|
| 639 |
+
},
|
| 640 |
+
{
|
| 641 |
+
"rho": 0.9276733627685256,
|
| 642 |
+
"denoiser_rel_error_d": 0.021559312579928446,
|
| 643 |
+
"mean_pi_rho": 1.0861692698623089,
|
| 644 |
+
"mean_pi_tilde": 1.089232726483156,
|
| 645 |
+
"mean_pi_0": 0.9904761904761905,
|
| 646 |
+
"kl_stationary_bias_thm34": 2.438269161986195e-05,
|
| 647 |
+
"smoothing_bias_eq14": 0.09569307938611837,
|
| 648 |
+
"total_mean_bias": 0.09875653600696555
|
| 649 |
+
},
|
| 650 |
+
{
|
| 651 |
+
"rho": 1.0186808392573903,
|
| 652 |
+
"denoiser_rel_error_d": 0.019633234698494803,
|
| 653 |
+
"mean_pi_rho": 1.0968735960063922,
|
| 654 |
+
"mean_pi_tilde": 1.0990260520614699,
|
| 655 |
+
"mean_pi_0": 0.9904761904761905,
|
| 656 |
+
"kl_stationary_bias_thm34": 1.1920786914476622e-05,
|
| 657 |
+
"smoothing_bias_eq14": 0.10639740553020172,
|
| 658 |
+
"total_mean_bias": 0.10854986158527935
|
| 659 |
+
},
|
| 660 |
+
{
|
| 661 |
+
"rho": 1.1186164159906702,
|
| 662 |
+
"denoiser_rel_error_d": 0.017879229836161113,
|
| 663 |
+
"mean_pi_rho": 1.1077529927972949,
|
| 664 |
+
"mean_pi_tilde": 1.10925275583358,
|
| 665 |
+
"mean_pi_0": 0.9904761904761905,
|
| 666 |
+
"kl_stationary_bias_thm34": 5.729575267343634e-06,
|
| 667 |
+
"smoothing_bias_eq14": 0.11727680232110438,
|
| 668 |
+
"total_mean_bias": 0.11877656535738956
|
| 669 |
+
},
|
| 670 |
+
{
|
| 671 |
+
"rho": 1.2283559657762886,
|
| 672 |
+
"denoiser_rel_error_d": 0.016281925237657414,
|
| 673 |
+
"mean_pi_rho": 1.1186193261393562,
|
| 674 |
+
"mean_pi_tilde": 1.1196552896089975,
|
| 675 |
+
"mean_pi_0": 0.9904761904761905,
|
| 676 |
+
"kl_stationary_bias_thm34": 2.7063263214888167e-06,
|
| 677 |
+
"smoothing_bias_eq14": 0.1281431356631657,
|
| 678 |
+
"total_mean_bias": 0.129179099132807
|
| 679 |
+
},
|
| 680 |
+
{
|
| 681 |
+
"rho": 1.3488612871123675,
|
| 682 |
+
"denoiser_rel_error_d": 0.014827321527490684,
|
| 683 |
+
"mean_pi_rho": 1.1292853600923205,
|
| 684 |
+
"mean_pi_tilde": 1.12999468312073,
|
| 685 |
+
"mean_pi_0": 0.9904761904761905,
|
| 686 |
+
"kl_stationary_bias_thm34": 1.256220879208847e-06,
|
| 687 |
+
"smoothing_bias_eq14": 0.13880916961613,
|
| 688 |
+
"total_mean_bias": 0.13951849264453942
|
| 689 |
+
},
|
| 690 |
+
{
|
| 691 |
+
"rho": 1.481188533749338,
|
| 692 |
+
"denoiser_rel_error_d": 0.013502670014177012,
|
| 693 |
+
"mean_pi_rho": 1.139577431000751,
|
| 694 |
+
"mean_pi_tilde": 1.1400588716806508,
|
| 695 |
+
"mean_pi_0": 0.9904761904761905,
|
| 696 |
+
"kl_stationary_bias_thm34": 5.732011836290241e-07,
|
| 697 |
+
"smoothing_bias_eq14": 0.14910124052456042,
|
| 698 |
+
"total_mean_bias": 0.14958268120446028
|
| 699 |
+
},
|
| 700 |
+
{
|
| 701 |
+
"rho": 1.6264974712168072,
|
| 702 |
+
"denoiser_rel_error_d": 0.012296360955936624,
|
| 703 |
+
"mean_pi_rho": 1.1493462142136244,
|
| 704 |
+
"mean_pi_tilde": 1.1496702061717117,
|
| 705 |
+
"mean_pi_0": 0.9904761904761905,
|
| 706 |
+
"kl_stationary_bias_thm34": 2.5725170726964564e-07,
|
| 707 |
+
"smoothing_bias_eq14": 0.15887002373743386,
|
| 708 |
+
"total_mean_bias": 0.15919401569552116
|
| 709 |
+
},
|
| 710 |
+
{
|
| 711 |
+
"rho": 1.7860616414428476,
|
| 712 |
+
"denoiser_rel_error_d": 0.011197821808570532,
|
| 713 |
+
"mean_pi_rho": 1.158474250988318,
|
| 714 |
+
"mean_pi_tilde": 1.1586905106188174,
|
| 715 |
+
"mean_pi_0": 0.9904761904761905,
|
| 716 |
+
"kl_stationary_bias_thm34": 1.1365364382953658e-07,
|
| 717 |
+
"smoothing_bias_eq14": 0.1679980605121274,
|
| 718 |
+
"total_mean_bias": 0.16821432014262694
|
| 719 |
+
},
|
| 720 |
+
{
|
| 721 |
+
"rho": 1.9612795245522405,
|
| 722 |
+
"denoiser_rel_error_d": 0.010197424563725048,
|
| 723 |
+
"mean_pi_rho": 1.1668796110229958,
|
| 724 |
+
"mean_pi_tilde": 1.1670228544975068,
|
| 725 |
+
"mean_pi_0": 0.9904761904761905,
|
| 726 |
+
"kl_stationary_bias_thm34": 4.9480164077131406e-08,
|
| 727 |
+
"smoothing_bias_eq14": 0.17640342054680525,
|
| 728 |
+
"total_mean_bias": 0.17654666402131625
|
| 729 |
+
},
|
| 730 |
+
{
|
| 731 |
+
"rho": 2.1536867956698402,
|
| 732 |
+
"denoiser_rel_error_d": 0.009286401365422123,
|
| 733 |
+
"mean_pi_rho": 1.1745158107560099,
|
| 734 |
+
"mean_pi_tilde": 1.1746100166894384,
|
| 735 |
+
"mean_pi_0": 0.9904761904761905,
|
| 736 |
+
"kl_stationary_bias_thm34": 2.1252453463738163e-08,
|
| 737 |
+
"smoothing_bias_eq14": 0.18403962027981935,
|
| 738 |
+
"total_mean_bias": 0.18413382621324792
|
| 739 |
+
},
|
| 740 |
+
{
|
| 741 |
+
"rho": 2.3649697841522936,
|
| 742 |
+
"denoiser_rel_error_d": 0.008456767665287046,
|
| 743 |
+
"mean_pi_rho": 1.181368689357881,
|
| 744 |
+
"mean_pi_tilde": 1.1814302431652,
|
| 745 |
+
"mean_pi_0": 0.9904761904761905,
|
| 746 |
+
"kl_stationary_bias_thm34": 9.01690810906075e-09,
|
| 747 |
+
"smoothing_bias_eq14": 0.19089249888169046,
|
| 748 |
+
"total_mean_bias": 0.19095405268900945
|
| 749 |
+
},
|
| 750 |
+
{
|
| 751 |
+
"rho": 2.596980253209838,
|
| 752 |
+
"denoiser_rel_error_d": 0.007701252242977292,
|
| 753 |
+
"mean_pi_rho": 1.1874512557922707,
|
| 754 |
+
"mean_pi_tilde": 1.1874912396217052,
|
| 755 |
+
"mean_pi_0": 0.9904761904761905,
|
| 756 |
+
"kl_stationary_bias_thm34": 3.783789725986253e-09,
|
| 757 |
+
"smoothing_bias_eq14": 0.19697506531608022,
|
| 758 |
+
"total_mean_bias": 0.1970150491455147
|
| 759 |
+
},
|
| 760 |
+
{
|
| 761 |
+
"rho": 2.851751629452332,
|
| 762 |
+
"denoiser_rel_error_d": 0.007013233478485264,
|
| 763 |
+
"mean_pi_rho": 1.1927975598140927,
|
| 764 |
+
"mean_pi_tilde": 1.1928233970094186,
|
| 765 |
+
"mean_pi_0": 0.9904761904761905,
|
| 766 |
+
"kl_stationary_bias_thm34": 1.5723801150002714e-09,
|
| 767 |
+
"smoothing_bias_eq14": 0.20232136933790223,
|
| 768 |
+
"total_mean_bias": 0.20234720653322813
|
| 769 |
+
},
|
| 770 |
+
{
|
| 771 |
+
"rho": 3.1315168246013303,
|
| 772 |
+
"denoiser_rel_error_d": 0.006386681317781576,
|
| 773 |
+
"mean_pi_rho": 1.1974564801773442,
|
| 774 |
+
"mean_pi_tilde": 1.1974730992568325,
|
| 775 |
+
"mean_pi_0": 0.9904761904761905,
|
| 776 |
+
"kl_stationary_bias_thm34": 6.478360070616418e-10,
|
| 777 |
+
"smoothing_bias_eq14": 0.20698028970115367,
|
| 778 |
+
"total_mean_bias": 0.20699690878064203
|
| 779 |
+
},
|
| 780 |
+
{
|
| 781 |
+
"rho": 3.438727805564358,
|
| 782 |
+
"denoiser_rel_error_d": 0.00581610442316403,
|
| 783 |
+
"mean_pi_rho": 1.2014860641145502,
|
| 784 |
+
"mean_pi_tilde": 1.2014967109935242,
|
| 785 |
+
"mean_pi_0": 0.9904761904761905,
|
| 786 |
+
"kl_stationary_bias_thm34": 2.6492974480873954e-10,
|
| 787 |
+
"smoothing_bias_eq14": 0.21100987363835966,
|
| 788 |
+
"total_mean_bias": 0.21102052051733367
|
| 789 |
+
},
|
| 790 |
+
{
|
| 791 |
+
"rho": 3.776077084390844,
|
| 792 |
+
"denoiser_rel_error_d": 0.00529650204511818,
|
| 793 |
+
"mean_pi_rho": 1.2049487804079615,
|
| 794 |
+
"mean_pi_tilde": 1.2049555775216072,
|
| 795 |
+
"mean_pi_0": 0.9904761904761905,
|
| 796 |
+
"kl_stationary_bias_thm34": 1.0764511504390839e-10,
|
| 797 |
+
"smoothing_bias_eq14": 0.21447258993177098,
|
| 798 |
+
"total_mean_bias": 0.2144793870454167
|
| 799 |
+
},
|
| 800 |
+
{
|
| 801 |
+
"rho": 4.1465213164557335,
|
| 802 |
+
"denoiser_rel_error_d": 0.004823320193876426,
|
| 803 |
+
"mean_pi_rho": 1.2079078198318498,
|
| 804 |
+
"mean_pi_tilde": 1.2079121462103564,
|
| 805 |
+
"mean_pi_0": 0.9904761904761905,
|
| 806 |
+
"kl_stationary_bias_thm34": 4.349631765876438e-11,
|
| 807 |
+
"smoothing_bias_eq14": 0.2174316293556593,
|
| 808 |
+
"total_mean_bias": 0.21743595573416585
|
| 809 |
+
},
|
| 810 |
+
{
|
| 811 |
+
"rho": 4.553307213694093,
|
| 812 |
+
"denoiser_rel_error_d": 0.004392411726546785,
|
| 813 |
+
"mean_pi_rho": 1.210424414737959,
|
| 814 |
+
"mean_pi_tilde": 1.2104271614321518,
|
| 815 |
+
"mean_pi_0": 0.9904761904761905,
|
| 816 |
+
"kl_stationary_bias_thm34": 1.7492673975993966e-11,
|
| 817 |
+
"smoothing_bias_eq14": 0.21994822426176852,
|
| 818 |
+
"total_mean_bias": 0.21995097095596128
|
| 819 |
+
},
|
| 820 |
+
{
|
| 821 |
+
"rho": 5.0,
|
| 822 |
+
"denoiser_rel_error_d": 0.004,
|
| 823 |
+
"mean_pi_rho": 1.2125560538116593,
|
| 824 |
+
"mean_pi_tilde": 1.212557793804906,
|
| 825 |
+
"mean_pi_0": 0.9904761904761905,
|
| 826 |
+
"kl_stationary_bias_thm34": 7.0065064861069004e-12,
|
| 827 |
+
"smoothing_bias_eq14": 0.2220798633354688,
|
| 828 |
+
"total_mean_bias": 0.2220816033287154
|
| 829 |
+
}
|
| 830 |
+
]
|
| 831 |
+
}
|
| 832 |
+
}
|
| 833 |
+
````
|
| 834 |
+
|
| 835 |
+
|
| 836 |
+
````output
|
| 837 |
+
==============================================================================
|
| 838 |
+
PART 1 - Eq. 16 under the theorem's compatibility assumption
|
| 839 |
+
random instances : 200
|
| 840 |
+
median KL magnitude : 0.001966
|
| 841 |
+
max |LHS - RHS| (double precision): 3.123e-16
|
| 842 |
+
max |chain stationary - pi~| : 3.886e-16
|
| 843 |
+
|
| 844 |
+
PART 2 - CONTROL: compatibility assumption relaxed
|
| 845 |
+
eps median LHS KL median RHS median rel err RHS>=LHS
|
| 846 |
+
0.05 0.000004 -0.000327 504.321 0.44
|
| 847 |
+
0.2 0.000070 -0.000352 101.802 0.47
|
| 848 |
+
0.5 0.000469 0.005476 53.843 0.55
|
| 849 |
+
|
| 850 |
+
PART 3 - rho trade-off (linear-Gaussian instance, denoiser error d=kappa/rho)
|
| 851 |
+
rho d KL bias (Thm 3.4) smooth bias (Eq14) total
|
| 852 |
+
0.157 0.128 82.505490 0.004545 32.214618
|
| 853 |
+
0.302 0.066 0.054649 0.016001 0.165206
|
| 854 |
+
0.581 0.034 0.000698 0.050018 0.066136
|
| 855 |
+
1.119 0.018 0.000006 0.117277 0.118777
|
| 856 |
+
2.154 0.009 0.000000 0.184040 0.184134
|
| 857 |
+
4.147 0.005 0.000000 0.217432 0.217436
|
| 858 |
+
total bias minimised at rho = 0.529 (total 0.065192) -> interior optimum, not rho->0
|
| 859 |
+
==============================================================================
|
| 860 |
+
|
| 861 |
+
````
|
| 862 |
+
|
| 863 |
+
|
| 864 |
+
---
|
| 865 |
+
<!-- trackio-cell
|
| 866 |
+
{"type": "figure", "id": "cell_a8e9c1659d35", "created_at": "2026-08-02T10:30:06+00:00", "title": "The rho trade-off: smoothing bias vs stationary bias"}
|
| 867 |
+
-->
|
| 868 |
+
````html
|
| 869 |
+
<html>
|
| 870 |
+
<head><meta charset="utf-8" /></head>
|
| 871 |
+
<body>
|
| 872 |
+
<div style="height:430px; width:1000px;"> <script>window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
|
| 873 |
+
<script charset="utf-8" src="https://cdn.plot.ly/plotly-3.7.0.min.js" integrity="sha256-jvTGqxNp8AGWEcvNLVuKr+8j5dGe9Yw51LQkmDH+IYA=" crossorigin="anonymous"></script> <div id="ce8dbe88-c56a-4019-a092-5bc67d292a4c" class="plotly-graph-div" style="height:100%; width:100%;"></div> <script> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("ce8dbe88-c56a-4019-a092-5bc67d292a4c")) { Plotly.newPlot( "ce8dbe88-c56a-4019-a092-5bc67d292a4c", [{"line":{"color":"#4C78A8","width":2.5},"mode":"lines","name":"Thm 3.4 stationary bias KL(pi || pi~)","x":{"dtype":"f8","bdata":"gMkWKwYQxD+RMt4T4gfGPzMFNhQsMcg\u002fvs1rk72Qyj+CLdjB6SvNPw4Gt8VEBNA\u002fBcIrW4SW0T+6GIglOlDTP5znJzNFNdU\u002fs+whzOVJ1z+2LQn8xpLZP5B5OQsJFdw\u002fDv4u\u002f0zW3j+LjdudYO7gPwlZqLCXl+I\u002f5+zsw4Vq5D\u002fgLNt7QmvmP1M6ekNMnug\u002fbO\u002fRYZII6z\u002fWwU4MgK\u002ftP9fBmkeETPA\u002fti23U9rl8T\u002fDsM2VWKfzPzLPr5LvlPU\u002fGp56v\u002fKy9z87cl42Igb6P5kxKl+1k\u002fw\u002fxkKEo2Zh\u002fz\u002f91IkkwDoBQMCyN0d16wJABSc\u002flZ3GBED0f4YoY9AGQLdKZLFYDQlAR\u002fVFuYOCC0DVEQXnZzUOQIFgGa8JlhBA+9ONKpY2EkAAAAAAAAAUQA=="},"y":{"dtype":"f8","bdata":"JEdD81mgVECNeV6G\u002fI0VQLRunzsgmP0\u002f0AuVA37Y6T8MgrKBDebYP8hP+BRMPck\u002fgFAsojZYuj8gCjCc5fqrP0AYY5g8BJ4\u002foCcrSJwukD\u002fAxsYT1niBP4DWGtlE1nI\u002fACqToOo6ZD8AsDrB0JhVPwBop\u002fP630Y\u002fAEDjTNX+Nz8AYKRsJeMoPwBgzyR5exk\u002fAMDpLPK4CT8AgD3PLZH5PgAAZHrs\u002f+g+AAA8qBUI2D4AACihyrPGPgAAuHZtE7U+AACgu8I7oz4AAED5jEORPgAAAAw4gn4+AAAAgYCQaj4AAAB21NFWPgAAAAAZXUM+AAAAIFJAMD4AAACgZgMbPgAAAABtQgY+AAAAgLE08j0AAAAA2pbdPQAAAACQ6cc9AAAAAMA7sz0AAAAAoNCePQ=="},"type":"scatter","xaxis":"x","yaxis":"y"},{"line":{"color":"#F58518","dash":"dash","width":2.5},"mode":"lines","name":"Eq. 14 smoothing bias |E_pi_rho - E_pi_0|","x":{"dtype":"f8","bdata":"gMkWKwYQxD+RMt4T4gfGPzMFNhQsMcg\u002fvs1rk72Qyj+CLdjB6SvNPw4Gt8VEBNA\u002fBcIrW4SW0T+6GIglOlDTP5znJzNFNdU\u002fs+whzOVJ1z+2LQn8xpLZP5B5OQsJFdw\u002fDv4u\u002f0zW3j+LjdudYO7gPwlZqLCXl+I\u002f5+zsw4Vq5D\u002fgLNt7QmvmP1M6ekNMnug\u002fbO\u002fRYZII6z\u002fWwU4MgK\u002ftP9fBmkeETPA\u002fti23U9rl8T\u002fDsM2VWKfzPzLPr5LvlPU\u002fGp56v\u002fKy9z87cl42Igb6P5kxKl+1k\u002fw\u002fxkKEo2Zh\u002fz\u002f91IkkwDoBQMCyN0d16wJABSc\u002flZ3GBED0f4YoY9AGQLdKZLFYDQlAR\u002fVFuYOCC0DVEQXnZzUOQIFgGa8JlhBA+9ONKpY2EkAAAAAAAAAUQA=="},"y":{"dtype":"f8","bdata":"AOyLZkKdcj8AuaROH1t2PwARK4oB1Ho\u002fABe7FgIVgD8AlVE2OEKDPwChAwUKCIc\u002fAGuNn7N\u002fiz8AwUJrmWKQP0DhDZV9e5M\u002fAJR7960alz8AcPK1wFCbP6CAe8P+FqA\u002fIJGi1q3goj9gnZ4RnQumP2DZoWfum6k\u002fILehu+SSrT9gOadjDPewP8AqiLVpU7M\u002fADkbgtjYtT+gump2V3+4P8CnIUHcPLs\u002fEHGMPtoFvj8AqnCI\u002fmbAP9hu8bV\u002fxME\u002fSErs278Vwz\u002fILSJa2lXEPzhz2N\u002f1gMU\u002fCFYTJWOUxj8QkiI7nI7HP2DR31cqb8g\u002f0HvUm3o2yT8IS0uoquXJP4hul4NUfso\u002f4HU0HV8Cyz+om9J71nPLPxhqmbTM1Ms\u002fuD8Cb0MnzD9gIBDrHG3MPw=="},"type":"scatter","xaxis":"x","yaxis":"y"},{"line":{"color":"#54A24B","width":2.5},"mode":"lines","name":"total bias |E_pi~ - E_pi_0|","showlegend":true,"x":{"dtype":"f8","bdata":"gMkWKwYQxD+RMt4T4gfGPzMFNhQsMcg\u002fvs1rk72Qyj+CLdjB6SvNPw4Gt8VEBNA\u002fBcIrW4SW0T+6GIglOlDTP5znJzNFNdU\u002fs+whzOVJ1z+2LQn8xpLZP5B5OQsJFdw\u002fDv4u\u002f0zW3j+LjdudYO7gPwlZqLCXl+I\u002f5+zsw4Vq5D\u002fgLNt7QmvmP1M6ekNMnug\u002fbO\u002fRYZII6z\u002fWwU4MgK\u002ftP9fBmkeETPA\u002fti23U9rl8T\u002fDsM2VWKfzPzLPr5LvlPU\u002fGp56v\u002fKy9z87cl42Igb6P5kxKl+1k\u002fw\u002fxkKEo2Zh\u002fz\u002f91IkkwDoBQMCyN0d16wJABSc\u002flZ3GBED0f4YoY9AGQLdKZLFYDQlAR\u002fVFuYOCC0DVEQXnZzUOQIFgGa8JlhBA+9ONKpY2EkAAAAAAAAAUQA=="},"y":{"dtype":"f8","bdata":"3H70lngbQEB0naGYPYwFQE4n3dMWevM\u002fCriEQoid5j9wsRhMUTLdP\u002fBZpfk4A9Q\u002fUJ4F4XSYzD\u002fY0AvkdiXFP\u002fCZmXIaLsA\u002fcK+50iS4uT\u002fAkRy8qF21P6CfzJFZqrI\u002f4BgXHXYzsT\u002fASJj7b7CwPxDVlEJQ7rA\u002fQAtK2t3HsT9wmmmVfyCzPzA3udnP4LQ\u002fIFlAPFb0tj+wiWq8G0i5P3B9fnnsybs\u002f8L69FyRovj8wEw3T8IjAP8g5jPG928E\u002feBvpeYYlwz9QypAxeGDEP2Cg3f0LiMU\u002fAEAYwhSZxj\u002f4LNZ8spHHPyhCq7Euccg\u002fQC1zBMo3yT9Yoz9lg+bJP4AAy+zffso\u002fgBM0bbgCyz84WoOAD3TLP8gmbf\u002fw1Ms\u002fsFl9eVonzD+oh6uDK23MPw=="},"type":"scatter","xaxis":"x2","yaxis":"y2"},{"marker":{"color":"#54A24B","line":{"width":3},"size":11,"symbol":"circle-open"},"mode":"markers+text","showlegend":false,"text":[" rho*=0.53"],"textposition":"middle right","x":[0.5290988047749335],"y":[0.06519222156956328],"type":"scatter","xaxis":"x2","yaxis":"y2"}], {"template":{"data":{"barpolar":[{"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"white","showlakes":true,"showland":true,"subunitcolor":"#C8D4E3"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"white","polar":{"angularaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""},"bgcolor":"white","radialaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"yaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"zaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"baxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"bgcolor":"white","caxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0.0,0.45],"title":{"text":"coupling strength rho"},"type":"log"},"yaxis":{"anchor":"x","domain":[0.0,1.0],"title":{"text":"bias"},"type":"log"},"xaxis2":{"anchor":"y2","domain":[0.55,1.0],"title":{"text":"coupling strength rho"},"type":"log"},"yaxis2":{"anchor":"x2","domain":[0.0,1.0],"title":{"text":"|E_pi~[Theta] - E_pi_0[Theta]|"},"type":"log"},"annotations":[{"font":{"size":16},"showarrow":false,"text":"The two bias sources move in opposite directions","x":0.225,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"},{"font":{"size":16},"showarrow":false,"text":"Total bias on E[Theta] has an interior optimum","x":0.775,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"}],"legend":{"font":{"size":10},"orientation":"h","y":-0.22},"margin":{"t":80,"b":90},"height":430,"width":1000,"title":{"text":"Theorem 3.4 audit: coupling strength vs denoising accuracy (linear-Gaussian instance)"}}, {"responsive": true} ) }; </script> </div>
|
| 874 |
+
</body>
|
| 875 |
+
</html>
|
| 876 |
+
````
|
| 877 |
+
|
| 878 |
+
````raw
|
| 879 |
+
rho,denoiser_rel_error_d,kl_stationary_bias_thm34,smoothing_bias_eq14,total_mean_bias
|
| 880 |
+
0.156739,0.127601,82.5054901273,0.0045445055,32.2146176046
|
| 881 |
+
0.172116,0.116201,5.3886586185,0.0054579947,2.6934768605
|
| 882 |
+
0.189001,0.105820,1.8496401147,0.0065498409,1.2173069263
|
| 883 |
+
0.207542,0.096366,0.8076772757,0.0078525699,0.7067300128
|
| 884 |
+
0.227903,0.087757,0.3890413062,0.0094036476,0.4561961406
|
| 885 |
+
0.250261,0.079917,0.1971831419,0.0112458022,0.3126966894
|
| 886 |
+
0.274812,0.072777,0.1029085298,0.0134271653,0.2234026049
|
| 887 |
+
0.301772,0.066275,0.0546485665,0.0160011265,0.1652058233
|
| 888 |
+
0.331376,0.060354,0.0293130367,0.0190257666,0.1264069614
|
| 889 |
+
0.363885,0.054962,0.0158028049,0.0225627119,0.1004660620
|
| 890 |
+
0.399584,0.050052,0.0085312581,0.0266752349,0.0834603748
|
| 891 |
+
0.438784,0.045581,0.0045988740,0.0314254392,0.0729118329
|
| 892 |
+
0.481830,0.041508,0.0024694998,0.0368704152,0.0671914884
|
| 893 |
+
0.529099,0.037800,0.0013181723,0.0430573544,0.0651922216
|
| 894 |
+
0.581005,0.034423,0.0006980872,0.0500177862,0.0661363757
|
| 895 |
+
0.638003,0.031348,0.0003661414,0.0577613334,0.0694559725
|
| 896 |
+
0.700593,0.028547,0.0001898750,0.0662696594,0.0747146358
|
| 897 |
+
0.769323,0.025997,0.0000972073,0.0754915302,0.0815553576
|
| 898 |
+
0.844796,0.023674,0.0000490617,0.0853400533,0.0896657846
|
| 899 |
+
0.927673,0.021559,0.0000243827,0.0956930794,0.0987565360
|
| 900 |
+
1.018681,0.019633,0.0000119208,0.1063974055,0.1085498616
|
| 901 |
+
1.118616,0.017879,0.0000057296,0.1172768023,0.1187765654
|
| 902 |
+
1.228356,0.016282,0.0000027063,0.1281431357,0.1291790991
|
| 903 |
+
1.348861,0.014827,0.0000012562,0.1388091696,0.1395184926
|
| 904 |
+
1.481189,0.013503,0.0000005732,0.1491012405,0.1495826812
|
| 905 |
+
1.626497,0.012296,0.0000002573,0.1588700237,0.1591940157
|
| 906 |
+
1.786062,0.011198,0.0000001137,0.1679980605,0.1682143201
|
| 907 |
+
1.961280,0.010197,0.0000000495,0.1764034205,0.1765466640
|
| 908 |
+
2.153687,0.009286,0.0000000213,0.1840396203,0.1841338262
|
| 909 |
+
2.364970,0.008457,0.0000000090,0.1908924989,0.1909540527
|
| 910 |
+
2.596980,0.007701,0.0000000038,0.1969750653,0.1970150491
|
| 911 |
+
2.851752,0.007013,0.0000000016,0.2023213693,0.2023472065
|
| 912 |
+
3.131517,0.006387,0.0000000006,0.2069802897,0.2069969088
|
| 913 |
+
3.438728,0.005816,0.0000000003,0.2110098736,0.2110205205
|
| 914 |
+
3.776077,0.005297,0.0000000001,0.2144725899,0.2144793870
|
| 915 |
+
4.146521,0.004823,0.0000000000,0.2174316294,0.2174359557
|
| 916 |
+
4.553307,0.004392,0.0000000000,0.2199482243,0.2199509710
|
| 917 |
+
5.000000,0.004000,0.0000000000,0.2220798633,0.2220816033
|
| 918 |
+
|
| 919 |
+
````
|
| 920 |
+
|
| 921 |
+
|
| 922 |
+
---
|
| 923 |
+
<!-- trackio-cell
|
| 924 |
+
{"type": "markdown", "id": "cell_2da776468fb3", "created_at": "2026-08-02T10:30:30+00:00", "title": "Result and verdict"}
|
| 925 |
+
-->
|
| 926 |
+
## Result β Claim 4: **supported as stated, but the hypothesis is load-bearing**
|
| 927 |
+
|
| 928 |
+
### Part 1 β Eq. 16 is an exact identity under its own compatibility assumption
|
| 929 |
+
|
| 930 |
+
| | |
|
| 931 |
+
|---|---|
|
| 932 |
+
| random instances | 200 |
|
| 933 |
+
| median KL magnitude (so the quantity is non-trivial) | 1.97e-3 |
|
| 934 |
+
| **max \|LHS β RHS\| over all 200** | **3.1e-16** |
|
| 935 |
+
| max \|chain's stationary law β $\tilde\pi$\| (sanity) | 3.9e-16 |
|
| 936 |
+
|
| 937 |
+
Eq. 16 reproduces **to double precision**. Theorem 3.4 is correct as written.
|
| 938 |
+
|
| 939 |
+
### Part 2 β CONTROL: relax compatibility and the identity fails, in both directions
|
| 940 |
+
|
| 941 |
+
| perturbation of $q_\rho$ | median LHS (true KL) | median RHS (Eq. 16) | median rel. error | fraction with RHS β₯ LHS |
|
| 942 |
+
|---|---|---|---|---|
|
| 943 |
+
| 5% | 4e-6 | **β3.3e-4** | 504x | 0.44 |
|
| 944 |
+
| 20% | 7.0e-5 | **β3.5e-4** | 102x | 0.47 |
|
| 945 |
+
| 50% | 4.7e-4 | 5.5e-3 | 54x | 0.55 |
|
| 946 |
+
|
| 947 |
+
Two things to note. First, the relative error is **50β500x**, not a small perturbation. Second, and more sharply: **the RHS goes negative** while the LHS is a KL divergence and therefore $\ge 0$ by construction. The inner expectation $\mathbb{E}_{\mathscr{Z}\sim\pi_{\rho,\mathscr{Z}}}[q_\rho/\pi_\rho]$ is taken under the *marginal* $\pi_{\rho,\mathscr{Z}}$, not the conditional, so it is not constrained to be $\ge 1$. Once compatibility is dropped, Eq. 16's right-hand side is not even a valid upper bound on the bias β it is smaller than the true KL roughly half the time.
|
| 948 |
+
|
| 949 |
+
This is not a defect in the proof: App. B.2 assumes compatibility and uses it in the very first step. It is a limit on what the theorem delivers in practice. A real diffusion denoiser $q_\rho$ is an arbitrary approximation to $\pi_\rho(\mathscr{Z}\mid\Theta)$ and there is generically **no joint distribution** having both $q_\rho(\mathscr{Z}\mid\Theta)$ and $\pi_\rho(\Theta\mid\mathscr{Z})$ as its conditionals β the incompatible-conditionals problem. So the operative regime for DiffBCP is the one the control models, and there Eq. 16 is not guaranteed to characterise the bias. Corollary 3.5, which chains Eq. 16 through Pinsker, inherits the same hypothesis.
|
| 950 |
+
|
| 951 |
+
### Part 3 β the $\rho$ trade-off is real
|
| 952 |
+
|
| 953 |
+
| $\rho$ | denoiser rel. error $d=\kappa/\rho$ | Thm 3.4 stationary bias (KL) | Eq. 14 smoothing bias | total bias |
|
| 954 |
+
|---|---|---|---|---|
|
| 955 |
+
| 0.157 | 0.128 | 82.5 | 0.0045 | 32.2 |
|
| 956 |
+
| 0.302 | 0.066 | 0.0546 | 0.0160 | 0.165 |
|
| 957 |
+
| **0.529** | **0.038** | β | β | **0.0652** β minimum |
|
| 958 |
+
| 0.581 | 0.034 | 7.0e-4 | 0.0500 | 0.0661 |
|
| 959 |
+
| 1.119 | 0.018 | 6e-6 | 0.117 | 0.119 |
|
| 960 |
+
| 4.147 | 0.005 | ~0 | 0.217 | 0.217 |
|
| 961 |
+
|
| 962 |
+
The two error sources move in **opposite** directions in $\rho$ exactly as the paper argues, and the total bias has an **interior optimum at $\rho^\star \approx 0.53$** β driving $\rho \to 0$ (which Eq. 14 alone would recommend) makes the total bias 500x *worse*. This is the trade-off the claim describes, and it also gives a first-principles reason for the $\rho_{\min}$ clip in the implementation ([Claim 3](#/claim-3-split-gibbs-sampler-noise-adaptive-coupling)): without a floor on $\rho$ the sampler would walk into the high-bias regime.
|
| 963 |
+
|
| 964 |
+
Suggestive, though not proof, that this is the operative mechanism: the paper's default is $c=100$ with $\sigma=0.05$, so $\tau\approx400$ and $\rho = \sqrt{c/\tau} = 0.5$ β within 6% of this toy instance's $\rho^\star$. The toy's scale is arbitrary, so read this as a consistency check, not a prediction.
|
| 965 |
+
|
| 966 |
+
|
| 967 |
+
---
|
| 968 |
+
<!-- trackio-cell
|
| 969 |
+
{"type": "markdown", "id": "cell_2f9728903f72", "created_at": "2026-08-02T12:22:43+00:00", "title": "Scope and limits of these audits"}
|
| 970 |
+
-->
|
| 971 |
+
## Scope of the numerical audits
|
| 972 |
+
|
| 973 |
+
Both theorem audits are **numerical audits, not proof replacements**. They do not establish that the theorems are true in general β they establish that (a) the stated equalities/inequalities hold in the regimes tested, to double precision, and (b) they stop holding when the stated hypotheses are relaxed, which is what distinguishes a real check from a vacuous one.
|
| 974 |
+
|
| 975 |
+
Neither needed a GPU. Both are seeded (20260802) and deterministic; re-running `audits/thm31_cusp_tail.py` and `audits/thm34_stationary_bias.py` reproduces every number in these pages exactly.
|
| 976 |
+
|
| 977 |
+
What they deliberately do **not** cover:
|
| 978 |
+
|
| 979 |
+
- **Theorem 3.1** is audited on the CUSP prior in isolation, with iid Gaussian factors. It is not audited inside the running sampler, because β as [Claim 1](#/claim-1-joint-probabilistic-model-cusp-diffusion-prior) documents β Eq. 6 does not use $\theta_r$ the way the prior defines it, so the theorem's shrinkage does not enter the Gibbs update.
|
| 980 |
+
- **Theorem 3.4** is audited on finite state spaces and a scalar linear-Gaussian instance, where the stationary law is exactly computable. Real DiffBCP runs a 200-dimensional CP model against a 93M-parameter score network; nothing here measures the *size* of the stationary bias in that setting, only the structure of the relationship. The $\rho^\star \approx 0.53$ figure is a property of the toy instance, not a prediction for the real one.
|
| 981 |
+
- **Corollary 3.5** was not separately audited. It chains Eq. 16 through Pinsker's inequality and the standard TV bound, so it inherits Theorem 3.4's compatibility hypothesis; if Eq. 16's right-hand side is not a valid bound, neither is the corollary's.
|
pages/claim-5-ffhq-imagenet-inpainting-table-1/page.md
ADDED
|
@@ -0,0 +1,345 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Claim 5: FFHQ / ImageNet inpainting (Table 1)
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
---
|
| 5 |
+
<!-- trackio-cell
|
| 6 |
+
{"type": "markdown", "id": "cell_9efb1706baa6", "created_at": "2026-08-02T10:32:17+00:00", "title": "Claim, arithmetic check, and setup"}
|
| 7 |
+
-->
|
| 8 |
+
## What is claimed
|
| 9 |
+
|
| 10 |
+
Table 1 of the paper. Two specific numbers are called out in the claim:
|
| 11 |
+
|
| 12 |
+
- **FFHQ, Uniform(0.9) mask**: DiffBCP **28.28 dB** PSNR vs **26.11 dB** for the best baseline (DeepTensor) β a **+2.17 dB** gain.
|
| 13 |
+
- **ImageNet, Irregular mask**: DiffBCP **27.02 dB** PSNR, with average gains over the best competing method of **+1.82 dB PSNR** and **+12.42 SSIM** points.
|
| 14 |
+
|
| 15 |
+
### First: the reported gains are internally consistent
|
| 16 |
+
|
| 17 |
+
Recomputed directly from Table 1, against DeepTensor (the strongest baseline on PSNR in every column):
|
| 18 |
+
|
| 19 |
+
| ImageNet column | DiffBCP PSNR | DeepTensor PSNR | ΞPSNR | DiffBCP SSIM | DeepTensor SSIM | ΞSSIM |
|
| 20 |
+
|---|---|---|---|---|---|---|
|
| 21 |
+
| Uniform(0.7) | 28.95 | 26.03 | 2.92 | 84.53 | 68.81 | 15.72 |
|
| 22 |
+
| Uniform(0.9) | 25.03 | 23.74 | 1.29 | 71.49 | 56.46 | 15.03 |
|
| 23 |
+
| Stripe | 25.07 | 23.87 | 1.20 | 77.58 | 68.64 | 8.94 |
|
| 24 |
+
| Irregular | 27.02 | 25.16 | 1.86 | 83.09 | 73.10 | 9.99 |
|
| 25 |
+
| **average** | | | **1.8175 β 1.82** β | | | **12.42** β |
|
| 26 |
+
|
| 27 |
+
Both headline averages reproduce exactly, and FFHQ Uniform(0.9) gives 28.28 β 26.11 = **2.17 dB** β. So the claim text is a faithful summary of the table. What remains is whether the DiffBCP column itself reproduces.
|
| 28 |
+
|
| 29 |
+
## Reproduction setup
|
| 30 |
+
|
| 31 |
+
Official code at [github.com/taozerui/DiffBCP@10d13acc4db9d875edc3d2e22aa9db0f49e93b00](https://github.com/taozerui/DiffBCP/tree/10d13acc4db9d875edc3d2e22aa9db0f49e93b00), run **unmodified** β every hyper-parameter below is verbatim from the repo's own `run_ffhq.sh` / `run_imagenet.sh`.
|
| 32 |
+
|
| 33 |
+
| | Paper | This reproduction | |
|
| 34 |
+
|---|---|---|---|
|
| 35 |
+
| eval images per cell | 128 | **16** | scaled down for local compute |
|
| 36 |
+
| Gibbs iterations | 100 (40 burn-in, 1 sample / 4 iters) | 100 | identical |
|
| 37 |
+
| diffusion steps per iteration | 100, `vp_sde` | 100, `vp_sde` | identical |
|
| 38 |
+
| initial CP rank | 200, patches $16\times16\times3$, stride 8 | 200, same patching | identical |
|
| 39 |
+
| coupling | $c=100$, $\rho\in[0.3,10]$, $\rho_0=10$ | same | identical |
|
| 40 |
+
| noise | iid Gaussian $\sigma=0.05$ | same | identical |
|
| 41 |
+
| GPU | 1x A100 40 GB | **1x Tesla T4 16 GB** | ~3x slower |
|
| 42 |
+
| runs per image | 1 | 1 | identical |
|
| 43 |
+
|
| 44 |
+
### Assets
|
| 45 |
+
|
| 46 |
+
- FFHQ diffusion prior: [huggingface.co/kkger/ffhq_10m](https://huggingface.co/kkger/ffhq_10m) (`ffhq_10m.pt`, the DPS/PnP-DM FFHQ checkpoint the paper specifies)
|
| 47 |
+
- ImageNet diffusion prior: OpenAI guided-diffusion `256x256_diffusion_uncond.pt` ([github.com/openai/guided-diffusion](https://github.com/openai/guided-diffusion))
|
| 48 |
+
- FFHQ images: [huggingface.co/datasets/marcosv/ffhq-dataset](https://huggingface.co/datasets/marcosv/ffhq-dataset) β the paper's `generate_data.py` id selection was re-run exactly (PCG64(42), `_FFHQ_ID + rng.choice(1000,128)`, ids 0,1,3,6,7,14,15,36,38,40,β¦), and those canonical FFHQ ids were pulled from the Hub mirror. **Identical images to the paper.**
|
| 49 |
+
- ImageNet images: [huggingface.co/datasets/mrm8488/ImageNet1K-val](https://huggingface.co/datasets/mrm8488/ImageNet1K-val). [ILSVRC/imagenet-1k](https://huggingface.co/datasets/ILSVRC/imagenet-1k) is gated and this account is not authorised. **Deviation:** the paper draws its 128 files from an `os.walk` over a local val directory, whose ordering is not reproducible, so the *specific* ImageNet images differ from the paper's. Split (val), count, PRNG, seed and BICUBIC 256x256 resize are unchanged.
|
| 50 |
+
- Masks: regenerated with the repo's own `generate_data.py`, which is fully seeded. Verified observation fractions: `random_mask_obs01` = **0.1000** (i.e. Uniform(0.9) missing), `random_mask_obs03` = 0.3000, `stripe` = 0.5480, `irregular` = 0.6761, high-res irregular = 0.6998. **Bit-identical to the paper's masks.**
|
| 51 |
+
|
| 52 |
+
### Metrics
|
| 53 |
+
|
| 54 |
+
PSNR/SSIM via MONAI as the paper specifies; LPIPS via the VQGAN/taming implementation the paper cites ([github.com/CompVis/taming-transformers](https://github.com/CompVis/taming-transformers)), installed as `taming-transformers-rom1504`. SSIM and LPIPS are x100, as in the paper.
|
| 55 |
+
|
| 56 |
+
Table 1 reports the **posterior-mean** reconstruction of the CP tensor β the code's `z` stream (see the naming note on [Claim 1](#/claim-1-joint-probabilistic-model-cusp-diffusion-prior)).
|
| 57 |
+
|
| 58 |
+
|
| 59 |
+
---
|
| 60 |
+
<!-- trackio-cell
|
| 61 |
+
{"type": "code", "id": "cell_34d7d87302d0", "created_at": "2026-08-02T10:32:53+00:00", "title": "Exact commands (long-lived background jobs, so run directly rather than via logbook run)"}
|
| 62 |
+
-->
|
| 63 |
+
````bash title=claim5_cmds.sh
|
| 64 |
+
# FFHQ, Uniform(0.9) mask -- GPU 0
|
| 65 |
+
CUDA_VISIBLE_DEVICES=0 python posterior_sample.py \
|
| 66 |
+
gpu=0 add_exp_name='repro16' \
|
| 67 |
+
+data=ffhq_16 data.mask_name=random_mask_obs01 \
|
| 68 |
+
+task=completion task.noise.sigma=0.05 \
|
| 69 |
+
+model=edm_unet_adm_dps_ffhq \
|
| 70 |
+
+sampler=pnp_edm sampler.mode=vp_sde sampler.num_iters=100 \
|
| 71 |
+
sampler.use_tau_to_anneal=true sampler.anneal_const=100.0 \
|
| 72 |
+
sampler.rho=10 sampler.rho_decay_rate=0.9 sampler.rho_min=0.3 \
|
| 73 |
+
sampler.decomposition.use=true sampler.decomposition.tau_beta=1e-3 \
|
| 74 |
+
sampler.decomposition.init_rank=200 sampler.decomposition.num_gibbs_iters=0 \
|
| 75 |
+
sampler.decomposition.use_patch=true sampler.decomposition.patch_size=16 \
|
| 76 |
+
sampler.decomposition.stride=8
|
| 77 |
+
|
| 78 |
+
# ImageNet, Irregular mask -- GPU 1
|
| 79 |
+
CUDA_VISIBLE_DEVICES=1 python posterior_sample.py \
|
| 80 |
+
gpu=0 add_exp_name='repro16' \
|
| 81 |
+
+data=imagenet_16 data.mask_name=irregular_mask_area50-70_brush2-6 \
|
| 82 |
+
+task=completion task.noise.sigma=0.05 \
|
| 83 |
+
+model=edm_unet_adm_dps_imagenet \
|
| 84 |
+
+sampler=pnp_edm sampler.mode=vp_sde sampler.num_iters=100 \
|
| 85 |
+
sampler.use_tau_to_anneal=true sampler.anneal_const=100.0 \
|
| 86 |
+
sampler.rho=10 sampler.rho_decay_rate=0.9 sampler.rho_min=0.3 \
|
| 87 |
+
sampler.decomposition.use=true sampler.decomposition.tau_beta=1e-3 \
|
| 88 |
+
sampler.decomposition.init_rank=200 sampler.decomposition.num_gibbs_iters=0 \
|
| 89 |
+
sampler.decomposition.use_patch=true sampler.decomposition.patch_size=16 \
|
| 90 |
+
sampler.decomposition.stride=8
|
| 91 |
+
|
| 92 |
+
# NOTE: gpu=0 together with CUDA_VISIBLE_DEVICES pinning is required, not
|
| 93 |
+
# cosmetic. posterior_sample.py:143 hardcodes .cuda() (device 0) for the metric
|
| 94 |
+
# tensors while everything else lives on cuda:{cfg.gpu}, so gpu=1 crashes with a
|
| 95 |
+
# cross-device error. Pinning sidesteps it without patching the audited code.
|
| 96 |
+
|
| 97 |
+
````
|
| 98 |
+
|
| 99 |
+
|
| 100 |
+
---
|
| 101 |
+
<!-- trackio-cell
|
| 102 |
+
{"type": "markdown", "id": "cell_38e2557b7844", "created_at": "2026-08-02T10:37:25+00:00", "title": "Context: what the +2.17 dB is measured against"}
|
| 103 |
+
-->
|
| 104 |
+
## Pipeline status
|
| 105 |
+
|
| 106 |
+
Local runs are queued across two Tesla T4s. GPU 0: FFHQ Uniform(0.9) β Marseille $2048^2$ ([Claim 6](#/claim-6-ood-high-resolution-2048x2048-table-2)) β PnP-DM ablation. GPU 1: ImageNet Irregular (larger UNet, ~27 min/image vs ~8 min for FFHQ).
|
| 107 |
+
|
| 108 |
+
## An ablation the claim invites
|
| 109 |
+
|
| 110 |
+
Claim 5 says +2.17 dB "over the best baseline". That baseline set is the **tensor-decomposition** family (BCP, BTR, HLRTF, DeepTensor, tCTV, GLON) β Table 1 contains no plug-and-play diffusion sampler. The paper's own **Table 3** does, and it changes the picture on exactly this cell:
|
| 111 |
+
|
| 112 |
+
| FFHQ Uniform(0.9), posterior-mean | PSNR | SSIM | LPIPS |
|
| 113 |
+
|---|---|---|---|
|
| 114 |
+
| PnP-DM (Wu et al. 2024) β diffusion prior, **no** tensor decomposition | **28.41** | 81.22 | **25.88** |
|
| 115 |
+
| DiffBCP (Table 1 / Table 3) | 28.28 | 81.18 | 28.93 |
|
| 116 |
+
|
| 117 |
+
So in the very cell the claim highlights, the plug-and-play diffusion sampler *without* any tensor decomposition is **0.13 dB better on PSNR and 3.05 points better on LPIPS**. The +2.17 dB is a real gain over tensor-decomposition baselines; it is not a gain over the diffusion prior on its own.
|
| 118 |
+
|
| 119 |
+
This is stated in the paper (Section 4.3, App. D.2) rather than hidden, and the paper's framing β DiffBCP is "competitive with PnP-DM" under posterior-mean evaluation, with the CP block buying faster mixing and high-resolution capability rather than raw PSNR β is fair. But a reader who sees only the claim sentence and Table 1 would draw a stronger conclusion than the evidence supports.
|
| 120 |
+
|
| 121 |
+
Because the repo exposes this ablation directly (`sampler.decomposition.use=false` removes the CP block and leaves exactly PnP-DM), it is being run here on the **same 16 images, same mask, same seed, same checkpoint** β an internal, like-for-like check rather than a cross-paper number comparison. Results below when it completes.
|
| 122 |
+
|
| 123 |
+
|
| 124 |
+
---
|
| 125 |
+
<!-- trackio-cell
|
| 126 |
+
{"type": "markdown", "id": "cell_16ed513d3d9c", "created_at": "2026-08-02T10:38:38+00:00", "title": "Attribution: the paper's own ablation on this cell"}
|
| 127 |
+
-->
|
| 128 |
+
## Attribution: which component actually earns the +2.17 dB?
|
| 129 |
+
|
| 130 |
+
The paper's **own ablation** (App. D.3, Table 4) answers this, and the answer is not what the claim sentence suggests for this particular cell. Reading DiffBCP-Full against DiffBCP-w/o-DM (diffusion-prior block removed, CUSP CP retained):
|
| 131 |
+
|
| 132 |
+
| FFHQ mask | Full | w/o diffusion prior | gain from the **diffusion prior** | best TD baseline | gain of *w/o-DM alone* over that baseline |
|
| 133 |
+
|---|---|---|---|---|---|
|
| 134 |
+
| Uniform(0.7) | 32.13 | 32.05 | **+0.08** | 28.23 | +3.82 |
|
| 135 |
+
| **Uniform(0.9)** β the claim's cell | **28.28** | **28.10** | **+0.18** | **26.11** | **+1.99** |
|
| 136 |
+
| Stripe | 27.91 | 25.82 | +2.09 | 26.44 | β0.62 |
|
| 137 |
+
| Irregular | 30.34 | 28.64 | +1.70 | 28.01 | +0.63 |
|
| 138 |
+
|
| 139 |
+
On **Uniform(0.9) β the exact cell the claim cites β the diffusion prior contributes +0.18 dB of the +2.17 dB gain.** The other ~2.0 dB comes from the CUSP Bayesian CP block, which is a *classical* (non-learned) tensor decomposition. The claim is arithmetically correct, but a reader who takes "couples CUSP with a pre-trained diffusion prior β¦ +2.17 dB over the best baseline" as evidence that the diffusion prior drives that number would be mistaken on this cell.
|
| 140 |
+
|
| 141 |
+
The diffusion prior does earn its place on the **structured** masks β +2.09 dB on Stripe and +1.70 dB on Irregular, where w/o-DM actually *loses* to DeepTensor on Stripe (25.82 vs 26.44). So the honest summary is: the learned prior matters where the missingness is structured and the low-rank prior alone cannot fill contiguous holes; on uniform random missingness at 90%, low-rank structure already does nearly all the work.
|
| 142 |
+
|
| 143 |
+
Put together with Table 3 (PnP-DM at 28.41 dB on this same cell, *without* any tensor decomposition), FFHQ Uniform(0.9) is the weakest cell in the paper for the hybrid-prior thesis: **each half of the hybrid, on its own, is within ~0.2 dB of the whole.** That is a fair reading of the paper's own numbers, and the paper reports both ablations rather than omitting them β but neither is visible from the claim sentence or Table 1.
|
| 144 |
+
|
| 145 |
+
The queued `decomposition.use=false` run tests the PnP-DM side of this independently on the same 16 images.
|
| 146 |
+
|
| 147 |
+
|
| 148 |
+
---
|
| 149 |
+
<!-- trackio-cell
|
| 150 |
+
{"type": "markdown", "id": "cell_55367121467a", "created_at": "2026-08-02T12:01:06+00:00", "title": "Identifying the reported quantity"}
|
| 151 |
+
-->
|
| 152 |
+
## Which number in the code corresponds to Table 1?
|
| 153 |
+
|
| 154 |
+
Worth pinning down, because `posterior_sample.py` emits four candidate numbers per image (`x`/`z` stream x single-sample/posterior-mean). Cross-referencing the paper settles it: **Table 3's "Posterior-mean reconstruction" row for DiffBCP on FFHQ Uniform(0.9) is 28.28 / 81.18 / 28.93 β character-for-character the same triple as Table 1's DiffBCP entry.** So Table 1 reports the **posterior-mean** reconstruction of the **CP tensor** (the code's `z` stream). All reproduction numbers below use that quantity; the other three streams are also logged in `audits/table1_repro.json` for completeness.
|
| 155 |
+
|
| 156 |
+
Aggregation is done by `audits/aggregate_results.py`, which recomputes the corpus mean from the per-image `recon/<idx>_metrics_z.txt` files rather than waiting for the run-level `meta_metrics_z.txt` (only written after all 16 images finish), so a partially-complete run can be reported honestly at its actual n.
|
| 157 |
+
|
| 158 |
+
|
| 159 |
+
---
|
| 160 |
+
<!-- trackio-cell
|
| 161 |
+
{"type": "markdown", "id": "cell_91a31e914fe7", "created_at": "2026-08-02T12:20:46+00:00", "title": "Verdict"}
|
| 162 |
+
-->
|
| 163 |
+
## Verdict β Claim 5
|
| 164 |
+
|
| 165 |
+
### FFHQ Uniform(0.9) β the comparable cell
|
| 166 |
+
|
| 167 |
+
Our FFHQ eval images are **identical** to the paper's (the id selection in `generate_data.py` is deterministic), the masks are bit-identical, the checkpoint is the one the paper names, and the code is unmodified. So this cell is a like-for-like comparison, differing only in subsample size (16 vs 128) and GPU.
|
| 168 |
+
|
| 169 |
+
| FFHQ Uniform(0.9), posterior-mean | PSNR β | SSIM β | LPIPS β |
|
| 170 |
+
|---|---|---|---|
|
| 171 |
+
| DeepTensor (best TD baseline, paper) | 26.11 | 61.66 | 40.65 |
|
| 172 |
+
| **DiffBCP, paper Table 1** (n=128) | **28.28** | **81.18** | **28.93** |
|
| 173 |
+
| **DiffBCP, this reproduction** (n=16, all images) | **27.93 Β± 0.44** | **79.93 Β± 0.82** | **29.82 Β± 0.55** |
|
| 174 |
+
| difference | β0.35 (0.8 SEM) | β1.25 (1.5 SEM) | +0.89 (1.6 SEM) |
|
| 175 |
+
|
| 176 |
+
All three metrics land within **1.6 standard errors** of the paper on the full 16-image subsample. **The 28.28 dB figure reproduces**, and so does the margin over DeepTensor: we measure **+1.82 dB** against the paper's published baseline, versus the claimed +2.17 dB β the difference is itself well inside our sampling error.
|
| 177 |
+
|
| 178 |
+
As a check on the aggregation, our recomputed corpus mean (27.932297) matches the value the upstream code writes to its own `meta_metrics_z.txt` (27.932297110557556) exactly.
|
| 179 |
+
|
| 180 |
+
### ImageNet Irregular β reproduced, but not comparable
|
| 181 |
+
|
| 182 |
+
| ImageNet Irregular, posterior-mean | PSNR β | SSIM β | LPIPS β |
|
| 183 |
+
|---|---|---|---|
|
| 184 |
+
| DiffBCP, paper Table 1 (n=128) | 27.02 | 83.09 | 19.66 |
|
| 185 |
+
| DiffBCP, this reproduction (n=5, **different images**) | 33.74 Β± 2.59 | 87.89 Β± 2.74 | 18.83 Β± 1.77 |
|
| 186 |
+
|
| 187 |
+
The run was stopped at n=5 to free the GPU for the higher-value jobs, since no value of n would make this cell comparable.
|
| 188 |
+
|
| 189 |
+
**This cell cannot be compared to the paper and we do not claim it as a reproduction of the 27.02 dB number.** The paper selects its 128 ImageNet images by `rng.choice` over an `os.walk` of a local validation directory; that file ordering depends on the authors' filesystem and is not recoverable. Our draw from the same validation split scores **6.7 dB higher** (33.74 vs 27.02), far outside any plausible method-level variation β the images are simply easier (smoother, more low-rank). For scale, the entire claimed gain over the best baseline on this cell is 1.86 dB, so the image-draw effect is roughly 3.6x larger than the effect being measured. The number is reported for completeness and to show the pipeline runs end-to-end on ImageNet, not as evidence for or against the claim.
|
| 190 |
+
|
| 191 |
+
A meaningful comparison of this cell would require either the authors' image list or re-running the TD baselines on our draw; neither was in scope here.
|
| 192 |
+
|
| 193 |
+
### Verdict
|
| 194 |
+
|
| 195 |
+
**Claim 5 is supported on the cell that can be checked.** FFHQ Uniform(0.9) reproduces to within noise using the official code unmodified. The ImageNet Irregular cell is **inconclusive** for reasons of data provenance, not method.
|
| 196 |
+
|
| 197 |
+
What does *not* survive scrutiny is the implied attribution β see the ablation analysis above: on FFHQ Uniform(0.9) the diffusion prior accounts for +0.18 dB of the +2.17 dB, and the diffusion prior alone (PnP-DM, no tensor decomposition) scores higher than the full hybrid.
|
| 198 |
+
|
| 199 |
+
|
| 200 |
+
---
|
| 201 |
+
<!-- trackio-cell
|
| 202 |
+
{"type": "figure", "id": "cell_b05a63182bb5", "created_at": "2026-08-02T12:21:23+00:00", "title": "PSNR traces and per-image spread against Table 1"}
|
| 203 |
+
-->
|
| 204 |
+
````html
|
| 205 |
+
<html>
|
| 206 |
+
<head><meta charset="utf-8" /></head>
|
| 207 |
+
<body>
|
| 208 |
+
<div style="height:440px; width:1020px;"> <script>window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
|
| 209 |
+
<script charset="utf-8" src="https://cdn.plot.ly/plotly-3.7.0.min.js" integrity="sha256-jvTGqxNp8AGWEcvNLVuKr+8j5dGe9Yw51LQkmDH+IYA=" crossorigin="anonymous"></script> <div id="1e47a86b-09a3-4b88-bc4e-da634e78a722" class="plotly-graph-div" style="height:100%; width:100%;"></div> <script> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("1e47a86b-09a3-4b88-bc4e-da634e78a722")) { Plotly.newPlot( "1e47a86b-09a3-4b88-bc4e-da634e78a722", [{"hoverinfo":"skip","line":{"color":"#4C78A8","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAQGshGUAAAAAATKEmQAAAAGAugidAAAAAQBGzMEAAAAAA0+Q0QAAAAADqRTdAAAAAQI1oOEAAAADAXmo5QAAAAOCJKTpAAAAAoHd2OkAAAAAAxrg6QAAAAGAE4zpAAAAAII0RO0AAAAAAQic7QAAAAAB2OTtAAAAAAD1OO0AAAABAO2w7QAAAACAzljtAAAAAQNq0O0AAAACgM9I7QAAAAEBe6TtAAAAAQGf8O0AAAADALQs8QAAAAKDLFjxAAAAAoPctPEAAAACgGiw8QAAAAADLOjxAAAAAwOpPPEAAAABgh0I8QAAAAOAyTDxAAAAA4JlSPEAAAACAjUo8QAAAAICIVTxAAAAA4NBaPEAAAADANVc8QAAAAED6YzxAAAAAQJNsPEAAAAAg+GM8QAAAAIAfXDxAAAAAAOZrPEAAAADASHE8QAAAAOD6czxAAAAAwDp+PEAAAACAEIM8QAAAACB1eDxAAAAAQOqHPEAAAABA2IM8QAAAAECOgTxAAAAAAGCLPEAAAAAAw488QAAAAGDlhjxAAAAAAMeEPEAAAADgwpU8QAAAAACGmDxAAAAAwKeEPEAAAABABp88QAAAAECxjjxAAAAAwMeKPEAAAADgSo08QAAAAABlgzxAAAAAgA2WPEAAAADAlZ48QAAAAEA6lzxAAAAAAGyNPEAAAACgtJg8QAAAAEBbmTxAAAAAQJ+aPEAAAAAAU5M8QAAAACDpjjxAAAAAYBCOPEAAAAAA9pw8QAAAAGB\u002fiTxAAAAAoDOVPEAAAACA3Zg8QAAAACBzkzxAAAAAANegPEAAAAAg8ZM8QAAAAGB8mzxAAAAAQGemPEAAAAAg95s8QAAAAADUlDxAAAAAwG6fPEAAAAAApZ08QAAAAIBxqjxAAAAAYBOYPEAAAABgU6o8QAAAAEBUszxAAAAAgKimPEAAAABASqg8QAAAAAD3qDxAAAAA4NGfPEAAAAAgBJw8QAAAAACelTxAAAAAANiuPEAAAADAsLM8QAAAAABznjxAAAAAQAS2PEAAAACgUas8QAAAAEArrDxAAAAAIBGlPEA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#4C78A8","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAAO+SN0AAAAAg9vQ3QAAAAOCVfDlAAAAAIAxGOkAAAACgJ9Q6QAAAAADSFjtAAAAAgAlXO0AAAACAv3w7QAAAAADzpDtAAAAAoGjFO0AAAADAW8Q7QAAAAEDL5DtAAAAA4KfbO0AAAABgeuk7QAAAAMDi9TtAAAAAIJz3O0AAAABAb\u002f87QAAAACDa\u002fztAAAAAAJYCPEAAAACAPgU8QAAAACChEDxAAAAA4BgaPEAAAABgfSk8QAAAAMBqHzxAAAAAgPAVPEAAAABAwRc8QAAAAEBiKTxAAAAAwNQyPEAAAAAglC08QAAAAEAgLzxAAAAAAGYxPEAAAADAwiw8QAAAAEBZNzxAAAAAYD8uPEAAAACgqkg8QAAAACCtOzxAAAAAAEo9PEAAAABAbTk8QAAAAMAQPTxAAAAAIJ1JPEAAAACAHE08QAAAAAAbQDxAAAAAQIQ\u002fPEAAAADAskA8QAAAAKBvOjxAAAAAYMQ\u002fPEAAAADARzw8QAAAAEAfQTxAAAAAYCQ\u002fPEAAAABAEEI8QAAAAOBOSTxAAAAAwARQPEAAAAAAu0g8QAAAACBnSDxAAAAAgEJFPEAAAAAAxlA8QAAAAEDDSjxAAAAAgO1EPEAAAAAA11E8QAAAAKDVUjxAAAAAoDxfPEAAAAAgpFE8QAAAAOBHUjxAAAAAQH1ZPEAAAADAb1o8QAAAAMBHWjxAAAAAoKBKPEAAAACgykQ8QAAAAEC\u002fUTxAAAAAoEtQPEAAAABg8E48QAAAAMBWTzxAAAAA4FRIPEAAAABgl0Y8QAAAAEDzQzxAAAAAQIZMPEAAAACgzFM8QAAAAKDVTTxAAAAAQEpCPEAAAADAjko8QAAAAMA6UDxAAAAAQEw9PEAAAACA1kQ8QAAAAKCuRjxAAAAAQK1GPEAAAACAqUc8QAAAAKDHQjxAAAAAAGBVPEAAAABAxlI8QAAAAIDOTTxAAAAAAPtSPEAAAADAo1E8QAAAAOCuTDxAAAAAYH5fPEAAAACAG2E8QAAAAGC8WjxAAAAAgDRPPEAAAABAHEk8QAAAAMD+TDxAAAAAoLFaPEA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#4C78A8","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAQIwCN0AAAADACts3QAAAAKBBQzlAAAAAgCAaOkAAAAAgEKM6QAAAAMAK9DpAAAAAwCo3O0AAAADAzl07QAAAACBEeTtAAAAAQDGGO0AAAACAu5Q7QAAAAOBXrDtAAAAAwAqyO0AAAABgDsE7QAAAAMBtzTtAAAAA4B\u002fIO0AAAABAMeA7QAAAAIAQ1ztAAAAAYDXjO0AAAACARts7QAAAAMAe3TtAAAAAAF7lO0AAAACAweE7QAAAAGB\u002f4ztAAAAAgKTrO0AAAADgQeM7QAAAAACm\u002fjtAAAAAgOr5O0AAAACgePs7QAAAAAAd5TtAAAAA4PnwO0AAAACAp\u002fY7QAAAAOD78TtAAAAAQMkAPEAAAAAgHgI8QAAAAEDS8ztAAAAAgHn7O0AAAACAfAs8QAAAAAAfAjxAAAAAAHH4O0AAAAAA4Pw7QAAAACDT+jtAAAAAAMAEPEAAAADgkAc8QAAAAADxADxAAAAAIIT+O0AAAAAAtP87QAAAAODmEjxAAAAAQGH8O0AAAAAgx\u002f87QAAAAKCgBzxAAAAAoCsHPEAAAABA3f47QAAAAECNADxAAAAAADIAPEAAAADAMQQ8QAAAACC5\u002fjtAAAAAQAv+O0AAAADA9wo8QAAAAMAHEzxAAAAAAIMJPEAAAADADBE8QAAAAODbBzxAAAAAwF0XPEAAAADA8Rk8QAAAAEDNHDxAAAAAYL4cPEAAAABgtQw8QAAAAKDnDTxAAAAA4EUBPEAAAAAA1g88QAAAAGCnDjxAAAAAgPIEPEAAAAAAKxI8QAAAAOAIEjxAAAAAIDQZPEAAAADgihw8QAAAAIBDHjxAAAAAgOQdPEAAAABACB08QAAAAGAjFzxAAAAA4HsMPEAAAADAkw48QAAAAKBCEjxAAAAAYC4WPEAAAADgvgU8QAAAAEA8DjxAAAAAgEwAPEAAAADAuhQ8QAAAAMCiCzxAAAAAoKgYPEAAAABAWg88QAAAAEA3CTxAAAAAIK0OPEAAAAAA9wY8QAAAAGD4DTxAAAAAADQVPEAAAAAAXBg8QAAAAABAIzxAAAAA4JwHPEA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#4C78A8","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAIDsGN0AAAABA2Yw3QAAAAKCB9DhAAAAAwOfUOUAAAABg2m46QAAAAECxzzpAAAAAIOAiO0AAAAAgiEk7QAAAAKBSdjtAAAAAAA6VO0AAAAAgQKw7QAAAAICitDtAAAAAoDe6O0AAAABAP9I7QAAAAIAlwTtAAAAAYEXQO0AAAADgY+M7QAAAAAC25jtAAAAAYFjjO0AAAAAgFPQ7QAAAAOAF6jtAAAAA4KPqO0AAAABABP07QAAAAKChBDxAAAAAIPX5O0AAAACgOfY7QAAAAMCcATxAAAAAYO0CPEAAAACAWP47QAAAAEArDjxAAAAAAEUCPEAAAABAbQc8QAAAAGDyCTxAAAAAgLQAPEAAAADAZAk8QAAAAIDuAzxAAAAAQOQEPEAAAADAgAU8QAAAAGBGCTxAAAAAYC0cPEAAAAAAkRM8QAAAAAAnHDxAAAAA4NUZPEAAAACAXRI8QAAAAIDnFzxAAAAAwFoZPEAAAACAbB48QAAAAICuJDxAAAAAgO0ePEAAAAAA7ho8QAAAAACBIzxAAAAAIEAkPEAAAADg3Bw8QAAAAKAOKzxAAAAAwPEePEAAAACAChQ8QAAAAIDcFzxAAAAAAIwUPEAAAACAXBk8QAAAACAfIjxAAAAAoCwcPEAAAACA+x88QAAAAEAFHTxAAAAA4M4UPEAAAAAAvhw8QAAAAODeHTxAAAAAwOsjPEAAAAAARSU8QAAAACCLJjxAAAAAAFYsPEAAAAAgMCg8QAAAAMBHLDxAAAAAIC4kPEAAAACAhyI8QAAAAICGKTxAAAAAIDsrPEAAAACgtCM8QAAAACCwKTxAAAAAYAEgPEAAAAAgoiE8QAAAAEAbIDxAAAAAgAsgPEAAAACAvSI8QAAAAACGHDxAAAAAgBgiPEAAAABAkCc8QAAAACDqMzxAAAAAQOojPEAAAABA4yE8QAAAAOAlKzxAAAAAIM4lPEAAAAAA4Rw8QAAAAAAGJDxAAAAAQKMhPEAAAADA6h48QAAAAMA1HzxAAAAAIPIrPEAAAAAgSyA8QAAAAMB8JDxAAAAAQLUqPEA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#4C78A8","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAoCuYNkAAAACAzfI2QAAAAMCB+zdAAAAAoIisOEAAAAAA3Qw5QAAAAKCFUjlAAAAAAPyNOUAAAAAALa85QAAAAEB6wDlAAAAAYHTTOUAAAACAPOk5QAAAAIDm7DlAAAAAwEEAOkAAAACgsgM6QAAAAADVDDpAAAAAAIEiOkAAAABAISM6QAAAAID2IjpAAAAAgLk5OkAAAAAgeDc6QAAAAICONTpAAAAAwJ8tOkAAAAAg8jw6QAAAAADpOzpAAAAAwCw+OkAAAACAMD86QAAAAIBcQzpAAAAAgAJHOkAAAAAgx0I6QAAAACBkQTpAAAAAwDdDOkAAAADArD46QAAAAICZQTpAAAAAwMlEOkAAAACAHkU6QAAAAKA2SDpAAAAAoF5IOkAAAADAa0Y6QAAAAMAwRzpAAAAAALpKOkAAAADghE46QAAAAGAySTpAAAAAAOVOOkAAAABg40w6QAAAACDLRTpAAAAAgAROOkAAAACAj1Y6QAAAAMClTDpAAAAA4M9QOkAAAADgFFA6QAAAAMDEUDpAAAAAAIVUOkAAAADAm1Q6QAAAAACuVzpAAAAAIJ5UOkAAAAAgElI6QAAAAKC5VjpAAAAAAE5YOkAAAABgv1o6QAAAAICqXDpAAAAAAD5XOkAAAAAgvWI6QAAAAGC8XTpAAAAAAI5OOkAAAABAp1o6QAAAAKAMWjpAAAAAAKJeOkAAAAAgQ186QAAAAIA9VDpAAAAA4BhdOkAAAADAaWY6QAAAAAAXUDpAAAAAYAZcOkAAAAAAA2I6QAAAAOCBWzpAAAAAgB5POkAAAAAAW2I6QAAAAIBbazpAAAAAwHBYOkAAAACgL2Q6QAAAAAD7XDpAAAAAANlcOkAAAADASl46QAAAAED0UDpAAAAAIK9XOkAAAADgcGo6QAAAAADiXzpAAAAAgIliOkAAAACgUmg6QAAAAADgYjpAAAAA4G9jOkAAAACgbVw6QAAAAEBeYTpAAAAAYKRmOkAAAABAZV06QAAAAMA2YDpAAAAA4ONgOkAAAACg\u002f2E6QAAAAKCVXDpAAAAAQAhkOkA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#4C78A8","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAAP+xN0AAAADgvAk4QAAAAADbYTlAAAAAwBAmOkAAAACAMpg6QAAAAMDF4jpAAAAAYMIVO0AAAAAApko7QAAAAOBFZDtAAAAAwE14O0AAAAAATIo7QAAAAEA9njtAAAAAYJyuO0AAAABAJa07QAAAAKDnrDtAAAAAQMW+O0AAAACAN7Q7QAAAAGBJvztAAAAAoFXDO0AAAADAJNA7QAAAAEBGzztAAAAA4ADTO0AAAABA4987QAAAAKCI2TtAAAAAAObcO0AAAAAAXeU7QAAAAEAL6DtAAAAAIHnrO0AAAABA59o7QAAAAECq4ztAAAAAwKrZO0AAAADA3No7QAAAAGAj3jtAAAAAoAzgO0AAAACAGuI7QAAAAMDn5jtAAAAAgD3kO0AAAADg7e87QAAAAMBn7jtAAAAA4FXoO0AAAABghvA7QAAAAIAc8jtAAAAAABXxO0AAAAAgl\u002fc7QAAAAKCd+ztAAAAAQG\u002f4O0AAAADAF\u002fM7QAAAAMAS7ztAAAAAwBvyO0AAAACgXO47QAAAAOAb6DtAAAAAIEbuO0AAAACgIes7QAAAAEDk8DtAAAAAAIMCPEAAAABgHew7QAAAAEB77ztAAAAAwIrxO0AAAAAgrec7QAAAAMDL\u002fztAAAAAgBb+O0AAAABA7PE7QAAAAMC26ztAAAAA4Lv0O0AAAACAffY7QAAAAIBr8TtAAAAAgHr0O0AAAAAAQvw7QAAAAIBI\u002fztAAAAAQOcEPEAAAAAAkvQ7QAAAACBg7jtAAAAAgE72O0AAAADggv47QAAAAGCQ8ztAAAAAgBb9O0AAAADgT\u002fc7QAAAAOAv9ztAAAAAAPcBPEAAAADAkQE8QAAAACBB7ztAAAAAYGz0O0AAAAAgkfs7QAAAAOBS9TtAAAAAQCz7O0AAAABA6QM8QAAAAEDg+DtAAAAAoK\u002f\u002fO0AAAAAALwM8QAAAAGCo+TtAAAAAQADyO0AAAABASgc8QAAAAKC5AjxAAAAAAI\u002f4O0AAAADgXP87QAAAAMCW+jtAAAAAAOnpO0AAAADge\u002fs7QAAAAIDL\u002fTtAAAAAYMz9O0A="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#4C78A8","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAINYTOUAAAAAAKpw5QAAAAIBfCDtAAAAAAEbaO0AAAAAAsEI8QAAAAEAvhzxAAAAAoKO4PEAAAACAfdY8QAAAAACh9DxAAAAAwKEIPUAAAACgaA49QAAAAEBzID1AAAAAoJkkPUAAAAAgiSw9QAAAAADxLD1AAAAAIAswPUAAAADAzTQ9QAAAACAlTT1AAAAAIAc+PUAAAAAg2Ec9QAAAAKBtPD1AAAAAgLpSPUAAAADAt1A9QAAAACDBVj1AAAAAwNJDPUAAAAAgS1E9QAAAAGCkWD1AAAAAIJdMPUAAAADA11Q9QAAAAIBDVD1AAAAAALJgPUAAAADAUl09QAAAACBsaj1AAAAAwDNdPUAAAACgZ189QAAAAEDAXj1AAAAAgKRmPUAAAADAtm09QAAAAIBVZD1AAAAAwLhTPUAAAACA0VY9QAAAACA2Vz1AAAAAoLJkPUAAAABgfWc9QAAAAKBCaT1AAAAAQB9vPUAAAABANGY9QAAAAKBdZD1AAAAAQM1jPUAAAACAcWk9QAAAAECzXD1AAAAA4CZjPUAAAACA1Ww9QAAAAKDmaj1AAAAAgLpxPUAAAACAoWY9QAAAAGDNaT1AAAAAIO9kPUAAAAAglmE9QAAAAIAOZD1AAAAAYMNdPUAAAAAAM1g9QAAAAAB6Xz1AAAAAQIBePUAAAABAgnM9QAAAAOCGcz1AAAAAAIprPUAAAACgWW49QAAAAADnXz1AAAAAQDtpPUAAAABAt2E9QAAAAMDaaz1AAAAAAFJqPUAAAABAPm09QAAAAGBoYj1AAAAAYGdtPUAAAACA\u002fG09QAAAAEBKdD1AAAAAQI5rPUAAAADgu3M9QAAAAOB1bD1AAAAAIDF2PUAAAACAQGw9QAAAAEAKeT1AAAAAoAVqPUAAAABgD2Q9QAAAAICWZj1AAAAAQCZjPUAAAABAK209QAAAAIA0Yz1AAAAAYA9pPUAAAACAHW49QAAAACBjaT1AAAAAgDt0PUAAAACA9XI9QAAAAKAXbD1AAAAAAElsPUAAAACA8WA9QAAAAMBzcD1AAAAAQDttPUA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#4C78A8","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAALWcMUAAAABgsKQxQAAAAEC2bDJAAAAAAOFiM0AAAADAxjM0QAAAAMDyvzRAAAAAoPIdNUAAAABg91M1QAAAAID8gTVAAAAAwHmoNUAAAAAgRL81QAAAAKB72zVAAAAAILnwNUAAAACgc\u002f41QAAAAECBBzZAAAAAoLwNNkAAAACANSI2QAAAAKCsITZAAAAAgOIjNkAAAABATSc2QAAAAADlOzZAAAAAQL82NkAAAAAAikQ2QAAAAMC7RTZAAAAAgA1JNkAAAADAPk42QAAAAICOTzZAAAAAYItGNkAAAABg9Vk2QAAAAAAhXjZAAAAAwIliNkAAAABAU2M2QAAAAMBwaDZAAAAA4JxfNkAAAACgZ3A2QAAAAIB8YDZAAAAAwO1eNkAAAADA8F02QAAAAMA0ZzZAAAAAIKluNkAAAABAA2Q2QAAAAIBBazZAAAAAgBViNkAAAAAgwmE2QAAAAKDkbjZAAAAAYK91NkAAAAAgjm02QAAAAOC3bTZAAAAAAGJzNkAAAACgj3o2QAAAAOCqfjZAAAAAoGhvNkAAAAAAHn42QAAAAADIhTZAAAAAQCl7NkAAAAAAhH42QAAAAKAKgDZAAAAAwCN4NkAAAACgfIQ2QAAAAAAHezZAAAAAgHN8NkAAAAAAA3w2QAAAACBqijZAAAAAgGCFNkAAAADAgns2QAAAAIDmhTZAAAAAAGGDNkAAAAAAMIo2QAAAAECSezZAAAAAgNCDNkAAAACgqIc2QAAAAODmgzZAAAAAwLKGNkAAAACAD4M2QAAAAID0ijZAAAAAQAWSNkAAAACApIc2QAAAAMAtiTZAAAAAAEWINkAAAADgGZA2QAAAACA9iTZAAAAAwCKUNkAAAAAgO4k2QAAAAECjjDZAAAAAQEWQNkAAAADgY4k2QAAAAICpizZAAAAAQN+UNkAAAACASIs2QAAAAACskTZAAAAAoKORNkAAAACA6JA2QAAAAOB2hTZAAAAAICOINkAAAACg84o2QAAAAGACkTZAAAAAIDWHNkAAAABAtIM2QAAAAECRjDZAAAAAAFKSNkA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#4C78A8","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAQOWdNUAAAADg8SE2QAAAAACvazdAAAAAQOY\u002fOEAAAAAAa8M4QAAAAKAZIDlAAAAAAPVXOUAAAABAs4Q5QAAAAMAaojlAAAAAwCq8OUAAAADAG9s5QAAAAAAM5TlAAAAAgDv2OUAAAACgDAA6QAAAACAFADpAAAAAQBMIOkAAAABAYRY6QAAAACCRGzpAAAAAAM8WOkAAAAAAaiA6QAAAAKBHJjpAAAAAAH8oOkAAAAAgIzI6QAAAACBBNjpAAAAAAPsrOkAAAABA3TE6QAAAAIBcMzpAAAAAgKJKOkAAAADAMTs6QAAAAICMOzpAAAAAQN1NOkAAAABgNUg6QAAAAOBKPTpAAAAAgJ5DOkAAAACAvDg6QAAAAIAwRDpAAAAA4A1POkAAAABAzUc6QAAAAOD\u002fOjpAAAAAQHs0OkAAAACAdkc6QAAAAKDETjpAAAAAoK9NOkAAAADACUo6QAAAAGBrVDpAAAAAQJNUOkAAAAAA4k06QAAAAKD1VDpAAAAAQLBKOkAAAABgZlM6QAAAAMD1YjpAAAAAoCZiOkAAAADAlVs6QAAAAKAOXTpAAAAAoOFjOkAAAADg3WM6QAAAAMC3ajpAAAAAADdlOkAAAAAAU2g6QAAAAABzYjpAAAAAAH5lOkAAAACAsV86QAAAAEA\u002fXTpAAAAAALFZOkAAAADAYVo6QAAAAGAmYTpAAAAAwN1YOkAAAAAgtWw6QAAAAKCmYDpAAAAAwFxsOkAAAADA12A6QAAAAEC+aTpAAAAAwEt4OkAAAADAc3I6QAAAAGCQdzpAAAAAAD1xOkAAAABAHWw6QAAAAMDVcDpAAAAAQKtyOkAAAACAXWg6QAAAAKDVezpAAAAAQOdsOkAAAACAj3Y6QAAAAICccTpAAAAAgNhuOkAAAAAgNW86QAAAAMBJfjpAAAAAwAd4OkAAAAAg5GU6QAAAAMB3cTpAAAAAYAp5OkAAAACA03g6QAAAAGAnfzpAAAAAwD1lOkAAAAAAOX46QAAAAMCMdTpAAAAAILF1OkAAAABA13E6QAAAACD3ezpAAAAA4Ep2OkA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#4C78A8","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAQCJdNUAAAAAgQrI1QAAAAIATPjdAAAAAQAhJOEAAAACA\u002fwU5QAAAACCDdzlAAAAA4N\u002fBOUAAAAAA6Pc5QAAAAOB4IzpAAAAAQIZBOkAAAACAK1w6QAAAAMBJYjpAAAAAIHp2OkAAAACAz3k6QAAAAGBWjjpAAAAAQDaXOkAAAACAXJg6QAAAAAAJtDpAAAAAwLOqOkAAAAAAmKo6QAAAAABYsDpAAAAAAPC3OkAAAAAAQrk6QAAAAGDIujpAAAAAQLC8OkAAAABAbL06QAAAAIBsxjpAAAAAIO7COkAAAABACsc6QAAAAAAxzTpAAAAAgE7OOkAAAAAARc86QAAAAADcxzpAAAAAAOvHOkAAAAAgftE6QAAAAEBa0TpAAAAAgNbcOkAAAACAI9w6QAAAAMAu2zpAAAAAQCLaOkAAAACgo906QAAAAICp1zpAAAAAAGDWOkAAAAAgMug6QAAAAKCZ5TpAAAAAYJfSOkAAAACA8NM6QAAAAICo4DpAAAAA4JDkOkAAAADAfuE6QAAAAOBP4jpAAAAAQBnqOkAAAAAA0eU6QAAAAMDw5zpAAAAAYJjvOkAAAADAm+E6QAAAAGAl7jpAAAAAwHnrOkAAAACgo+U6QAAAAIDE7zpAAAAAgMHsOkAAAACACfU6QAAAAID05DpAAAAAoMTmOkAAAADgFus6QAAAAKCP5DpAAAAAQN3pOkAAAACAHdo6QAAAAAAq8DpAAAAAgEnlOkAAAABA+O46QAAAACBJ7TpAAAAAAHDsOkAAAAAgLOs6QAAAAOAc8jpAAAAA4Fj0OkAAAADAJOU6QAAAAAD35zpAAAAAwDLqOkAAAACA8eU6QAAAAMAm7DpAAAAAoCDyOkAAAADAmPE6QAAAAEDS+jpAAAAAICvoOkAAAADAmec6QAAAAEDt6DpAAAAAALnrOkAAAAAAQ\u002fY6QAAAAMAD7TpAAAAAwGrqOkAAAABg3fI6QAAAAEDR7jpAAAAAgB\u002fsOkAAAADgye86QAAAAEBW8DpAAAAAAJnoOkAAAACAJeE6QAAAAKAg7TpAAAAAQGTrOkA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#4C78A8","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAA4Ig4NUAAAAAAOH41QAAAACAVozZAAAAAQFlPN0AAAAAg3Ms3QAAAAKBtHThAAAAAoJBSOEAAAABAB284QAAAAMBdjThAAAAAAOyvOEAAAACAKsQ4QAAAACDK1jhAAAAAQK3lOEAAAACgKu84QAAAAEAQAjlAAAAAwG8EOUAAAABA+hg5QAAAAEBMJjlAAAAAAHIdOUAAAAAguig5QAAAAACwLjlAAAAAQG0zOUAAAACgDz45QAAAAADhRDlAAAAAQCFHOUAAAACAnjw5QAAAAMCYRDlAAAAAwPhFOUAAAADAA0U5QAAAAICpVzlAAAAAgLJTOUAAAADA71M5QAAAAADaWDlAAAAA4KlUOUAAAAAAxFc5QAAAAOD+XjlAAAAAQOtbOUAAAACAElw5QAAAAMCNYDlAAAAAQIJiOUAAAADA5GE5QAAAAICoWDlAAAAA4LRbOUAAAACAJWg5QAAAAGAGYDlAAAAAwFNfOUAAAAAgJ2Y5QAAAAEB6bjlAAAAAwGtlOUAAAABAZF05QAAAAIBNYzlAAAAAoF9aOUAAAAAgUW45QAAAAIDubjlAAAAA4FBvOUAAAAAAzG45QAAAACBYdjlAAAAAAOZuOUAAAABAP245QAAAAEA6aDlAAAAAYIpyOUAAAACAem45QAAAAAAwYzlAAAAAAB96OUAAAACgy3c5QAAAAKDneTlAAAAA4Gh3OUAAAABAnXE5QAAAAMA9dTlAAAAAoJ53OUAAAACgjXU5QAAAAMDfeTlAAAAAQKZ+OUAAAAAApXU5QAAAAIBTdjlAAAAAoDN5OUAAAAAgNHc5QAAAACD4fTlAAAAAABRyOUAAAADgSHQ5QAAAAKBteTlAAAAAoJVtOUAAAAAAHGg5QAAAAKCpdjlAAAAAQGx7OUAAAABAuH05QAAAAODggTlAAAAAQK1uOUAAAACA\u002fHU5QAAAAODlczlAAAAAoJJtOUAAAACAvXU5QAAAAEBtdjlAAAAAAFdxOUAAAADArHA5QAAAAGAecjlAAAAAoG5wOUAAAACA1Hg5QAAAAGBteDlAAAAAQJFuOUA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#4C78A8","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAwPcqNkAAAACA6NI2QAAAAGBqTThAAAAAAIdNOUAAAABgf+Y5QAAAAECpVTpAAAAAYCWQOkAAAAAgU8U6QAAAAEAu6TpAAAAAAKQFO0AAAAAArxM7QAAAAECxMDtAAAAAQN8zO0AAAACA9zs7QAAAAGDvQjtAAAAAIM1PO0AAAABgPE87QAAAAICRVjtAAAAAoOdeO0AAAACA51s7QAAAAOAWaDtAAAAAwDN1O0AAAAAAenM7QAAAAMAefTtAAAAAwA5zO0AAAADAGGc7QAAAAIC6cztAAAAAIO5+O0AAAADgGX47QAAAAOC0dTtAAAAAoCh9O0AAAABAUIg7QAAAAKBEhTtAAAAAQBCPO0AAAABg44k7QAAAAIDAjDtAAAAAgNGHO0AAAACAdIU7QAAAACDFgTtAAAAAoC2MO0AAAACAWIw7QAAAAOA9kjtAAAAAYFuPO0AAAADgYI07QAAAAID2kztAAAAAYMaaO0AAAABArp07QAAAAMB2kjtAAAAAgMycO0AAAACAQaQ7QAAAAEDakztAAAAAgDKZO0AAAABgl5c7QAAAACA2nztAAAAAYOycO0AAAADAmpc7QAAAACChnTtAAAAAgLqSO0AAAAAAeZo7QAAAAMAtmjtAAAAAgHKcO0AAAAAAj6I7QAAAAGBCqDtAAAAAQDieO0AAAADg8qQ7QAAAAMAytztAAAAAYKmjO0AAAACgiKI7QAAAAABCjTtAAAAAgCudO0AAAABAhKE7QAAAAMCjoDtAAAAAAPmgO0AAAACgoaQ7QAAAAIClnDtAAAAAoCaeO0AAAADASaM7QAAAAIBgmDtAAAAAgJ6fO0AAAACAUaQ7QAAAAIC4nTtAAAAAANekO0AAAADAAZw7QAAAACA3oTtAAAAAYPmlO0AAAACATp47QAAAACCZoTtAAAAAAL+kO0AAAAAATaM7QAAAAEDzpztAAAAAgOykO0AAAACAC6A7QAAAAKDTqjtAAAAAAOakO0AAAAAA6p87QAAAAAARqTtAAAAA4PSoO0AAAAAAvKM7QAAAAODxpTtAAAAAgAOtO0A="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#4C78A8","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAoNKFOEAAAACgCmE5QAAAAMApyzpAAAAAQMh5O0AAAADga+M7QAAAAIC7HjxAAAAAgLNOPEAAAADASWs8QAAAAMAKejxAAAAAAC+WPEAAAACAPZY8QAAAAGDOpzxAAAAA4EmbPEAAAACAPrc8QAAAAICJujxAAAAAoPC5PEAAAACA4bs8QAAAAGBbyzxAAAAAQOXIPEAAAADAWMA8QAAAACCV0zxAAAAAoBnWPEAAAABg3NU8QAAAAKCU2TxAAAAAgJ\u002ffPEAAAAAgjto8QAAAAIB05zxAAAAAwF7iPEAAAABAXOc8QAAAAOBT8DxAAAAAwNHkPEAAAABAkeQ8QAAAAADg5jxAAAAA4DfxPEAAAADghes8QAAAAGB69zxAAAAAAB3vPEAAAACgh+o8QAAAAEBA6zxAAAAAQLrlPEAAAABA3vM8QAAAAMCX+jxAAAAAwDvvPEAAAAAALP88QAAAAACg6zxAAAAAAIvuPEAAAADARfk8QAAAAKDnAj1AAAAAwLj2PEAAAADAsvk8QAAAAADS9TxAAAAAYJr1PEAAAAAgkP08QAAAAEBQ7jxAAAAAgGXxPEAAAABgse08QAAAAKAS9DxAAAAAABTtPEAAAABAzOo8QAAAAED07zxAAAAAIIfyPEAAAACgf+08QAAAAIAI9DxAAAAAABz4PEAAAAAAnvI8QAAAAOCy\u002fTxAAAAAADX+PEAAAABAuew8QAAAACD08TxAAAAAgOT8PEAAAADAffo8QAAAACBT8DxAAAAAgEPxPEAAAABgPu08QAAAAMDU9DxAAAAAgBoCPUAAAADguwU9QAAAAOCGAD1AAAAAgNH+PEAAAACg\u002f\u002f48QAAAAODk+jxAAAAAoF38PEAAAACArgM9QAAAAICLAj1AAAAAgAwDPUAAAACgh\u002fk8QAAAAMC\u002f+DxAAAAAgBD\u002fPEAAAAAgGP48QAAAAOBT\u002fDxAAAAAQNP+PEAAAADgsgE9QAAAACA\u002f7zxAAAAAwPAAPUAAAABgmAg9QAAAAMCPBD1AAAAAoK0DPUAAAABA+vM8QAAAAOBiBj1AAAAAgHj7PEA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#4C78A8","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAwFYZN0AAAADgikw4QAAAAID86DlAAAAAAIrJOkAAAABAuWQ7QAAAAMAjxTtAAAAAQAb9O0AAAACAdyg8QAAAAKCROzxAAAAAwCNdPEAAAACA92k8QAAAAOA3ezxAAAAAQGiKPEAAAACA4pI8QAAAACB4mDxAAAAAILqdPEAAAADAYq08QAAAAEBGqzxAAAAA4LmyPEAAAACAmq48QAAAAABNsTxAAAAAAN6+PEAAAACAecA8QAAAAGBPuzxAAAAAwLnBPEAAAACA6Lk8QAAAAODAtzxAAAAAQC7EPEAAAACAlsk8QAAAAABMvjxAAAAA4IzIPEAAAABgW8U8QAAAAIBNzjxAAAAA4HzUPEAAAAAgkNM8QAAAAGCm0jxAAAAAwNLYPEAAAAAgRcQ8QAAAAEAx0DxAAAAAIKjUPEAAAACAG9A8QAAAACDe1TxAAAAAgMnUPEAAAABAstI8QAAAAADN3TxAAAAAAHDPPEAAAADgFNw8QAAAAGCU0DxAAAAAoPzBPEAAAAAgStM8QAAAAIBb1zxAAAAAoLrCPEAAAABA4NE8QAAAAICm0TxAAAAA4OPRPEAAAABgE888QAAAAEBD0DxAAAAAQK\u002ffPEAAAAAgedQ8QAAAAMAjzzxAAAAAYJHLPEAAAABAVM88QAAAAADB1TxAAAAAAIrWPEAAAAAAM9o8QAAAAGBA3jxAAAAAoH7YPEAAAABAZNQ8QAAAAMAU4zxAAAAAoKXSPEAAAABgZNM8QAAAAIBX0TxAAAAAYLbPPEAAAACA\u002ftw8QAAAAEBT4jxAAAAAoGrbPEAAAADAetA8QAAAAOBizzxAAAAA4K7ZPEAAAADg+NQ8QAAAAED2zDxAAAAAAKzSPEAAAABAM8g8QAAAAACj1DxAAAAAwIHQPEAAAACAUdc8QAAAAIAo6DxAAAAAwC3cPEAAAADA1eU8QAAAAMBF4TxAAAAAwLbaPEAAAADAoNQ8QAAAAMBn2zxAAAAAwAffPEAAAABAptk8QAAAAOCJ3TxAAAAAIKXhPEAAAACgDN88QAAAAODc3zxAAAAAoEvXPEA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#4C78A8","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAwGWUN0AAAAAA7N03QAAAAOCzETlAAAAAwJbYOUAAAABATU86QAAAAMBzkTpAAAAA4EPaOkAAAADAjPo6QAAAAEC9CTtAAAAAgO8wO0AAAADAIUQ7QAAAAAAXVztAAAAAoFlWO0AAAAAAAW07QAAAAID7aztAAAAA4J9rO0AAAABAwXM7QAAAAGBqdztAAAAAYBqDO0AAAABAdH07QAAAAMDBjDtAAAAAwFeBO0AAAAAApYo7QAAAAOA4ijtAAAAAwHGQO0AAAAAA7pE7QAAAAMDllTtAAAAAAImeO0AAAADAK587QAAAAMCKmztAAAAAALOwO0AAAADgPqc7QAAAAOAKrDtAAAAAIJSmO0AAAADAp6I7QAAAAECtnjtAAAAAACGmO0AAAADA5KE7QAAAAMDkrztAAAAAACuqO0AAAAAg6LA7QAAAAEAMsjtAAAAAwE23O0AAAABA1rM7QAAAAABDpztAAAAA4KiuO0AAAADAqao7QAAAAACgsztAAAAAgBW0O0AAAADAOK47QAAAAKBAsDtAAAAAQKSmO0AAAADADq87QAAAAIDGuDtAAAAA4EeyO0AAAABgqas7QAAAAABDtTtAAAAAYM63O0AAAABAf7w7QAAAAMADuDtAAAAA4Cy0O0AAAAAga6w7QAAAAID2sztAAAAAICy4O0AAAADgo7g7QAAAAMAhtjtAAAAAQNWzO0AAAACgtcM7QAAAACDMsztAAAAAoJO8O0AAAABAlLQ7QAAAAECBsztAAAAAQMK8O0AAAACgLa07QAAAAMBmtjtAAAAAQEK3O0AAAABANbE7QAAAAEDTrTtAAAAAQBWoO0AAAAAgG6c7QAAAAMDJtTtAAAAAoL3CO0AAAABgcME7QAAAAADouTtAAAAAAMawO0AAAABAs607QAAAAEA\u002fqTtAAAAAgCWxO0AAAACAbbI7QAAAAAAtsTtAAAAAQImrO0AAAAAAkLo7QAAAAACjvDtAAAAA4Ie4O0AAAADghbM7QAAAAMAxtztAAAAAYP22O0AAAAAAA747QAAAAMDEvTtAAAAAgDm4O0A="},"type":"scatter","xaxis":"x","yaxis":"y"},{"line":{"color":"#4C78A8","width":3},"mode":"lines","name":"FFHQ Uniform(0.9) (mean of 15)","x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"7+7uvv1+NUDv7u4Opk42QJqZmam7kzdAvLu7+4GuOECrqqrqCnc5QImIiIjc8DlAiYiIyF0\u002fOkAzMzOTiHY6QFVVVdVCnzpAiYiIKKK+OkDe3d29UdI6QGZmZmbr5TpAiYiIaBDxOkBmZmaGmf06QO\u002fu7s4pBDtAVVVV9QEMO0Dv7u5ugRY7QDMzM\u002fP1HztAzczMLNYjO0B3d3dXGyg7QDMzM3PBLjtAvLu7+0M0O0AiIiKC9js7QDMzMzMHPjtAEREREUY+O0C8u7ubhT07QLy7u7tZRjtAZmZmZnNKO0B3d3c3U0k7QHd3d7cWSztAZmZm5hhPO0CrqqpKKk47QBEREXEPUTtA7+7ubpVRO0BEREQERVQ7QDMzM9NBVDtAIiIi4hJXO0AiIiIixVU7QKuqqor4VTtA3t3d3Y9XO0AiIiKiulo7QCIiIgKDWztAq6qqyqJcO0Dv7u6Ohl87QDMzMxMiXjtARERExINfO0AzMzPTFmA7QAAAAACEYjtAd3d3N+FfO0AiIiKiLmI7QFVVVTXDYjtA7+7ujlthO0BmZmYm+2Q7QBEREfGTZztAAAAAoI5mO0CrqqqqPmQ7QAAAAMDVZjtAEREREUZkO0AiIiJCS2Y7QFVVVdWkZztAvLu722ZoO0CJiIiIE2g7QBEREXFGZztAd3d39x9oO0AAAAAg2Gs7QGZmZmasbjtAIiIigsBrO0AAAACgh2o7QImIiMiMaDtAIiIiQpJrO0De3d1912s7QN7d3R0daTtAERERMXlrO0ARERERBWw7QHd3d5dfbDtAERERcfFvO0AiIiJCf207QBEREbHPbjtAERERkRBtO0BVVVX16m07QJqZmbl3bDtARERE5FZtO0B3d3cXlWw7QN7d3X0EbztAvLu7e9xsO0AzMzPToW07QHd3d3eKcDtAZmZmxs1uO0B3d3eXKXE7QO\u002fu7q54bztAREREBLJuO0BVVVXV7m87QM3MzGx3bjtAmpmZObBwO0BERETktnE7QCIiImKTcDtAVVVVtZNwO0De3d192m07QCIiIsJzcztAREREBMhwO0A="},"type":"scatter","xaxis":"x","yaxis":"y"},{"marker":{"color":"#4C78A8","opacity":0.65,"size":8},"mode":"markers","name":"FFHQ Uniform(0.9) per-image","showlegend":false,"x":["FFHQ Uniform(0.9)","FFHQ Uniform(0.9)","FFHQ Uniform(0.9)","FFHQ Uniform(0.9)","FFHQ Uniform(0.9)","FFHQ Uniform(0.9)","FFHQ Uniform(0.9)","FFHQ Uniform(0.9)","FFHQ Uniform(0.9)","FFHQ Uniform(0.9)","FFHQ Uniform(0.9)","FFHQ Uniform(0.9)","FFHQ Uniform(0.9)","FFHQ Uniform(0.9)","FFHQ Uniform(0.9)"],"y":[28.644792556762695,28.354272842407227,28.02973747253418,28.166828155517578,26.390750885009766,27.99139976501465,29.426685333251953,22.571563720703125,26.462080001831055,26.919498443603516,25.431903839111328,27.67583465576172,28.98230743408203,28.84099769592285,27.719627380371094],"type":"scatter","xaxis":"x2","yaxis":"y2"},{"hoverinfo":"skip","line":{"color":"#F58518","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAA4FxqGkAAAABAuJcpQAAAAKDNjjRAAAAAwKrDN0AAAADAcjY5QAAAAECr\u002fTlAAAAA4FtcOkAAAAAgF5U6QAAAACDvpjpAAAAAQAHIOkAAAABAqug6QAAAAIC00zpAAAAAgOffOkAAAABgks06QAAAAGB98TpAAAAAgJoPO0AAAABAfg07QAAAAKCRHjtAAAAAwKQIO0AAAACghRk7QAAAAMBfFjtAAAAAQOYaO0AAAAAgHPc6QAAAAAAyCztAAAAAYCQLO0AAAADA5gc7QAAAAOAzATtAAAAAIH4MO0AAAABAvRs7QAAAAKCnMTtAAAAAQJQcO0AAAAAAyBw7QAAAAKBeGDtAAAAAwFYfO0AAAACAEiU7QAAAAEARMjtAAAAAgLMRO0AAAADgaCM7QAAAAOBUKjtAAAAAIMspO0AAAAAgUxo7QAAAAIDVEjtAAAAA4DMVO0AAAABgxiA7QAAAAMAeKjtAAAAAoO4PO0AAAAAAswc7QAAAAECSFTtAAAAAQGchO0AAAACAIwE7QAAAAIA\u002fJTtAAAAAYJowO0AAAACAsB87QAAAAECu\u002fTpAAAAAgGIIO0AAAADgmg07QAAAACDLFDtAAAAA4DwiO0AAAAAA+B47QAAAAIANPTtAAAAA4MIeO0AAAADg3yY7QAAAAMDLIjtAAAAAwEcUO0AAAACgrRY7QAAAAEB\u002fIjtAAAAAACg3O0AAAADgsjY7QAAAAGB2JztAAAAAIC0sO0AAAACgVEU7QAAAAABaSTtAAAAA4FY8O0AAAACA4zE7QAAAAGBDHDtAAAAAoFohO0AAAAAAnDY7QAAAAACGMztAAAAAwJM0O0AAAAAgzCg7QAAAAKBHNztAAAAA4KlBO0AAAACgrx87QAAAAMBjNDtAAAAA4BI6O0AAAAAA+SE7QAAAAIAFJjtAAAAAwAhCO0AAAABgPTY7QAAAAKCoNTtAAAAAANomO0AAAACAP0Q7QAAAAEBrQztAAAAAoIpVO0AAAACAO0E7QAAAACBCSTtAAAAAQHRPO0AAAACgqj87QAAAAACIQDtAAAAAIIAjO0A="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#F58518","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAQMBvPEAAAAAgkI88QAAAAMBnXD1AAAAAYOyYPUAAAAAgjr49QAAAAKAg2D1AAAAAwArzPUAAAAAAwPY9QAAAAOAXAT5AAAAAoI\u002fxPUAAAABAPfc9QAAAAMCuFD5AAAAAIHkJPkAAAAAAdwE+QAAAAICqCT5AAAAA4CgEPkAAAACASf09QAAAAIAhFj5AAAAAgE0HPkAAAADgCxc+QAAAAODuBj5AAAAAALQZPkAAAAAA8ww+QAAAAICIMT5AAAAAwAkQPkAAAADgHRk+QAAAAGBXCj5AAAAAwPcbPkAAAAAAqTY+QAAAAKDHJj5AAAAAwJgoPkAAAADAuhk+QAAAAGDeIz5AAAAAoPMgPkAAAABgjzU+QAAAAACFJj5AAAAAALQsPkAAAACAPSs+QAAAAEAROj5AAAAAQCdAPkAAAACA4SE+QAAAAKAdHz5AAAAAwKktPkAAAACgLy0+QAAAAAA5JT5AAAAAQHYcPkAAAACA1S4+QAAAAEDNDj5AAAAAQOorPkAAAABAhSk+QAAAAED3Hj5AAAAAgGofPkAAAACgtkY+QAAAAOCxLD5AAAAAYKs4PkAAAAAgsR8+QAAAACCdNT5AAAAAQAQ7PkAAAABg9Uc+QAAAAKDHIj5AAAAAgPIuPkAAAAAAljs+QAAAAOC+Kz5AAAAAQIwvPkAAAACAESM+QAAAAKCWND5AAAAAQGRCPkAAAABAmjU+QAAAAMB5OT5AAAAAIEw5PkAAAABABTo+QAAAAIDYVz5AAAAAgAQ2PkAAAAAAuSU+QAAAAEC0NT5AAAAAYLcwPkAAAACg4So+QAAAAIDKKz5AAAAAgIIoPkAAAABgPS0+QAAAAKA2Ij5AAAAAwDIiPkAAAADgH0E+QAAAAADnPj5AAAAAgDA6PkAAAACgvjo+QAAAAGB5Mz5AAAAAAAg4PkAAAACAWC0+QAAAAIBDKz5AAAAAAL9APkAAAACgkUE+QAAAAACBST5AAAAAgHBGPkAAAAAASFQ+QAAAAEDXPD5AAAAAwD9HPkAAAADAZkI+QAAAAMCJPD5AAAAAwHMuPkA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#F58518","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAYBQIQkAAAACASvBBQAAAAAA3cEJAAAAAQCJ7QkAAAABg84pCQAAAAMBRkkJAAAAA4LicQkAAAAAAe55CQAAAAGCWnEJAAAAAgCiWQkAAAABAuqFCQAAAACA1mkJAAAAAYGmiQkAAAABgIppCQAAAAEAooUJAAAAAAE+kQkAAAADAOqpCQAAAAMBSpUJAAAAA4HWkQkAAAADg4qpCQAAAAEC+pkJAAAAA4CmvQkAAAAAgJKZCQAAAAKDroUJAAAAAoHifQkAAAABgsaJCQAAAAKDtpUJAAAAAYAanQkAAAAAglqZCQAAAAIAJqUJAAAAA4EanQkAAAABA8aVCQAAAACDroUJAAAAA4BGoQkAAAAAAw6VCQAAAAIAXqkJAAAAAgJ2pQkAAAADgaqxCQAAAAICLtUJAAAAAIAKiQkAAAAAgLKdCQAAAAAD4qkJAAAAAIDutQkAAAACAtapCQAAAAACQo0JAAAAAgLSmQkAAAACgqapCQAAAAIBXpUJAAAAAgACpQkAAAADgrKNCQAAAAIBBrEJAAAAA4G2nQkAAAABg\u002fqZCQAAAAADxpUJAAAAAAB6nQkAAAABgzqVCQAAAAKByr0JAAAAAQEqsQkAAAAAAIa9CQAAAACCWp0JAAAAAIF2hQkAAAACA\u002fqxCQAAAAEDzp0JAAAAA4LCqQkAAAACghatCQAAAAGDynkJAAAAAIIehQkAAAACA0p1CQAAAAKDJrUJAAAAAYOamQkAAAAAAk5pCQAAAAOAWpUJAAAAAAOOoQkAAAADgqp9CQAAAAGB+p0JAAAAAwGCgQkAAAAAASqpCQAAAACBZpkJAAAAAQIOmQkAAAADgBalCQAAAAKB\u002fpEJAAAAAQOOmQkAAAADgWKJCQAAAACAor0JAAAAAoHmjQkAAAABgP6VCQAAAAIAVoUJAAAAA4JakQkAAAAAghKdCQAAAAGAdpkJAAAAAYDOlQkAAAAAAAaVCQAAAAIBmo0JAAAAAAIqgQkAAAACAR69CQAAAAEA5qEJAAAAAwA+mQkAAAADAcaVCQAAAAICJq0JAAAAAgOKlQkA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#F58518","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAgF50PEAAAAAglAA8QAAAAEA49TxAAAAAQPMoPUAAAABgIFo9QAAAAICwbz1AAAAA4Gt9PUAAAAAg+Wk9QAAAAEBFhz1AAAAAAJCJPUAAAAAAYZc9QAAAAAATqD1AAAAAoHCNPUAAAADAvK89QAAAAEC5oD1AAAAAICyYPUAAAACAnrI9QAAAACDNsT1AAAAAAJGyPUAAAACgr7o9QAAAAIBPxz1AAAAAQBLTPUAAAABAD8U9QAAAAKDkwT1AAAAAQACyPUAAAABANMI9QAAAAEAP0j1AAAAAwCzWPUAAAACAqsw9QAAAAACZxT1AAAAAgFS2PUAAAAAAj6k9QAAAAACH1D1AAAAAQJLIPUAAAAAAYt49QAAAACAj4z1AAAAAwBrYPUAAAACAF9U9QAAAAMBG3z1AAAAA4OLgPUAAAAAAfwU+QAAAAKAe6T1AAAAAQAncPUAAAADgtsE9QAAAAOCB1z1AAAAAYCrNPUAAAAAABN49QAAAAED65T1AAAAAAE3sPUAAAACgM+k9QAAAAKBr+T1AAAAAwHXcPUAAAADg1Nw9QAAAAADsxj1AAAAAgI7ZPUAAAACAm\u002fs9QAAAAMAOAD5AAAAAAOvfPUAAAADAo+Y9QAAAAIAw7D1AAAAA4IT8PUAAAADAJ949QAAAAOAM8D1AAAAAwFbxPUAAAAAg5989QAAAAEDP0z1AAAAAgEnjPUAAAAAg\u002fOA9QAAAAAA13z1AAAAAACfqPUAAAABgVgY+QAAAAECm9D1AAAAAYBPYPUAAAADA++Y9QAAAAMDm9z1AAAAAQI3zPUAAAAAAhOk9QAAAAKCE+z1AAAAAgEfqPUAAAADgbeI9QAAAAEAe9D1AAAAAYFP+PUAAAAAAN\u002fg9QAAAAMB9Aj5AAAAA4Ar0PUAAAADgAvc9QAAAAMBFDj5AAAAAQHUAPkAAAADgxhU+QAAAACBpAT5AAAAAYMUEPkAAAABAUQg+QAAAAGAZDj5AAAAAAJITPkAAAAAAfQk+QAAAAOCU7T1AAAAAAKgZPkAAAAAAXxQ+QAAAAAAXFz5AAAAAwAkSPkA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"hoverinfo":"skip","line":{"color":"#F58518","width":0.7},"mode":"lines","opacity":0.35,"showlegend":false,"x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"AAAAYKCOQ0AAAADA4upCQAAAAADrDkRAAAAAoDEkREAAAACAsTFEQAAAAEBEJkRAAAAAQEIyREAAAACgHjlEQAAAACDfLURAAAAA4J4wREAAAADAyztEQAAAAMA1QURAAAAAwMM\u002fREAAAABgVUNEQAAAAEDaOkRAAAAAQG4zREAAAABAyD9EQAAAAAAZM0RAAAAA4CJDREAAAADgi0ZEQAAAAGCUP0RAAAAAYHg9REAAAAAA6EBEQAAAAIBBPERAAAAAwMc3REAAAABACzxEQAAAACCQNkRAAAAAoLg\u002fREAAAAAgyS1EQAAAAGBNN0RAAAAAQHguREAAAADgU0JEQAAAAMCtM0RAAAAAwEQ7REAAAADg+TJEQAAAAACWOURAAAAAICU4REAAAAAAwEJEQAAAAGCPO0RAAAAAAGw0REAAAACApSxEQAAAAMCKM0RAAAAAgD4mREAAAAAgwTREQAAAACCqP0RAAAAAANgzREAAAAAAnDNEQAAAAKAKOkRAAAAA4GcuREAAAACAAT5EQAAAACCjNURAAAAAgGUsREAAAAAgZjNEQAAAACChN0RAAAAAYI4tREAAAACATStEQAAAAMDVG0RAAAAAgOkrREAAAAAAoixEQAAAAICFJ0RAAAAAQPQgREAAAACAEC1EQAAAAADwMERAAAAAYPEzREAAAAAgSTdEQAAAAEALN0RAAAAA4II2REAAAACgPDBEQAAAAICZOURAAAAAQGc5REAAAACg4TJEQAAAAIBVLURAAAAAQOQmREAAAAAAZClEQAAAAECbMERAAAAAgMQvREAAAACADjJEQAAAAAAzJERAAAAAwNcrREAAAACAnCZEQAAAAIA\u002fM0RAAAAAAN8nREAAAAAgxy5EQAAAAOBNKkRAAAAAgL4wREAAAAAgPCNEQAAAAEDZKkRAAAAAgIkqREAAAADA1TVEQAAAAACyKERAAAAAgGktREAAAACAxSdEQAAAAKBPK0RAAAAAgEEuREAAAAAgEDtEQAAAAMAcH0RAAAAAgFknREAAAACgyi5EQAAAACDbM0RAAAAAYCsnREA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"line":{"color":"#F58518","width":3},"mode":"lines","name":"ImageNet Irregular (mean of 5)","x":{"dtype":"i1","bdata":"AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4\u002fQEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA=="},"y":{"dtype":"f8","bdata":"MzMzSwa8O0AAAABgRZ08QM3MzOyJLD9AZmZmBgr0P0DNzMxMpC1AQM3MzDx3RUBAmpmZeXpXQEBmZmYmTV1AQM3MzOxrYEBAmpmZKathQECamZnZbmtAQJqZmZmHbUBAZmZmJlFsQEAzMzPDK2xAQGZmZjbKbkBAmpmZmYpvQECamZk58XRAQGZmZsaIdUBAmpmZefh0QEAAAAAQA3tAQGZmZlYgeEBAZmZm5uR8QEBmZmZ2hXVAQAAAAPAYeUBAZmZmtsRyQEBmZmY2eHZAQGZmZmZ1dUBAAAAAENB6QEBmZmaGYXpAQM3MzMyrfEBAMzMzkxl3QECamZmZD3hAQM3MzCwyeUBAMzMzYyd7QEDNzMxc2X1AQGZmZtZOgEBAMzMz8zN8QECamZkpNYBAQM3MzNzJg0BAmpmZWSt\u002fQEAzMzPju31AQDMzM1MCfEBAmpmZaS96QECamZlpD3tAQDMzM2MhfkBAAAAAoN13QEDNzMwsT3tAQAAAAACDekBAmpmZuaR9QEDNzMwc7HtAQM3MzFwkgEBAAAAA8Jx7QEAzMzOzM39AQGZmZtakd0BAmpmZ6f55QEAzMzNTtnpAQM3MzCznfEBAzczMXCh+QEAAAABQgoBAQDMzM+PSfUBAmpmZGRZ7QEAAAACQ335AQM3MzMxvfkBAmpmZuaR+QECamZn5uXxAQM3MzDzje0BAMzMzk0qBQEDNzMyMvX1AQAAAAPB9gUBAzczMjJ+BQEDNzMyMQoNAQM3MzIzehUBAZmZmhsx9QEBmZmZmRXtAQJqZmSlof0BAzczMLGR9QECamZmpXoBAQJqZmYlkfkBAmpmZ+QF+QEBmZmY2+XtAQAAAAOC1f0BAMzMzc\u002fh\u002fQEDNzMwMh39AQM3MzAwShEBAZmZmpqyBQEAzMzPzRH1AQM3MzJz2f0BAZmZmRnqCQECamZnZNIVAQM3MzMz+f0BAmpmZacKBQEAAAADw94NAQM3MzPykhUBAAAAA0LaHQEAzMzOTkYtAQJqZmTk8gEBAZmZmpoSHQEAzMzODSoZAQGZmZmZLiEBAZmZmVs9\u002fQEA="},"type":"scatter","xaxis":"x","yaxis":"y"},{"marker":{"color":"#F58518","opacity":0.65,"size":8},"mode":"markers","name":"ImageNet Irregular per-image","showlegend":false,"x":["ImageNet Irregular","ImageNet Irregular","ImageNet Irregular","ImageNet Irregular","ImageNet Irregular"],"y":[27.138673782348633,30.181453704833984,37.29597473144531,30.07046127319336,40.30601119995117],"type":"scatter","xaxis":"x2","yaxis":"y2"},{"marker":{"color":"#54A24B","line":{"color":"#2C6E2C","width":1.5},"size":15,"symbol":"diamond"},"mode":"markers","name":"paper Table 1 (DiffBCP)","showlegend":true,"x":["FFHQ Uniform(0.9)"],"y":[28.28],"type":"scatter","xaxis":"x2","yaxis":"y2"},{"marker":{"color":"#888","line":{"width":2.5},"size":13,"symbol":"diamond-open"},"mode":"markers","name":"paper best baseline (DeepTensor)","showlegend":true,"x":["FFHQ Uniform(0.9)"],"y":[26.11],"type":"scatter","xaxis":"x2","yaxis":"y2"},{"marker":{"color":"#54A24B","line":{"color":"#2C6E2C","width":1.5},"size":15,"symbol":"diamond"},"mode":"markers","name":"paper Table 1 (DiffBCP)","showlegend":false,"x":["ImageNet Irregular"],"y":[27.02],"type":"scatter","xaxis":"x2","yaxis":"y2"},{"marker":{"color":"#888","line":{"width":2.5},"size":13,"symbol":"diamond-open"},"mode":"markers","name":"paper best baseline (DeepTensor)","showlegend":false,"x":["ImageNet Irregular"],"y":[25.16],"type":"scatter","xaxis":"x2","yaxis":"y2"}], {"template":{"data":{"barpolar":[{"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"white","showlakes":true,"showland":true,"subunitcolor":"#C8D4E3"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"white","polar":{"angularaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""},"bgcolor":"white","radialaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"yaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"zaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"baxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"bgcolor":"white","caxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0.0,0.45],"title":{"text":"Gibbs iteration"}},"yaxis":{"anchor":"x","domain":[0.0,1.0],"title":{"text":"PSNR (dB)"}},"xaxis2":{"anchor":"y2","domain":[0.55,1.0]},"yaxis2":{"anchor":"x2","domain":[0.0,1.0],"title":{"text":"PSNR (dB)"}},"annotations":[{"font":{"size":16},"showarrow":false,"text":"PSNR of the CP reconstruction over Gibbs iterations","x":0.225,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"},{"font":{"size":16},"showarrow":false,"text":"Per-image final PSNR vs Table 1","x":0.775,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"}],"legend":{"font":{"size":10},"orientation":"h","y":-0.2},"margin":{"t":80,"b":90},"height":440,"width":1020,"title":{"text":"Claim 5 reproduction: DiffBCP on FFHQ Uniform(0.9) and ImageNet Irregular"}}, {"responsive": true} ) }; </script> </div>
|
| 210 |
+
</body>
|
| 211 |
+
</html>
|
| 212 |
+
````
|
| 213 |
+
|
| 214 |
+
````raw
|
| 215 |
+
setting,image_index,final_psnr_z_single_sample
|
| 216 |
+
FFHQ Uniform(0.9),0,28.644793
|
| 217 |
+
FFHQ Uniform(0.9),1,28.354273
|
| 218 |
+
FFHQ Uniform(0.9),2,28.029737
|
| 219 |
+
FFHQ Uniform(0.9),3,28.166828
|
| 220 |
+
FFHQ Uniform(0.9),4,26.390751
|
| 221 |
+
FFHQ Uniform(0.9),5,27.991400
|
| 222 |
+
FFHQ Uniform(0.9),6,29.426685
|
| 223 |
+
FFHQ Uniform(0.9),7,22.571564
|
| 224 |
+
FFHQ Uniform(0.9),8,26.462080
|
| 225 |
+
FFHQ Uniform(0.9),9,26.919498
|
| 226 |
+
FFHQ Uniform(0.9),10,25.431904
|
| 227 |
+
FFHQ Uniform(0.9),11,27.675835
|
| 228 |
+
FFHQ Uniform(0.9),12,28.982307
|
| 229 |
+
FFHQ Uniform(0.9),13,28.840998
|
| 230 |
+
FFHQ Uniform(0.9),14,27.719627
|
| 231 |
+
ImageNet Irregular,0,27.138674
|
| 232 |
+
ImageNet Irregular,1,30.181454
|
| 233 |
+
ImageNet Irregular,2,37.295975
|
| 234 |
+
ImageNet Irregular,3,30.070461
|
| 235 |
+
ImageNet Irregular,4,40.306011
|
| 236 |
+
|
| 237 |
+
````
|
| 238 |
+
|
| 239 |
+
|
| 240 |
+
---
|
| 241 |
+
<!-- trackio-cell
|
| 242 |
+
{"type": "markdown", "id": "cell_4d8ebd67eed8", "created_at": "2026-08-02T12:21:35+00:00", "title": "Side observation: convergence speed"}
|
| 243 |
+
-->
|
| 244 |
+
## Side observation: the paper's "faster mixing" claim is visible in the traces
|
| 245 |
+
|
| 246 |
+
The left panel above is our version of the paper's Fig. 3(a). Every chain β FFHQ and ImageNet alike β is within ~0.3 dB of its final PSNR by roughly **iteration 20**, and flat from there through iteration 100. That is consistent with Section 4.3's argument that the low-rank constraint yields an easier posterior and therefore faster mixing.
|
| 247 |
+
|
| 248 |
+
It also means the paper's default of 100 Gibbs iterations with 40 burn-in is conservative for reconstruction quality: the reconstruction metrics have converged long before burn-in ends. (App. D.4 makes the complementary point in the other direction β the *effective CP rank* under CUSP converges much more slowly, which is why the paper extends to 500 iterations for its rank-adaptation study.) A future reproduction on a compute budget could cut the chain substantially for the metric numbers alone; it could not for anything that depends on the rank having settled.
|
| 249 |
+
|
| 250 |
+
The right panel is why the ImageNet cell is reported as inconclusive: the FFHQ points (paper's exact images) straddle the paper's Table 1 diamond, while the ImageNet points sit far above it β a data-provenance gap, not a method gap.
|
| 251 |
+
|
| 252 |
+
|
| 253 |
+
---
|
| 254 |
+
<!-- trackio-cell
|
| 255 |
+
{"type": "markdown", "id": "cell_b6954d8c1e83", "created_at": "2026-08-02T12:33:20+00:00", "title": "Ablation design: PnP-DM at two schedules"}
|
| 256 |
+
-->
|
| 257 |
+
## Ablation design: two PnP-DM configurations, not one
|
| 258 |
+
|
| 259 |
+
Running `sampler.decomposition.use=false` strips the CP block and leaves exactly the plug-and-play split-Gibbs diffusion sampler of [PnP-DM](https://github.com/zihuiwu/PnP-DM-public) (Wu et al., 2024). But the schedule matters enormously here, and getting it wrong would produce a misleading answer.
|
| 260 |
+
|
| 261 |
+
The paper's App. D.5 (Table 5) reports that **PnP-DM's lower clip $\rho_{\min}$ is the difference between winning and collapsing** on this exact cell:
|
| 262 |
+
|
| 263 |
+
| FFHQ Uniform(0.9), posterior-mean | PSNR | SSIM | LPIPS |
|
| 264 |
+
|---|---|---|---|
|
| 265 |
+
| PnP-DM, $\rho_{\min}=0.1$ (**its own default**) | **28.41** | 81.22 | 25.88 |
|
| 266 |
+
| PnP-DM, $\rho_{\min}=0.3$ (DiffBCP's default) | **25.44** | 73.50 | 33.37 |
|
| 267 |
+
| DiffBCP, $\rho_{\min}=0.3$ (its own default) | 28.28 | 81.18 | 28.93 |
|
| 268 |
+
| DiffBCP, $\rho_{\min}=0.1$ | 28.31 | 80.90 | 29.64 |
|
| 269 |
+
|
| 270 |
+
Moving that one constant from 0.3 to 0.1 costs PnP-DM **2.97 dB** and moves DiffBCP by **+0.03 dB**. That is a 100x difference in scheduling sensitivity on the same cell, and it is the clearest empirical support in the paper for the $\tau\rho^2=c$ contribution of [Claim 3](#/claim-3-split-gibbs-sampler-noise-adaptive-coupling). So we run **both** configurations on the same 16 images:
|
| 271 |
+
|
| 272 |
+
- `pnpdm16` β $\rho_{\min}=0.3$ (GPU 0). This is the *unfair* setting for PnP-DM; if it reproduces the collapse, that independently confirms the paper's sensitivity claim.
|
| 273 |
+
- `pnpdm16_rmin01` β $\rho_{\min}=0.1$ (GPU 1). This is PnP-DM's own default and the **fair** comparison against DiffBCP's 28.28 dB.
|
| 274 |
+
|
| 275 |
+
Between them these test two things at once: (i) whether the diffusion prior alone really matches or beats the full hybrid on this cell (the attribution question), and (ii) whether DiffBCP's $\tau\rho^2=c$ schedule genuinely buys robustness that PnP-DM's hand-set schedule does not β the second half of [Claim 3](#/claim-3-split-gibbs-sampler-noise-adaptive-coupling), which the code audit could only confirm as an identity, not as a benefit.
|
| 276 |
+
|
| 277 |
+
|
| 278 |
+
---
|
| 279 |
+
<!-- trackio-cell
|
| 280 |
+
{"type": "markdown", "id": "cell_d7b33e7294d8", "created_at": "2026-08-02T13:35:33+00:00", "title": "Ablation result: DiffBCP vs the diffusion prior alone"}
|
| 281 |
+
-->
|
| 282 |
+
## Ablation result β the diffusion prior alone matches or beats the full hybrid
|
| 283 |
+
|
| 284 |
+
Paired on **all 16 FFHQ images**, same mask, same seed, same checkpoint, same code β the only difference is `sampler.decomposition.use`.
|
| 285 |
+
|
| 286 |
+
| FFHQ Uniform(0.9), posterior-mean | PSNR β | SSIM β | LPIPS β |
|
| 287 |
+
|---|---|---|---|
|
| 288 |
+
| DiffBCP (hybrid: CUSP CP + diffusion) | 27.93 Β± 0.44 | 79.93 Β± 0.82 | 29.82 Β± 0.55 |
|
| 289 |
+
| **PnP-DM** (diffusion only, $\rho_{\min}{=}0.1$) | **28.17 Β± 0.42** | **80.39 Β± 0.70** | **24.85 Β± 0.66** |
|
| 290 |
+
|
| 291 |
+
Because the two methods are scored on the *same* images, the paired differences are far tighter than those standard errors suggest:
|
| 292 |
+
|
| 293 |
+
| paired difference (PnP-DM β DiffBCP) | mean Β± SEM | t | images better |
|
| 294 |
+
|---|---|---|---|
|
| 295 |
+
| PSNR | **+0.238 Β± 0.192** | +1.24 | 11/16 |
|
| 296 |
+
| SSIM | **+0.461 Β± 0.493** | +0.93 | 9/16 |
|
| 297 |
+
| LPIPS | **β4.974 Β± 0.632** | **β7.87** | **16/16** |
|
| 298 |
+
|
| 299 |
+
**Removing the tensor decomposition entirely does not hurt, and helps substantially on LPIPS.** PSNR and SSIM are statistically indistinguishable (|t| < 1.3); LPIPS is decisively better without the CP block, on every single image.
|
| 300 |
+
|
| 301 |
+
This is an independent confirmation of the paper's own Table 3, and the agreement is close: we measure **+0.24 dB** for PnP-DM over DiffBCP where the paper reports **+0.13 dB** (28.41 vs 28.28), and we measure **β4.97 LPIPS** where the paper reports **β3.05** (25.88 vs 28.93). Same sign, same order of magnitude, on a 16-image subsample of the paper's own 128.
|
| 302 |
+
|
| 303 |
+
### What this does and does not show
|
| 304 |
+
|
| 305 |
+
It does **not** falsify Claim 5 β the +2.17 dB over DeepTensor is real and reproduces. It shows that on this cell the gain is **not attributable to the hybrid prior**: the CUSP Bayesian CP block alone gets to 28.10 dB (paper Table 4) and the diffusion prior alone gets to 28.17 dB (measured here), against 27.93 dB for the two combined. The paper's own framing in Section 4.3 β that DiffBCP is "competitive with PnP-DM" and that the CP block buys faster mixing and high-resolution capability rather than raw PSNR β is the accurate one. The claim sentence is not.
|
| 306 |
+
|
| 307 |
+
Where the hybrid *does* pay off, per the paper's Table 4, is on structured masks (+2.09 dB Stripe, +1.70 dB Irregular), which this reproduction did not re-run.
|
| 308 |
+
|
| 309 |
+
<small>The companion $\rho_{\min}{=}0.3$ run (which should reproduce PnP-DM's 2.97 dB collapse) was still queued when this logbook was published; the paper's Table 5 value is used for that row.</small>
|
| 310 |
+
|
| 311 |
+
|
| 312 |
+
---
|
| 313 |
+
<!-- trackio-cell
|
| 314 |
+
{"type": "figure", "id": "cell_fcef15827eec", "created_at": "2026-08-02T13:35:45+00:00", "title": "Paired ablation: does the tensor decomposition help?"}
|
| 315 |
+
-->
|
| 316 |
+
````html
|
| 317 |
+
<html>
|
| 318 |
+
<head><meta charset="utf-8" /></head>
|
| 319 |
+
<body>
|
| 320 |
+
<div style="height:440px; width:1020px;"> <script>window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
|
| 321 |
+
<script charset="utf-8" src="https://cdn.plot.ly/plotly-3.7.0.min.js" integrity="sha256-jvTGqxNp8AGWEcvNLVuKr+8j5dGe9Yw51LQkmDH+IYA=" crossorigin="anonymous"></script> <div id="19b73a66-5831-4328-87d8-3d6a4a4706a1" class="plotly-graph-div" style="height:100%; width:100%;"></div> <script> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("19b73a66-5831-4328-87d8-3d6a4a4706a1")) { Plotly.newPlot( "19b73a66-5831-4328-87d8-3d6a4a4706a1", [{"boxpoints":"all","jitter":0.4,"marker":{"color":"#4C78A8"},"name":"DiffBCP (hybrid prior)","pointpos":0,"showlegend":false,"width":0.5,"y":[29.225116729736328,28.966716766357422,28.7021484375,28.781511306762695,26.91383171081543,28.593219757080078,30.0191650390625,23.034542083740234,26.97425079345703,27.531925201416016,26.013896942138672,28.29206657409668,29.530439376831055,29.434741973876953,28.330671310424805,26.572509765625],"type":"box","xaxis":"x","yaxis":"y"},{"marker":{"color":"#54A24B","line":{"color":"#2C6E2C","width":1.5},"size":14,"symbol":"diamond"},"mode":"markers","name":"paper value","showlegend":true,"x":["DiffBCP (hybrid prior)"],"y":[28.28],"type":"scatter","xaxis":"x","yaxis":"y"},{"boxpoints":"all","jitter":0.4,"marker":{"color":"#F58518"},"name":"PnP-DM rho_min=0.1","pointpos":0,"showlegend":false,"width":0.5,"y":[29.321941375732422,29.292848587036133,29.699100494384766,29.397945404052734,25.447872161865234,28.863393783569336,29.511783599853516,23.78383445739746,28.819866180419922,28.615686416625977,26.419628143310547,28.12579345703125,29.17654037475586,28.981643676757812,28.366682052612305,26.900405883789062],"type":"box","xaxis":"x","yaxis":"y"},{"marker":{"color":"#54A24B","line":{"color":"#2C6E2C","width":1.5},"size":14,"symbol":"diamond"},"mode":"markers","name":"paper value","showlegend":false,"x":["PnP-DM rho_min=0.1"],"y":[28.41],"type":"scatter","xaxis":"x","yaxis":"y"},{"marker":{"color":"#F58518"},"name":"PnP-DM rho_min=0.1","opacity":0.85,"x":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],"y":{"dtype":"f8","bdata":"AAAAAIDJuD8AAAAAWN\u002fUPwAAAAAI5+8\u002fAAAAANS54z8AAAAAknT3vwAAAACIStE\u002fAAAAAHg84L8AAAAANPrnPwAAAACkh\u002f0\u002fAAAAABZX8T8AAAAAgPfZPwAAAABwSMW\u002fAAAAAEim1r8AAAAAkP\u002fcvwAAAAAAcKI\u002fAAAAAED81D8="},"type":"bar","xaxis":"x2","yaxis":"y2"}], {"template":{"data":{"barpolar":[{"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"white","showlakes":true,"showland":true,"subunitcolor":"#C8D4E3"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"white","polar":{"angularaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""},"bgcolor":"white","radialaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"yaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"zaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"baxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"bgcolor":"white","caxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0.0,0.45]},"yaxis":{"anchor":"x","domain":[0.0,1.0],"title":{"text":"PSNR (dB)"}},"xaxis2":{"anchor":"y2","domain":[0.55,1.0],"title":{"text":"image index"}},"yaxis2":{"anchor":"x2","domain":[0.0,1.0],"title":{"text":"ΞPSNR vs DiffBCP (dB)"}},"annotations":[{"font":{"size":16},"showarrow":false,"text":"Per-image PSNR, paired on the same 16 FFHQ images","x":0.225,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"},{"font":{"size":16},"showarrow":false,"text":"Paired difference vs DiffBCP (per image)","x":0.775,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"}],"shapes":[{"line":{"color":"#555","width":1.5},"type":"line","x0":0,"x1":1,"xref":"x2 domain","y0":0,"y1":0,"yref":"y2"}],"legend":{"font":{"size":10},"orientation":"h","y":-0.2},"margin":{"t":80,"b":90},"height":440,"width":1020,"title":{"text":"Does the tensor decomposition help? DiffBCP vs the diffusion prior alone"},"boxmode":"group"}, {"responsive": true} ) }; </script> </div>
|
| 322 |
+
</body>
|
| 323 |
+
</html>
|
| 324 |
+
````
|
| 325 |
+
|
| 326 |
+
````raw
|
| 327 |
+
image,psnr_DiffBCP (hybrid prior),psnr_PnP-DM rho_min=0.1
|
| 328 |
+
00000,29.2251,29.3219
|
| 329 |
+
00001,28.9667,29.2928
|
| 330 |
+
00002,28.7021,29.6991
|
| 331 |
+
00003,28.7815,29.3979
|
| 332 |
+
00004,26.9138,25.4479
|
| 333 |
+
00005,28.5932,28.8634
|
| 334 |
+
00006,30.0192,29.5118
|
| 335 |
+
00007,23.0345,23.7838
|
| 336 |
+
00008,26.9743,28.8199
|
| 337 |
+
00009,27.5319,28.6157
|
| 338 |
+
00010,26.0139,26.4196
|
| 339 |
+
00011,28.2921,28.1258
|
| 340 |
+
00012,29.5304,29.1765
|
| 341 |
+
00013,29.4347,28.9816
|
| 342 |
+
00014,28.3307,28.3667
|
| 343 |
+
00015,26.5725,26.9004
|
| 344 |
+
|
| 345 |
+
````
|
pages/claim-6-ood-high-resolution-2048x2048-table-2/page.md
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
pages/conclusion/page.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Conclusion
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
---
|
| 5 |
+
<!-- trackio-cell
|
| 6 |
+
{"type": "markdown", "id": "cell_52653ed86674", "created_at": "2026-08-02T12:02:02+00:00", "title": "Reproducibility notes"}
|
| 7 |
+
-->
|
| 8 |
+
## Reproducibility notes
|
| 9 |
+
|
| 10 |
+
Practical things that cost time here and would cost the next agent the same.
|
| 11 |
+
|
| 12 |
+
### Environment
|
| 13 |
+
|
| 14 |
+
The repo's `requirements.txt` targets the NGC PyTorch 24.10 container. Reproduced with plain wheels (torch 2.5.1+cu121, Python 3.10). **Install and pin torch first.** Installing the other requirements without pins silently pulled torch 2.13.0+cu130 and left a mixed `nvidia/cu13` + `nvidia/cudnn` tree in `site-packages`; every convolution then failed with `CUDNN_STATUS_NOT_INITIALIZED`. That error is indistinguishable from GPU memory pressure β the first diagnosis here was wrong, and disabling cuDNN "fixed" it at a 7.6x slowdown (55 s/iteration vs 7.2 s/iteration). Rebuilding the venv with torch pinned was the real fix. Numerics were identical either way (same seed β same PSNR to 4 decimals), so cuDNN on/off is a safe fallback if the environment cannot be rebuilt.
|
| 15 |
+
|
| 16 |
+
### Two upstream bugs that block a fresh run
|
| 17 |
+
|
| 18 |
+
Both in [github.com/taozerui/DiffBCP@10d13ac](https://github.com/taozerui/DiffBCP/tree/10d13acc4db9d875edc3d2e22aa9db0f49e93b00), both trivially worked around:
|
| 19 |
+
|
| 20 |
+
1. **`gpu=N` for N > 0 crashes.** `posterior_sample.py:143` hardcodes `.cuda()` (device 0) for the metric tensors while everything else lives on `cuda:{cfg.gpu}`, so any non-zero `gpu=` dies with `Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cuda:1`. Workaround: `CUDA_VISIBLE_DEVICES=N ... gpu=0`.
|
| 21 |
+
2. **`sampler.num_iters < 10` crashes.** `pnp_edm.py:140` computes `i % (self.config.num_iters//10)`, a ZeroDivisionError below 10. This only bites when smoke-testing with a short chain β which is exactly what you want to do first.
|
| 22 |
+
|
| 23 |
+
### Assets and what could not be matched exactly
|
| 24 |
+
|
| 25 |
+
| Asset | Status |
|
| 26 |
+
|---|---|
|
| 27 |
+
| Code | exact commit, unmodified |
|
| 28 |
+
| FFHQ diffusion prior | [kkger/ffhq_10m](https://huggingface.co/kkger/ffhq_10m) β the DPS/PnP-DM checkpoint the paper names |
|
| 29 |
+
| ImageNet diffusion prior | OpenAI [guided-diffusion](https://github.com/openai/guided-diffusion) `256x256_diffusion_uncond.pt`, direct from the official blob URL |
|
| 30 |
+
| FFHQ eval images | **exact** β the id selection in `generate_data.py` is deterministic, so the paper's 128 canonical ids were pulled from [marcosv/ffhq-dataset](https://huggingface.co/datasets/marcosv/ffhq-dataset) |
|
| 31 |
+
| Masks | **bit-identical** β `generate_data.py` is fully seeded; observed fractions verified (0.1000 / 0.3000 / 0.5480 / 0.6761 / 0.6998) |
|
| 32 |
+
| ImageNet eval images | **not matched.** The paper draws 128 files from an `os.walk` over a local val directory; that ordering is unreproducible. Split, count, PRNG, seed and resize preserved; images differ. [ILSVRC/imagenet-1k](https://huggingface.co/datasets/ILSVRC/imagenet-1k) is gated for this account, so [mrm8488/ImageNet1K-val](https://huggingface.co/datasets/mrm8488/ImageNet1K-val) (same 50k val images, ungated) was used |
|
| 33 |
+
| Marseille image | rebuilt from the [Pexels original](https://www.pexels.com/photo/aerial-drone-view-of-urban-buildings-from-top-18644280/) via a reimplementation of [PuTT](https://github.com/sebulo/PuTT)'s `average_pooling`. The 4536β2048 ratio is non-integer, so PIL resampling is **not** equivalent |
|
| 34 |
+
| LPIPS | the VQGAN/taming implementation the paper cites ([CompVis/taming-transformers](https://github.com/CompVis/taming-transformers)), via `taming-transformers-rom1504` |
|
| 35 |
+
|
| 36 |
+
Note the paper's own code feeds $[0,1]$-range images to an LPIPS network that expects $[-1,1]$ (`posterior_sample.py:143` passes `inv_transform` output). This reproduction keeps that behaviour rather than "fixing" it, so the LPIPS numbers are comparable to the paper's.
|
| 37 |
+
|
| 38 |
+
Full recipe: `REPRODUCE.md` in the workspace.
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
---
|
| 42 |
+
<!-- trackio-cell
|
| 43 |
+
{"type": "markdown", "id": "cell_e6286ce8a2da", "created_at": "2026-08-02T12:23:23+00:00", "title": "Overall findings"}
|
| 44 |
+
-->
|
| 45 |
+
## Overall findings
|
| 46 |
+
|
| 47 |
+
Six claims. **Four theory claims reproduce cleanly, one empirical claim reproduces on the cell that can be checked, one is inconclusive for data-provenance reasons, and the high-resolution claim is reported below.** The reproduction used the official implementation at [github.com/taozerui/DiffBCP@10d13acc4db9d875edc3d2e22aa9db0f49e93b00](https://github.com/taozerui/DiffBCP/tree/10d13acc4db9d875edc3d2e22aa9db0f49e93b00) **unmodified**, with the paper's own hyper-parameters.
|
| 48 |
+
|
| 49 |
+
| Claim | Verdict | Basis |
|
| 50 |
+
|---|---|---|
|
| 51 |
+
| **1** β joint model, CUSP + diffusion prior (Eq. 3) | **supported** | all six factors of Eq. 3 located in the code; hybrid structure is real, not a reparameterisation |
|
| 52 |
+
| **2** β Theorem 3.1, CUSP tail shrinkage | **supported** | 60/60 tail checks hold; decay rate matches $\beta/(1+\beta)$ to 2.2eβ16; control breaks the bound when the hypothesis is relaxed |
|
| 53 |
+
| **3** β split Gibbs + $\tau\rho^2 = c$ | **supported** | every conjugate conditional matches an independent autograd re-derivation to ~1eβ16; schedule exact to 1.4eβ14 |
|
| 54 |
+
| **4** β Theorem 3.4, stationary bias | **supported as stated** | Eq. 16 exact to 3.1eβ16 under its compatibility hypothesis β but the hypothesis is load-bearing (see below) |
|
| 55 |
+
| **5** β Table 1 PSNR gains | **supported on FFHQ; inconclusive on ImageNet** | FFHQ Uniform(0.9) within ~1 SEM on the paper's exact images; ImageNet image list not recoverable |
|
| 56 |
+
| **6** β Table 2 high-resolution OOD | **inconclusive** (partial) | 19.65 dB vs the paper's 20.94; but rank halved, 1 seed of 5, 60 iters of 100, and the chain had not plateaued |
|
| 57 |
+
|
| 58 |
+
## Three things a reader should know that the claims do not say
|
| 59 |
+
|
| 60 |
+
**1. The CUSP scale parameter is used inconsistently.** The model declares $\lambda_r \mid \theta_r \sim \mathcal{N}(0,\theta_r)$ β $\theta_r$ is a variance β but Eq. 6 and `cusp_cp.py:349` both *add* $\theta_r$ as a precision, while `_post_sample_theta` updates it as a variance. At the paper's $\theta_\infty = 10^{-3}$ that is a $10^6$ factor in the wrong direction: a component the CUSP prior has decided to shrink receives an essentially flat prior. Automatic rank selection still works, but it is carried by the explicit prune-and-grow step (Remark 3.3 / Algorithm 2), not by the shrinkage in Eq. 6. Theorem 3.1 is a true statement about the prior; the bridge from it to the running sampler is weaker than the narrative implies.
|
| 61 |
+
|
| 62 |
+
**2. Theorem 3.4's hypothesis is where the difficulty lives.** Eq. 16 is an exact identity β verified to 3.1eβ16 β *given* that the inexact chain admits a stationary joint whose conditionals are exactly $\pi_\rho(\Theta\mid\mathscr{Z})$ and $q_\rho(\mathscr{Z}\mid\Theta)$. For an arbitrary learned denoiser that pair is generically **incompatible**: no joint distribution has both as its conditionals. In a control that drops compatibility, Eq. 16's right-hand side missed the true KL by 50β500Γ and **went negative** β a KL cannot β so it is not even a valid bound there. The theorem is correct; its reach into the regime DiffBCP actually operates in is not established.
|
| 63 |
+
|
| 64 |
+
**3. On the cell the headline cites, the hybrid prior is not what earns the gain β and we checked this ourselves.** Claim 5 highlights FFHQ Uniform(0.9): 28.28 dB vs 26.11 dB for DeepTensor, +2.17 dB. The paper's own Table 4 shows DiffBCP **without** the diffusion prior at 28.10 dB β so the learned prior contributes **+0.18 dB** of that +2.17 dB. The paper's own Table 3 shows PnP-DM β the diffusion prior with **no** tensor decomposition at all β at **28.41 dB**, i.e. *higher than the full method*. Each half of the hybrid, alone, is within ~0.2 dB of the whole on this cell. The hybrid does earn its keep on structured masks (+2.09 dB on Stripe, +1.70 dB on Irregular), where low-rank structure cannot fill contiguous holes β but that is not the cell the claim advertises. We ran the PnP-DM side independently on the same 16 images (same mask, seed and checkpoint, `decomposition.use=false`) and measured **+0.238 Β± 0.192 dB PSNR** and **β4.97 Β± 0.63 LPIPS** in PnP-DM's favour, better on **16/16 images** for LPIPS β the same direction and order of magnitude as the paper's Table 3. Both ablations are reported in the paper's appendix, and Section 4.3's framing ("competitive with PnP-DM"; the CP block buys mixing speed and high-resolution capability, not raw PSNR) is accurate. Neither is visible from Table 1 or from the claim sentence.
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
---
|
| 68 |
+
<!-- trackio-cell
|
| 69 |
+
{"type": "markdown", "id": "cell_b98db39c827d", "created_at": "2026-08-02T12:40:58+00:00", "title": "For the next agent"}
|
| 70 |
+
-->
|
| 71 |
+
## For the next agent
|
| 72 |
+
|
| 73 |
+
Ranked by value, given what this reproduction did and did not settle.
|
| 74 |
+
|
| 75 |
+
**1. Settle Claim 6 properly.** This is the biggest open item. It needs a GPU with **β₯ 24 GB** (A10G is enough; the paper used an A100 40 GB) to run the paper's $R{=}500$, 5 seeds, 100 iterations. Also worth resolving directly: the paper reports a **12.5 GB peak** for this configuration (Table 6) and we measure a structural floor of **β₯ 15.6 GiB** for two tensors in `_post_sample_factors` alone. One of those is wrong, or the peak was recorded after CUSP had pruned the rank. Instrumenting `torch.cuda.max_memory_allocated()` around the first Gibbs sweep would answer it in one run. **PuTT also needs to be re-run** β the 19.83 dB comparison point is currently taken on trust.
|
| 76 |
+
|
| 77 |
+
**2. Get the paper's ImageNet image list.** Claim 5's ImageNet cell is unresolvable without it: our draw from the same validation split scores 6.7 dB higher than the paper's, roughly 3.6x the size of the effect being measured. `generate_data.py` walks a local directory, so the list is not recoverable from the repo β it would have to come from the authors. Failing that, running the TD baselines on *our* draw would restore a valid comparison.
|
| 78 |
+
|
| 79 |
+
**3. Re-run the TD baselines.** Every baseline number here is taken from the paper. BCP, BTR, tCTV and GLON are MATLAB; HLRTF and DeepTensor are PyTorch. Verifying even DeepTensor (the strongest, and the one the +2.17 dB is measured against) on the paper's exact FFHQ images would close the loop on Claim 5.
|
| 80 |
+
|
| 81 |
+
**4. Resolve the $\theta_r$ convention.** Worth asking the authors whether Eq. 6 is a typo for $1/\theta_r$ or whether the implementation is intended. If it is a typo, the fix is one character in `cusp_cp.py:349` and the CUSP block would then actually perform the shrinkage Theorem 3.1 describes β which would change the rank-adaptation dynamics (App. D.4, Fig. 4) and possibly the ablation in Table 4. That is a substantive experiment, not a cosmetic fix.
|
| 82 |
+
|
| 83 |
+
**5. Extend the Theorem 3.4 audit toward the real setting.** Our audit shows Eq. 16 is exact under compatibility and fails badly without it, on toy state spaces. What it cannot say is how large the bias actually is for a 93M-parameter score network guiding a 200-component CP model. A tractable middle ground: a moderate-dimensional Gaussian score model where $q_\rho$ is a genuinely trained (hence inexact) network, with the exact $\pi_\rho$ still computable.
|
| 84 |
+
|
| 85 |
+
**What is already settled and need not be redone:** Claims 1β3 (code audit + conditional exactness), Claim 2 and the Eq. 16 identity, and FFHQ Uniform(0.9) for Claim 5. All audit scripts are seeded and deterministic; `REPRODUCE.md` in the workspace has the full environment and data recipe, including the two upstream bugs (`gpu=N` for N>0, and `num_iters<10`) that block a naive first run.
|
pages/executive-summary/page.md
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
pages/index.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Reproduction: Bayesian Tensor Decomposition with Diffusion Model Prior
|
| 2 |
+
|
| 3 |
+
## Pages
|
| 4 |
+
|
| 5 |
+
| Page |
|
| 6 |
+
| --- |
|
| 7 |
+
| [Executive summary](#/executive-summary) |
|
| 8 |
+
| [Claim 1: Joint probabilistic model (CUSP + diffusion prior)](#/claim-1-joint-probabilistic-model-cusp-diffusion-prior) |
|
| 9 |
+
| [Claim 2: Theorem 3.1 β CUSP tail shrinkage](#/claim-2-theorem-3-1-cusp-tail-shrinkage) |
|
| 10 |
+
| [Claim 3: Split Gibbs sampler + noise-adaptive coupling](#/claim-3-split-gibbs-sampler-noise-adaptive-coupling) |
|
| 11 |
+
| [Claim 4: Theorem 3.4 β stationary bias bound](#/claim-4-theorem-3-4-stationary-bias-bound) |
|
| 12 |
+
| [Claim 5: FFHQ / ImageNet inpainting (Table 1)](#/claim-5-ffhq-imagenet-inpainting-table-1) |
|
| 13 |
+
| [Claim 6: OOD high-resolution 2048x2048 (Table 2)](#/claim-6-ood-high-resolution-2048x2048-table-2) |
|
| 14 |
+
| [Conclusion](#/conclusion) |
|
trackio-logo-light.png
ADDED
|
trackio-logo.png
ADDED
|
trackio-wordmark-dark.png
ADDED
|
workspace.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"file_count": 0,
|
| 4 |
+
"total_size": 0,
|
| 5 |
+
"files": [],
|
| 6 |
+
"hub_refs": [
|
| 7 |
+
{
|
| 8 |
+
"url": "https://huggingface.co/kkger/ffhq_10m",
|
| 9 |
+
"type": "Models",
|
| 10 |
+
"label": "kkger/ffhq_10m"
|
| 11 |
+
},
|
| 12 |
+
{
|
| 13 |
+
"url": "https://huggingface.co/datasets/marcosv/ffhq-dataset",
|
| 14 |
+
"type": "Datasets",
|
| 15 |
+
"label": "marcosv/ffhq-dataset"
|
| 16 |
+
},
|
| 17 |
+
{
|
| 18 |
+
"url": "https://huggingface.co/datasets/mrm8488/ImageNet1K-val",
|
| 19 |
+
"type": "Datasets",
|
| 20 |
+
"label": "mrm8488/ImageNet1K-val"
|
| 21 |
+
},
|
| 22 |
+
{
|
| 23 |
+
"url": "https://huggingface.co/datasets/ILSVRC/imagenet-1k",
|
| 24 |
+
"type": "Datasets",
|
| 25 |
+
"label": "ILSVRC/imagenet-1k"
|
| 26 |
+
}
|
| 27 |
+
],
|
| 28 |
+
"reference_only": true
|
| 29 |
+
}
|