FAILURE MAP
← Case archive

FA-90866 / Quantum circuit simulation / Open access

Statevector SWAP exchanges every differing pair twice · case 01

SWAP(0,2) after X on qubit 0 leaves the excitation on qubit 0; the gate acts as identity.

Verified by executionVariant 1 · 7 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The swap loop selects every index whose two bits differ, so each pair is visited from both sides and swapped back.

VERIFIED REPAIR

Visit only indices with bit a set and bit b clear, and swap with the partner that has a clear and b set.

Unsuccessful approach: The attempted repair visits indices with b set and a clear but still forms the partner as (i ^ a) | b, which pairs with an index that has both bits set.

Case contract

Input [n, gates]; start in |0...0>, apply gates h,x,y,z,s,sdg,t (["g", q]) and cx,cz,swap (["g", a, b]) with qubit 0 as the least significant bit of the basis index; return the statevector as [re, im] pairs rounded to 6 decimals.

Why this case matters

Statevector simulators underpin circuit unit tests; a gate-kernel slip silently corrupts every downstream amplitude.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
import cmath
N = 1
observations = []
def solve(x):
    n, gates = x
    dim = 1 << n
    st = [0j] * dim
    st[0] = 1 + 0j
    r = 1 / math.sqrt(2)
    for g in gates:
        op = g[0]
        if op in ('h', 'x', 'y', 'z', 's', 'sdg', 't'):
            m = 1 << g[1]
            for i in range(dim):
                if i & m:
                    continue
                a, b = st[i], st[i | m]
                if op == 'h':
                    st[i], st[i | m] = (a + b) * r, (a - b) * r
                elif op == 'x':
                    st[i], st[i | m] = b, a
                elif op == 'y':
                    st[i], st[i | m] = -1j * b, 1j * a
                elif op == 'z':
                    st[i | m] = -b
                elif op == 's':
                    st[i | m] = 1j * b
                elif op == 'sdg':
                    st[i | m] = -1j * b
                else:
                    st[i | m] = b * cmath.exp(1j * math.pi / 4)
        elif op == 'cx':
            c, t = 1 << g[1], 1 << g[2]
            for i in range(dim):
                if i & c and not i & t:
                    st[i], st[i | t] = st[i | t], st[i]
        elif op == 'cz':
            both = (1 << g[1]) | (1 << g[2])
            for i in range(dim):
                if i & both == both:
                    st[i] = -st[i]
        elif op == 'swap':
            a, b = 1 << g[1], 1 << g[2]
            for i in range(dim):
                if bool(i & a) != bool(i & b):
                    j = (i ^ a) | b
                    st[i], st[j] = st[j], st[i]
    return [[round(v.real, 6) + 0.0, round(v.imag, 6) + 0.0] for v in st]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['repair check: random circuit 0', [3, [['swap', 2, 1], ['cx', 2, 0], ['z', 2], ['y', 1], ['cx', 0, 2], ['s', 1], ['swap', 1, 0]]], [[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: empty circuit on two qubits', [2, []], [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: bell pair', [2, [['h', 0], ['cx', 0, 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['control: ghz three qubits', [3, [['h', 0], ['cx', 0, 1], ['cx', 1, 2]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['control: cx with control on high qubit', [2, [['x', 1], ['cx', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]]], [['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['regression: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['repair check: random circuit 4', [2, [['cx', 0, 1], ['cz', 0, 1], ['h', 1], ['x', 1], ['y', 0], ['swap', 0, 1]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.707107], [0.0, 0.707107]]], ['control: y on ground state', [1, [['y', 0]]], [[0.0, 0.0], [0.0, 1.0]]], ['control: y after x', [1, [['x', 0], ['y', 0]]], [[0.0, -1.0], [0.0, 0.0]]], ['control: t after h', [1, [['h', 0], ['t', 0]]], [[0.707107, 0.0], [0.5, 0.5]]], ['control: sdg after h', [2, [['h', 1], ['sdg', 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, -0.707107], [0.0, 0.0]]]], [['regression: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['repair check: random circuit 0', [3, [['swap', 2, 1], ['cx', 2, 0], ['z', 2], ['y', 1], ['cx', 0, 2], ['s', 1], ['swap', 1, 0]]], [[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: h on excited qubit', [1, [['x', 0], ['h', 0]]], [[0.707107, 0.0], [-0.707107, 0.0]]], ['control: single x on qubit 0 of three', [3, [['x', 0]]], [[0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 1', [3, [['cx', 1, 2], ['cz', 2, 1]]], [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 2', [3, [['z', 0], ['sdg', 1], ['cx', 1, 0], ['cz', 0, 1], ['cx', 2, 0], ['y', 0], ['z', 2]]], [[0.0, 0.0], [0.0, 1.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]]], [['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['regression: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['repair check: random circuit 4', [2, [['cx', 0, 1], ['cz', 0, 1], ['h', 1], ['x', 1], ['y', 0], ['swap', 0, 1]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.707107], [0.0, 0.707107]]], ['control: random circuit 3', [2, [['x', 1], ['s', 1], ['x', 0], ['h', 0], ['s', 1], ['h', 1]]], [[-0.5, 0.0], [0.5, 0.0], [0.5, 0.0], [-0.5, 0.0]]], ['control: random circuit 5', [2, [['cx', 1, 0], ['cx', 0, 1], ['t', 1], ['h', 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.707107, 0.0], [0.0, 0.0]]], ['control: random circuit 6', [2, [['cz', 0, 1], ['cz', 0, 1], ['z', 1], ['sdg', 0], ['x', 0], ['x', 1], ['cx', 0, 1]]], [[0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 8', [1, [['s', 0], ['h', 0], ['s', 0]]], [[0.707107, 0.0], [0.0, 0.707107]]]], [['regression: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['repair check: random circuit 0', [3, [['swap', 2, 1], ['cx', 2, 0], ['z', 2], ['y', 1], ['cx', 0, 2], ['s', 1], ['swap', 1, 0]]], [[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 9', [1, [['z', 0], ['t', 0], ['z', 0], ['h', 0]]], [[0.707107, 0.0], [0.707107, 0.0]]], ['control: random circuit 10', [3, [['cz', 0, 1], ['h', 0], ['z', 0], ['cx', 0, 1], ['s', 0], ['sdg', 0]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [-0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 11', [2, [['s', 0], ['h', 0]]], [[0.707107, 0.0], [0.707107, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 12', [3, [['sdg', 2], ['h', 2], ['h', 1], ['s', 0], ['z', 0], ['cx', 0, 1]]], [[0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0]]]]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: swap moves excitation[[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0]][[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]Failed
regression: random circuit 7[[0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0]][[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]Failed
repair check: random circuit 0[[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]][[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]Passed
control: empty circuit on two qubits[[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]][[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]Passed
control: bell pair[[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]][[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]Passed
control: ghz three qubits[[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]][[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]Passed
control: cx with control on high qubit[[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]][[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]Passed

SHA-256 / 9d126dee09fa98ab61963d4e4a393895e680602ae8433b40ffd3240e05ded25b

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
import cmath
N = 1
observations = []
def solve(x):
    n, gates = x
    dim = 1 << n
    st = [0j] * dim
    st[0] = 1 + 0j
    r = 1 / math.sqrt(2)
    for g in gates:
        op = g[0]
        if op in ('h', 'x', 'y', 'z', 's', 'sdg', 't'):
            m = 1 << g[1]
            for i in range(dim):
                if i & m:
                    continue
                a, b = st[i], st[i | m]
                if op == 'h':
                    st[i], st[i | m] = (a + b) * r, (a - b) * r
                elif op == 'x':
                    st[i], st[i | m] = b, a
                elif op == 'y':
                    st[i], st[i | m] = -1j * b, 1j * a
                elif op == 'z':
                    st[i | m] = -b
                elif op == 's':
                    st[i | m] = 1j * b
                elif op == 'sdg':
                    st[i | m] = -1j * b
                else:
                    st[i | m] = b * cmath.exp(1j * math.pi / 4)
        elif op == 'cx':
            c, t = 1 << g[1], 1 << g[2]
            for i in range(dim):
                if i & c and not i & t:
                    st[i], st[i | t] = st[i | t], st[i]
        elif op == 'cz':
            both = (1 << g[1]) | (1 << g[2])
            for i in range(dim):
                if i & both == both:
                    st[i] = -st[i]
        elif op == 'swap':
            a, b = 1 << g[1], 1 << g[2]
            for i in range(dim):
                if i & b and not i & a:
                    j = (i ^ a) | b
                    st[i], st[j] = st[j], st[i]
    return [[round(v.real, 6) + 0.0, round(v.imag, 6) + 0.0] for v in st]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['repair check: random circuit 0', [3, [['swap', 2, 1], ['cx', 2, 0], ['z', 2], ['y', 1], ['cx', 0, 2], ['s', 1], ['swap', 1, 0]]], [[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: empty circuit on two qubits', [2, []], [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: bell pair', [2, [['h', 0], ['cx', 0, 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['control: ghz three qubits', [3, [['h', 0], ['cx', 0, 1], ['cx', 1, 2]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['control: cx with control on high qubit', [2, [['x', 1], ['cx', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]]], [['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['regression: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['repair check: random circuit 4', [2, [['cx', 0, 1], ['cz', 0, 1], ['h', 1], ['x', 1], ['y', 0], ['swap', 0, 1]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.707107], [0.0, 0.707107]]], ['control: y on ground state', [1, [['y', 0]]], [[0.0, 0.0], [0.0, 1.0]]], ['control: y after x', [1, [['x', 0], ['y', 0]]], [[0.0, -1.0], [0.0, 0.0]]], ['control: t after h', [1, [['h', 0], ['t', 0]]], [[0.707107, 0.0], [0.5, 0.5]]], ['control: sdg after h', [2, [['h', 1], ['sdg', 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, -0.707107], [0.0, 0.0]]]], [['regression: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['repair check: random circuit 0', [3, [['swap', 2, 1], ['cx', 2, 0], ['z', 2], ['y', 1], ['cx', 0, 2], ['s', 1], ['swap', 1, 0]]], [[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: h on excited qubit', [1, [['x', 0], ['h', 0]]], [[0.707107, 0.0], [-0.707107, 0.0]]], ['control: single x on qubit 0 of three', [3, [['x', 0]]], [[0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 1', [3, [['cx', 1, 2], ['cz', 2, 1]]], [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 2', [3, [['z', 0], ['sdg', 1], ['cx', 1, 0], ['cz', 0, 1], ['cx', 2, 0], ['y', 0], ['z', 2]]], [[0.0, 0.0], [0.0, 1.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]]], [['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['regression: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['repair check: random circuit 4', [2, [['cx', 0, 1], ['cz', 0, 1], ['h', 1], ['x', 1], ['y', 0], ['swap', 0, 1]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.707107], [0.0, 0.707107]]], ['control: random circuit 3', [2, [['x', 1], ['s', 1], ['x', 0], ['h', 0], ['s', 1], ['h', 1]]], [[-0.5, 0.0], [0.5, 0.0], [0.5, 0.0], [-0.5, 0.0]]], ['control: random circuit 5', [2, [['cx', 1, 0], ['cx', 0, 1], ['t', 1], ['h', 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.707107, 0.0], [0.0, 0.0]]], ['control: random circuit 6', [2, [['cz', 0, 1], ['cz', 0, 1], ['z', 1], ['sdg', 0], ['x', 0], ['x', 1], ['cx', 0, 1]]], [[0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 8', [1, [['s', 0], ['h', 0], ['s', 0]]], [[0.707107, 0.0], [0.0, 0.707107]]]], [['regression: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['repair check: random circuit 0', [3, [['swap', 2, 1], ['cx', 2, 0], ['z', 2], ['y', 1], ['cx', 0, 2], ['s', 1], ['swap', 1, 0]]], [[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 9', [1, [['z', 0], ['t', 0], ['z', 0], ['h', 0]]], [[0.707107, 0.0], [0.707107, 0.0]]], ['control: random circuit 10', [3, [['cz', 0, 1], ['h', 0], ['z', 0], ['cx', 0, 1], ['s', 0], ['sdg', 0]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [-0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 11', [2, [['s', 0], ['h', 0]]], [[0.707107, 0.0], [0.707107, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 12', [3, [['sdg', 2], ['h', 2], ['h', 1], ['s', 0], ['z', 0], ['cx', 0, 1]]], [[0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0]]]]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: swap moves excitation[[0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]][[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]Failed
regression: random circuit 7[[0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0]][[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]Failed
repair check: random circuit 0[[0.0, 0.0], [0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]][[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]Failed
control: empty circuit on two qubits[[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]][[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]Passed
control: bell pair[[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]][[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]Passed
control: ghz three qubits[[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]][[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]Passed
control: cx with control on high qubit[[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]][[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]Passed

SHA-256 / 42ab3454a5834eb02616158c1abb4c8a078c39de893a670958b0f27c53bfe38c

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import math
import cmath
N = 1
observations = []
def solve(x):
    n, gates = x
    dim = 1 << n
    st = [0j] * dim
    st[0] = 1 + 0j
    r = 1 / math.sqrt(2)
    for g in gates:
        op = g[0]
        if op in ('h', 'x', 'y', 'z', 's', 'sdg', 't'):
            m = 1 << g[1]
            for i in range(dim):
                if i & m:
                    continue
                a, b = st[i], st[i | m]
                if op == 'h':
                    st[i], st[i | m] = (a + b) * r, (a - b) * r
                elif op == 'x':
                    st[i], st[i | m] = b, a
                elif op == 'y':
                    st[i], st[i | m] = -1j * b, 1j * a
                elif op == 'z':
                    st[i | m] = -b
                elif op == 's':
                    st[i | m] = 1j * b
                elif op == 'sdg':
                    st[i | m] = -1j * b
                else:
                    st[i | m] = b * cmath.exp(1j * math.pi / 4)
        elif op == 'cx':
            c, t = 1 << g[1], 1 << g[2]
            for i in range(dim):
                if i & c and not i & t:
                    st[i], st[i | t] = st[i | t], st[i]
        elif op == 'cz':
            both = (1 << g[1]) | (1 << g[2])
            for i in range(dim):
                if i & both == both:
                    st[i] = -st[i]
        elif op == 'swap':
            a, b = 1 << g[1], 1 << g[2]
            for i in range(dim):
                if i & a and not i & b:
                    j = (i ^ a) | b
                    st[i], st[j] = st[j], st[i]
    return [[round(v.real, 6) + 0.0, round(v.imag, 6) + 0.0] for v in st]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['repair check: random circuit 0', [3, [['swap', 2, 1], ['cx', 2, 0], ['z', 2], ['y', 1], ['cx', 0, 2], ['s', 1], ['swap', 1, 0]]], [[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: empty circuit on two qubits', [2, []], [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: bell pair', [2, [['h', 0], ['cx', 0, 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['control: ghz three qubits', [3, [['h', 0], ['cx', 0, 1], ['cx', 1, 2]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]], ['control: cx with control on high qubit', [2, [['x', 1], ['cx', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]]], [['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['regression: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['repair check: random circuit 4', [2, [['cx', 0, 1], ['cz', 0, 1], ['h', 1], ['x', 1], ['y', 0], ['swap', 0, 1]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.707107], [0.0, 0.707107]]], ['control: y on ground state', [1, [['y', 0]]], [[0.0, 0.0], [0.0, 1.0]]], ['control: y after x', [1, [['x', 0], ['y', 0]]], [[0.0, -1.0], [0.0, 0.0]]], ['control: t after h', [1, [['h', 0], ['t', 0]]], [[0.707107, 0.0], [0.5, 0.5]]], ['control: sdg after h', [2, [['h', 1], ['sdg', 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, -0.707107], [0.0, 0.0]]]], [['regression: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['repair check: random circuit 0', [3, [['swap', 2, 1], ['cx', 2, 0], ['z', 2], ['y', 1], ['cx', 0, 2], ['s', 1], ['swap', 1, 0]]], [[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: h on excited qubit', [1, [['x', 0], ['h', 0]]], [[0.707107, 0.0], [-0.707107, 0.0]]], ['control: single x on qubit 0 of three', [3, [['x', 0]]], [[0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 1', [3, [['cx', 1, 2], ['cz', 2, 1]]], [[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 2', [3, [['z', 0], ['sdg', 1], ['cx', 1, 0], ['cz', 0, 1], ['cx', 2, 0], ['y', 0], ['z', 2]]], [[0.0, 0.0], [0.0, 1.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]]], [['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['regression: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['repair check: random circuit 4', [2, [['cx', 0, 1], ['cz', 0, 1], ['h', 1], ['x', 1], ['y', 0], ['swap', 0, 1]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.707107], [0.0, 0.707107]]], ['control: random circuit 3', [2, [['x', 1], ['s', 1], ['x', 0], ['h', 0], ['s', 1], ['h', 1]]], [[-0.5, 0.0], [0.5, 0.0], [0.5, 0.0], [-0.5, 0.0]]], ['control: random circuit 5', [2, [['cx', 1, 0], ['cx', 0, 1], ['t', 1], ['h', 1]]], [[0.707107, 0.0], [0.0, 0.0], [0.707107, 0.0], [0.0, 0.0]]], ['control: random circuit 6', [2, [['cz', 0, 1], ['cz', 0, 1], ['z', 1], ['sdg', 0], ['x', 0], ['x', 1], ['cx', 0, 1]]], [[0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 8', [1, [['s', 0], ['h', 0], ['s', 0]]], [[0.707107, 0.0], [0.0, 0.707107]]]], [['regression: swap moves excitation', [3, [['x', 0], ['swap', 0, 2]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['regression: random circuit 7', [2, [['s', 0], ['cz', 1, 0], ['x', 1], ['cx', 1, 0], ['swap', 1, 0]]], [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]], ['repair check: random circuit 0', [3, [['swap', 2, 1], ['cx', 2, 0], ['z', 2], ['y', 1], ['cx', 0, 2], ['s', 1], ['swap', 1, 0]]], [[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 9', [1, [['z', 0], ['t', 0], ['z', 0], ['h', 0]]], [[0.707107, 0.0], [0.707107, 0.0]]], ['control: random circuit 10', [3, [['cz', 0, 1], ['h', 0], ['z', 0], ['cx', 0, 1], ['s', 0], ['sdg', 0]]], [[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [-0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 11', [2, [['s', 0], ['h', 0]]], [[0.707107, 0.0], [0.707107, 0.0], [0.0, 0.0], [0.0, 0.0]]], ['control: random circuit 12', [3, [['sdg', 2], ['h', 2], ['h', 1], ['s', 0], ['z', 0], ['cx', 0, 1]]], [[0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0], [0.5, 0.0], [0.0, 0.0]]]]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: swap moves excitation[[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]][[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]Passed
regression: random circuit 7[[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]][[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]Passed
repair check: random circuit 0[[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]][[0.0, 0.0], [-1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]Passed
control: empty circuit on two qubits[[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]][[1.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]Passed
control: bell pair[[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]][[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]Passed
control: ghz three qubits[[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]][[0.707107, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.707107, 0.0]]Passed
control: cx with control on high qubit[[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]][[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [1.0, 0.0]]Passed

SHA-256 / efca990bb7bfebba83116a8d2b7299a0e9e3a585c9a8741054c979c13fdb77b3

Verification & scope

A deterministic bounded teaching model with a stipulated toy contract; amplitudes are rounded to fixed decimals for strict JSON output. It is not a production quantum SDK and claims no standards conformance. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.

Observations recorded using Python 3.12.14 at 2026-09-29T14:51:30.607922+00:00.

Case digest / 319e303d2aa8898281d6f600b81bb4ff22fc994aed8790ee0ff73761036288f5