Quipper: a scalable quantum programming language

The field of quantum algorithms is vibrant. Still, there is currently a lack of programming languages for describing quantum computation on a practical scale, i.e., not just at the level of toy problems. We address this issue by introducing Quipper, a scalable, expressive, functional, higher-order quantum programming language. Quipper has been used to program a diverse set of non-trivial quantum algorithms, and can generate quantum gate representations using trillions of gates. It is geared towards a model of computation that uses a classical computer to control a quantum device, but is not dependent on any particular model of quantum hardware. Quipper has proven effective and easy to use, and opens the door towards using formal methods to analyze quantum algorithms.

[1]  J GaySimon,et al.  Quantum programming languages: survey and bibliography , 2006 .

[2]  Koen Claessen Embedded Languages for Describing and Verifying Hardware , 2001 .

[3]  Benoît Valiron,et al.  A lambda calculus for quantum computation with classical control , 2004, Mathematical Structures in Computer Science.

[4]  T. Sheard Template Metaprogramming for Haskell , 2014 .

[5]  Thierry Paul,et al.  Quantum computation and quantum information , 2007, Mathematical Structures in Computer Science.

[6]  Andris Ambainis,et al.  Any AND-OR Formula of Size N Can Be Evaluated in Time N1/2+o(1) on a Quantum Computer , 2010, SIAM J. Comput..

[7]  Simon L. Peyton Jones,et al.  Template meta-programming for Haskell , 2002, Haskell '02.

[8]  Thorsten Altenkirch,et al.  The Quantum IO Monad , 2006 .

[9]  Andrew M. Childs,et al.  Quantum Query Complexity of Minor-Closed Graph Properties , 2012, SIAM J. Comput..

[10]  Raphaël Clifford,et al.  ACM-SIAM Symposium on Discrete Algorithms , 2015, SODA 2015.

[11]  E. Knill,et al.  Conventions for quantum pseudocode , 1996, 2211.02559.

[12]  TonderAndré van A Lambda Calculus for Quantum Computation , 2004 .

[13]  Peter W. Shor,et al.  Algorithms for quantum computation: discrete logarithms and factoring , 1994, Proceedings 35th Annual Symposium on Foundations of Computer Science.

[14]  Simon J. Gay,et al.  Quantum Programming Languages Survey and Bibliography , 2006 .

[15]  Sean Hallgren,et al.  Polynomial-time quantum algorithms for Pell's equation and the principal ideal problem , 2002, STOC '02.

[16]  D. Deutsch Quantum theory, the Church–Turing principle and the universal quantum computer , 1985, Proceedings of the Royal Society of London. A. Mathematical and Physical Sciences.

[17]  Bernhard Ömer,et al.  Quantum Programming in QCL , 2000 .

[18]  P. Selinger,et al.  Quantum lambda calculus , 2010 .

[19]  Daniel A. Spielman,et al.  Exponential algorithmic speedup by a quantum walk , 2002, STOC '03.

[20]  André van Tonder,et al.  A Lambda Calculus for Quantum Computation , 2003, SIAM J. Comput..

[21]  Andris Ambainis,et al.  Any AND-OR Formula of Size N can be Evaluated in time N^{1/2 + o(1)} on a Quantum Computer , 2010, 48th Annual IEEE Symposium on Foundations of Computer Science (FOCS'07).

[22]  Frédéric Magniez,et al.  An $O(n^{1.3})$ Quantum Algorithm for the Triangle Problem , 2003 .

[23]  J. Whitfield,et al.  Simulation of electronic structure Hamiltonians using quantum computers , 2010, 1001.3855.

[24]  Oded Regev,et al.  Quantum computation and lattice problems , 2002, The 43rd Annual IEEE Symposium on Foundations of Computer Science, 2002. Proceedings..

[25]  Isaac L. Chuang,et al.  Quantum Computation and Quantum Information (10th Anniversary edition) , 2011 .

[26]  Nicole Stender Template Metaprogramming for Haskell , 2014 .

[27]  Frédéric Magniez,et al.  Quantum algorithms for the triangle problem , 2005, SODA '05.

[28]  A. Harrow,et al.  Quantum algorithm for linear systems of equations. , 2008, Physical review letters.