A Functional Quantum Programming Language Thorsten Altenkirch University of Nottingham based on joint work with Jonathan Grattage and discussions with V.P. Belavkin supported by EPSRC grant GR/S30818/01 A Functional Quantum Programming Language p.1/??
Alternative title What you always wanted to know about quantum computation but never dared to ask. A Functional Quantum Programming Language p.2/??
Another alternative title Quantum programming for the lazy functional programmer A Functional Quantum Programming Language p.3/??
Background A Functional Quantum Programming Language p.4/??
Background Simulation of quantum systems is expensive: Exponential time to simulate polynomial circuits. A Functional Quantum Programming Language p.4/??
Background Simulation of quantum systems is expensive: Exponential time to simulate polynomial circuits. Feynman: Can we exploit this fact to perform computations more efficiently? A Functional Quantum Programming Language p.4/??
Background Simulation of quantum systems is expensive: Exponential time to simulate polynomial circuits. Feynman: Can we exploit this fact to perform computations more efficiently? Shor: Factorisation in quantum polynomial time. A Functional Quantum Programming Language p.4/??
Background Simulation of quantum systems is expensive: Exponential time to simulate polynomial circuits. Feynman: Can we exploit this fact to perform computations more efficiently? Shor: Factorisation in quantum polynomial time. Grover: Blind search in A Functional Quantum Programming Language p.4/??
Background Simulation of quantum systems is expensive: Exponential time to simulate polynomial circuits. Feynman: Can we exploit this fact to perform computations more efficiently? Shor: Factorisation in quantum polynomial time. Grover: Blind search in Can we build a quantum computer? A Functional Quantum Programming Language p.4/??
Background Simulation of quantum systems is expensive: Exponential time to simulate polynomial circuits. Feynman: Can we exploit this fact to perform computations more efficiently? Shor: Factorisation in quantum polynomial time. Grover: Blind search in Can we build a quantum computer? yes We can run quantum algorithms. A Functional Quantum Programming Language p.4/??
Background Simulation of quantum systems is expensive: Exponential time to simulate polynomial circuits. Feynman: Can we exploit this fact to perform computations more efficiently? Shor: Factorisation in quantum polynomial time. Grover: Blind search in Can we build a quantum computer? yes We can run quantum algorithms. no Nature is classical after all! A Functional Quantum Programming Language p.4/??
Background Simulation of quantum systems is expensive: Exponential time to simulate polynomial circuits. Feynman: Can we exploit this fact to perform computations more efficiently? Shor: Factorisation in quantum polynomial time. Grover: Blind search in Can we build a quantum computer? yes We can run quantum algorithms. no Nature is classical after all! Assumption: Nature is fair... A Functional Quantum Programming Language p.4/??
The quantum software crisis A Functional Quantum Programming Language p.5/??
The quantum software crisis Quantum algorithms are usually presented using the circuit model. A Functional Quantum Programming Language p.5/??
The quantum software crisis Quantum algorithms are usually presented using the circuit model. Nielsen and Chuang, p.7, Coming up with good quantum algorithms is hard. A Functional Quantum Programming Language p.5/??
The quantum software crisis Quantum algorithms are usually presented using the circuit model. Nielsen and Chuang, p.7, Coming up with good quantum algorithms is hard. Richard Josza, QPL 2004: We need to develop quantum thinking! A Functional Quantum Programming Language p.5/??
QML A Functional Quantum Programming Language p.6/??
QML QML: a first-order functional language for quantum computations on finite types. A Functional Quantum Programming Language p.6/??
QML QML: a first-order functional language for quantum computations on finite types. Quantum control and quantum data. A Functional Quantum Programming Language p.6/??
QML QML: a first-order functional language for quantum computations on finite types. Quantum control and quantum data. Design guided by semantics A Functional Quantum Programming Language p.6/??
QML QML: a first-order functional language for quantum computations on finite types. Quantum control and quantum data. Design guided by semantics Analogy with classical computation Finite classical computations Finite quantum computations A Functional Quantum Programming Language p.6/??
QML QML: a first-order functional language for quantum computations on finite types. Quantum control and quantum data. Design guided by semantics Analogy with classical computation Finite classical computations Finite quantum computations Important issue: control of decoherence A Functional Quantum Programming Language p.6/??
QML QML: a first-order functional language for quantum computations on finite types. Quantum control and quantum data. Design guided by semantics Analogy with classical computation Finite classical computations Finite quantum computations Important issue: control of decoherence Compiler under construction (Jonathan) A Functional Quantum Programming Language p.6/??
Example: Hadamard operation A Functional Quantum Programming Language p.7/??
Example: Hadamard operation Matrix A Functional Quantum Programming Language p.7/??
Example: Hadamard operation Matrix QML * " &(') % $#!" * " &(') #!" +, A Functional Quantum Programming Language p.7/??
Something we know well... A Functional Quantum Programming Language p.8/??
Something we know well... Classical computations on finite types. A Functional Quantum Programming Language p.8/??
Something we know well... Classical computations on finite types. Quantum mechanics is time-reversible... A Functional Quantum Programming Language p.8/??
Something we know well... Classical computations on finite types. Quantum mechanics is time-reversible...... hence quantum computation is based on reversible operations. A Functional Quantum Programming Language p.8/??
Something we know well... Classical computations on finite types. Quantum mechanics is time-reversible...... hence quantum computation is based on reversible operations. However: Newtonian mechanics, Maxwellian electrodynamics are also time-reversible... A Functional Quantum Programming Language p.8/??
Something we know well... Classical computations on finite types. Quantum mechanics is time-reversible...... hence quantum computation is based on reversible operations. However: Newtonian mechanics, Maxwellian electrodynamics are also time-reversible...... hence classical computation should be based on reversible operations. A Functional Quantum Programming Language p.8/??
Classical computation ( ) A Functional Quantum Programming Language p.9/??
0 1 - /. 2 Classical computation ( ) Given finite sets (input) and (output): A Functional Quantum Programming Language p.9/??
0 4 1-6 / 7. 2 6 Classical computation ( ) Given finite sets (input) and (output): a finite set of initial heaps, an initial heap 354 a finite set of garbage states, a bijection,, A Functional Quantum Programming Language p.9/??
Composing computations A Functional Quantum Programming Language p.10/??
9 8 8. 9 9 8 Composing computations 9 8 A Functional Quantum Programming Language p.10/??
Extensional equality A Functional Quantum Programming Language p.11/??
6 4: < 8 $ : ; Extensional equality A classical computation induces a function U by % ; 3 ; 6 =?> FE @BADC U A Functional Quantum Programming Language p.11/??
6 4: < 8 $ : ; Extensional equality A classical computation induces a function U by % ; 3 ; 6 =?> FE @BADC U We say that two computations are extensionally equivalent, if they give rise to the same function. A Functional Quantum Programming Language p.11/??
% $ % $ % $ : G : G Extensional equality... Theorem: U U U A Functional Quantum Programming Language p.12/??
% $ % $ % $ : G : G Extensional equality... Theorem: U U U Hence, classical computations upto extensional equality give rise to the category. A Functional Quantum Programming Language p.12/??
% $ % $ % $ : G : G 4 Extensional equality... Theorem: U U U Hence, classical computations upto extensional equality give rise to the category. Theorem: Any function on finite sets ;can be realized by a computation. A Functional Quantum Programming Language p.12/??
% $ % $ % $ : G : G 4 Extensional equality... Theorem: U U U Hence, classical computations upto extensional equality give rise to the category. Theorem: Any function on finite sets ;can be realized by a computation. Translation for Category Theoreticans: U is full and faithful. A Functional Quantum Programming Language p.12/??
% $ 4 ; % $ L ; Example : function HJI HKI A Functional Quantum Programming Language p.13/??
$ % $ 4 ; L ; % Example : function HJI HKI computation /NMO A Functional Quantum Programming Language p.13/??
% $ ; % $ ; Example : function P 4 P A Functional Quantum Programming Language p.14/??
% $ ; % $ ; R Q Q Q T % $ 4 T ; ; % $ % $ T % $ % $ T Example : function A Functional Quantum Programming Language p.14/?? P 4 P computation S $ % S ; S ; U ; ;
Classical vs quantum A Functional Quantum Programming Language p.15/??
Classical vs quantum classical ( ) quantum ( ) A Functional Quantum Programming Language p.15/??
Classical vs quantum classical ( finite sets ) quantum ( ) A Functional Quantum Programming Language p.15/??
Classical vs quantum classical ( finite sets ) quantum ( finite dimensional Hilbert spaces ) A Functional Quantum Programming Language p.15/??
Classical vs quantum classical ( finite sets bijections ) quantum ( finite dimensional Hilbert spaces ) A Functional Quantum Programming Language p.15/??
Classical vs quantum classical ( finite sets bijections ) quantum ( finite dimensional Hilbert spaces unitary operators ) A Functional Quantum Programming Language p.15/??
V Classical vs quantum classical ( finite sets bijections cartesian product ( ) quantum ( finite dimensional Hilbert spaces unitary operators ) ) A Functional Quantum Programming Language p.15/??
W V Classical vs quantum classical ( finite sets bijections cartesian product ( ) quantum ( finite dimensional Hilbert spaces unitary operators ) tensor product ( ) ) A Functional Quantum Programming Language p.15/??
W V Classical vs quantum classical ( finite sets bijections cartesian product ( functions ) quantum ( finite dimensional Hilbert spaces unitary operators ) tensor product ( ) ) A Functional Quantum Programming Language p.15/??
W V Classical vs quantum classical ( finite sets bijections cartesian product ( functions ) quantum ( finite dimensional Hilbert spaces unitary operators ) tensor product ( ) superoperators ) A Functional Quantum Programming Language p.15/??
W V Classical vs quantum classical ( finite sets bijections cartesian product ( functions projections ) quantum ( finite dimensional Hilbert spaces unitary operators ) tensor product ( ) superoperators ) A Functional Quantum Programming Language p.15/??
W V Classical vs quantum classical ( finite sets bijections cartesian product ( functions projections ) quantum ( finite dimensional Hilbert spaces unitary operators ) tensor product ( ) superoperators partial trace ) A Functional Quantum Programming Language p.15/??
X, classically P G HDI A Functional Quantum Programming Language p.16/??
X Q R Q, classically P G HDI S /NMO /ZY A Functional Quantum Programming Language p.16/??
X Q R [ Q, classically P G HDI S /NMO /ZY A Functional Quantum Programming Language p.16/??
X Q R Q, quantum S /]MO /\Y A Functional Quantum Programming Language p.17/??
X Q _ S # R * _ # Q, quantum S /]MO /\Y input: I ^ I ^ A Functional Quantum Programming Language p.17/??
X R Q Q # _ S # # S # A Functional Quantum Programming Language p.17/??, quantum S /]MO /\Y * _ I ^ I ^ input: * _ I * _ I output:
X R Q Q # _ S # # S # A Functional Quantum Programming Language p.17/??, quantum S /]MO /\Y * _ I ^ I ^ input: * _ I * _ I output: Decoherence!
Control of decoherence A Functional Quantum Programming Language p.18/??
Control of decoherence QML is based on strict linear logic A Functional Quantum Programming Language p.18/??
T Control of decoherence QML is based on strict linear logic Contraction is implicit and realized by. A Functional Quantum Programming Language p.18/??
T Control of decoherence QML is based on strict linear logic Contraction is implicit and realized by Weakening is explicit and leads to decoherence.. A Functional Quantum Programming Language p.18/??
QML overview A Functional Quantum Programming Language p.19/??
# # a ` a ` ` QML overview Types A Functional Quantum Programming Language p.19/??
# # a ` a ` # b d % $ c L ; # c c b % m QML overview Types ` Terms # c b + b # % $# % $# + c b ; c e f ' # b egf * l L e f ' # c e f b(k,j #ih * l L e f ' # c e f b(k,j #ih * c % #$n $ # A Functional Quantum Programming Language p.19/??
l b c c c h l b c c c,j h * l * l A Functional Quantum Programming Language p.20/?? Qbits % $ egf " & ') % $ egf '!" +, e f ' # c e f,j +, e f ' # c e f
QML overview... A Functional Quantum Programming Language p.21/??
o ` o ` QML overview... Typing judgements pq pq programs strict programs A Functional Quantum Programming Language p.21/??
o ` o ` p o o ` ` s s r o r s s r o r ` ` QML overview... Typing judgements Semantics pq pq programs strict programs q pq s 4 r q s 4 r q A Functional Quantum Programming Language p.21/??
; & " o q x w pq o ` a pt ` Q pvu a t y{z Q A Functional Quantum Programming Language p.22/?? The let-rule
; & " o q x w o ƒ ƒ ˆ C pq o ` a pt ` Q pvu a t y{z Q A Functional Quantum Programming Language p.22/?? The let-rule ~}
on contexts A Functional Quantum Programming Language p.23/??
; Š 4Q R ` Q % ; dom if ` Q % ; A Functional Quantum Programming Language p.23/?? on contexts o $ ` Q ` Q o ; o $ ` Q o ;
; Š 4Q R o o C ` Q % ; dom if ` Q % ; A Functional Quantum Programming Language p.23/?? on contexts o $ ` Q ` Q o ; o $ ` Q o ; ~}
Another source of decoherence A Functional Quantum Programming Language p.24/??
b Ž Œ Another source of decoherence mentions b Ž Œ " &(') +, " & ') b Ž Œ A Functional Quantum Programming Language p.24/??
b Ž Œ Ž Œ Œ Another source of decoherence mentions b " &(') +, & ') " b Ž but doesn t use it. A Functional Quantum Programming Language p.24/??
b Ž Œ Ž Œ Œ Another source of decoherence mentions b " &(') +, & ') " b Ž but doesn t use it. Hence, it has to measure it! A Functional Quantum Programming Language p.24/??
-elim A Functional Quantum Programming Language p.25/??
œ š œ µ «ª œ š ž Ÿ ²ž ³ ² ± A Functional Quantum Programming Language p.25/?? -elim W
œ š œ µ «ª œ š œ Æ ˆ ƒ 2 ž Ÿ ²ž ³ ² ±» / º¹  /½¼¾ ÁÀ ÉËÊ Ç È /ÄÅ 2ÍÅ A Functional Quantum Programming Language p.25/?? -elim W W ƒ 1 Äà 1 Å À 1 ¾ Ì
-elim decoherence-free A Functional Quantum Programming Language p.26/??
œ š œ µ «ª Ï œ š -elim decoherence-free Î Ï Ð ž Ï ž Ï Ñ ²ž ³ ² ± Î W A Functional Quantum Programming Language p.26/??
œ š œ µ «ª Ï œ š œ ƒ Ö Æ ˆ 2 -elim decoherence-free Î Ï Ð ž Ï ž Ï Ñ ²ž ³ ² ± Î W W» /Ä º¹ ƒ 1 Äà À / ¾ ÁÓ Â /½¼Ò ÇØÈ ÇØÈ /ÕÔ 1 Ô 2ÙÔ Ó 1 Ò Ì A Functional Quantum Programming Language p.26/??
G Ú A Functional Quantum Programming Language p.27/??
b Ž Œ b Ž Œ " & ') +, " & ') A Functional Quantum Programming Language p.27/?? l l G Ú
b Ž Œ b Ž Œ w w G Ú l " & ') +, " & ') l This program has a type error, because. xüý Û xdüý Û A Functional Quantum Programming Language p.27/??
b Ž Œ b Ž Œ w w G Ú l " & ') +, " & ') l This program has a type error, because. xüý Û xdüý Û b ßÞ " & ') +,!" b ßÞ A Functional Quantum Programming Language p.27/??
b Ž Œ b Ž Œ w w w G Ú l " & ') +, " & ') l This program has a type error, because. xüý Û xdüý Û b ßÞ " & ') +,!" b ßÞ This program typechecks, because. xdüý Û w â àáá u Û A Functional Quantum Programming Language p.27/??
Conclusions A Functional Quantum Programming Language p.28/??
Conclusions Our semantic ideas proved useful when designing a quantum programming language, analogous concepts are modelled by the same syntactic constructs. A Functional Quantum Programming Language p.28/??
Conclusions Our semantic ideas proved useful when designing a quantum programming language, analogous concepts are modelled by the same syntactic constructs. Our analysis also highlights the differences between classical and quantum programming. A Functional Quantum Programming Language p.28/??
Conclusions Our semantic ideas proved useful when designing a quantum programming language, analogous concepts are modelled by the same syntactic constructs. Our analysis also highlights the differences between classical and quantum programming. Quantum programming introduces the problem of control of decoherence, which we address by making forgetting variables explicit and by having different if-then-else constructs. A Functional Quantum Programming Language p.28/??
Further work A Functional Quantum Programming Language p.29/??
Further work We have to analyze more quantum programs to evaluate the practical usefulness of our approach. A Functional Quantum Programming Language p.29/??
Further work We have to analyze more quantum programs to evaluate the practical usefulness of our approach. Are we able to come up with completely new algorithms using QML? A Functional Quantum Programming Language p.29/??
Further work We have to analyze more quantum programs to evaluate the practical usefulness of our approach. Are we able to come up with completely new algorithms using QML? How to deal with higher order programs? A Functional Quantum Programming Language p.29/??
Further work We have to analyze more quantum programs to evaluate the practical usefulness of our approach. Are we able to come up with completely new algorithms using QML? How to deal with higher order programs? How to deal with infinite datatypes? A Functional Quantum Programming Language p.29/??
Further work We have to analyze more quantum programs to evaluate the practical usefulness of our approach. Are we able to come up with completely new algorithms using QML? How to deal with higher order programs? How to deal with infinite datatypes? Investigate the similarities/differences between FCC and FQC from a categorical point of view. A Functional Quantum Programming Language p.29/??
The end Thank you for your attention. A Functional Quantum Programming Language p.30/??