  We present CertiQ, a verification framework for writing and verifying
compiler passes of Qiskit, the most widely-used quantum compiler. To our
knowledge, CertiQ is the first effort enabling the verification of real-world
quantum compiler passes in a mostly-automated manner. Compiler passes written
in the CertiQ interface with annotations can be used to generate verification
conditions, as well as the executable code that can be integrated into Qiskit.
CertiQ introduces the quantum circuit calculus to enable the efficient checking
of equivalence of quantum circuits by encoding such a checking procedure into
an SMT problem. CertiQ also provides a verified library of widely-used data
structures, transformation functions for circuits, and conversion functions for
different quantum data representations. This verified library not only enables
modular verification but also sheds light on future quantum compiler design. We
have re-implemented and verified 26 (out of 30) Qiskit compiler passes in
CertiQ, during which three bugs are detected in the Qiskit implementation. Our
verified compiler pass implementations passed all of Qiskit's regression tests
without showing noticeable performance loss.
