quchip.chip.transformations.eliminate_coupling

Coupling-target elimination: reduce an exchange edge to its dressed cross-Kerr.

The device path removes a mode; this path removes an edge. Both endpoint devices survive (Lamb-shifted), and the exchange coupling between them is replaced by a CrossKerr carrying the full dressed pull χ = E₁₁ E₁₀ E₀₁ + E₀₀, read off the chip’s exact dressed spectrum. This is the effective-readout-chip flow — reduce a qubit-resonator exchange edge to the diagonal interaction an ordinary charge line probes.

The handler registers a coupling-kind EliminationTarget at import time, so eliminate() dispatches any coupling label here without importing this module directly.

Functions

reduce_coupling(chip, target, method)

Reduce an exchange edge to its dressed cross-Kerr shift; both endpoints survive.

quchip.chip.transformations.eliminate_coupling.reduce_coupling(chip, target, method)[source]

Reduce an exchange edge to its dressed cross-Kerr shift; both endpoints survive.

Unlike device elimination, no mode is removed — the edge itself is the target, so there is no P/Q block to partition and no perturbative “sw” route: both endpoints’ dressed 0→1 frequencies (the other endpoint pinned to its ground state) come from the chip’s exact dressed spectrum regardless of eliminate()’s method argument, via freq(). The coupling is replaced by a CrossKerr carrying the full dressed pull χ = E₁₁ E₁₀ E₀₁ + E₀₀ — one full-chip diagonalization via Chip.dispersive_shift(). This is a uniform-χ approximation (CrossKerr’s own declared approximation): per-level χ differences and dispersive breakdown near the critical photon number are not represented.

chi is evaluated eagerly rather than deferred like the device path’s lazy effective_params["chi"] entry — CrossKerr multiplies its chi parameter directly into an operator expression, so a live value (not a callable) is what the coupling itself needs; eager evaluation here is more JAX-friendly than the alternative, not less.

Both endpoint devices survive, so no device-targeting control line is stranded. A line pumping the eliminated coupling itself has no image in the reduced model unless a registered rule converts it (result_kind = "crosskerr", quchip.chip.retarget) — none ships, so such a line always raises the same fail-fast error the device path raises for a doomed line, before any fold work runs.

Parameters:
  • chip (Chip) – Source chip (never mutated).

  • target (Any) – The coupling to eliminate — label string or object.

  • method (str) – Accepted for signature uniformity with the device path and has no effect here: no mode is removed, so the reduction always reads the chip’s exact dressed spectrum (eliminate() has already validated it).

Return type:

EliminationResult

Raises:

NotImplementedErrortarget names a coupling whose class does not declare reduces_to_crosskerr (its physics is not exchange-like), or either endpoint device exposes no 'freq' tunable for the Lamb shift to land on.