open-standards/wai/quantum-conformance/qasm3/manifest.json
Transaction Science 37dfe98d2d wai quantum-conformance/qasm3: the OpenQASM 3 corpus, run natively, under wasm32-wasip2 and in the browser
59 programs, each with what the reader must do with it: the language
specification's 21 example programs, unchanged (those that run held to
their results, the rest to the code that names the first construct the
reader cannot hold exactly, or the example's own error), and a program for
each construct with a reference written without it. stdgates.qasm applies
every standard gate once, and its reference writes each in U and CX alone.

Expectations: refused (a code), warns (every warning's code), deterministic
(every shot's outcome), distribution (exact outcome probabilities),
expectations (exact Pauli values), equivalent (a reference's unitary up to a
global phase), exact (the bit-exact circuit takes it or refuses it with a
code), outputs, timing and calibrations. bundle.json holds the cases with
their text inline for builds that read no files; a test holds it equal to
the files.

CI: wai-quantum-lang.yml runs the reader's tests, the corpus natively, the
reader built without the lowerings, and the corpus under wasm32-wasip2 by
wasmtime; wai-web's wasm32 tests read every case through the page's engine
(the wasm32 count goes from 8 to 9).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 19:51:34 -04:00

690 lines
12 KiB
JSON

{
"format": "wai.qasm3-conformance/1",
"about": "OpenQASM 3 programs, each with what the reader must do with it. spec/ holds the language specification's example programs, unchanged; lang/ holds a program for each construct, and references written without it.",
"expectations": {
"refused": "reading refuses the program with this diagnostic code",
"warns": "reading succeeds, and these are the codes of every warning and note it gives, sorted",
"deterministic": "every shot of a run gives this outcome (bit n-1 first)",
"distribution": "the exact probabilities of the outcomes of a program whose measurements all come at the end, within 1e-9",
"expectations": "Pauli expectation values of the state before the final measurements, exact, within 1e-9",
"equivalent": "the program's unitary equals the named reference's, up to a global phase, within 1e-9",
"exact": "the bit-exact circuit takes the program (ok), or refuses it with this code",
"outputs": "the run's result lists these outputs",
"timing": "the run's result labels its durations as not applied",
"calibrations": "the program keeps this many calibration statements verbatim",
"inputs": "the generator's inputs"
},
"cases": [
{
"file": "spec/adder.qasm",
"covers": [
"gate definitions",
"uint indexed as bits",
"casts",
"for over a range with a negative step",
"slices in measurement"
],
"expect": {
"deterministic": "10000"
}
},
{
"file": "spec/alignment.qasm",
"covers": [
"stretch",
"delay with a stretch expression",
"barrier"
],
"expect": {
"warns": [
"Q403"
],
"timing": true,
"distribution": {
"000": 0.8535533905932737,
"100": 0.14644660940672624
}
}
},
{
"file": "spec/arrays.qasm",
"covers": [
"arrays",
"nested array values",
"slices",
"sizeof",
"an index past the array's end (the example's own: `a - 1` is 4)"
],
"expect": {
"refused": "Q107"
}
},
{
"file": "spec/cphase.qasm",
"covers": [
"a fragment: no qubits declared"
],
"expect": {
"refused": "Q102"
}
},
{
"file": "spec/dd.qasm",
"covers": [
"durationof"
],
"expect": {
"refused": "Q405"
}
},
{
"file": "spec/defcal.qasm",
"covers": [
"defcal",
"defcalgrammar"
],
"expect": {
"refused": "Q100"
}
},
{
"file": "spec/gateteleport.qasm",
"covers": [
"extern",
"subroutine bits"
],
"expect": {
"refused": "Q125"
}
},
{
"file": "spec/inverseqft1.qasm",
"covers": [
"conditions on a cast of measured bits"
],
"expect": {
"deterministic": "0000"
}
},
{
"file": "spec/inverseqft2.qasm",
"covers": [
"conditions on single bits",
"measure ->"
],
"expect": {
"deterministic": "0000"
}
},
{
"file": "spec/ipe.qasm",
"covers": [
"angle arithmetic on measured bits"
],
"expect": {
"refused": "Q128"
}
},
{
"file": "spec/msd.qasm",
"covers": [
"subroutines",
"an index outside its register"
],
"expect": {
"refused": "Q107"
}
},
{
"file": "spec/qec.qasm",
"covers": [
"a subroutine returning measured bits",
"conditions on a cast"
],
"expect": {
"deterministic": "01000"
}
},
{
"file": "spec/qft.qasm",
"covers": [
"cphase",
"reset before the first gate"
],
"expect": {
"distribution": {
"0000": 0.0625,
"0001": 0.0625,
"0010": 0.0625,
"0011": 0.0625,
"0100": 0.0625,
"0101": 0.0625,
"0110": 0.0625,
"0111": 0.0625,
"1000": 0.0625,
"1001": 0.0625,
"1010": 0.0625,
"1011": 0.0625,
"1100": 0.0625,
"1101": 0.0625,
"1110": 0.0625,
"1111": 0.0625
}
}
},
{
"file": "spec/qpt.qasm",
"covers": [
"empty gate bodies",
"barrier"
],
"expect": {
"distribution": {
"0": 0.5,
"1": 0.5
}
}
},
{
"file": "spec/rb.qasm",
"covers": [
"a Clifford sequence"
],
"expect": {
"deterministic": "00"
}
},
{
"file": "spec/rus.qasm",
"covers": [
"while on measured bits with no bound",
"bits set by a constant"
],
"expect": {
"refused": "Q310"
}
},
{
"file": "spec/scqec.qasm",
"covers": [
"subroutines called as gates",
"bits known on reading",
"extern"
],
"expect": {
"refused": "Q125"
}
},
{
"file": "spec/t1.qasm",
"covers": [
"durations",
"durationof"
],
"expect": {
"refused": "Q405"
}
},
{
"file": "spec/teleport.qasm",
"covers": [
"teleportation",
"conditions",
"an empty gate"
],
"expect": {
"expectations": {
"Z2": 0.955336489125606
}
}
},
{
"file": "spec/varteleport.qasm",
"covers": [
"let rebinding a name of an enclosing scope"
],
"expect": {
"refused": "Q101"
}
},
{
"file": "spec/vqe.qasm",
"covers": [
"extern"
],
"expect": {
"refused": "Q125"
}
},
{
"file": "lang/def.qasm",
"covers": [
"def",
"return"
],
"expect": {
"equivalent": "lang/def.ref.qasm",
"exact": "ok"
}
},
{
"file": "lang/def_measure.qasm",
"covers": [
"def with bits of its own",
"a returned measurement"
],
"expect": {
"deterministic": "1"
}
},
{
"file": "lang/inv.qasm",
"covers": [
"inv @ on standard and user gates"
],
"expect": {
"equivalent": "lang/inv.ref.qasm"
}
},
{
"file": "lang/pow.qasm",
"covers": [
"pow(k) @, k a whole number"
],
"expect": {
"equivalent": "lang/pow.ref.qasm"
}
},
{
"file": "lang/root.qasm",
"covers": [
"pow(r) @, r fractional, exact roots"
],
"expect": {
"equivalent": "lang/root.ref.qasm"
}
},
{
"file": "lang/ctrl_any.qasm",
"covers": [
"ctrl @ on a rotation",
"negctrl @"
],
"expect": {
"distribution": {
"010": 0.75,
"111": 0.25
}
}
},
{
"file": "lang/ctrl_user.qasm",
"covers": [
"ctrl @ on a user gate, rz and U"
],
"expect": {
"equivalent": "lang/ctrl_user.ref.qasm"
}
},
{
"file": "lang/types.qasm",
"covers": [
"float",
"angle",
"complex",
"uint",
"bit arrays",
"arrays",
"casts",
"built-in functions"
],
"expect": {
"equivalent": "lang/types.ref.qasm"
}
},
{
"file": "lang/angle_round.qasm",
"covers": [
"angle[n] rounding"
],
"expect": {
"warns": [
"Q121"
],
"equivalent": "lang/angle_round.ref.qasm",
"exact": "ok"
}
},
{
"file": "lang/while_static.qasm",
"covers": [
"while known on reading",
"break"
],
"expect": {
"equivalent": "lang/while_static.ref.qasm"
}
},
{
"file": "lang/while_rus.qasm",
"covers": [
"while on measured bits under a declared bound"
],
"expect": {
"warns": [
"Q311"
],
"deterministic": "1"
}
},
{
"file": "lang/while_unbounded.qasm",
"covers": [
"while on measured bits"
],
"expect": {
"refused": "Q310"
}
},
{
"file": "lang/switch.qasm",
"covers": [
"switch known on reading",
"switch on measured bits"
],
"expect": {
"deterministic": "101"
}
},
{
"file": "lang/break_continue.qasm",
"covers": [
"break",
"continue"
],
"expect": {
"equivalent": "lang/break_continue.ref.qasm"
}
},
{
"file": "lang/runtime_break.qasm",
"covers": [
"break on a measured bit"
],
"expect": {
"deterministic": "0011"
}
},
{
"file": "lang/conditions.qasm",
"covers": [
"comparisons, &&, || and ! on measured bits"
],
"expect": {
"deterministic": "101110"
}
},
{
"file": "lang/output.qasm",
"covers": [
"output"
],
"expect": {
"deterministic": "10",
"outputs": [
{
"name": "c",
"type": "bit[2]",
"bits": [
0,
1
]
},
{
"name": "n",
"type": "int[32]",
"value": 3
},
{
"name": "t",
"type": "float[64]",
"value": 0.7853981633974483
}
]
}
},
{
"file": "lang/timing.qasm",
"covers": [
"delay",
"box",
"stretch",
"barrier",
"gate durations"
],
"expect": {
"warns": [
"Q403"
],
"timing": true,
"distribution": {
"01": 0.5,
"10": 0.5
}
}
},
{
"file": "lang/calibration.qasm",
"covers": [
"defcal",
"cal",
"defcalgrammar"
],
"expect": {
"warns": [
"Q450",
"Q451",
"Q452"
],
"calibrations": 3,
"distribution": {
"0": 0.5,
"1": 0.5
}
}
},
{
"file": "lang/stdgates.qasm",
"covers": [
"every standard gate, U and CX"
],
"expect": {
"equivalent": "lang/stdgates.ref.qasm"
}
},
{
"file": "lang/aliases.qasm",
"covers": [
"let",
"slices",
"index sets",
"negative indices",
"++"
],
"expect": {
"equivalent": "lang/aliases.ref.qasm"
}
},
{
"file": "lang/physical.qasm",
"covers": [
"physical qubits"
],
"expect": {
"equivalent": "lang/physical.ref.qasm"
}
},
{
"file": "lang/gphase.qasm",
"covers": [
"gphase",
"ctrl @ gphase"
],
"expect": {
"equivalent": "lang/gphase.ref.qasm"
}
},
{
"file": "lang/bits_known.qasm",
"covers": [
"bits set by a constant"
],
"expect": {
"deterministic": "01"
}
},
{
"file": "lang/generator.qasm",
"covers": [
"input"
],
"expect": {
"inputs": {
"n": 4
},
"distribution": {
"0000": 0.5,
"1111": 0.5
},
"exact": "ok"
}
},
{
"file": "lang/qasm2.qasm",
"covers": [
"OpenQASM 2: qreg, creg, u1, u2, u3, CX, measure ->"
],
"expect": {
"distribution": {
"01": 0.5,
"11": 0.5
}
}
},
{
"file": "lang/qasm2_if.qasm",
"covers": [
"OpenQASM 2: if(c==n)"
],
"expect": {
"deterministic": "11"
}
},
{
"file": "lang/exported.qasm",
"covers": [
"a program as converters write one: gates with generated names, decimal angles"
],
"expect": {
"distribution": {
"000": 0.5,
"111": 0.5
}
}
},
{
"file": "lang/refuse_root.qasm",
"covers": [
"a fractional power with no exact gate"
],
"expect": {
"refused": "Q205"
}
},
{
"file": "lang/refuse_extern.qasm",
"covers": [
"extern"
],
"expect": {
"refused": "Q125"
}
},
{
"file": "lang/refuse_runtime.qasm",
"covers": [
"classical arithmetic on measured bits"
],
"expect": {
"refused": "Q306"
}
},
{
"file": "lang/refuse_durationof.qasm",
"covers": [
"durationof"
],
"expect": {
"refused": "Q405"
}
},
{
"file": "lang/refuse_opaque.qasm",
"covers": [
"opaque"
],
"expect": {
"refused": "Q126"
}
},
{
"file": "lang/refuse_truncating.qasm",
"covers": [
"a truncating division as a real"
],
"expect": {
"refused": "Q118"
}
},
{
"file": "lang/refuse_caret.qasm",
"covers": [
"^ between integers with no version"
],
"expect": {
"refused": "Q119"
}
},
{
"file": "lang/refuse_unknown_gate.qasm",
"covers": [
"an unknown gate"
],
"expect": {
"refused": "Q103"
}
},
{
"file": "lang/exact_not_dyadic.qasm",
"covers": [
"the bit-exact method: an angle that is not dyadic"
],
"expect": {
"exact": "Q500",
"distribution": {
"0": 0.5,
"1": 0.5
}
}
},
{
"file": "lang/exact_dynamic.qasm",
"covers": [
"the bit-exact method: a dynamic program"
],
"expect": {
"exact": "Q502"
}
}
]
}