  In recent years, the quantum computing community has seen an explosion of
novel methods to implement non-trivial quantum computations on near-term
hardware. An important direction of research has been to decompose an arbitrary
entangled state, represented as a unitary, into a quantum circuit, that is, a
sequence of gates supported by a quantum processor. It has been well known that
circuits with longer decompositions and more entangling multi-qubit gates are
error-prone for the current noisy, intermediate-scale quantum devices. To this
end, there has been a significant interest to develop heuristic-based methods
to discover compact circuits. We contribute to this effort by proposing
QuantumCircuitOpt (QCOpt), a novel open-source framework which implements
mathematical optimization formulations and algorithms for decomposing arbitrary
unitary gates into a sequence of hardware-native gates. A core innovation of
QCOpt is that it provides optimality guarantees on the quantum circuits that it
produces. In particular, we show that QCOpt can find up to 57% reduction in the
number of necessary gates on circuits with up to four qubits, and in run times
less than a few minutes on commodity computing hardware. We also validate the
efficacy of QCOpt as a tool for quantum circuit design in comparison with a
naive brute-force enumeration algorithm. We also show how the QCOpt package can
be adapted to various built-in types of native gate sets, based on different
hardware platforms like those produced by IBM, Rigetti and Google. We hope this
package will facilitate further algorithmic exploration for quantum processor
designers, as well as quantum physicists.
