Proto-Quipper with Reversing and ControlTalk
The quantum programming language Quipper supports circuit operations such as reversing and control, which allows programmers to control and reverse certain quantum circuits. In addition to these two operations, Quipper provides a function called \textit{with-computed}, which can be used to program circuits of the form $g; f; g^{\dagger}$. The latter is a common pattern in quantum circuit design. One benefit of using with-computed, as opposed to constructing the circuit $g ; f; g^{\dagger}$ directly from $g$, $f$, and $g^{\dagger}$, is that it facilitates an important optimization. Namely, if the resulting circuit is later controlled, only the circuit $f$ in the middle needs to be controlled; the circuits $g$ and $g^{\dagger}$ need not even be controllable.
In this paper, we formalize a semantics for reversible and controllable circuits, using a dagger symmetric monoidal category $\R$ to interpret reversible circuits, and a new notion we call a \textit{controllable category} $\N$ to interpret controllable circuits. The controllable category $\N$ encompasses the control and with-computed operations in Quipper. We extend the language Proto-Quipper with reversing, control and the with-computed operation. Since not all circuits are reversible and/or controllable, we use a type system with modalities to track reversibility and controllability. This generalizes the modality of Fu-Kishida-Ross-Selinger 2023. We give an abstract categorical semantics for reversing, control and with-computed, and show that the type system and operational semantics are sound with respect to this semantics. Lastly, we construct a concrete model using a generalization of \textit{biset enrichment} from Fu-Kishida-Ross-Selinger 2022.
A preprint of this paper is available at http://arxiv.org/abs/2410.22261.