Statistical assertions for validating patterns and finding bugs in quantum programs

Unknown author(s)

2019 · 125 citations · 24 references

DOIFull text

Open access

Concepts

TL;DR

Quantum computing experimentation requires new tools, yet debugging quantum programs is difficult because internal states are hard to probe, interpret, and there are no established guidelines. This work introduces quantum program assertions based on statistical tests on classical observations. We extend a quantum programming language with assertions that use statistical tests on classical observations to verify whether a program state matches expected classical, superposition, or entangled values, and we apply these assertions in a simulator to debug three benchmark quantum programs. We identify bug types and propose a strategy that employs quantum programming patterns to place assertions that prevent bugs.

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.

References

24