SabaPivot's picture
download
raw
31.6 kB
"""Write the trackio logbook pages (markdown only; JSON is never touched here)."""
import datetime
import json
import os
ROOT = "/home/ubuntu/samuel/perfpred-complexity-repro"
PAGES = os.path.join(ROOT, ".trackio/logbook/pages")
NOW = "2026-07-25T04:10:00+00:00"
CLAIMS = {
1: "claim-1-ppad-completeness-at-rho-1-o-eps",
2: "claim-2-hardness-for-quadratic-loss-affine-shift",
3: "claim-3-phase-transition-poly-time-ellipsoid-at-rho-1-o-eps-4",
4: "claim-4-unconditional-2-omega-d-erm-query-lower-bound",
5: "claim-5-ppad-hardness-on-general-convex-constraint-sets",
6: "claim-6-pls-hardness-of-local-optima-in-strategic-classification",
}
TITLES = {
1: "Claim 1: PPAD-completeness at rho <= 1+O(eps)",
2: "Claim 2: Hardness for quadratic loss + affine shift",
3: "Claim 3: Phase transition: poly-time ellipsoid at rho <= 1+O(eps^4)",
4: "Claim 4: Unconditional 2^Omega(d) ERM-query lower bound",
5: "Claim 5: PPAD-hardness on general convex constraint sets",
6: "Claim 6: PLS-hardness of local optima in strategic classification",
}
def cell(kind, title, body, pinned=False, cid=None):
meta = {
"type": kind,
"id": cid or ("cell_%012x" % (abs(hash(title + kind + body[:40])) % (16**12))),
"created_at": NOW,
"title": title,
}
if pinned:
meta["pinned"] = True
meta["pinned_at"] = NOW
return "\n---\n<!-- trackio-cell\n%s\n-->\n%s\n" % (json.dumps(meta), body)
def write(slug, heading, cells):
d = os.path.join(PAGES, slug)
os.makedirs(d, exist_ok=True)
with open(os.path.join(d, "page.md"), "w") as f:
f.write("# %s\n\n" % heading + "".join(cells))
print("wrote", slug)
# ------------------------------------------------------------------ claims
BODIES = {}
BODIES[
1
] = """**Claim (verbatim).** *Theorem 1.2 (restated as Theorem 3.4) proves that computing an
ε-performatively stable point is PPAD-complete even when ρ = Lβ/α ≤ 1 + O(ε), with the explicit
constant ε′ = 0.088/6 ≈ 0.0147 (Section 1.1, Theorem 3.4).*
**Verdict: VERIFIED** (reduction verified executably in both directions; the constant re-derived
from its sources; PPAD-hardness itself is inherited, not executable).
### What is actually executable
PPAD-completeness cannot be run. The executable content of Theorem 3.4 is its reduction: from an
affine VI instance `(A, b)` with `‖A‖₁ ≤ 1`, `‖A‖∞ ≤ 1` (Lemma 3.3, Bernasconi et al. 2024),
build the performative instance `ℓ(x;z) = ½‖x − z‖²`, `D(x) = δ_{g(x)}`,
`g(x) = (I − cA)x − cb` with `c = ε/ε′`. We re-derived and then checked, executably:
| quantity | result |
| --- | --- |
| gap identity `perf-gap(x) = c · VI-gap(x)` for **every** x | 1600 random checks, d ∈ {1,…,100}, max **relative error 4.8e-12** |
| set equality `{ε-stable} = {ε′-VI}` | exhaustive 201×201 grid on [0,1]², 30 instances (1.21M points): **symmetric difference 0** |
| solver round trip (projected extragradient) | 30/30 solved instances satisfy both conditions; Lemma G.1 bound `‖x*−G(x*)‖ ≤ √(ε/α)` holds 30/30 |
| `ρ = Lβ/α = ‖I − cA‖₂ ≤ 1 + c` | **1000/1000** random instances; `A = −I` attains equality exactly (gap 0.0) |
| `‖A‖₂ ≤ √(‖A‖₁‖A‖∞)` (the proof's step) | holds in 1000/1000 |
`α = β = 1` for this loss (Hessian = I), so `ρ = L = ‖I − cA‖₂`, giving `ρ ≤ 1 + ε/ε′ = 1 + 68.18 ε`.
### The constant ε′ = 0.088/6
Recomputed symbolically: `0.088/6 = 0.0146667`, which rounds to the paper's `0.0147`. Its
provenance is **not stated in either cited source** and had to be composed from Bernasconi et al.'s
*proof*:
* Pure-Circuit (Deligkas, Fearnley, Hollender, Melissourgos, JACM 2024), Thm 4.4: ε-Nash in
polymatrix games is PPAD-hard for all `ε < 2√73 − 17 = 0.08800749…`. The paper's 0.088 clears
this strict threshold with **7.5e-6 of margin** — a rounding to 0.0881 would have been false.
* Bernasconi et al. (arXiv:2411.03248 **v1/v2**) set `ρ* = ε*/6`, the /6 being the normalisation
that forces `‖D‖₁, ‖D‖∞ ≤ 1` for a degree-3 graph with `α_ij ∈ [−2,2]`.
* Their own footnote says the constant could be taken larger (their payoffs are unnormalised), so
**0.088/6 is valid but conservative** — the paper understates rather than overstates.
* Citation drift: the cited "Theorem 4.4" exists only in v1/v2; arXiv v3 renumbers it to Thm 3.4.
### Boundary audit of the scaling constant
`pdftotext` collapses the stacked fraction `ε/ε′` in the theorem statement into `εε′`. We settled
the reading executably rather than by eye (and then confirmed it against the rendered PDF): with
`c = ε·ε′` the implied VI accuracy is `ε/c = 1/ε′ = 68.2`, vacuous against the required 0.0147, and
we exhibit a witness point with perf-gap `3.3e-05 ≤ ε = 1e-3` but VI gap **2.27**. Only `c = ε/ε′`
makes the reduction work — as `sympy` confirms by solving `ε/c = ε′`.
### Scale, seeds, limitation
Seed 20260725; d ∈ {1,2,3,5,10,20,25,50,100}; CPU, ~15 s.
**Limitation:** we verify the reduction, not PPAD-hardness. Lemma 3.3 is taken as given, and the
instances we push through the reduction are random affine VIs, not PPAD-hard ones (generating those
is the hard problem itself).
Artifacts: `scripts/claim1_thm34_reduction.py`, `outputs/claim1_thm34_reduction.json`.
"""
BODIES[
2
] = """**Claim (verbatim).** *This PPAD-hardness persists in the simple setting where the loss is
quadratic, ℓ(x;z) = ½||x−z||², and the distribution shift D(x) is given by an affine map g(x)
(Section 3.1, Equation 2-3, Theorem 3.4).*
**Verdict: VERIFIED.**
### Independent method
The specialisation is checked in four independent pieces, symbolically and numerically.
1. **The two losses coincide in x.** The paper's hard class uses `ℓ = ½‖x‖² − xᵀz` (Eq. 2) while
the theorem states `ℓ = ½‖x−z‖²`. `sympy` gives identical gradients and a difference of
`½‖z‖²`, independent of x — same argmin, same stability condition.
2. **α = β = 1 exactly.** Hessian in x is the identity (eigenvalues all 1.0), and
`‖∇ₓℓ(x;z) − ∇ₓℓ(x;z′)‖ = ‖z − z′‖` identically (ratio 1.0 on 2000 random pairs), so β = 1 is
tight. Hence `ρ = L·β/α = L = ‖I − cA‖₂`, verified against a power-iteration estimate of the
Lipschitz constant of g (max relative deviation **2.0e-04**).
3. **The choice of distribution is irrelevant** (the paper's remark after Eq. 3). Replacing the
point mass by `N(g(x), σ²I)`, σ ∈ {0, 0.1, 1, 5}, n = 20000 samples: the argmin of the expected
loss is unchanged to **1.7e-02 (1.2 Monte-Carlo standard errors)** and the W1 sensitivity equals
the mean shift to **8.8e-02 (2.5 s.e.)** — both consistent with exact equality plus sampling
noise, as the Kantorovich dual with a linear test function predicts.
4. **Closed-form stable points.** Unconstrained, `x* = g(x*) ⟺ Ax* = −b`; the closed form
`x* = −A⁻¹b` satisfies `x* = g(x*)` to **1.5e-14** on 20 instances (d = 5).
### Hypomonotonicity of this family
`F(x) = x − g(x) = c(Ax + b)` is σ-hypomonotone with `σ = max(0, −c·λ_min((A+Aᵀ)/2)) ≤ c`,
confirmed for c ∈ {0.01, 0.0682, 0.2, 0.5, 1.0} (5/5), and always inside the Prop. D.6 bound
`σ + σ²/2` (5/5). This is the quantity that Theorem 3.5 exploits, so the two halves of the paper
meet on the same instance family.
### Boundary audit: RRM at, below and above ρ = 1
With `g(x) = −ρx` (Example D.3 generalised), 400 iterations from x₀ = 0.7:
| ρ | measured contraction factor | predicted (Lβ/α) | final distance to x* = 0 |
| --- | --- | --- | --- |
| 0.50 | 0.5000 | 0.50 | 2.7e-121 |
| 0.90 | 0.9000 | 0.90 | 3.5e-19 |
| 0.99 | 0.9900 | 0.99 | 1.3e-02 |
| 1.00 | 1.0000 | 1.00 | 7.0e-01 — **cycles forever** (Example D.3) |
| 1.01, 1.20 | — | — | saturates at the boundary, never converges |
The measured contraction rate equals `Lβ/α` to four decimals, so Perdomo et al.'s rate and the
paper's Proposition 3.8 are reproduced exactly, and the failure at ρ = 1 is reproduced exactly.
**Limitation:** the affine/quadratic specialisation is verified as an instance family; the hardness
of that family still rests on Lemma 3.3.
Seed 20260725, CPU, ~20 s. Artifacts: `scripts/claim2_quadratic_affine.py`,
`outputs/claim2_quadratic_affine.json`.
"""
BODIES[
3
] = """**Claim (verbatim).** *Theorem 3.5 shows a phase transition to tractability: when
ρ ≤ 1 + O_ε(ε⁴), an ε-performatively stable point can be computed in poly(d, log(1/ε)) time via an
ellipsoid-method algorithm exploiting hypomonotonicity (Section 3.1, Theorem 3.5).*
**Verdict: VERIFIED**, with a strictly sharper hypomonotonicity constant than the paper's.
### 1. The algorithm, implemented and timed
We implemented the square-root-form ellipsoid method for the VI on the ℓ₂ ball, with the separation
oracle of Theorem D.1 (`⟨F(x_k), x − x_k⟩ ≤ 0` is valid for every solution when F is monotone).
105 runs over d ∈ {2, 4, 8, 16, 32} × ε ∈ {1e-2 … 1e-8} × 3 seeds, **all 105 reached the target**:
> **iterations = 2.03 · d^1.957 · (log 1/ε)^0.993, R² = 0.992**
against the theoretical `O(d² log(1/ε))`. Both exponents land within 5% of the predicted 2 and 1.
No cut was ever invalid on the monotone instances (0 of ~10⁵).
### 2. The exponent ε⁴, re-derived
Prop. D.6 gives `ε′ = sqrt(2D·sqrt((2+σ)(ε + (σ+σ²/2)D²)))`. `sympy` evaluates
`lim_{ε→0} ε′/ε^{1/4} = 2^{3/4}√D(D²+1)^{1/4}`, finite and non-zero, so `ε′ = Θ(ε^{1/4})` when
σ ≤ ε; inverting for a target accuracy δ yields `ε ~ δ⁴`, i.e. **ρ ≤ 1 + Θ(δ⁴)**. That is exactly
the claim's exponent, obtained independently of the paper's prose.
### 3. The phase transition, measured
40 configurations (rotation angle θ × expansiveness σ, ρ = 1 + σ, d = 4):
* the Prop. D.5 VI certificate holds in **40/40**, the Prop. D.6 fixed-point certificate in **40/40**;
* the certificates scale as **σ^0.51** (VI) and **σ^0.26** (fixed point) versus the predicted ½ and ¼;
* **the mechanism is visible.** The fraction of ellipsoid cuts that cut away the true solution is
**0.00 while the operator is monotone and 1.00 as soon as it is hypomonotone**. At θ = 30° the
operator stays monotone up to σ ≈ 0.155: for σ ≤ 0.1 the achieved fixed-point gap is ~1e-17, and
at σ = 0.3, 0.5, 1.0 it jumps to 3e-17, 1.6e-02, 8.9e-01. At θ = 0° (maximally hypomonotone) the
achieved gap is **1.4·σ for every σ**, from 1.4e-06 at σ = 1e-6 up to 1.2 at σ = 1.
### 4. Sharper constant than the paper
Identity (11) is exact (`sympy`), and it simplifies to `⟨u, u − w⟩`. Its minimum over
`‖w‖ ≤ (1+σ)‖u‖` is attained at `w = (1+σ)u` and equals **−σ‖u‖²**. So `F = id − T` is *exactly*
σ-hypomonotone; the paper's `σ + σ²/2` is valid but loose by σ²/2 (a factor 1.5 at σ = 1). The
theorem holds a fortiori.
### 5. RRM vs ellipsoid at ρ ≥ 1 (the paper's motivating point)
| setting | ellipsoid fixed-point gap | RRM best gap in 5000 iterations |
| --- | --- | --- |
| θ = 90°, ρ = 1.00 | 0.0 (1185 iters) | 7.9e-01 |
| θ = 90°, ρ = 1.01 | 1.6e-17 | 5.7e-01 |
| θ = 90°, ρ = 1.10 | 4.0e-17 | 7.1e-01 |
| θ = 30°, ρ = 1.01 | 6.4e-17 | 2.7e-01 |
ρ > 1 alone does *not* imply intractability — exactly the paper's argument for why Theorem 3.4 is
needed at all.
### Honest negative result
On our instance families the ellipsoid attains accuracy δ ≈ 1.4σ, i.e. it only needs
`ρ ≤ 1 + O(δ)`, far better than the certified `1 + O(δ⁴)`. The paper's bound is a worst-case
guarantee and we could not instantiate a worst case — constructing one is the PPAD-hard problem
itself. This is a limitation of the reproduction, not a contradiction; it mirrors the gap between
Theorem 3.5 and Diakonikolas (2025) that the paper itself flags as open.
Seed 20260725, CPU, ~3 min. Artifacts: `scripts/claim3_ellipsoid_phase.py`,
`outputs/claim3_ellipsoid_phase.json`, `figs/claim3_ellipsoid_phase.png`.
"""
BODIES[
4
] = """**Claim (verbatim).** *Corollary 3.7 establishes an unconditional information-theoretic lower
bound: any algorithm requires 2^Ω(d) expected-risk-minimization (ERM) queries to find an
ε-performatively stable point even when ρ ≤ 1 + O_ε(ε), and even for constant ε (Section 3.1,
Corollary 3.7).*
**Verdict: VERIFIED** (the reduction and the query equivalence are exact; the underlying
Hirsch–Papadimitriou–Vavasis bound is inherited; the empirical probe is labelled **toy**).
### 1. Proposition 3.2 and the query equivalence — the crux
The corollary rests on one observation: an ERM query of the constructed instance is worth exactly
one query of T. With `g(x) = (1−λ)x + λT(x)` and `λ = ε/ε′`, checked over d ∈ {2, 5, 20} and
λ ∈ {1, 0.5, 0.1, 0.01}, 400 random points each:
| check | result |
| --- | --- |
| `‖x − G(x)‖ = λ‖x − T(x)‖` | max error **1.4e-16** |
| `ρ = Lip(g) ≤ 1 + λL` | 12/12 configurations |
| `T(x) = (G(x) − (1−λ)x)/λ` recovered from **one** ERM query | max error **5.6e-15** |
The oracles are therefore information-theoretically equivalent, and the Hirsch et al. bound
transfers with no loss — this is precisely the sentence the corollary rests on, and it is exact.
### 2. What "even for constant ε" means
Theorem 3.6 gives `c((1/ε − 10)L)^{d−2}`. Evaluated symbolically at L = 1:
| ε | 1/10 | 1/11 | 1/12 | 1/20 | 1/100 |
| --- | --- | --- | --- | --- | --- |
| base | 0.000 | 1.000 | **2.000** | 10.0 | 90.0 |
So the bound is `≥ c·2^{d−2} = 2^Ω(d)` exactly when **ε ≤ 1/12**, and is vacuous for ε > 1/11. The
corollary's "even when ε is a constant" is correct, and we pin down which constants: below 1/11.
Combined with Prop. 3.2 this is `ρ ≤ 1 + (ε/ε′)L = 1 + O(ε)`, as claimed.
### 3. Toy probe: how the exponential actually shows up
We built a hidden-path Brouwer family on the grid `{0,…,m−1}^d` (m = 3): a random self-avoiding
path of length ≈ √N, the direction field is the default `+e₁` off the path, so an off-path query is
consistent with every instance that misses that cell. The natural strategy (probe until you hit the
path, then follow it) needs, median over 40 seeds:
| d | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| ERM queries | 4 | 6 | 10 | 19 | 32.5 | 58 | 92.5 | 186.5 |
Fitted: **queries ~ 1.737^d, R² = 0.998**, against the predicted `√m = 1.732`. Exponential in d,
with the predicted base.
**Label: toy.** Blocker: this is our own discrete family with the same information-hiding
mechanism, not the Hirsch–Papadimitriou–Vavasis continuous Brouwer construction, and it measures
the cost of the strategies we implement rather than proving a lower bound over all algorithms. The
unconditional lower bound itself is inherited from Hirsch et al. (1989) and is not re-proved here.
Seed 20260725, CPU, ~40 s. Artifacts: `scripts/claim4_erm_query_lb.py`,
`outputs/claim4_erm_query_lb.json`, `figs/claim4_query_lb.png`.
"""
BODIES[
5
] = """**Claim (verbatim).** *Theorem 3.12 extends PPAD-hardness of performative stability from the
hypercube constraint set to any well-bounded general convex constraint set (Section 3.3,
Theorem 3.12, Definition 3.11).*
**Verdict: VERIFIED, with three defects in the write-up recorded below** (none of which affects
the theorem).
### The whole construction, executed
We implemented Appendix E end-to-end: the equilateral triangle `A₁=(0,0)`, `A₂=(√3,0)`,
`A₃=(√3/2,3/2)` (side √3, circumradius 1, verified); the ε-ThickBrouwer colouring (17) with
ε = 1/8 on the 8×8 grid (n = 3); the nearest-side colouring (18) outside; the bit-extraction circuit
of Algorithm 1 with bounded operations and ramp width 1/L, `L = (k+2)2^{n+1}`; and the k = 16
sampled-colour operator `F(x)`. Direction vectors verified: `a⊥+b⊥+c⊥ = 0` and each is orthogonal
to its side.
Then we brute-force scanned four different well-bounded domains at 400×400, plus a local
refinement:
| domain X | min gap on scan | refined minimum | inside the triangle? | all 3 colours? | conclusion holds for every ε up to |
| --- | --- | --- | --- | --- | --- |
| unit disk (triangle inscribed) | 0.0301 | **3.2e-06** | yes | yes | 0.25 |
| disk R = 1.6 | 0.0463 | **8.8e-06** | yes | yes | 0.50 |
| square (ℓ∞ ball) | 0.0311 | **4.7e-06** | yes | yes | 0.25 |
| irregular 7-gon | 0.0327 | **4.8e-06** | yes | yes | 0.25 |
"Conclusion holds" means: **every** scanned point with VI gap ≤ ε lies inside the triangle *and*
its well-positioned samples carry all three colours — which is exactly what the proof needs to
recover a trichromatic square, and hence a 2D-Sperner solution. It holds far beyond the paper's
ε′ (1/32), and breaks at ε = 0.5, so the boundary is located too.
Supporting checks: **Lemma E.4** (at most two of the k samples poorly positioned) holds with the
observed maximum exactly 2; Sperner's lemma gives 3 trichromatic squares on the grid, all 3 of
which yield a trichromatic triangle; the empirical `Lip(F) = 28.3` with `2ⁿ = 8` gives
`Lip(F/2ⁿ) = 3.5 = O(1)` and `ε″ = ε′/2ⁿ = 2.0e-03 = O(2⁻ⁿ)`, as the rescaling step claims. Both
case bounds of the proof hold on the executed operator with the paper's literal rule (18):
case 1 `max F_x = −0.658 ≤ −0.633`, case 2 `max F_y = −0.398 ≤ −0.313`.
**Corollary 3.13** (the performative version) also checks out: with `g(x) = x + cF(x)` the
performative stability gap equals `c ×` the VI gap to **7.0e-17**.
### Defect 1 — an arithmetic slip in the constant
The proof sets ε = 1/8 and then writes "`k ≥ 16` and `ε′ ≤ ε/8 = 1/32`". But **ε/8 = 1/64, not
1/32**, and the slip is load-bearing for one line: the second case of the proof yields
`(ε/2)((k−2)/(2k) − 2/k) = 0.019531`, which **clears 1/64 = 0.015625 but not 1/32 = 0.03125**.
(Case 1 yields 0.5084 and clears both.) The argument goes through unchanged with ε′ ≤ 1/64; we also
computed the minimal k for which case 2 reaches ε/8: **k ≥ 12**, so the stated k ≥ 16 is fine.
Alternatively the printed 1/32 is consistent if ε = 1/4, contradicting the ε = 1/8 fixed earlier.
### Defect 2 — incompatible coordinates
Definition 3.11 places the inner ball at the origin (`B_{R1}(0) ⊆ X`), and the proof inscribes the
triangle in that ball while *also* setting `A₁ = (0,0)`. Both cannot hold: with A₁ at the origin the
circumcentre is at `(√3/2, 1/2)` and `|A₂| = |A₃| = √3 ≠ 1`. Cosmetic — we work in the paper's
coordinates and put the inner unit ball at the circumcentre.
### Defect 3 — F is not continuous outside the triangle
Rule (18) assigns the colour of the *nearest* side, an argmin, which is discontinuous across the
angle bisectors; the k-sample average of a discontinuous function is still discontinuous. Yet
Remark E.5 asserts F is a well-behaved arithmetic circuit, and the VI (4) needs continuity for a
solution to exist at all. Inside the triangle the bit-extraction ramp does deliver continuity. We
restored it outside by blending the tied sides over a quarter of a grid cell; every blended
direction still points inward, so the argument is unaffected, but the case-1 numerical bound then
loosens from −0.658 to −0.487 (against the printed −0.633).
**Limitation:** the colouring we feed in is a random admissible ThickBrouwer colouring, not the
output of a PPAD-hard 2D-Sperner instance; PPAD-hardness is inherited from Chen & Deng (2009). We
verify that the *reduction* does what the theorem needs.
Seed 20260725, n = 3, k = 16, 4 domains × 400², CPU, ~4 min.
Artifacts: `scripts/claim5_sperner_convex.py`, `outputs/claim5_sperner_convex.json`,
`figs/claim5_sperner_convex.png`.
"""
BODIES[
6
] = """**Claim (verbatim).** *For the special case of strategic classification, Theorem 4.4 shows that
computing a local optimum of the performative risk under single-label updates is PLS-hard,
complementing prior NP-hardness results for global performative optimality (Abstract,
Section 1.1, Theorem 4.4).*
**Verdict: FALSIFIED as proved.** The reduction of Appendix F is **not** solution-preserving: the
instances it produces have strategic local optima that encode no cut at all, and one of them is the
constant classifier `f ≡ 1`, computable in O(1) without looking at the graph. The theorem's
*statement* may still be true — a different reduction could establish it — but it is not
established by this proof. A guard-point repair we tried does not fix it.
### The counterexample (exact, exhaustive, hand-checkable)
Take the graph with a single edge (0,1) of weight 1. The construction gives
`X = {x_{0−}, x_{1−}, x_{e+}, x_{e−}}` with `h = (0,0,1,0)` and weights `(1,1,2,3)`, `M = 7`.
Consider `f ≡ 1`:
| classifier | M·U |
| --- | --- |
| `f ≡ 1` | **2.0** |
| flip `x_{0−}` | 2.0 |
| flip `x_{1−}` | 2.0 |
| flip `x_{e+}` | 2.0 |
| flip `x_{e−}` | 2.0 |
| best classifier | 6.0 |
No single flip improves, so `f ≡ 1` is a strategic local optimum (Definition 4.3). Its vertex
labelling is `(1,1)`, a cut of weight 0, while the max cut is 1 — **not** a local max cut. The
Contestant's best response is unique in every one of these configurations (staying pays 1 for a
1-labelled point; moving pays 1 − 0.8 = 0.2 > 0 for a 0-labelled point with a close 1-labelled
neighbour), so no tie-breaking convention can rescue it — and since all four neighbours attain
*exactly* the same utility, `f ≡ 1` also satisfies Definition 4.3 read literally with equality.
**Why it happens, in general.** When every label is 1 no point deviates (staying pays 1, moving
pays at most 1 − 0.8). Flipping one label to 0 makes that point deviate to any close point still
labelled 1, so `f(Δ(x))` is unchanged and no other point is affected. Hence:
> `f ≡ 1` is a strategic local optimum of **every** instance in which each `h = 0` point has a
> close neighbour — and the construction guarantees exactly that (`x_{v−}` is close to its incident
> `x_{(u,v)+}`, and `x_{(u,v)−}` is close to `x_{(u,v)+}`).
**Where the proof breaks.** Appendix F's first claim says a Jury with `f(x_{(u,v)−}) = 1` gains at
least 1/M by flipping it to 0 "because it ensures that the negative edge point is classified
correctly". That silently assumes `f(x_{(u,v)+}) = 0`. If `f(x_{(u,v)+}) = 1`, the point
strategically deviates to `x_{(u,v)+}` after the flip and is still misclassified: the gain is 0.
### Exhaustive enumeration
Every one of the `2^|X|` classifiers, for 11 graphs (n ≤ 5), with the Contestant's exact best
response — 27 920 classifiers for the published construction and 418 848 for the repair attempt,
**446 768 in total**:
| construction | direction 1 (local opt ⇒ local max cut) | direction 2 (local max cut ⇒ local opt) |
| --- | --- | --- |
| as published | **FAILS on 11/11 graphs** — e.g. on a 4-vertex 4-edge graph, 42 of the 46 strategic local optima are spurious against only 4 local max cuts | holds 11/11 |
| + guard point per edge (our repair attempt) | **still fails** 11/11 | holds 11/11 |
### What does survive
* the cost function is a metric (0 triangle violations, symmetric, zero diagonal);
* the utility identity `M·U(f) = w(cut) + const` on cut-induced classifiers: spread **1.4e-14**;
* Eq. (19)–(20): flipping `x_{(u,v)−}` from 1 to 0 gains exactly `1/M` **when `f(x_{(u,v)+}) = 0`**;
* Eq. (22) and (24): the utility deltas of a vertex flip equal the cut deltas, max error **9.3e-15**;
* the **global** optima are exactly the max cuts, so the paper's remark that the construction
re-proves NP-hardness of global strategic optimality is unaffected.
So the analysis is correct on the sub-family the proof has in mind, and the failure is precisely
that local search is not confined to that sub-family.
### Also: the cost values are not free
The paper says the two cost values may be set to "arbitrary" values in (0,1) and (1,∞). The metric
property forces `c_far ≤ 2·c_close`: 0.8/1.2 and 0.9/1.1 are metrics, while 0.5/1.2, 0.5/1.5 and
0.1/5.0 each produce **40 triangle-inequality violations**. The theorem's "even when c is a metric"
still holds for the chosen 0.8/1.2.
**Limitation:** PLS-hardness itself is inherited from the PLS-completeness of LocalMaxCut
(Schäffer & Yannakakis 1991). We falsify the reduction, not the complexity class statement, and we
did not find a repair.
Seed 20260725, CPU, ~2 min. Artifacts: `scripts/claim6_pls_localmaxcut.py`,
`outputs/claim6_pls_localmaxcut.json`.
"""
for n, slug in CLAIMS.items():
write(slug, TITLES[n], [cell("markdown", TITLES[n], BODIES[n])])
# ------------------------------------------------------------------ index
index = """# Reproduction: On the Computational Complexity of Performative Prediction
## Pages
| Page |
| --- |
| [Executive summary](#/executive-summary) |
"""
for n, slug in CLAIMS.items():
index += "| [%s](#/%s) |\n" % (TITLES[n], slug)
index += "| [Conclusion](#/conclusion) |\n"
with open(os.path.join(PAGES, "index.md"), "w") as f:
f.write(index)
print("wrote index.md")
# ------------------------------------------------------------------ summary
SUMMARY = """Paper: [arXiv:2601.20180](https://arxiv.org/abs/2601.20180) ·
[OpenReview kkhVljGiMS](https://openreview.net/forum?id=kkhVljGiMS) ·
reproduction by [SabaPivot](https://huggingface.co/SabaPivot). No official code release exists
(arXiv listing, ancillary files, GitHub search, Papers-with-Code, Semantic Scholar, alphaXiv and
the authors' pages all checked).
**Outcome: five of the six claims reproduce; the sixth is falsified as proved.** This is a pure
complexity paper — no code, no experiments, 34 pages — so we reproduced the *executable* content:
every reduction was implemented and checked for solution preservation in both directions, every
explicit constant was recomputed from its sources, and the one algorithm in the paper (the
ellipsoid method of Theorem 3.5) was implemented and fitted against its claimed complexity, giving
**iterations = 2.03·d^1.957·(log 1/ε)^0.993 (R² = 0.992)** versus the predicted `d² log(1/ε)`.
Claims 1–5 hold: the Theorem 3.4 reduction satisfies `perf-gap = (ε/ε′)·VI-gap` exactly (symmetric
difference **0** between the ε-stable and ε′-VI sets over 1.21M exhaustively enumerated points), the
constant `ε′ = 0.088/6` traces to `2√73 − 17 = 0.0880075` with 7.5e-6 of margin, one ERM query
recovers `T(x)` to 5.6e-15 so the 2^Ω(d) bound transfers intact, and the full Appendix E
Sperner construction runs on four different well-bounded convex domains with every ε-solution
landing inside the triangle on a trichromatic square. **Claim 6 is falsified:** enumerating all
`2^|X|` classifiers on 11 graphs (446 768 in total) shows the constant classifier `f ≡ 1` is a
strategic local optimum of *every* instance the Appendix F reduction produces, encoding the empty
cut — so the reduction is not solution-preserving and the published proof of PLS-hardness does not
go through. We also found three smaller defects (an ε/8 = 1/32 arithmetic slip that its own case
analysis cannot support, incompatible coordinates in Definition 3.11 vs the proof, and a
discontinuous operator outside the triangle) and one place where the paper is *too conservative*
(F = id − T is exactly σ-hypomonotone, not σ + σ²/2).
## Scope & cost
| Item | Value |
| --- | --- |
| Scope | all 6 claims, independently reproduced from the arXiv PDF; no official code exists |
| Hardware | CPU only (no GPU), 1 machine, numpy + sympy + scipy |
| Compute time | ~11 minutes total across 6 scripts |
| Cost | $0.00 |
| Seeds | 20260725 everywhere |
| Artifacts | 6 scripts, 6 JSON result files, 3 figures |
"""
POSTER_PLACEHOLDER = """````html
<p>poster_embed.html pending</p>
````"""
write(
"executive-summary",
"Executive summary",
[
cell(
"markdown",
"Executive summary",
SUMMARY,
pinned=True,
cid="cell_8c66c9c92879",
),
cell(
"figure",
"Reproduction poster (poster_embed.html)",
POSTER_PLACEHOLDER,
pinned=True,
cid="cell_e15a1c7fda7a",
),
],
)
# ------------------------------------------------------------------ conclusion
CONCLUSION = """### Verdicts
| Claim | Result | Key number |
| --- | --- | --- |
| 1 — Thm 3.4, PPAD-hardness at ρ ≤ 1 + ε/ε′, ε′ = 0.088/6 | **verified** | symmetric difference **0** between the ε-stable and ε′-VI sets over 1.21M grid points |
| 2 — quadratic loss + affine shift | **verified** | α = β = 1 exactly; RRM contraction 0.9900 measured at ρ = 0.99, cycles at ρ = 1 |
| 3 — Thm 3.5 phase transition | **verified** | iterations = 2.03·d^1.957·(log 1/ε)^0.993, R² = 0.992 |
| 4 — Cor 3.7, 2^Ω(d) ERM queries | **verified** (toy probe) | T recovered from one ERM query to 5.6e-15; toy family needs 1.737^d queries (predicted √3 = 1.732) |
| 5 — Thm 3.12, general convex domains | **verified** (3 write-up defects) | refined minimum VI gap 3.2e-06, inside the triangle, trichromatic, on 4/4 domains |
| 6 — Thm 4.4, PLS-hardness | **falsified as proved** | `f ≡ 1` is a strategic local optimum of every produced instance; 446 768 classifiers exhaustively enumerated |
### How to rerun
```bash
hf buckets sync hf://buckets/SabaPivot/repro-perfpred-complexity-artifacts ./perfpred-repro
cd perfpred-repro
python -m venv .venv && .venv/bin/pip install numpy scipy sympy matplotlib
for s in 1 2 3 4 5 6; do .venv/bin/python scripts/claim${s}_*.py; done
```
Every script is CPU-only, seeded with 20260725, writes its own JSON into `outputs/`, and finishes
in under four minutes. `scripts/common.py` holds the shared helpers. Total runtime ~11 minutes.
### What a follow-up should do
The open item is Theorem 4.4. The gadget of Appendix F cannot be rescued by local patching: any
instance in which every `h = 0` point has a close neighbour admits `f ≡ 1` as a strategic local
optimum, and removing that property removes the deviations the reduction is built on. Establishing
PLS-hardness of strategic local optimality needs a construction in which some `h = 0` points are
isolated *and* the cut structure is still forced.
"""
ARTIFACT = """The complete reproduction bundle: 6 scripts, 6 JSON result files, 3 figures, the poster
sources, and the paper PDF.
```
scripts/ common.py, claim1_thm34_reduction.py, claim2_quadratic_affine.py,
claim3_ellipsoid_phase.py, claim4_erm_query_lb.py,
claim5_sperner_convex.py, claim6_pls_localmaxcut.py
outputs/ claim{1..6}_*.json (every number quoted in this logbook)
figs/ claim3_ellipsoid_phase.png, claim4_query_lb.png, claim5_sperner_convex.png
poster/ poster.html, poster.pdf, poster.png, poster_embed.html
paper/ paper.txt (extracted text of arXiv:2601.20180)
```
**Download:** <https://huggingface.co/buckets/SabaPivot/repro-perfpred-complexity-artifacts>
```bash
hf buckets sync hf://buckets/SabaPivot/repro-perfpred-complexity-artifacts ./perfpred-repro
cd perfpred-repro && python scripts/claim1_thm34_reduction.py
```
"""
write(
"conclusion",
"Conclusion",
[
cell("markdown", "Verdicts and rerun instructions", CONCLUSION),
cell("artifact", "Reproduction bundle", ARTIFACT),
],
)
print("done")

Xet Storage Details

Size:
31.6 kB
·
Xet hash:
f5928d2d9fb4f8975295afaf7d88101c7728bd088f0c2ca846572e7287f4342d

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.