Statistical Assertions for Validating Patterns and Finding Bugs in Quantum Programs
arXiv:1905.09721 · doi:10.1145/3307650.3322213
Abstract
In support of the growing interest in quantum computing experimentation, programmers need new tools to write quantum algorithms as program code. Compared to debugging classical programs, debugging quantum programs is difficult because programmers have limited ability to probe the internal states of quantum programs; those states are difficult to interpret even when observations exist; and programmers do not yet have guidelines for what to check for when building quantum programs. In this work, we present quantum program assertions based on statistical tests on classical observations. These allow programmers to decide if a quantum program state matches its expected value in one of classical, superposition, or entangled types of states. We extend an existing quantum programming language with the ability to specify quantum assertions, which our tool then checks in a quantum program simulator. We use these assertions to debug three benchmark quantum programs in factoring, search, and chemistry. We share what types of bugs are possible, and lay out a strategy for using quantum programming patterns to place assertions and prevent bugs.
In The 46th Annual International Symposium on Computer Architecture (ISCA '19). arXiv admin note: text overlap with arXiv:1811.05447
References in corpus (15)
- Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer
- Characterizing Quantum Supremacy in Near-Term Devices
- Quantum algorithms: an overview
- Towards Quantum Chemistry on a Quantum Computer
- The Bravyi-Kitaev transformation for quantum computation of electronic structure
- Experimental Comparison of Two Quantum Computing Architectures
- Simulating quantum computation by contracting tensor networks
- Simulation of Electronic Structure Hamiltonians Using Quantum Computers
- Experimental demonstration of Shor's algorithm with quantum entanglement
- Gate count estimates for performing quantum chemistry on small quantum computers
- Q#: Enabling scalable quantum computing and development with a high-level domain-specific language
- 0.5 Petabyte Simulation of a 45-Qubit Quantum Circuit
- A Software Methodology for Compiling Quantum Programs
- From Schrödinger's Equation to the Quantum Search Algorithm
- Quantitative Robustness Analysis of Quantum Programs (Extended Version)
Cited by in corpus (21)
- Full-State Quantum Circuit Simulation by Using Data Compression
- Bugs in Quantum Computing Platforms: An Empirical Study
- Quantum Software Engineering: Roadmap and Challenges Ahead
- A Deductive Verification Framework for Circuit-building Quantum Programs
- MorphQ: Metamorphic Testing of the Qiskit Quantum Computing Platform
- Is Your Quantum Program Bug-Free?
- JigSaw: Boosting Fidelity of NISQ Programs via Measurement Subsetting
- Twist: Sound Reasoning for Purity and Entanglement in Quantum Programs
- Analyzing Quantum Programs with LintQ: A Static Analysis Framework for Qiskit
- Quantum Circuits for Dynamic Runtime Assertions in Quantum Computation
- A Tool For Debugging Quantum Circuits
- Quantivine: A Visualization Approach for Large-scale Quantum Circuit Representation and Analysis
- Symbolic Execution for Quantum Error Correction Programs
- On the need for effective tools for debugging quantum programs
- Identifying Flakiness in Quantum Programs
- Enabling High Performance Debugging for Variational Quantum Algorithms using Compressed Sensing
- Quantum circuit debugging and sensitivity analysis via local inversions
- QuanTest: Entanglement-Guided Testing of Quantum Neural Network Systems
- Comparative Analysis of Quantum and Classical Support Vector Classifiers for Software Bug Prediction: An Exploratory Study
- Quantum Hoare Type Theory: Extended Abstract
- Hoare meets Heisenberg: A Lightweight Logic for Quantum Programs