Draft · v0.2 · Unreviewed
← Index/Project · Nadarasa ReductionDraft · v0.2 · Selene Emulator
Selene · Runtime · Frontier card → /selene-frontier/ancilla-repetition-code

[G6b] Transversal
Parity Probe

The original G6 single-rail probe cx(d, a0) entangled only one rail of the GHZ-encoded ancilla, dragging the triple out of the codespace and producing an encoded-subspace share ≈ 0.5. G6b applies the fix the original verdict named: every data qubit drives every rail — cx(d, a0); cx(d, a1); cx(d, a2) — keeping the triple inside {(0,0,0), (1,1,1)} on every shot.

Refutation verdict

Encoded ancilla verified
Disagreements = 0/4800. Encoded-subspace share = 1.000000. Majority(a0, a1, a2) matches a0 on every shot, and the (a0, a1, a2) triple lives entirely in the codespace. Ready for a future noise model.

Per-slope results

slope sshotsdisagreementsencoded-subspace shareelapsed (s)
280001.00000.94
480001.00000.93
680001.00000.94
880001.00000.91
1080001.00000.90
1280001.00000.94

What changed from G6 → G6b

G6 (single-rail)
# probe_one: only a0 acts as control
cx(d, a0)

Encoded-subspace share ≈ 0.5000 · Disagreements ≈ 2400/4800

G6b (transversal)
# probe_transversal: all rails driven
cx(d, a0)
cx(d, a1)
cx(d, a2)

Encoded-subspace share = 1.0000 · Disagreements = 0/4800

Kernel snippet (s = 2)

open in Playpond ↗

from quantum.nadarasa_g6_lib import (
    guppy, qubit, h, cx, measure, result, probe_transversal, phase_on,
)

@guppy
def program() -> None:
    d0 = qubit()
    d1 = qubit()
    d2 = qubit()
    d3 = qubit()
    h(d0)
    h(d1)
    h(d2)
    h(d3)
    phase_on(d0, 0.25)
    phase_on(d1, 0.5)
    phase_on(d2, -1.0)
    phase_on(d3, 0.0)
    a0 = qubit()
    a1 = qubit()
    a2 = qubit()
    h(a0)
    cx(a0, a1)
    cx(a0, a2)
    probe_transversal(a0, a1, a2, d0)
    probe_transversal(a0, a1, a2, d1)
    probe_transversal(a0, a1, a2, d2)
    probe_transversal(a0, a1, a2, d3)
    cx(a0, a2)
    cx(a0, a1)
    h(a0)
    result("a0", measure(a0))
    result("a1", measure(a1))
    result("a2", measure(a2))
    result("x0", measure(d0))
    result("x1", measure(d1))
    result("x2", measure(d2))
    result("x3", measure(d3))