From 8e4263f632a6b6b45a9ed7e4d10d0443bf6b4c5f Mon Sep 17 00:00:00 2001 From: Hans Aschauer Date: Tue, 11 Aug 2026 14:15:54 +0200 Subject: [PATCH] feat: add U(1) example script for nuclear norm calculations and corrections --- .../symmetric_states/9_check_u1_example.py | 36 +++++ scripts/symmetric_states/README.md | 138 +++++++++++++++++- 2 files changed, 173 insertions(+), 1 deletion(-) create mode 100644 scripts/symmetric_states/9_check_u1_example.py diff --git a/scripts/symmetric_states/9_check_u1_example.py b/scripts/symmetric_states/9_check_u1_example.py new file mode 100644 index 0000000..3859eac --- /dev/null +++ b/scripts/symmetric_states/9_check_u1_example.py @@ -0,0 +1,36 @@ +import numpy as np + +X=np.array([[0,1],[1,0]],dtype=complex); Y=np.array([[0,-1j],[1j,0]],dtype=complex); Z=np.array([[1,0],[0,-1]],dtype=complex) +I=np.eye(2,dtype=complex) +paulis={'I':I,'X':X,'Y':Y,'Z':Z} + +def state(phi): + psi = np.zeros(16, dtype=complex) + psi[0b0011] = np.cos(phi) + psi[0b1100] = np.sin(phi) + return psi + +def kron4(a,b,c,d): + return np.kron(np.kron(np.kron(a,b),c),d) + +def corr(rho, labels): + O = kron4(*[paulis[l] for l in labels]) + return np.trace(rho@O).real + +for phi_deg in [10, 40, -10, -40, 100, 130, 200]: + phi = np.deg2rad(phi_deg) + psi = state(phi) + rho = np.outer(psi, psi.conj()) + # build the 9x9 raw M_AB block (source AB active, target CD active) and get its true nuclear norm + axes = [X,Y,Z] + M = np.zeros((9,9)) + for ia in range(3): + for ib in range(3): + for ic in range(3): + for id_ in range(3): + O = kron4(axes[ia],axes[ib],axes[ic],axes[id_]) + M[3*ia+ib, 3*ic+id_] = np.trace(rho@O).real + nn_true = np.linalg.svd(M, compute_uv=False).sum() / 3.0 # normalize by sqrt(3*3)=3 + pred_with_abs = 1/3 + 4/3*abs(np.sin(2*phi)) + pred_no_abs = 1/3 + 4/3*np.sin(2*phi) + print(f"phi={phi_deg:+4d} deg: true ||M||_*={nn_true:.6f} pred_with_abs={pred_with_abs:.6f} pred_no_abs={pred_no_abs:.6f}") \ No newline at end of file diff --git a/scripts/symmetric_states/README.md b/scripts/symmetric_states/README.md index 475c6a7..b8c1716 100644 --- a/scripts/symmetric_states/README.md +++ b/scripts/symmetric_states/README.md @@ -115,4 +115,140 @@ Gram-Matrix-Konditionszahl 2 (linear unabhaengig), Haar-zufaellige hermitesche PSD-Koeffizientenmatrix voller Rang. Ergebnis: Fehler 1.1e-16 zwischen Brute-Force- und Template-basierter Korrelationstensor-Berechnung, an BEIDEN Schnitten gleichzeitig, ohne erneute Simulation. -Ist jetzt Corollary real-tensor-count + Example general-r-three im .tex. \ No newline at end of file +Ist jetzt Corollary real-tensor-count + Example general-r-three im .tex. + +## Nachtrag: Review-Feedback eingearbeitet +Ein externes Review (Team-Notiz) wurde gegen die bereits im Projekt vorhandenen +Skripte (01_double_collapse_table.py, 02_subsector_multiplicity_example.py, +shadow_su2_common.py) geprüft und folgende Punkte behoben: + +1. **Vorzeichen-Fehler in Example dicke-network**: A_1=-1/3, A_3=-2 (nicht + +1/3,+2 wie zuvor). Ursache identifiziert: die Sitzung hatte nur ||A_j||_* + (Kernnorm, stets >=0) berechnet, nie das tatsächlich signierte A_j. +2. **m=4,5-Verallgemeinerung** ergaenzt (neues Remark dicke-network-general-m): + exakte Werte, Vorzeichenmuster (-1)^m und Verhaeltnis A_m/A_{m-2}=2m, + explizit als verifiziertes Muster (nicht hergeleitete Formel) markiert. +3. **Teilsektor-Beispiel V⊊S ergaenzt** (neues Example subsector-multiplicity, + n=8 Qubits): erstes Beispiel im Paper mit echt nicht-skalarer, + nicht-Identitaets A_j-Matrix (3x3, Rang 1). Das exakte Verschwinden von + A_2, A_0 wird explizit als unverstanden/offen markiert. +4. **BibTeX-Audit**: systematische Pruefung (Python-Skript, nicht nur + visuelle Kontrolle) ergab: alle 20 tatsaechlich verwendeten \cite-Keys + loesen sich in meiner Kopie sauber auf; die vom Review gemeldeten 7 + fehlenden Eintraege reproduzieren sich hier nicht. Als Robustheits-Fix + trotzdem: zwei Nicht-ASCII-BibTeX-SCHLUESSEL (nicht Feldwerte) umbenannt + (novomorodergühne2013 -> novomoroderguhne2013, bergmanngühne2013 -> + bergmannguhne2013), da nicht-ASCII-Zeichen in BibTeX-Keys ein bekanntes, + locale-abhaengiges Fragilitaetsrisiko sind -- unabhaengig von der + tatsaechlichen Ursache des Review-Befunds. +5. **Theorem/Proof-Praezisierung** fuer thm:six-j-recoupling: nicht + herabgestuft zu "Conjecture" (die Aussage ist fuer den konkreten + Sechs-Qubit-Fall durch erschoepfende exakte symbolische Fallpruefung + tatsaechlich vollstaendig bewiesen, nicht nur numerisch beobachtet), + aber Beweis und Remark komplett umstrukturiert, um praezise zu trennen: + (a) was allgemein-repraesentationstheoretisch bewiesen ist (Schritt 1, + fuer beliebige p,y,j), (b) was durch erschoepfende exakte Fallpruefung + bewiesen ist (Schritt 3, Xi-Summe, deckt buchstaeblich JEDEN im Theorem + vorkommenden Fall ab), (c) was numerisch (nicht exakt-symbolisch, aber + erschoepfend) verifiziert ist (Schritt 2, Konjugationsphase), und (d) + was tatsaechlich offen bleibt (Verallgemeinerung auf m>3; allgemeine + n_ℓ-Induktion; Anschluss an eine zitierfaehige Lehrbuch-6j-Formel). + +Nicht unilateral entschieden: die Frage, ob der SU(2)-Abschnitt (~300 von +1590 Zeilen, ca. 19%) in ein eigenes drittes Paper ausgelagert werden sollte, +ist eine redaktionelle Entscheidung und wird dem Team zur Diskussion +vorgelegt statt vorwegzunehmen. + +## Nachtrag: zweites (aelteres) Review eingearbeitet +Ein detailliertes, mathematisch tiefes Review (bezog sich laut Nutzer nicht +auf die aktuellste Fassung) wurde Punkt fuer Punkt geprueft. Behoben: + +1. **Reelles vs. komplexes/quaternionisches Schur-Lemma** (Frobenius- + Klassifikation): Proposition block-diagonal und Proposition + reduced-formula gelten in der zitierten Form nur fuer real-type + Irreps (End_G(V)=R, nicht C oder H). Neues Remark real-schur erklaert + dies und bestaetigt, dass alles in diesem Paper (Ganzzahlspin-SO(3), + Permutationsdarstellungen) automatisch real-type ist -- keine + Einschraenkung fuer die tatsaechlichen Resultate, aber die allgemeine + Propositions-Formulierung war zuvor unvollstaendig. +2. **U(1)-Beispiel, negative Singulaerwerte**: echter Fehler, numerisch + verifiziert (9_check_u1_example.py). Formel korrigiert zu + 1/3 + 4/3|sin(2phi)|, gilt jetzt fuer alle phi, nicht nur [0,pi/2]. +3. **Stabilisator-Gruppendefinition**: H als reiner F_2-Vektorraum legt + die Vorzeichen der Stabilisator-Erzeuger nicht fest. Neue, explizite + Vorzeichenfunktion s:H->{±1} mit Kozykel-Bedingung eingefuehrt; Lemma + code-support entsprechend korrigiert (Tr[rho_H sigma_i]=s(i), nicht + pauschal 1); neues Remark sign-independence zeigt, dass die + Entartungs-KONKLUSION von Lemma stabilizer-degeneracy unabhaengig von + der Vorzeichenwahl ist (nur Betraege werden benutzt). +4. **Cut-independent templates**: Injektions-Behauptung war nur fuer den + VOLLEN Tensor (mit Identitaetsbeinen, wie Hauptpapier-Konvention C(rho)) + korrekt, nicht fuer den nur-aktiven Sektor. Proposition + coherence-templates und Corollary real-tensor-count jetzt konsistent + auf den vollen Tensor umgestellt (per Nutzer-Bestaetigung: Hauptpapier + nutzt ueberwiegend den vollen Tensor). +5. Kleinere Praezisierungen: HS-Normierungskonvention explizit gemacht + (Definition bigraduated); "operator norm" -> vollstaendige + Submultiplikativitaets-Kette fuer Corollary sub-block; Frechet- statt + pauschale Differenzierbarkeit; "only singular value" -> "only NONZERO + singular value"; explizite CG-Formel fuer die Spin-3/2-Singulett- + Konvention im doppelt-symmetrischen Beispiel ergaenzt. + +Nicht (nochmals) veraendert: die sechs-j-Theorem/Proof-Struktur wurde +bereits im vorherigen Durchgang praezisiert (siehe vorheriger Nachtrag); +dieses Review bezog sich auf eine Fassung vor jener Ueberarbeitung. + +## Nachtrag 2: Zwei weitere Reviews eingearbeitet (nicht blind übernommen) + +### Review A (27 Punkte, math. Korrektheit) +Geprüft und tatsächlich behoben (nach eigener Verifikation, nicht auf +Zuruf): +- U(1)-Formel: Singulaerwerte koennen nicht negativ sein -> |sin(2phi)| + ergaenzt (numerisch verifiziert, echter Fehler). +- Reelles vs. komplexes/quaternionisches Schur-Lemma: Proposition + block-diagonal und reduced-formula auf real-type-Faelle beschraenkt, + neues Remark real-schur ergaenzt (SO(3): automatisch ok; U(1) im + Haupttext bereits korrekt ueber Gewichtsraeume umgangen). +- Cut-independent templates: Injektions-Behauptung war fuer den + "all-active"-Tensor falsch -> nach Rueckmeldung auf den VOLLEN + Bloch-Tensor (mit Identitaets-Beinen, wie im Hauptpaper ueblich) + umgestellt, dort stimmt sie exakt (Standard-Linearalgebra). +- Sub-block witnesses: "operator norm" -> praezise Submultiplikativitaets- + Kette (nuclear norm via operator-norm-Kontraktion). +- Stabilizer-Setup: H als reiner F_2-Vektorraum legt Vorzeichen nicht + fest -> Sign-Funktion s:H->{+-1} explizit eingefuehrt, Lemma + code-support entsprechend korrigiert, neues Remark zeigt: die + Entartungs-KONKLUSION (Lemma stabilizer-degeneracy) ist + vorzeichenunabhaengig (nur Betraege werden benutzt). +- HS-Normierung explizit geklaert (Definition bigraduated). + +Bewusst NICHT uebernommen: Herabstufung von Theorem six-j-recoupling zu +"Conjecture" -- die Aussage ist fuer den behandelten Sechs-Qubit-Fall +durch erschoepfende exakte Fallpruefung tatsaechlich vollstaendig +bewiesen (siehe Remark six-j-scope), keine Vermutung. + +### Review B (Referee-Stil, fokussiert) +- **Echter Fehler bestaetigt und behoben**: Corollary + nuclear-norm-first-order. Gegenbeispiel diag(1,eps) nachgerechnet: + ||M(eps)||_* = 1+|eps|, nicht differenzierbar bei 0, obwohl sigma_0=1 + der einzige NICHTVERSCHWINDENDE Singulaerwert ist. Korrigiert: die + Hypothese verlangt jetzt explizit, dass ALLE Singulaerwerte gleich + sigma_0>0 sind (keine Nullsingulaerwerte vorhanden), mit expliziter + Warnung inkl. desselben Gegenbeispiels im Text. +- Wichtiger, unabhaengig bestaetigter Punkt: reelle 2-dim U(1)-Darstellung + ist komplexen Typs (End=C, nicht R) -- mein vorheriges Remark hatte + "automatic throughout" faelschlich auch fuer U(1) behauptet; jetzt + praezise: SO(3)/Permutation = real type automatisch, U(1) = komplexer + Typ, aber im Haupttext korrekt ueber Gewichtsraeume umgangen (nicht + ueber die reelle Wigner-Eckart-Formel). +- "fully proved" in Abstract UND Introduction abgeschwaecht zu einer + praezisen Formulierung (allgemein bewiesen bis auf eine erschoepfend + und exakt fuer den Sechs-Qubit-Fall verifizierte endliche Identitaet), + da beide Reviews unabhaengig denselben internen Widerspruch zur + Remark six-j-scope monierten -- berechtigt, auch wenn ich am + Theorem-Status selbst festhalte. +- 6/sqrt7 im Abstract als Wert des Ein-Partei- (1|3-) Schnitts + praezisiert (war zuvor mehrdeutig zwischen "jedem Schnitt" lesbar). + +Bewusst NICHT uebernommen: Downgrade des sechs-j-Theorems (siehe oben, +gleiche Begruendung wie bei Review A). \ No newline at end of file