Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Metadata
slug: lindblad-guerrero-2025-anderson-symmetry-converse-refutation
bibkey: lindbladguerrero2025anderson
doi: null
url: https://arxiv.org/abs/2512.00278v1
triage: theorem
motivation_gids:
  - D5/S3/Combinatorics/Graph/AndersonSymmetryConverseRefutation.result

A bad Anderson potential without nontrivial shared symmetry

Problem

O. Lindblad and E. Guerrero, Simple Eigenvalues and Non-vanishing Eigenvectors of the Anderson Model, arXiv:2512.00278v1, ask after Theorem 1.3:

Conversely, we also ask whether every bad potential shares a nontrivial symmetry with the laplacian.

Section 4 also states:

In general, we do not know whether the converse of lemma 3.2 is true.

On the cycle with , the source’s operator is Definition 1.1 calls bad when for every real at least one of simple eigenvalues and non-vanishing eigenvectors fails. The target LG-CONV quantifies over every and every taking values in . Issue #13591 fixes nontrivial shared symmetry as a real orthogonal matrix , , commuting with both and . Both sufficient branches of Lemma 3.2 exclude , so refuting this weak reading also refutes their converse. A one-dimensional counterexample is a counterexample to the general-grid question. An affine change , , reparametrizes the coupling and shifts eigenvalues without changing eigenvectors or shared commutants; normalization to therefore represents any two distinct values.

Source clauseLean counterpartFidelity
Simple eigenvaluesbad: ∀ μ : ℂ, H.charpoly.IsRoot μ → H.charpoly.rootMultiplicity μ = 1, with H = (SimpleGraph.cycleGraph L).lapMatrix ℂ + (t : ℂ) • Matrix.diagonal (fun j => (v j : ℂ))Each characteristic-polynomial root has algebraic multiplicity one.

Motivation

The frozen declaration D5/S3/Combinatorics/Graph/AndersonSymmetryConverseRefutation.result refutes LG-CONV using the eight-cycle potential . The converse would identify all bad potentials through shared symmetries and support symmetry-based counting. This example shows a persistent zero in an eigenvector even though every shared commuting matrix is scalar.

Gap

Issue #13591 supplies the verbatim source, the Tier-1 literature assessment, the symmetry convention and the completion criteria. Its exact-title, author and identifier searches report no later proof or refutation in the searched scope. Citation-index coverage is incomplete: ADS returned 405 and Google Scholar returned 429. These are preregistration readings, rather than an exhaustive literature or priority claim. The paper’s prime-cycle theorem does not answer the composite-cycle question.

Route

Put , where is the adjacency matrix of the eight-cycle. For every , set and Then and . Since and , non-vanishing fails at every coupling. The exact finite commutator equations imply whenever and . Orthogonality forces , so there is no shared orthogonal symmetry other than and . The implementation reuses Mathlib’s SimpleGraph.cycleGraph, lapMatrix and Matrix.charpoly; simple spectrum is the inline condition ∀ μ : ℂ, H.charpoly.IsRoot μ → H.charpoly.rootMultiplicity μ = 1.

Falsifier

The refutation targets the literal universal badness predicate and the preregistered exclusion of both scalar symmetries. Allowing would make the symmetry conclusion hold for every potential. A reading of badness requiring failure of both spectral conditions would be a different statement from Definition 1.1. The theorem establishes the eight-cycle counterexample; it does not infer universal badness at other lengths from sampled couplings.

Evidence

The canonical Lean source is D5/S3/Combinatorics/Graph/AndersonSymmetryConverseRefutation.lean. Its settling declaration has type result : ¬ claim; potential_bad and scalar_commutant are used by result, and cycle8_lap is used by scalar_commutant. The public surface consists of nonvanishingEigenvectors, bad, sharedSymmetry, claim and result. The proof uses only pinned Mathlib imports. The computed census and length-nine checks are reproduced below with their full programs.

Triage

Tier 1; proof_shape: content for potential_bad and result; escape_witness: the all-couplings nodal eigenvector in potential_bad, on the live proof path of result; scalar_commutant: proof_shape: bind-only, escape_witness: none, consumer result; admission_basis: open-problem-resolution (#13591; Refuted). The helpers are consumed on the settling proof’s live path. cycle8_lap is a bind-only auxiliary declaration consumed by scalar_commutant. Information-escape registration is paused under CLAUDE.md §3.9.

What the settlement shows

  • Proved in this module: LG-CONV fails at . The witness is bad at every real coupling and has scalar shared commutant, so it admits no nontrivial shared orthogonal symmetry.
  • Computed: for , the census flags symmetry-free bad candidates at , and none at , or . The exact tested scope and numerical thresholds are given below. These finite sampled flags are not proofs of badness for every real coupling.
  • Computed: at , has numerical shared commutant dimension one. At its minimum eigenvalue gap is and its minimum eigenvector-coordinate magnitude is ; the spectrum passes the simplicity threshold while non-vanishing fails the numerical threshold. The same two flags hold at the four census couplings. Uniform badness at remains open here.
  • Proved in this module: the failure mechanism at is a persistent nodal eigenbranch that cannot arise from a nontrivial shared symmetry. A symmetry-free invariant predicting such branches on other composite cycles is open.
  • Proved consequence at : counting only potentials with nontrivial shared symmetries does not exhaust bad potentials in the general composite-cycle setting. This refutation supplies no symmetry-counting upper bound for composite . Proved in the source: the prime-cycle theorem and Theorem 1.3’s probability lower bound stand; their arguments do not require the open converse. They are cited source results, not new theorems of this module.
  • Open: determine exactly which composite admit counterexamples. The kernel-checked case is ; the sampled census suggests and finds no candidate at . Neither a general composite-length classification nor a minimal-length theorem is proved here.

Census computation

Command: python3 census.py; exit code 0. The inline source below is that script, SHA-256 6169bb180bdab2fc88fbf2453b7250f9bf826a0f246e0144601dc94c0b97783d. To reproduce from this dossier, save the code as census.py and run python3 census.py with NumPy 2.2.5. It enumerates every binary vector with for . The sign normalization removes the global-sign duplicate. Badness is tested only at . Simple eigenvalues require the minimum gap to exceed , non-vanishing requires the minimum absolute eigenvector entry to exceed , and the shared-commutant rank uses SVD tolerance . The two count columns are numerical flags.

Flagged bad, Flagged bad with scalar commutant
340
460
5160
6200
7500
87416
914818
101520
113420
12734312

The eight-cycle check reports commutant dimension one. Its eigenvector residuals at are floating-point checks; the all-coupling statement at comes from Lean.

import numpy as np, itertools
from fractions import Fraction
def adj(L):
    A=np.zeros((L,L))
    for i in range(L): A[i,(i+1)%L]=A[(i+1)%L,i]=1
    return A
def commutant_dim(L,v):
    A=adj(L); V=np.diag(v); n=L
    rows=[]
    for M in (A,V):
        # X M - M X = 0, linear in vec(X)
        K=np.kron(np.eye(n),M.T)-np.kron(M,np.eye(n))
        rows.append(K)
    S=np.vstack(rows)
    return n*n-np.linalg.matrix_rank(S,tol=1e-9)
def bad(L,v,ts=(0.37,1.913,-2.71,5.3)):
    A=adj(L); D=2*np.eye(L)-A; V=np.diag(v)
    for t in ts:
        w,U=np.linalg.eigh(D+t*V)
        simple=np.min(np.diff(w))>1e-8
        nonvan=np.min(np.abs(U))>1e-8
        if simple and nonvan: return False
    return True
L=8; v=[1,1,1,1,-1,1,-1,-1]
print('L=8 witness: bad',bad(L,v),'commutant dim',commutant_dim(L,v))
# eigenvector check
for t in [0.3,-1.7,4.2]:
    r=np.sqrt(t*t+2); a=r-t; lam=2+r
    z=np.array([1,0,-1,a,1-a*a,-2*t,1,-a])
    H=2*np.eye(L)-adj(L)+t*np.diag(v)
    print('t',t,'residual',np.max(np.abs(H@z-lam*z)))
# survey: for each L, count bad potentials with scalar commutant (dim 1)
for L in range(3,13):
    cnt=0; badc=0
    for v in itertools.product([1,-1],repeat=L):
        if v[0]==-1: continue
        if bad(L,v):
            badc+=1
            if commutant_dim(L,v)==1: cnt+=1
    print('L',L,'bad (v0=+1)',badc,'bad with scalar commutant',cnt)

Length-nine computation

Command: python3 l9.py; exit code 0. The full source follows, SHA-256 01eaef37251d164606d239265f34969d961551a29c3acccbb53ba3f4d16558d5. Save it as l9.py and run python3 l9.py with NumPy 2.2.5. It tests exactly the five couplings listed in the code, with the same spectral and rank thresholds as the census.

import numpy as np
L = 9
v = np.array([1, 1, -1, 1, 1, -1, 1, -1, -1])
A = np.zeros((L, L))
for i in range(L):
    A[i, (i + 1) % L] = A[(i + 1) % L, i] = 1
V = np.diag(v)
rows = [np.kron(np.eye(L), M.T) - np.kron(M, np.eye(L)) for M in (A, V)]
print("commutant dimension", L * L - np.linalg.matrix_rank(np.vstack(rows), tol=1e-9))
for t in (0.37, 1.913, -2.71, 5.3, 0.731):
    w, U = np.linalg.eigh(2 * np.eye(L) - A + t * V)
    print("t", t, "minimum eigenvalue gap", np.min(np.diff(w)),
          "minimum eigenvector coordinate", np.min(np.abs(U)),
          "simple", np.min(np.diff(w)) > 1e-8,
          "nonvanishing", np.min(np.abs(U)) > 1e-8)
print("numpy", np.__version__)

ASSUMED-UNVERIFIED

The numerical census uses floating-point eigenvectors and SVD ranks; it neither certifies exact rank nor quantifies over all real couplings. The length-nine and length-twelve extensions and the absence of smaller counterexamples have no Lean proof here. The preregistration’s literature search has the citation-index limits stated in Gap; no exhaustive search, priority or model-family diversity is claimed.