- Implemented `2_exact_casimir_projectors.py` to construct exact SO(3) isotypic projectors using the Casimir operator, replacing Monte-Carlo methods. - Created `3_apply_exact_projectors.py` to apply the exact projectors to example states, calculating ||A_j||_* estimates with improved precision. - Developed `4_spherical_basis.py` to build a Condon-Shortley-consistent spherical basis for a single spin-1 leg using ladder operators. - Introduced `6_six_j_recoupling_proof.py` to provide a complete proof of the cut-recoupling formula for full collective SU(2) symmetry, verifying the relationship between reduced blocks A_j^(1) and A_p^(2). - Added a README file to document the execution order and purpose of each script in the symmetric states project. |
||
|---|---|---|
| .. | ||
| dps_hierarchy | ||
| symmetric_states | ||
| cluster.py | ||
| compute_seed_witnesses.py | ||
| core.py | ||
| core2.py | ||
| diagnostic_seeded_run.py | ||
| diagnostic_seeded_run_1.py | ||
| dicker_block_collapse.py | ||
| ghz3_perturbation_symbolic.py | ||
| ghz3_shadow_map_symbolic.py | ||
| grraph_state_cuts.py | ||
| mixture_search.py | ||
| O_seed.npz | ||
| optimize_cluster_witness.py | ||
| optimize_phi_sym.py | ||
| pairwise_correlation_demo.py | ||
| party_blocks.py | ||
| README.md | ||
| sdp_ppt_mixture.py | ||
| seeded_exploration.py | ||
| subblock.py | ||
| sum_bound_proof.py | ||
| symmetry_oracle.py | ||
| tiles_upb.py | ||
| universal_ceiling.py | ||
Reproducibility Scripts
This directory contains small numerical scripts used to reproduce values quoted in the paper. Scripts should be executable from the repository root unless noted otherwise.
Requirements
- Python 3
- NumPy
Install the only current dependency with:
python3 -m pip install numpy
Current Scripts
tiles_upb.py
Computes the two-qutrit Tiles unextendible-product-basis benchmark used in paper/symmetric_shadow_maps_formal.tex. The script uses Gell-Mann generators scaled so that Tr(sigma_i sigma_j) = 3 delta_ij, matching the paper's generator normalization.
Run from the repository root:
python3 scripts/tiles_upb.py
The script constructs the five Tiles UPB product vectors, forms the normalized projector onto their four-dimensional orthogonal complement, and prints:
- the UPB Gram matrix;
- the density-matrix trace, Hermiticity check, and spectrum;
- the partial-transpose spectrum and minimum eigenvalue;
- the shadow-map value
||M_A(rho)||_*, normalized bysqrt((3-1)(3-1)) = 2; - the CCNR/realignment trace norm for comparison.
The values used in paper/symmetric_shadow_maps_formal.tex are:
| quantity | value |
|---|---|
| minimum eigenvalue of partial transpose | -1.5922869149236308e-16 |
| unnormalized correlation nuclear norm | 2.1068432645403345 |
| normalized shadow-map value | 1.0534216322701673 |
| CCNR/realignment trace norm | 1.087412464837521 |
The tiny negative partial-transpose eigenvalue is numerical roundoff; the state is the standard PPT-entangled Tiles UPB state. The paper compares the normalized shadow-map value to the separability bound <= 1.
grraph_state_cuts.py
Computes the cut-resolved bigraduated shadow-map values for the four-qubit ring graph state with edges (1,2), (2,3), (3,4), (4,1). Internally the script uses zero-based qubit labels.
Run from the repository root:
python3 scripts/grraph_state_cuts.py
The script constructs the graph state, computes its Pauli correlation tensor, forms the normalized 2|2 source-target unfoldings, and prints:
- the full normalized nuclear norm
||M_S||_*for each cut; - the normalized full-sector block, obtained by keeping only nonidentity Pauli labels on both source qubits and both target qubits;
- the eigenvalues of the two-qubit source marginal and its distance from the maximally mixed state.
The values used in paper/symmetric_shadow_maps_formal.tex are:
| cut | full normalized norm | normalized full-sector block | source marginal |
|---|---|---|---|
| adjacent `{1,2} | {3,4}` | 5 |
5/3 |
| diagonal `{1,3} | {2,4}` | 7/3 |
1 |
| adjacent `{1,4} | {2,3}` | 5 |
5/3 |
The script also prints raw, unnormalized nuclear norms. The paper compares only the normalized values to the separability bound <= 1.
Adding New Scripts
When adding another script, add a short entry above with:
- the purpose of the script;
- the command needed to run it from the repository root;
- required dependencies beyond NumPy, if any;
- the paper values, table, or figure it reproduces;
- notes about normalization conventions if the output includes both raw and normalized quantities.
Shadow-Map GME-Analyse: Skriptpaket
Alle Skripte aus der Diskussion zu "Symmetric Shadow Maps and Multipartite Correlation Criteria", konsolidiert und bereinigt (keine überholten/fehlerhaften Zwischenversionen). Qubit-Reihenfolge durchgehend (A,B,C,D) = (0,1,2,3).
Grundmodule (werden von allem anderen importiert)
- core.py -- Parametrisierung reiner biseparabler 4-Qubit-Zustände
(
state_1_3,state_2_2,random_pure_state). - core2.py -- schnelle, vektorisierte Berechnung des vollen Pauli-Korrelationstensors
und der Einzelpartei-Shadow-Map (
full_tensor,phi_sym). - cluster.py -- die volle 15×15 bigraduierte Cluster-Shadow-Map
M_Sfür Zwei-Qubit-Quellcluster (cluster_map), plus Tensor-Extraktion für gemischte Zustände. - subblock.py -- der "fully-active" 9×9-Unterblock von
M_S. - party_blocks.py -- rohe Einzelpartei-zu-Einzelpartei 3×3-Korrelationsblöcke.
Kapitel 1: Universelle Sättigungs-Decke (bewiesen)
- universal_ceiling.py -- geschlossene Formel für das globale Maximum von
||M_S||_*über alle Zustände (Cauchy-Schwarz + Spur-Identität), reproduziertsqrt(6),6/sqrt(7),2.19089...(n=3,4,5) und5.0(2-Qubit-Cluster, n=4) exakt.
Kapitel 2: Warum Φ_sym und einzelne M_S keine GME-Zeugen sind
- optimize_phi_sym.py -- zeigt, dass die biseparable Suprema von Φ_sym (2|2- und 1|3-Schnitt) und das globale Supremum über alle Zustände identisch sind.
- optimize_cluster_witness.py -- zeigt dasselbe für einzelne
||M_AB||_*, plus erste (noch zu enge) Suche nachmin(M_AB,M_AC,M_AD)über 1|3-biseparable Zustände. - pairwise_correlation_demo.py -- Exkurs: warum paarweise Korrelationsblöcke ebenfalls kein sauberes Kriterium liefern (Graphzustände haben selbst verschwindende Paar-Blöcke).
Kapitel 3: Der funktionierende GME-Zeuge min(M_AB,M_AC,M_AD)
- mixture_search.py -- Kernstück: exakte geschlossene Form für die
Bell-Paar-Mischungsfamilie (
p=1/2optimal, Wert exakt 3), plus allgemeine Mischungssuchen (2/3/4/6 Komponenten), die alle bei 3.0 landen. - sum_bound_proof.py -- der rigorose Beweis der Schranke
<= 11/3(Summe statt Minimum ist konvex; LP bestätigt, dass Gleichgewichtung optimal für diese Technik ist).
Kapitel 4: SDP-Verschärfung über PPT-Mixtures
Benötigt zusätzlich pip install cvxpy (Solver SCS ist enthalten).
- sdp_ppt_mixture.py -- PPT-Mixture-SDP + alternierendes (Frank-Wolfe-artiges)
Suchschema über duale Zeugen. Wichtig:
order='C'in beidencp.reshape-Aufrufen ist notwendig (Standard-Fortran-Order von cvxpy passt sonst nicht zur row-major Konstruktion vonPT_MATRIX/COEFF). - compute_seed_witnesses.py -- erzeugt
O_seed.npz(optimale duale Zeugen für den bekannten 3.0-Punkt). Vor den beiden folgenden Skripten einmal ausführen. - diagnostic_seeded_run.py -- Sanity-Check: ein einzelner SDP-Schritt mit den
exakten Zeugen des bekannten Punktes muss
t >= 3.0liefern (sonst Implementierungsfehler). - seeded_exploration.py -- Stabilitäts-/Störungstest um den bekannten Punkt herum, über die volle PPT-Mixture-Menge (echte Obermenge der biseparablen Zustände).
Empfohlene Ausführungsreihenfolge
python3 universal_ceiling.py
python3 optimize_phi_sym.py # dauert ~1-2 Minuten
python3 optimize_cluster_witness.py # dauert ~1-2 Minuten
python3 pairwise_correlation_demo.py
python3 mixture_search.py # die Mischungs-Optimierungen sind langsam (Powell
# skaliert schlecht mit der Parameterzahl) --
# einzelne Restarts können 1-2 Minuten dauern
python3 sum_bound_proof.py
# für Kapitel 4 (SDP):
pip install cvxpy
python3 compute_seed_witnesses.py
python3 diagnostic_seeded_run.py
python3 seeded_exploration.py
Status der zentralen Vermutung
- Bewiesen:
min(M_AB,M_AC,M_AD) <= 11/3für jeden biseparablen Zustand. - Numerisch sehr robust (mehrere unabhängige Methoden, inkl. SDP über die größere
PPT-Mixture-Menge), aber nicht formal bewiesen: die wahre Schranke ist exakt
3.0.