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 algorithm. 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 among three different bases via the Quantum Fourier Transform and Hadamard operations, 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 oracles used in Shor's and Grover's algorithms, as well as several common arithmetic operators. VQO's oracles have performance comparable to those produced by Quipper, a state-of-the-art but unverified quantum programming platform.
翻译:量子算法经常对古典数据的量子叠加应用古典操作,例如算术或上游检查;这些所谓的神器往往是量子算法的最大组成部分。为方便高效、正确或触摸功能的构建,本文件展示了VQO,这是与 Coq 验证助理一起实施的高度保障框架。 VQO 的核心是 OQASM, orac 量子组装语言。 OQASM 操作通过 Quantum Fourier 变换和 Hadamard 操作在三个不同基地之间移动方块,从而接受重要的优化,但并不引起纠缠和随之而来的指数打击。 OQASM 的设计让我们能够证明 VQO 的编译者是正确的, 从一个简单的必用语言“ OQIMP ” 到 OQSM 。 从 OQASM 到 SQIR, 一个通用的量子组装配制语言。 并且允许我们通过基于 Quick Chick 属性的测试框架, 有效地测试 OQSM 的特性, 我们使用 VQO 来实施一个共同的或QQQQO 操作操作, 。