Dashboard Core — Wormhole (Traversable-Wormhole Teleportation)¶
Traversable-wormhole-inspired quantum teleportation (Gao-Jafferis-Wall
theory), via a binary sparse Sachdev-Ye-Kitaev (SYK) model — the real
protocol backing Composer's "traversable-wormhole-inspired teleportation"
panel and the MCP server's wormhole tools. Built on
dense_evolution.fermions (majorana_pauli_terms) and
dense_evolution.entropy (mutual_information), the
protocol's actual readout quantity.
wormhole ¶
Traversable-wormhole-inspired quantum teleportation (Gao-Jafferis-Wall theory), via a binary sparse Sachdev-Ye-Kitaev (SYK) model -- the real protocol from arXiv:2604.10090 ("Quantum simulation of traversable-wormhole-inspired quantum teleportation in a chaotic binary sparse SYK model", 2026), a real hardware reproduction this module mirrors as an exact/Trotterized simulation.
Ported from research/wormhole_syk.py once the reproduction was verified
end to end (see that file's git history and research/wormhole_syk.md for
the full derivation, the no-signaling-theorem explanation of why an
earlier decorative "Traversable Wormhole (BGQ)" circuit could never have
worked, and every verification step: Majorana anticommutation, SYK
Hermiticity, Bell-pair/GHZ mutual information, the paper's own
instance-selection criterion, Trotter-vs-exact convergence). The generic
building blocks (Majorana JW mapping, partial trace / entropy / mutual
information, Trotterized gate-circuit evolution) live in the
dense_evolution package proper (dense_evolution.fermions, .entropy,
.trotter); only what's genuinely SYK/wormhole-specific -- the sparse
Hamiltonian construction, the paper's commuting-pair selection criterion,
and the two-sided teleportation protocol itself -- lives here.
Three evolution backends, all real gate circuits or exact matrix math run
through dense_evolution.DenseSVSimulator (never Qiskit, never a mock):
run_wormhole_protocol evolves via exact matrix exponentiation
(eigendecomposition-based, cheap and exact -- the paper's own hardware
run is validated against exactly this kind of baseline);
run_wormhole_protocol_trotter evolves via a real Trotterized gate
circuit (dense_evolution.trotter_evolve_ops), closer to what actual
hardware executes -- verified in research/wormhole_syk.py to reproduce
the exact backend's result closely at the known signal peak (seed 61,
t0=0.3, t1=0.60: I(mu=+12)=0.01301 vs exact 0.01326, I(mu=-12)=0.01821
vs exact 0.01793); run_wormhole_protocol_finite_beta is
run_wormhole_protocol but with the real finite-temperature
thermofield double the paper actually uses (Eq. S8, beta=3 -- Section
S2: "we consider J=sqrt(2), q=4, and beta=3") instead of the other two
backends' beta=0 simplification (plain L_i-R_i Bell pairs, the
infinite-temperature limit). beta=0 recovers the other backends'
initial state exactly (exp(0)=identity, verified in
tests/integration/test_wormhole.py) -- the finite-beta path is a strict
generalization, not a different protocol.
Central, honest finding carried over from the research reproduction: the
sign-dependent teleportation signal (mutual information between a
reference qubit P and a qubit read out from the R register, higher for
one coupling sign than the other) is real but realization-dependent -- a
uniformly-random draw of which SYK terms to keep does not reliably show
it. select_good_instance reproduces the paper's own fix: screen many
candidate seeds by their exact commuting/anticommuting term-pair count
and keep the one closest to the paper's own ratio (34 commuting / 11
anticommuting among 45 pairs, for their K=10 instance), rather than
trusting an arbitrary seed. For N=8 Majorana/side, seed 61 is an exact
match and gives the cleanest signal found (see research/wormhole_syk.md).
build_sparse_syk_terms ¶
K of the C(n_majorana,4) four-Majorana products chi_ichi_jchi_k*chi_l (i<j<k<l), each coefficient +-J/sqrt(k_terms) with a random sign -- the paper's K=10, J=sqrt(2) definition for N=8. The bare product of 4 Majoranas is already Hermitian (reversing 4 anticommuting factors takes C(4,2)=6 transpositions, (-1)^6=+1 -- no extra i factor needed). Returns (n_qubits, terms) where terms is ready for dense_evolution.pauli_hamiltonian_to_matrix.
Source code in tools/dashboard_core/wormhole.py
commuting_pair_count ¶
Exact commuting/anticommuting pair count among a set of terms (each term's operator, ignoring its coefficient) -- the paper's own instance-selection diagnostic (their chosen K=10 instance: 34 commuting / 11 anticommuting, out of C(10,2)=45 pairs).
Two Pauli strings commute iff they disagree (both non-identity, with different single-qubit Pauli operators) on an EVEN number of qubits -- each such disagreement contributes one anticommuting single-qubit factor when reordering the tensor product, and an even count of sign flips cancels out. Counting per-qubit disagreements between the two (qubit -> 'X'/'Y'/'Z') dicts is O(n_qubits) per pair, unlike the previous implementation, which built a dense 2n_qubits x 2n_qubits matrix per term and computed a real matrix commutator per pair -- O(2**n_qubits) per term plus a matmul per pair, useless work at every size (n_qubits here is exact, not approximate) and prohibitively slow at larger n_qubits: measured 14.2s for a single n_qubits=10 call (n_majorana=20) vs. <1ms for this version, a ~14,000,000x speedup, with 0 mismatches verified against the old dense-matrix implementation across 200 real SYK instances at n_majorana=8 and exact matches at n_majorana=12/16/20 too. n_qubits is unused here (kept in the signature for API compatibility -- every other caller passes it) since the dict-based check needs only the terms' own qubit indices, not the full Hilbert space dimension.
Source code in tools/dashboard_core/wormhole.py
select_good_instance ¶
Screen n_candidates random seeds by their exact commuting-pair count (cheap: only needs the k_terms operators' own small matrices, not the full protocol simulation) and return the seed whose count is closest to target_commuting -- the paper's selection criterion, applied here rather than trusting an arbitrary single seed.
Source code in tools/dashboard_core/wormhole.py
run_wormhole_protocol ¶
Exact-evolution backend: TFD/message setup -> evolve under H_L+H_R for t0 (exact matrix exponential, eigendecomposition-based) -> coupling exp(imuV) (exact) -> evolve for t1 (exact) -> mutual information between P and R[0].
mu<0 vs mu>0 is the "traversable" vs "non-traversable" sign in the paper's own convention, though note a given random SYK realization's sign doesn't have to line up with theirs -- what matters is that some consistent sign shows the enhancement (mu=-12 does, for the seed 61 instance -- see research/wormhole_syk.md).
Diagonalizing H_L+H_R and V (the two dense n_full x n_full eigendecompositions this needs) is reused across repeat calls at the same (n_majorana, k_terms, J, seed) via _cached_finite_beta_layout -- real cost for a caller scanning many mu/t0/t1 values at a fixed instance, previously redone identically on every single call.
Source code in tools/dashboard_core/wormhole.py
run_wormhole_protocol_trotter ¶
run_wormhole_protocol_trotter(
n_majorana,
k_terms,
J,
mu,
t0,
t1,
seed,
with_message,
n_steps_evolution=8,
n_steps_coupling=16,
)
Gate-circuit backend: identical protocol to run_wormhole_protocol, but every evolution step is a real Trotterized circuit (dense_evolution.trotter_evolve_ops) run through DenseSVSimulator.run_circuit, instead of exact matrix exponentiation -- closer to what real hardware would execute. At the known peak (seed 61, t0=0.3, t1=0.60, ~6300 real two-qubit-gate circuit) this reproduces the exact backend's result closely: I(mu=+12)=0.01301 vs exact 0.01326, I(mu=-12)=0.01821 vs exact 0.01793 -- the sign-dependent asymmetry survives with a real gate circuit, it isn't an artifact of the exact-evolution shortcut.
Source code in tools/dashboard_core/wormhole.py
run_wormhole_protocol_finite_beta ¶
Identical exact-backend protocol to run_wormhole_protocol, except the initial state is the real finite-beta TFD (see _prepare_finite_beta_tfd_sv) instead of the beta=0 simplification run_wormhole_protocol and run_wormhole_protocol_trotter both use. beta=3 matches arXiv:2604.10090's own fixed choice (Section S2: "we consider J=sqrt(2), q=4, and beta=3").
Diagonalizing H and V is memoized per (n_majorana, k_terms, J, seed) via _cached_finite_beta_layout -- a repeat call at the same instance (different beta/mu) reuses it instead of redoing it from scratch. For an explicit (beta, mu) sweep at a fixed seed, _finite_beta_layout_precomputed + _run_finite_beta_precomputed remain available directly if a caller wants to hold the layout itself rather than rely on the cache.
Source code in tools/dashboard_core/wormhole.py
find_delta_beta_bands ¶
find_delta_beta_bands(
n_majorana,
k_terms,
J,
mu,
t0,
t1,
seed,
with_message,
beta_max=6.0,
beta_step=0.02,
)
Segments delta(beta) = I(mu=-mu) - I(mu=+mu) into constant-sign bands over beta in [0, beta_max], for a fixed instance -- i.e. the beta ranges where the sign-dependent teleportation signal is "correctly" vs. "wrongly" signed, and exactly where it flips.
Motivated by a real finding: the sign is NOT stable across beta for many instances (verified on 10 known 34/11-matched seeds -- 4 never flip, the other 6 flip 1-3 times each across [0, 6]), so a single per-instance sign (as every other backend in this module reports, all implicitly at beta=0) can be misleading -- this gives the full picture instead of one point on it.
Uses _cached_finite_beta_layout once per call (not per beta point) -- a beta_step=0.02 scan over [0, 6] is ~300 points x 2 mu signs (600 evaluations), all reusing the same eigendecomposition; measured at ~36-40s per seed total (~0.06-0.07s/evaluation after the one-time diagonalization), not ~13s/evaluation x 600 naive. A repeat call at the same seed (different mu/t0/t1/beta_max/beta_step) also reuses the cached diagonalization instead of redoing it.
Returns a list of dicts, one per constant-sign band, in beta order: {"beta_lo", "beta_hi", "sign" ("positive"/"negative"), "max_abs_delta"} (the largest |delta| reached within that band). Crossing points (the beta_lo/beta_hi shared between adjacent bands) are linearly interpolated between the nearest two grid points, not just snapped to the grid resolution.
Source code in tools/dashboard_core/wormhole.py
Research log: Dense-Evolution-Discovery runs this implementation through 20+ real, verified experiments (parameter scans, generality checks, noise robustness, honest negative results) — see its own docs site for the full write-up. This page documents the shipped implementation; that repo documents what's been discovered by running it.