FAILURE MAP
← Case archive

FA-91276 / Quantum circuit simulation / Open access

Rotation merger lets rz slide past a CNOT target · case 01

rz on qubit 1 before and after cx(0,1) are merged although they do not commute.

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

ROOT CAUSE

The look-back skip tests prev[2] == q (target) instead of prev[1] == q (control).

VERIFIED REPAIR

Only skip a cx whose control is the rz qubit.

Unsuccessful approach: The attempted repair skips the cx when the qubit is either control or target.

Case contract

Input a gate list: ["rz", q, angle] (angle in units of pi as a fraction string), ["x", q], ["h", q], ["cx", c, t]. Scan left to right; a new gate looks back to the last op touching its qubit, except that rz may look past a cx whose control is that qubit. rz merges into a found rz, angles normalized to (-1, 1] and zero rotations dropped; x or h cancels a found identical gate. Return the optimized list with angles as fraction strings.

Why this case matters

Rotation merging and cancellation are the cheapest transpiler wins; commutation or normalization slips change circuit semantics.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(x):
    ops = x
    out = []
    def touches(op, q):
        if op[0] == 'cx':
            return q in (op[1], op[2])
        return op[1] == q
    def norm(a):
        a = a % 2
        if a > 1:
            a -= 2
        return a
    for op in ops:
        name = op[0]
        if name == 'cx':
            out.append(['cx', op[1], op[2]])
            continue
        q = op[1]
        j = len(out) - 1
        while j >= 0:
            prev = out[j]
            if not touches(prev, q):
                j -= 1
                continue
            if name == 'rz' and prev[0] == 'cx' and prev[2] == q:
                j -= 1
                continue
            break
        if name == 'rz':
            ang = Fraction(op[2])
            if j >= 0 and out[j][0] == 'rz':
                merged = norm(out[j][2] + ang)
                if merged == 0:
                    out.pop(j)
                else:
                    out[j][2] = merged
            else:
                ang = norm(ang)
                if ang != 0:
                    out.append(['rz', q, ang])
        elif name in ('x', 'h') and j >= 0 and out[j][0] == name:
            out.pop(j)
        else:
            out.append([name, q])
    return [[o[0], o[1], str(o[2])] if o[0] == 'rz' else o for o in out]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: rz commutes through cx control', [['rz', 0, '1/4'], ['cx', 0, 1], ['rz', 0, '1/4']], [['rz', 0, '1/2'], ['cx', 0, 1]]], ['regression: rz blocked by cx target', [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']], [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]], ['regression: random peephole 16', [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '5/4'], ['cx', 0, 1], ['rz', 1, '3/2']], [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']]], ['control: rz merges to pi', [['rz', 0, '1/2'], ['rz', 0, '1/2']], [['rz', 0, '1']]], ['control: merge cancels to zero', [['rz', 0, '3/4'], ['rz', 0, '5/4']], []], ['control: unnormalized single rz', [['rz', 2, '5/2']], [['rz', 2, '1/2']]], ['control: rz of pi alone', [['rz', 0, '1']], [['rz', 0, '1']]]], [['regression: random peephole 16', [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '5/4'], ['cx', 0, 1], ['rz', 1, '3/2']], [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']]], ['regression: random peephole 31', [['rz', 2, '7/4'], ['rz', 2, '-1/4'], ['cx', 2, 0], ['rz', 2, '7/4'], ['h', 1]], [['rz', 2, '-3/4'], ['cx', 2, 0], ['h', 1]]], ['regression: rz blocked by cx target', [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']], [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]], ['control: x on different qubits', [['x', 0], ['x', 1]], [['x', 0], ['x', 1]]], ['control: x cancels across other qubit', [['x', 0], ['h', 1], ['x', 0]], [['h', 1]]], ['control: h blocked by rz', [['h', 0], ['rz', 0, '1/2'], ['h', 0]], [['h', 0], ['rz', 0, '1/2'], ['h', 0]]], ['control: random peephole 0', [['rz', 0, '1/2'], ['rz', 0, '-1/2'], ['rz', 1, '3/2'], ['rz', 2, '0'], ['rz', 1, '2'], ['x', 2], ['cx', 1, 0], ['x', 2]], [['rz', 1, '-1/2'], ['cx', 1, 0]]]], [['regression: rz blocked by cx target', [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']], [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]], ['regression: random peephole 7', [['rz', 1, '3/2'], ['cx', 2, 0], ['rz', 0, '0'], ['rz', 0, '3/2'], ['cx', 0, 1], ['rz', 0, '3'], ['rz', 2, '-1'], ['rz', 0, '3/2']], [['rz', 1, '-1/2'], ['cx', 2, 0], ['cx', 0, 1], ['rz', 2, '1']]], ['regression: random peephole 16', [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '5/4'], ['cx', 0, 1], ['rz', 1, '3/2']], [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']]], ['control: random peephole 1', [['cx', 2, 0], ['x', 0]], [['cx', 2, 0], ['x', 0]]], ['control: random peephole 2', [['h', 1], ['h', 0], ['h', 1]], [['h', 0]]], ['control: random peephole 3', [['x', 0], ['rz', 1, '1/2'], ['rz', 1, '1/4'], ['rz', 0, '-1'], ['cx', 2, 0], ['rz', 0, '0'], ['h', 0], ['cx', 1, 2]], [['x', 0], ['rz', 1, '3/4'], ['rz', 0, '1'], ['cx', 2, 0], ['h', 0], ['cx', 1, 2]]], ['control: random peephole 4', [['rz', 2, '5/4'], ['rz', 2, '-1/2'], ['rz', 1, '1/4'], ['rz', 1, '3'], ['cx', 1, 0], ['cx', 2, 0]], [['rz', 2, '3/4'], ['rz', 1, '-3/4'], ['cx', 1, 0], ['cx', 2, 0]]]], [['regression: random peephole 31', [['rz', 2, '7/4'], ['rz', 2, '-1/4'], ['cx', 2, 0], ['rz', 2, '7/4'], ['h', 1]], [['rz', 2, '-3/4'], ['cx', 2, 0], ['h', 1]]], ['regression: rz commutes through cx control', [['rz', 0, '1/4'], ['cx', 0, 1], ['rz', 0, '1/4']], [['rz', 0, '1/2'], ['cx', 0, 1]]], ['regression: rz blocked by cx target', [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']], [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]], ['control: random peephole 5', [['x', 2], ['rz', 2, '3/2'], ['rz', 2, '1'], ['x', 1]], [['x', 2], ['rz', 2, '1/2'], ['x', 1]]], ['control: random peephole 6', [['rz', 1, '-1/4'], ['rz', 0, '1'], ['x', 0], ['x', 1], ['cx', 1, 0], ['rz', 0, '1'], ['rz', 2, '1/4'], ['x', 0]], [['rz', 1, '-1/4'], ['rz', 0, '1'], ['x', 0], ['x', 1], ['cx', 1, 0], ['rz', 0, '1'], ['rz', 2, '1/4'], ['x', 0]]], ['control: random peephole 8', [['rz', 2, '1/4'], ['rz', 2, '3/4'], ['rz', 2, '1'], ['x', 0], ['rz', 2, '3/4']], [['x', 0], ['rz', 2, '3/4']]], ['control: random peephole 9', [['cx', 2, 1], ['rz', 1, '-1/4'], ['rz', 0, '-1'], ['rz', 2, '0'], ['x', 0], ['rz', 1, '-1/2'], ['cx', 2, 1]], [['cx', 2, 1], ['rz', 1, '-3/4'], ['rz', 0, '1'], ['x', 0], ['cx', 2, 1]]]], [['regression: random peephole 7', [['rz', 1, '3/2'], ['cx', 2, 0], ['rz', 0, '0'], ['rz', 0, '3/2'], ['cx', 0, 1], ['rz', 0, '3'], ['rz', 2, '-1'], ['rz', 0, '3/2']], [['rz', 1, '-1/2'], ['cx', 2, 0], ['cx', 0, 1], ['rz', 2, '1']]], ['regression: random peephole 16', [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '5/4'], ['cx', 0, 1], ['rz', 1, '3/2']], [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']]], ['regression: rz blocked by cx target', [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']], [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]], ['control: random peephole 10', [['cx', 1, 2], ['rz', 0, '5/4'], ['rz', 2, '7/4'], ['rz', 0, '-1/4'], ['h', 1], ['rz', 0, '3/2'], ['rz', 0, '7/4'], ['x', 2]], [['cx', 1, 2], ['rz', 0, '1/4'], ['rz', 2, '-1/4'], ['h', 1], ['x', 2]]], ['control: random peephole 11', [['rz', 0, '-1/2'], ['h', 1], ['x', 2], ['cx', 0, 1], ['rz', 1, '3/2'], ['h', 1], ['cx', 2, 0], ['cx', 1, 0]], [['rz', 0, '-1/2'], ['h', 1], ['x', 2], ['cx', 0, 1], ['rz', 1, '-1/2'], ['h', 1], ['cx', 2, 0], ['cx', 1, 0]]], ['control: random peephole 12', [['x', 2], ['h', 0]], [['x', 2], ['h', 0]]], ['control: random peephole 13', [['h', 1], ['rz', 0, '1/2'], ['rz', 2, '5/4']], [['h', 1], ['rz', 0, '1/2'], ['rz', 2, '-3/4']]]]]
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: rz commutes through cx control[['rz', 0, '1/4'], ['cx', 0, 1], ['rz', 0, '1/4']][['rz', 0, '1/2'], ['cx', 0, 1]]Failed
regression: rz blocked by cx target[['rz', 1, '1/2'], ['cx', 0, 1]][['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]Failed
regression: random peephole 16[['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '3/4'], ['cx', 0, 1]][['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']]Failed
control: rz merges to pi[['rz', 0, '1']][['rz', 0, '1']]Passed
control: merge cancels to zero[][]Passed
control: unnormalized single rz[['rz', 2, '1/2']][['rz', 2, '1/2']]Passed
control: rz of pi alone[['rz', 0, '1']][['rz', 0, '1']]Passed

SHA-256 / d1b29fd7029cc277ab6fbf857c0915ad5c859365af546326658bb0ea6cb93744

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(x):
    ops = x
    out = []
    def touches(op, q):
        if op[0] == 'cx':
            return q in (op[1], op[2])
        return op[1] == q
    def norm(a):
        a = a % 2
        if a > 1:
            a -= 2
        return a
    for op in ops:
        name = op[0]
        if name == 'cx':
            out.append(['cx', op[1], op[2]])
            continue
        q = op[1]
        j = len(out) - 1
        while j >= 0:
            prev = out[j]
            if not touches(prev, q):
                j -= 1
                continue
            if name == 'rz' and prev[0] == 'cx' and q in (prev[1], prev[2]):
                j -= 1
                continue
            break
        if name == 'rz':
            ang = Fraction(op[2])
            if j >= 0 and out[j][0] == 'rz':
                merged = norm(out[j][2] + ang)
                if merged == 0:
                    out.pop(j)
                else:
                    out[j][2] = merged
            else:
                ang = norm(ang)
                if ang != 0:
                    out.append(['rz', q, ang])
        elif name in ('x', 'h') and j >= 0 and out[j][0] == name:
            out.pop(j)
        else:
            out.append([name, q])
    return [[o[0], o[1], str(o[2])] if o[0] == 'rz' else o for o in out]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: rz commutes through cx control', [['rz', 0, '1/4'], ['cx', 0, 1], ['rz', 0, '1/4']], [['rz', 0, '1/2'], ['cx', 0, 1]]], ['regression: rz blocked by cx target', [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']], [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]], ['regression: random peephole 16', [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '5/4'], ['cx', 0, 1], ['rz', 1, '3/2']], [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']]], ['control: rz merges to pi', [['rz', 0, '1/2'], ['rz', 0, '1/2']], [['rz', 0, '1']]], ['control: merge cancels to zero', [['rz', 0, '3/4'], ['rz', 0, '5/4']], []], ['control: unnormalized single rz', [['rz', 2, '5/2']], [['rz', 2, '1/2']]], ['control: rz of pi alone', [['rz', 0, '1']], [['rz', 0, '1']]]], [['regression: random peephole 16', [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '5/4'], ['cx', 0, 1], ['rz', 1, '3/2']], [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']]], ['regression: random peephole 31', [['rz', 2, '7/4'], ['rz', 2, '-1/4'], ['cx', 2, 0], ['rz', 2, '7/4'], ['h', 1]], [['rz', 2, '-3/4'], ['cx', 2, 0], ['h', 1]]], ['regression: rz blocked by cx target', [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']], [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]], ['control: x on different qubits', [['x', 0], ['x', 1]], [['x', 0], ['x', 1]]], ['control: x cancels across other qubit', [['x', 0], ['h', 1], ['x', 0]], [['h', 1]]], ['control: h blocked by rz', [['h', 0], ['rz', 0, '1/2'], ['h', 0]], [['h', 0], ['rz', 0, '1/2'], ['h', 0]]], ['control: random peephole 0', [['rz', 0, '1/2'], ['rz', 0, '-1/2'], ['rz', 1, '3/2'], ['rz', 2, '0'], ['rz', 1, '2'], ['x', 2], ['cx', 1, 0], ['x', 2]], [['rz', 1, '-1/2'], ['cx', 1, 0]]]], [['regression: rz blocked by cx target', [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']], [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]], ['regression: random peephole 7', [['rz', 1, '3/2'], ['cx', 2, 0], ['rz', 0, '0'], ['rz', 0, '3/2'], ['cx', 0, 1], ['rz', 0, '3'], ['rz', 2, '-1'], ['rz', 0, '3/2']], [['rz', 1, '-1/2'], ['cx', 2, 0], ['cx', 0, 1], ['rz', 2, '1']]], ['regression: random peephole 16', [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '5/4'], ['cx', 0, 1], ['rz', 1, '3/2']], [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']]], ['control: random peephole 1', [['cx', 2, 0], ['x', 0]], [['cx', 2, 0], ['x', 0]]], ['control: random peephole 2', [['h', 1], ['h', 0], ['h', 1]], [['h', 0]]], ['control: random peephole 3', [['x', 0], ['rz', 1, '1/2'], ['rz', 1, '1/4'], ['rz', 0, '-1'], ['cx', 2, 0], ['rz', 0, '0'], ['h', 0], ['cx', 1, 2]], [['x', 0], ['rz', 1, '3/4'], ['rz', 0, '1'], ['cx', 2, 0], ['h', 0], ['cx', 1, 2]]], ['control: random peephole 4', [['rz', 2, '5/4'], ['rz', 2, '-1/2'], ['rz', 1, '1/4'], ['rz', 1, '3'], ['cx', 1, 0], ['cx', 2, 0]], [['rz', 2, '3/4'], ['rz', 1, '-3/4'], ['cx', 1, 0], ['cx', 2, 0]]]], [['regression: random peephole 31', [['rz', 2, '7/4'], ['rz', 2, '-1/4'], ['cx', 2, 0], ['rz', 2, '7/4'], ['h', 1]], [['rz', 2, '-3/4'], ['cx', 2, 0], ['h', 1]]], ['regression: rz commutes through cx control', [['rz', 0, '1/4'], ['cx', 0, 1], ['rz', 0, '1/4']], [['rz', 0, '1/2'], ['cx', 0, 1]]], ['regression: rz blocked by cx target', [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']], [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]], ['control: random peephole 5', [['x', 2], ['rz', 2, '3/2'], ['rz', 2, '1'], ['x', 1]], [['x', 2], ['rz', 2, '1/2'], ['x', 1]]], ['control: random peephole 6', [['rz', 1, '-1/4'], ['rz', 0, '1'], ['x', 0], ['x', 1], ['cx', 1, 0], ['rz', 0, '1'], ['rz', 2, '1/4'], ['x', 0]], [['rz', 1, '-1/4'], ['rz', 0, '1'], ['x', 0], ['x', 1], ['cx', 1, 0], ['rz', 0, '1'], ['rz', 2, '1/4'], ['x', 0]]], ['control: random peephole 8', [['rz', 2, '1/4'], ['rz', 2, '3/4'], ['rz', 2, '1'], ['x', 0], ['rz', 2, '3/4']], [['x', 0], ['rz', 2, '3/4']]], ['control: random peephole 9', [['cx', 2, 1], ['rz', 1, '-1/4'], ['rz', 0, '-1'], ['rz', 2, '0'], ['x', 0], ['rz', 1, '-1/2'], ['cx', 2, 1]], [['cx', 2, 1], ['rz', 1, '-3/4'], ['rz', 0, '1'], ['x', 0], ['cx', 2, 1]]]], [['regression: random peephole 7', [['rz', 1, '3/2'], ['cx', 2, 0], ['rz', 0, '0'], ['rz', 0, '3/2'], ['cx', 0, 1], ['rz', 0, '3'], ['rz', 2, '-1'], ['rz', 0, '3/2']], [['rz', 1, '-1/2'], ['cx', 2, 0], ['cx', 0, 1], ['rz', 2, '1']]], ['regression: random peephole 16', [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '5/4'], ['cx', 0, 1], ['rz', 1, '3/2']], [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']]], ['regression: rz blocked by cx target', [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']], [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]], ['control: random peephole 10', [['cx', 1, 2], ['rz', 0, '5/4'], ['rz', 2, '7/4'], ['rz', 0, '-1/4'], ['h', 1], ['rz', 0, '3/2'], ['rz', 0, '7/4'], ['x', 2]], [['cx', 1, 2], ['rz', 0, '1/4'], ['rz', 2, '-1/4'], ['h', 1], ['x', 2]]], ['control: random peephole 11', [['rz', 0, '-1/2'], ['h', 1], ['x', 2], ['cx', 0, 1], ['rz', 1, '3/2'], ['h', 1], ['cx', 2, 0], ['cx', 1, 0]], [['rz', 0, '-1/2'], ['h', 1], ['x', 2], ['cx', 0, 1], ['rz', 1, '-1/2'], ['h', 1], ['cx', 2, 0], ['cx', 1, 0]]], ['control: random peephole 12', [['x', 2], ['h', 0]], [['x', 2], ['h', 0]]], ['control: random peephole 13', [['h', 1], ['rz', 0, '1/2'], ['rz', 2, '5/4']], [['h', 1], ['rz', 0, '1/2'], ['rz', 2, '-3/4']]]]]
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: rz commutes through cx control[['rz', 0, '1/2'], ['cx', 0, 1]][['rz', 0, '1/2'], ['cx', 0, 1]]Passed
regression: rz blocked by cx target[['rz', 1, '1/2'], ['cx', 0, 1]][['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]Failed
regression: random peephole 16[['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '3/4'], ['cx', 0, 1]][['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']]Failed
control: rz merges to pi[['rz', 0, '1']][['rz', 0, '1']]Passed
control: merge cancels to zero[][]Passed
control: unnormalized single rz[['rz', 2, '1/2']][['rz', 2, '1/2']]Passed
control: rz of pi alone[['rz', 0, '1']][['rz', 0, '1']]Passed

SHA-256 / a7a2041411205fabb27949c13ea4c828ada12c5ecaf78a68565cd174728001af

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(x):
    ops = x
    out = []
    def touches(op, q):
        if op[0] == 'cx':
            return q in (op[1], op[2])
        return op[1] == q
    def norm(a):
        a = a % 2
        if a > 1:
            a -= 2
        return a
    for op in ops:
        name = op[0]
        if name == 'cx':
            out.append(['cx', op[1], op[2]])
            continue
        q = op[1]
        j = len(out) - 1
        while j >= 0:
            prev = out[j]
            if not touches(prev, q):
                j -= 1
                continue
            if name == 'rz' and prev[0] == 'cx' and prev[1] == q:
                j -= 1
                continue
            break
        if name == 'rz':
            ang = Fraction(op[2])
            if j >= 0 and out[j][0] == 'rz':
                merged = norm(out[j][2] + ang)
                if merged == 0:
                    out.pop(j)
                else:
                    out[j][2] = merged
            else:
                ang = norm(ang)
                if ang != 0:
                    out.append(['rz', q, ang])
        elif name in ('x', 'h') and j >= 0 and out[j][0] == name:
            out.pop(j)
        else:
            out.append([name, q])
    return [[o[0], o[1], str(o[2])] if o[0] == 'rz' else o for o in out]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: rz commutes through cx control', [['rz', 0, '1/4'], ['cx', 0, 1], ['rz', 0, '1/4']], [['rz', 0, '1/2'], ['cx', 0, 1]]], ['regression: rz blocked by cx target', [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']], [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]], ['regression: random peephole 16', [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '5/4'], ['cx', 0, 1], ['rz', 1, '3/2']], [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']]], ['control: rz merges to pi', [['rz', 0, '1/2'], ['rz', 0, '1/2']], [['rz', 0, '1']]], ['control: merge cancels to zero', [['rz', 0, '3/4'], ['rz', 0, '5/4']], []], ['control: unnormalized single rz', [['rz', 2, '5/2']], [['rz', 2, '1/2']]], ['control: rz of pi alone', [['rz', 0, '1']], [['rz', 0, '1']]]], [['regression: random peephole 16', [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '5/4'], ['cx', 0, 1], ['rz', 1, '3/2']], [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']]], ['regression: random peephole 31', [['rz', 2, '7/4'], ['rz', 2, '-1/4'], ['cx', 2, 0], ['rz', 2, '7/4'], ['h', 1]], [['rz', 2, '-3/4'], ['cx', 2, 0], ['h', 1]]], ['regression: rz blocked by cx target', [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']], [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]], ['control: x on different qubits', [['x', 0], ['x', 1]], [['x', 0], ['x', 1]]], ['control: x cancels across other qubit', [['x', 0], ['h', 1], ['x', 0]], [['h', 1]]], ['control: h blocked by rz', [['h', 0], ['rz', 0, '1/2'], ['h', 0]], [['h', 0], ['rz', 0, '1/2'], ['h', 0]]], ['control: random peephole 0', [['rz', 0, '1/2'], ['rz', 0, '-1/2'], ['rz', 1, '3/2'], ['rz', 2, '0'], ['rz', 1, '2'], ['x', 2], ['cx', 1, 0], ['x', 2]], [['rz', 1, '-1/2'], ['cx', 1, 0]]]], [['regression: rz blocked by cx target', [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']], [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]], ['regression: random peephole 7', [['rz', 1, '3/2'], ['cx', 2, 0], ['rz', 0, '0'], ['rz', 0, '3/2'], ['cx', 0, 1], ['rz', 0, '3'], ['rz', 2, '-1'], ['rz', 0, '3/2']], [['rz', 1, '-1/2'], ['cx', 2, 0], ['cx', 0, 1], ['rz', 2, '1']]], ['regression: random peephole 16', [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '5/4'], ['cx', 0, 1], ['rz', 1, '3/2']], [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']]], ['control: random peephole 1', [['cx', 2, 0], ['x', 0]], [['cx', 2, 0], ['x', 0]]], ['control: random peephole 2', [['h', 1], ['h', 0], ['h', 1]], [['h', 0]]], ['control: random peephole 3', [['x', 0], ['rz', 1, '1/2'], ['rz', 1, '1/4'], ['rz', 0, '-1'], ['cx', 2, 0], ['rz', 0, '0'], ['h', 0], ['cx', 1, 2]], [['x', 0], ['rz', 1, '3/4'], ['rz', 0, '1'], ['cx', 2, 0], ['h', 0], ['cx', 1, 2]]], ['control: random peephole 4', [['rz', 2, '5/4'], ['rz', 2, '-1/2'], ['rz', 1, '1/4'], ['rz', 1, '3'], ['cx', 1, 0], ['cx', 2, 0]], [['rz', 2, '3/4'], ['rz', 1, '-3/4'], ['cx', 1, 0], ['cx', 2, 0]]]], [['regression: random peephole 31', [['rz', 2, '7/4'], ['rz', 2, '-1/4'], ['cx', 2, 0], ['rz', 2, '7/4'], ['h', 1]], [['rz', 2, '-3/4'], ['cx', 2, 0], ['h', 1]]], ['regression: rz commutes through cx control', [['rz', 0, '1/4'], ['cx', 0, 1], ['rz', 0, '1/4']], [['rz', 0, '1/2'], ['cx', 0, 1]]], ['regression: rz blocked by cx target', [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']], [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]], ['control: random peephole 5', [['x', 2], ['rz', 2, '3/2'], ['rz', 2, '1'], ['x', 1]], [['x', 2], ['rz', 2, '1/2'], ['x', 1]]], ['control: random peephole 6', [['rz', 1, '-1/4'], ['rz', 0, '1'], ['x', 0], ['x', 1], ['cx', 1, 0], ['rz', 0, '1'], ['rz', 2, '1/4'], ['x', 0]], [['rz', 1, '-1/4'], ['rz', 0, '1'], ['x', 0], ['x', 1], ['cx', 1, 0], ['rz', 0, '1'], ['rz', 2, '1/4'], ['x', 0]]], ['control: random peephole 8', [['rz', 2, '1/4'], ['rz', 2, '3/4'], ['rz', 2, '1'], ['x', 0], ['rz', 2, '3/4']], [['x', 0], ['rz', 2, '3/4']]], ['control: random peephole 9', [['cx', 2, 1], ['rz', 1, '-1/4'], ['rz', 0, '-1'], ['rz', 2, '0'], ['x', 0], ['rz', 1, '-1/2'], ['cx', 2, 1]], [['cx', 2, 1], ['rz', 1, '-3/4'], ['rz', 0, '1'], ['x', 0], ['cx', 2, 1]]]], [['regression: random peephole 7', [['rz', 1, '3/2'], ['cx', 2, 0], ['rz', 0, '0'], ['rz', 0, '3/2'], ['cx', 0, 1], ['rz', 0, '3'], ['rz', 2, '-1'], ['rz', 0, '3/2']], [['rz', 1, '-1/2'], ['cx', 2, 0], ['cx', 0, 1], ['rz', 2, '1']]], ['regression: random peephole 16', [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '5/4'], ['cx', 0, 1], ['rz', 1, '3/2']], [['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']]], ['regression: rz blocked by cx target', [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']], [['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]], ['control: random peephole 10', [['cx', 1, 2], ['rz', 0, '5/4'], ['rz', 2, '7/4'], ['rz', 0, '-1/4'], ['h', 1], ['rz', 0, '3/2'], ['rz', 0, '7/4'], ['x', 2]], [['cx', 1, 2], ['rz', 0, '1/4'], ['rz', 2, '-1/4'], ['h', 1], ['x', 2]]], ['control: random peephole 11', [['rz', 0, '-1/2'], ['h', 1], ['x', 2], ['cx', 0, 1], ['rz', 1, '3/2'], ['h', 1], ['cx', 2, 0], ['cx', 1, 0]], [['rz', 0, '-1/2'], ['h', 1], ['x', 2], ['cx', 0, 1], ['rz', 1, '-1/2'], ['h', 1], ['cx', 2, 0], ['cx', 1, 0]]], ['control: random peephole 12', [['x', 2], ['h', 0]], [['x', 2], ['h', 0]]], ['control: random peephole 13', [['h', 1], ['rz', 0, '1/2'], ['rz', 2, '5/4']], [['h', 1], ['rz', 0, '1/2'], ['rz', 2, '-3/4']]]]]
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: rz commutes through cx control[['rz', 0, '1/2'], ['cx', 0, 1]][['rz', 0, '1/2'], ['cx', 0, 1]]Passed
regression: rz blocked by cx target[['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']][['rz', 1, '1/4'], ['cx', 0, 1], ['rz', 1, '1/4']]Passed
regression: random peephole 16[['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']][['cx', 2, 0], ['h', 0], ['cx', 2, 0], ['cx', 1, 0], ['rz', 1, '-3/4'], ['cx', 0, 1], ['rz', 1, '-1/2']]Passed
control: rz merges to pi[['rz', 0, '1']][['rz', 0, '1']]Passed
control: merge cancels to zero[][]Passed
control: unnormalized single rz[['rz', 2, '1/2']][['rz', 2, '1/2']]Passed
control: rz of pi alone[['rz', 0, '1']][['rz', 0, '1']]Passed

SHA-256 / 9484e415fb06913e848b4bfdf70425dc3203bd2cd437cf541bf32df30b87e0dc

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:34.385908+00:00.

Case digest / a632ce18e12236b1116878f4a820325e44327109e839a2fc04b352404ebadfa0