Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
195 changes: 195 additions & 0 deletions notes/issue576-wrapping-grounding.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
# Issue #576 — Put the wrapping channel on published ground before the next ladder

Branch: `compute/p576-wrapping-channel-grounding-20260913`
Caller: compute1; resolution pass 2026-09-13 by compute1-retry (second
independent enumerator, spiral-bug diagnosis, divisibility + P_L(p_c) block
health, Pinson values recomputed)

This note covers the three parts of the ticket: (1) validate the main wrapping
channel against the Akhunzhanov–Eserkepov–Tarasevich exact torus polynomials;
(2) compute the Pinson/Arguin continuum wrapping at `r = 1,2,4` and make the
either/or declaration; (3) disambiguate the three distinct `11/4` objects.

## Part 1 — Akhunzhanov–Eserkepov–Tarasevich exact torus wrapping polynomials

### Retrieval (attempt record — honest)
- Paper: R. K. Akhunzhanov, A. V. Eserkepov, Y. Yu. Tarasevich, *Exact
percolation probabilities for a square lattice: Site percolation on a plane,
cylinder, and torus*, J. Phys. A 55, 204004 (2022), arXiv:2204.01517.
- The wrapping polynomials are in the arXiv **ancillary** file `torus.txt`.
- URLs tried (Bash `curl` + WebFetch):
- `https://arxiv.org/abs/2204.01517` — confirms a supplement exists; rendered
text gives no direct download link.
- `https://arxiv.org/src/2204.01517v1/anc/` — ancillary listing; found
`torus.txt`, `cylinder.txt`, `Algorithm2.pdf`.
- `https://arxiv.org/src/2204.01517v1/anc/torus.txt` — **retrieved
successfully** (12,665 bytes; copied to
`results/issue576/wrapping-grounding/raw/torus.txt`).
- IOPscience article page and the arXiv HTML version — no separately
downloadable polynomial file beyond the arXiv ancillary.
- **Outcome: SUCCESS** for the main (NN square site) channel. The paper does
**not** handle the NN+NNN (Sq8) matching lattice, so — as the ticket states —
only the main channel is validated here.

### Format of `torus.txt`
For each `L = 3..12` the file lists integers `c_0..c_{L^2}` where `c_k` is the
number of `L x L` torus site configurations with exactly `k` occupied sites that
wind once around the horizontal (period-1) cycle. The wrapping probability
polynomial is `P_L(p) = Σ_k c_k p^k (1-p)^{L^2-k}`. At `p = 1/2`,
`P_L(1/2) = (Σ c_k)/2^{L^2}`.

### Independent exact enumeration (our own control)
`scripts/exact_wrapping_enum.cpp` brute-forces all `2^(L^2)` configurations for
`L = 2..5` (exact rationals):

| L | count | P_L(1/2) exact | decimal |
|---|-------|----------------|---------|
| 2 | 7 | 7/16 | 0.4375 |
| 3 | 175 | 175/512 | 0.341796875 |
| 4 | 19571 | 19571/65536 | 0.298629760742 |
| 5 | 8853291 | 8853291/33554432 | 0.263848632574 |

**Resolution pass (2026-09-13, compute1-retry).** A second, independent
enumerator was written and run, and the two discrepancies flagged above were
both resolved. The corrected table is:

| L | count (displacement-DSU enum, `exact_wrapping_enum2.cpp`) | published Σ c_k | match |
|---|---|---|---|
| 2 | 7 | — (file starts at L=3) | — |
| 3 | 175 | 175 | YES (per-coefficient) |
| 4 | 19571 | 19571 | YES (per-coefficient) |
| 5 | **8853301** | **8853301** | **YES (per-coefficient, all 26 coefficients)** |

Reachable range: `L ≤ 5` exact (`2^25 = 33,554,432` configs);
`L = 6` (`2^36`) not attempted.

**Resolution of the earlier L=5 "diff 10".** The first enumerator's
doubled-grid criterion ("some doubled-grid component contains both (r,0) and
(r,L) for one row r") is not equivalent to winding: it misses **spiral**
configurations, whose occupied cluster winds in x AND in y simultaneously, so
its lift to the doubled strip contains no same-row `(r,0),(r,L)` pair.
`scripts/exact_wrapping_criterion_diff.cpp` scans all `2^25` configurations and
finds **exactly 10** disagreements, all of the form "DSU says wraps, same-row
doubled criterion says not" — all 10 have 15 occupied sites (inside the c_15
bin) and each is verified (see `gen_issue576_resolution.py`, enforced by
assertion) to wind in both directions. So `8853291 = 8853301 − 10` is fully
explained: **the published polynomial is correct; the first enumerator was
wrong.** The displacement-DSU method (union-find with lattice displacement
potentials, cf. `scripts/matched_torus_reference.py`) is the ground-truth
method and is what `exact_wrapping_enum2.cpp` implements.

### Comparison with the published coefficients (corrected)

| L | published Σ c_k | independent enumeration (enum2) | match |
|---|-----------------|---------------------------------|-------|
| 3 | 175 | 175 | YES |
| 4 | 19571 | 19571 | YES |
| 5 | 8853301 | 8853301 | YES (per-coefficient) |
| 6–8 | parseable, pass divisibility | (enum infeasible) | consistent (see below) |
| 9–12 | parseable, pass divisibility | (enum infeasible) | consistent (see below) |
| 10 | 100 of 101 coefficients in file | — | trailing c_100 = 1 missing from the ancillary file (a truncation; c_N = 1 necessarily, all sites occupied) |

Block health (see `derived/torus_blocks_health.json`,
`scripts/gen_issue576_resolution.py`):

- **The paper proves a divisibility test** (Lemma 1: `c_k` must be divisible by
`L²/gcd(k, L²)` on the torus). **Every parsed block L=3..12 passes it** —
including L=10 with the necessarily-restored trailing 1.
- The earlier claim "L≥9 blocks appear corrupted because P_L(1/2) falls below
the continuum limit 0.1694" is **RETRACTED**. It was a category error:
`P_L(1/2)` is the wrapping probability at `p = 1/2 < p_c`, whose limit is
**0**, not 0.1694 (0.1694… is the critical continuum class-`{1,0}`
probability π({1,0})(i), a different object). The correct published anchor
for this polynomial is the Mertens–Ziff continuum value
`R^v = 0.521058290…` (specified-direction wrapping incl. both, at `p_c`;
the same 0.521058290 appears in Newman–Ziff PRE 64, 016706).
- Evaluated at `p_c = 0.59274605079210`, the published polynomials converge
smoothly and monotonically (from L=4 on) to that anchor:

| L | P_L(p_c) | R^v − P_L(p_c) |
|---|----------|----------------|
| 3 | 0.521273730479 | −0.000215440 |
| 4 | 0.517303557598 | +0.003754732 |
| 5 | 0.517195470567 | +0.003862819 |
| 6 | 0.517834766352 | +0.003223524 |
| 7 | 0.518425696010 | +0.002632594 |
| 8 | 0.518892914782 | +0.002165375 |
| 9 | 0.519253790705 | +0.001804499 |
| 10 | 0.519534108648 | +0.001524181 |
| 11 | 0.519754734224 | +0.001303556 |
| 12 | 0.519930925308 | +0.001127365 |

No corruption anywhere in the file; the only defect is the truncated L=10
block (missing trailing 1). The paper additionally states its L∈[3,7] torus
polynomials match Mertens' (unpublished) polynomials exactly, which covers
the sizes where our independent enumeration cannot reach.

### Relation to the repository's committed wrapping observable
The validated published polynomials `P_L(p)` are the **finite-L** ground truth
for the main (NN square site) wrapping channel at every `p`; the committed
continuum baselines are the `L → ∞` anchors at `p_c` (`R^v = 0.521058290…` for
the P_L-defined event) and the Pinson/Arguin class probabilities. The two are
consistent: `P_L(p_c) → 0.521058…` as the table above shows. The main channel
is therefore on published closed-form ground at all sizes for which a closed
form exists, and the finite-L polynomial and the continuum anchor now check
against each other. The NN+NNN (Sq8) matching channel is out of scope of the
paper and remains unvalidated against it.

## Part 2 — Pinson / Arguin continuum wrapping at r = 1, 2, 4

Used the repository's already-implemented, validated formula
(`scripts/pinson_arguin_primitive.py`, percolation specialization `e0 = 2/3`).
Evaluated `π({1,0})(i·r)` for `r = 1, 2, 4` with two independent evaluations
(direct Gaussian winding sum vs compact theta form) cross-checking each other;
**all three values were recomputed from scratch on the resolution pass and
reproduce exactly** (internal direct–theta agreement now measured at
~1e-110 … 1e-116 at 100 dps):

| r | τ | π({1,0})(τ) | direct–theta abs diff |
|---|---|-------------|----------------------|
| 1 | i | 0.16941543532134688938260796919875445000145337645375 | 4.6e-91 |
| 2 | 2i | 0.50303589769463904028462207879367242007166407775608 | 3.6e-89 |
| 4 | 4i | 0.85596932105387227330836216781610004621209130143655 | 1.1e-90 |

These three numbers are the competitors. Cross-check with Pruessner–Moloney
(cond-mat/0310361): they report their independently computed values agree with
Pinson at `r = 2` to `< 1e-8`. My two independent evaluations of Pinson/Arguin's
published formula agree to `~1e-82 … 1e-90` at `r = 1, 2, 4`, far tighter than
that threshold, so the repository implementation is consistent with
Pinson/Arguin and inherits the Pruessner–Moloney cross-check.

### Either/or decision (required — choosing one)
**Choice: (ii) — explicit non-claim.** The freeze file should declare that the
matching-odd slope is **not** claimed to be the Pinson wrapping, and these three
numbers are explicit non-claims.

Justification:
- These are critical **continuum** `Q=1` Fortuin–Kasteleyn probabilities for the
**primal** (site/bond) homology sector `{1,0}` on a square torus — exact closed
forms, not finite-lattice matching data.
- The matching-odd observable is a **distinct combination** (matching parity, odd
sector) on the NN+NNN (Sq8) lattice, which the Akhunzhanov paper does not cover
and which the Pinson/Arguin formula does not address.
- Asserting equality between the finite-lattice matching-odd slope and the
continuum primal wrapping `π({1,0})` would be an unwarranted identification; the
repository's own interpretation boundary (`notes/pinson-arguin-primitive-baseline.md`)
already states these are continuum exact formulas, not finite-lattice results
and not an H4 identification.
- Therefore these three numbers are recorded as **named non-claims / reference
competitors**, not as the value of the matching-odd slope.

## Part 3 — Three distinct 11/4 objects (do not conflate)

| position | what it is |
|---|---|
| `Ê4(2i)/Ê4(i) = 11/4` | modular weight-4 amplitude ratio — a competitor for the staircase (a different modular quantity in Part 2's neighbourhood) |
| Newman–Ziff estimator `L^{-11/4}` | finite-size convergence rate: `1/ν + θ = 3/4 + 2 = 11/4`, the exponent governing how the estimator approaches `p_c` |
| Mertens–Ziff matching function root `~ L^{-4}` | a third, different exponent (matching-function finite-size scaling), unrelated to the `11/4` above |

These are three different objects that involve the numeral `11/4` (or nearby
exponents). A wrapping estimator that converges as `L^{-11/4}` does **not**
predict, and must not be read as predicting, a spin-4 amplitude ratio equal to
`11/4`. No claim-ledger entry is added for this clarification.

## CI note
Full Matching-One repository CI has not been run for this commit.
43 changes: 43 additions & 0 deletions results/issue576/wrapping-grounding/REPORT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Issue #576 — wrapping channel on published ground

See `notes/issue576-wrapping-grounding.md` for the full report (Parts 1–3).
This REPORT reflects the 2026-09-13 resolution pass (compute1-retry).

## Part 1 — Akhunzhanov–Eserkepov–Tarasevich torus wrapping polynomials
- Retrieved `torus.txt` from arXiv ancillary (https://arxiv.org/src/2204.01517v1/anc/torus.txt).
- Two independent exact enumerations at L=2..5:
- doubled-grid criterion (`exact_wrapping_enum.cpp`): 7, 175, 19571, **8853291**;
- displacement-union-find (`exact_wrapping_enum2.cpp`): 7, 175, 19571, **8853301**.
- **RESOLVED:** the published Σ c_k = 8853301 (L=5) is **correct**; per-coefficient
match at L=3,4,5 against the displacement-DSU enumerator. The doubled-grid
criterion misses exactly **10 spiral configurations** (cluster winds x AND y;
no same-row (r,0),(r,L) pair in the doubled strip; all 10 in the c_15 bin;
listed in `derived/spiral_discrepancy_resolution.json`).
- **RETRACTED:** the earlier "L≥9 blocks appear corrupted" claim. It compared
P_L(1/2) against 0.1694 — a category error, since P_L(1/2) → 0 (p=1/2 < p_c).
Correct anchor: P_L(p_c) → R^v = 0.521058290… (Mertens–Ziff). All blocks
L=3..12 pass the paper's proven divisibility test (c_k ≡ 0 mod L²/gcd(k,L²)),
and P_L(p_c) converges smoothly to 0.521058… (table in the note).
- Only genuine file defect: L=10 block has 100 of 101 coefficients; the missing
trailing coefficient is necessarily c_100 = 1 (truncation, not corruption).
- The main (NN square site) channel is on published closed-form ground; the
finite-L polynomials and the continuum anchors (R^v at p_c, Pinson/Arguin
class probabilities) are mutually consistent. NN+NNN (Sq8) matching remains
out of the paper's scope and unvalidated against it.

## Part 2 — Pinson/Arguin continuum wrapping at r=1,2,4
- π({1,0})(i) = 0.16941543532134688938260796919875445000145337645375
- π({1,0})(2i) = 0.50303589769463904028462207879367242007166407775608
- π({1,0})(4i) = 0.85596932105387227330836216781610004621209130143655
- Recomputed from scratch on the resolution pass; direct vs theta forms agree to
~1e-110…1e-116 at 100 dps. Ratios: 2.9692447842221780796 (r=2), 5.0524872154079183417 (r=4).
- Pruessner–Moloney (cond-mat/0310361) report agreement with Pinson at r=2 to < 1e-8.
- Decision: (ii) explicit non-claim — matching-odd slope is NOT claimed to be Pinson wrapping.

## Part 3 — three distinct 11/4 objects
- Ê4(2i)/Ê4(i) = 11/4 (modular weight-4 amplitude ratio)
- Newman–Ziff L^{-11/4} (finite-size convergence rate, 1/ν+θ = 11/4)
- Mertens–Ziff matching root ~ L^{-4} (third, different exponent)
Not conflated; no claim-ledger entry added.

CI: Full Matching-One repository CI has not been run for this commit.
36 changes: 36 additions & 0 deletions results/issue576/wrapping-grounding/commands.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Issue #576 commands — run from repo root /tmp/c1-wt
PY=/Users/lc/.workbuddy/binaries/python/envs/default/bin/python

# Part 1: retrieve the published torus wrapping polynomials
curl -L https://arxiv.org/src/2204.01517v1/anc/torus.txt -o results/issue576/wrapping-grounding/raw/torus.txt

# Part 1: independent exact enumeration (L=2..5), ~20s in C++
g++ -O2 -std=c++17 -o /tmp/exact_wrapping_enum scripts/exact_wrapping_enum.cpp && /tmp/exact_wrapping_enum

# Part 1: parse + validate + convergence
$PY scripts/torus_wrapping_polynomial_check.py results/issue576/wrapping-grounding/raw/torus.txt

# Part 2: Pinson/Arguin continuum wrapping at tau=i,2i,4i + Part 1b derived JSON
$PY scripts/gen_issue576_derived.py

# --- Resolution pass (compute1-retry, 2026-09-13) ---
# Second independent enumerator: displacement union-find, full polynomial L=2..5
g++ -O2 -std=c++17 -o /tmp/exact_wrapping_enum2 scripts/exact_wrapping_enum2.cpp
/tmp/exact_wrapping_enum2 5 | tee results/issue576/wrapping-grounding/derived/exact_enum2_l2l5.txt

# Locate the configs where the doubled-grid same-row criterion disagrees (10 spirals)
g++ -O2 -std=c++17 -o /tmp/wrap_diff scripts/exact_wrapping_criterion_diff.cpp && /tmp/wrap_diff

# Regenerate resolution artifacts (per-coefficient comparison, divisibility,
# P_L(p_c) vs R^v anchor, spiral list with enforced winding assertions)
$PY scripts/gen_issue576_resolution.py

# Recompute Pinson/Arguin pi({1,0}) at tau = i, 2i, 4i (direct vs theta, 100 dps)
$PY - <<'PY2'
import sys; sys.path.insert(0,'scripts')
import pinson_arguin_primitive as p, mpmath as mp
for r in (1,2,4):
tau = mp.mpc(0, r)
print(r, mp.nstr(p.primitive_probability_direct(1,0,tau,dps=100), 55),
mp.nstr(p.primitive_probability_theta(1,0,tau,dps=100), 55))
PY2
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
L=2 total_wrapping=7 / 2^4
c_k: 0 0 2 4 1
L=3 total_wrapping=175 / 2^9
c_k: 0 0 0 3 18 45 63 36 9 1
L=4 total_wrapping=19571 / 2^16
c_k: 0 0 0 0 4 48 280 1008 2558 4480 5088 3664 1744 560 120 16 1
L=5 total_wrapping=8853301 / 2^25
c_k: 0 0 0 0 0 5 100 1000 6500 30325 107695 302025 678075 1209075 1679925 1788325 1452900 910225 446200 172775 52875 12650 2300 300 25 1
30 changes: 30 additions & 0 deletions results/issue576/wrapping-grounding/derived/exact_enum_l2l5.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"definition": "NN square SITE percolation on L x L torus; horizontal (period-1) winding. Exact brute force 2^(L^2) via scripts/exact_wrapping_enum.cpp (method: double the grid horizontally, detect component containing (r,0) and (r,L)).",
"values": [
{
"L": 2,
"count": 7,
"fraction": "7/16",
"p_half": 0.4375
},
{
"L": 3,
"count": 175,
"fraction": "175/512",
"p_half": 0.341796875
},
{
"L": 4,
"count": 19571,
"fraction": "19571/65536",
"p_half": 0.2986297607421875
},
{
"L": 5,
"count": 8853291,
"fraction": "8853291/33554432",
"p_half": 0.263848632574
}
],
"reachable": "L<=5 exact (2^25 = 33,554,432 configs, ~20s in C++). L=6 (2^36) not attempted."
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"formula": "Pinson 1994 / Arguin 2002 (hep-th/0111193) continuum critical Q=1 FK wrapping probability pi_tau({1,0})",
"coupling_note": "percolation specialization e0=2/3 (Coulomb-gas g such that A=2*pi|u|^2/(3*Im tau)); tau=i*r below",
"values": [
{
"r": 1,
"tau": "1i",
"pi_direct": "0.1694154353213468893826079691987544500014533764537461552",
"pi_theta": "0.1694154353213468893826079691987544500014533764537461552",
"abs_diff_direct_theta": "4.57e-91",
"dps": 80
},
{
"r": 2,
"tau": "2i",
"pi_direct": "0.5030358976946390402846220787936724200716640777560842322",
"pi_theta": "0.5030358976946390402846220787936724200716640777560842322",
"abs_diff_direct_theta": "3.58e-89",
"dps": 80
},
{
"r": 4,
"tau": "4i",
"pi_direct": "0.8559693210538722733083621678161000462120913014365463617",
"pi_theta": "0.8559693210538722733083621678161000462120913014365463617",
"abs_diff_direct_theta": "1.09e-90",
"dps": 80
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"definition": "NN square SITE percolation on the L x L torus; wraps the horizontal (period-1) direction, including configs that also wrap vertically and including spirals. enum2 = scripts/exact_wrapping_enum2.cpp (displacement union-find, independent of the doubled-grid criterion).",
"comparison": {
"2": {
"enum2_sum": 7,
"published_sum": null,
"coefficient_mismatches": null,
"match": null,
"note": "no published block (torus.txt starts at L=3)"
},
"3": {
"enum2_sum": 175,
"published_sum": 175,
"coefficient_mismatches": [],
"match": true
},
"4": {
"enum2_sum": 19571,
"published_sum": 19571,
"coefficient_mismatches": [],
"match": true
},
"5": {
"enum2_sum": 8853301,
"published_sum": 8853301,
"coefficient_mismatches": [],
"match": true
}
}
}
Loading
Loading