IRProgram and produces a Qiskit QuantumCircuit that you can simulate locally, transpile, or submit to real quantum hardware. For programs built with @coherent, there is a two-step path: first lower the ExactProgram to IRProgram, then emit to QuantumCircuit. For @parametric and @adaptive programs, skip the first step — they already produce IRProgram directly from .build().
Prerequisites
Install Qiskit before using the backend:QiskitBackend().emit() raises:
Compiling a @coherent program
@coherent programs produce an ExactProgram. Before passing to the Qiskit backend, lower it to IRProgram with lower_exact_program():
lower_exact_program() handles ancilla coalescing — sequential ancilla registers share physical qubits to minimize qubit count. The returned IRProgram carries is_safe=True from the original certification.
Compiling @parametric and @adaptive programs
@parametric and @adaptive programs produce IRProgram directly from .build(), so you can pass them straight to the backend:
Complete example
Here is a full walkthrough from definition to printed circuit, using the Bernstein-Vazirani oracle as an example:Supported gates
The Qiskit backend maps b01t gate names to Qiskit circuit methods as follows:
Measurement operations (
measure, measure_all) add classical registers automatically. Classical if_then is not supported in the current backend — attempting to emit an IfOp raises DSLValidationError.
Running the circuit
Once you have aQuantumCircuit, use any Qiskit-compatible runner:
qiskit-ibm-runtime. The QuantumCircuit produced by b01t is a standard Qiskit circuit — any Qiskit tutorial or documentation applies directly.