Quantum algorithms often apply classical operations, such as arithmetic or predicate checks, over a quantum superposition of classical data; these so-called oracles are often the largest components of a quantum program. To ease the construction of efficient, correct oracle functions, this paper presents VQO, a high-assurance framework implemented with the Coq proof assistant. The core of VQO is OQASM, the oracle quantum assembly language. OQASM operations move qubits between two different bases via the quantum Fourier transform, thus admitting important optimizations, but without inducing entanglement and the exponential blowup that comes with it. OQASM's design enabled us to prove correct VQO's compilers -- from a simple imperative language called OQIMP to OQASM, and from OQASM to SQIR, a general-purpose quantum assembly language -- and allowed us to efficiently test properties of OQASM programs using the QuickChick property-based testing framework. We have used VQO to implement a variety of arithmetic and geometric operators that are building blocks for important oracles, including those used in Shor's and Grover's algorithms. We found that VQO's QFT-based arithmetic oracles require fewer qubits, sometimes substantially fewer, than those constructed using "classical" gates; VQO's versions of the latter were nevertheless on par with or better than (in terms of both qubit and gate counts) oracles produced by Quipper, a state-of-the-art but unverified quantum programming platform.
翻译:量子算法通常应用古典操作,例如算术或上游检查,以取代古典数据的量子叠加;这些所谓的神器往往是量子程序的最大组成部分。为了方便高效、正确或触摸功能的构建,本文件展示了VQO,这是与 Coq 校对助理一起实施的高度保障框架。 VQO 的核心是 OQASM, 一种普通量子组装配语言。 OQASM 操作通过量子 Fleier 变换, 将两个不同的基体之间的方位移动, 从而接受重要的优化, 但不引起纠缠和随之而来的指数打击。 OQASM 的设计让我们能够证明 VQO 的编译者是正确的, 从一个叫 OQIMP 到 OQASM 的简单必要语言, 从 OQQASM 到 SQIR, 一种普通目的量子组装配方语言。 并使我们能够有效地测试 OQASM 程序的性质, 使用Quick 属性测试框架, 从而接受重要的, 我们使用 VQO 的解算算法操作员和测算算算算算器, 。