-
-
Bias pulse during inflation. Fidelity to |+α⟩ at 2 µs vs pulse area A = εT for 10, 50 and 100 ns pulses, compared with the basin model.
-
Check 1.0(a), single-photon loss. The simulated photon number matches the analytic decay |α₀|²e^(−κt).
-
Wigner function of the codeword |+α⟩, a single coherent blob at α = 2 in phase space.
-
Inflation from vacuum. Cat coherence decays while F(|+α⟩) settles at 0.5, so the grown state is the even cat and not a definite codeword.
-
Method A, displaced start. Fidelity rises with displacement β and drops with drive phase error θ. Simulation matches the basin model.
-
Method D in phase space. A 50 ns push moves the memory from vacuum to α, then the stabilization holds it on the codeword.
-
Superposition vs mixture. The prepared state at 1 µs shows interference fringes between the blobs that a classical mixture lacks.
-
Check 1.0(b), two-photon loss. The photon number decays to the analytic floor (1 − e^(−2|α₀|²))/2.
-
The cat grown from vacuum loses its interference fringes over 6 µs as single-photon loss turns it into a mixture.
-
Inflation in the two-mode model (N_a = 28, N_b = 12). The memory overshoots to 6.89 photons while the truncation monitor stays small.
-
Wigner snapshots over 1 µs of a coherent state at |α| = 2 moving around phase space before settling.
-
Cat inflation from vacuum. The vacuum stretches and splits into two blobs with fringes, forming the even cat within about 0.2 µs.
-
Check 1.0(c), effective model. The photon number reaches α² faster as κ₂ grows, shown for κ₂ scaled by 0.25, 1 and 4.
-
Two-mode inflation from vacuum over 3 µs. The vacuum squeezes, splits and settles into the even cat with interference fringes.
-
Truncation convergence. Steady and peak values vs memory levels N_a and buffer levels N_b, checked against a 10⁻³ tolerance.
Inspiration Alice & Bob's cat qubits store information in two coherent states, \(\ket{+\alpha}\) and \(\ket{-\alpha}\). The two-photon stabilization that protects them also creates a problem: grown from vacuum, a cat becomes an equal superposition of both codewords. Preparing one definite codeword is a basic step for any computation. The standard fixes start the state off the codeword and then let the stabilization pull it in, which costs fidelity.
What it does BSE is a simulation study of a stabilized cat qubit in the full two-mode model (memory and buffer), covering both challenge tracks.
- Preparing a codeword (Track 1): we first show that growing a cat from vacuum gives the even cat, a superposition and not a mixture, and that it lives 1.95 µs. An independent check from the model's slowest decay rate gives 1.94 µs. We then found method D: push the memory to exactly \(\alpha\) with the pump off, then switch the stabilization on.
- The state \(\ket{\alpha, 0}\) is an exact steady state of the two-mode model, because \(g_2α^2\) cancels the buffer drive \(\varepsilon_d\). So nothing pushes the state off the codeword.
- The preparation error is \(8.4 \times 10^{-6}\). That is 145\(\times\) lower than a displaced start at \(\beta\) = 1.5 and 68\(\times\) lower than the best ramped push.
- Bit-flip and phase-flip errors (Track 2): at \(\alpha\) = 2.1 the bit-flip rate gives a bit-flip time of about 2.6 s. The phase-flip rate matches \(2\kappa_a \cdot \alpha^2\) to within 0.02%. We also extracted circuit corrections, the Kerr and cross-Kerr terms, and studied how measuring the qubit trades off against bit flips.
How we built it
- Code: a tested Python package, catqubit, built on dynamiqs (JAX), with numpy, scipy and matplotlib. It covers the models, time evolution, preparation methods, observables and truncation checks, with 449 passing tests.
- Convergence: every result was checked against the number of simulated photon levels, to 0.1%.
- Traceable numbers: a script reads the outputs of the executed notebook into claims.json, which holds 255 values. Every number on our slides is tagged with its source.
- Realism studies: a finite 50 ns push (6.7 MHz drive), the frequency shift the pump causes on the memory, distortion of the drive pulse, extra heating and loss, and the real circuit's Kerr terms.
- AI use: we used Claude Code for code development, simulation run checks, and verifying our claims.
Challenges we ran into
- Truncation: the inflation overshoot (6.89 photons at 230 ns) needs more photon levels than the steady state. At \(\alpha\) = 1.8, a too-small grid overstated the bit-flip rate by 0.6%.
- The textbook estimate of the bit-flip rate is off by 34\(\times\). The exponential scaling exponent also depends on which range of α you fit over.
- Once the circuit terms are added, method D's error rises to \(5.4 \times 10^{-5}\). A plain displaced start at \(\beta\) = 2.0 then reaches \(6.3 \times 10^{-5}\), so the gap shrinks to about 17%. We report both.
Accomplishments that we're proud of
- A preparation method that is exact in the two-mode model: with memory loss set to zero, the error is \(9.3 \times 10^{-12}\).
- Turning the pump off during the push matters. Pushing for 50 ns with the pump on is about 58× worse.
- The method holds up when realistic hardware effects are included: the combined error is \(6.6 \times 10^{-5}\).
What we learned
- Memory parity decides what a cat grown from vacuum becomes. Wigner fringes, not fidelity, tell a superposition from a mixture.
- The best way to prepare a codeword is to start at a steady state, not to fight the stabilization.
- Calibration matters unequally: a 22.5° phase error costs about 27\(\times\) more than a 10% amplitude error.
- Back-of-envelope models need checking against the full simulation.
What's next for BSE
- Cancel the memory Kerr. Our simulations show a correction recovers about \(7.5 \times 10^{-6}\), but it needs a memory drive we haven't shown the device can produce.
- Rerun the adaptive measurement-stopping study with the measured bit-flip rates; the current version is optimistic.
- Add the finite-push and Kerr studies to the main notebook.
- Testing our method on hardware: a resonant memory pulse with the pump off, then switch the stabilization on.
Built With
- dynamiqs
- jax
- jupyter
- matplotlib
- python
Log in or sign up for Devpost to join the conversation.