qml: a functional quantum programming languageallowing formal reasoning principles for quantum...
TRANSCRIPT
QML: A functional quantumprogramming language
quantum control and orthogonality
Jonathan Grattage
with Thorsten Altenkirch & Alex Green
sneezy.cs.nott.ac.uk/qml
School of Computer Science & IT,
The University of Nottingham
QML: A functional quantum programming language – p.1/14
What is QML?
• A high–level quantum programming language with a structurefamiliar to functional programmers, which supports reasoningand and algorithm design
QML: A functional quantum programming language – p.2/14
What is QML?
• A high–level quantum programming language with a structurefamiliar to functional programmers, which supports reasoningand and algorithm design
• Simplifing the design of quantum programs by:Allowing formal reasoning principles for quantum programsGiving a more intuitive understanding of quantum algorithms
QML: A functional quantum programming language – p.2/14
What is QML?
• A high–level quantum programming language with a structurefamiliar to functional programmers, which supports reasoningand and algorithm design
• Simplifing the design of quantum programs by:Allowing formal reasoning principles for quantum programsGiving a more intuitive understanding of quantum algorithms
• A functional quantum programming language, LICS 2005with Thorsten Altenkirch
QML: A functional quantum programming language – p.2/14
What is QML?
• A high–level quantum programming language with a structurefamiliar to functional programmers, which supports reasoningand and algorithm design
• Simplifing the design of quantum programs by:Allowing formal reasoning principles for quantum programsGiving a more intuitive understanding of quantum algorithms
• A functional quantum programming language, LICS 2005with Thorsten Altenkirch
• An Algebra of Pure Quantum Programming, QPL 2005with Thorsten Altenkirch, Juliana K. Vizzotto, & Amr Sabry
QML: A functional quantum programming language – p.2/14
What is QML?
• A high–level quantum programming language with a structurefamiliar to functional programmers, which supports reasoningand and algorithm design
• Simplifing the design of quantum programs by:Allowing formal reasoning principles for quantum programsGiving a more intuitive understanding of quantum algorithms
• A functional quantum programming language, LICS 2005with Thorsten Altenkirch
• An Algebra of Pure Quantum Programming, QPL 2005with Thorsten Altenkirch, Juliana K. Vizzotto, & Amr Sabry
• Project Site: [email protected] – sneezy.cs.nott.ac.uk/qml
QML: A functional quantum programming language – p.2/14
Quantum Languages
• P. Zuliani, PhD 2001, Quantum Programming (qGCL)
• P. Selinger, MSCS 2003, Towards a Quantum ProgrammingLanguage (QPL)
• A. van Tonder, SIAM 2003, A Lambda Calculus for QuantumComputation
• A. Sabry, Haskell 2003, Modeling quantum computing in Haskell
• P. Selinger and B. Valiron, TLCA 2005, A lambda calculus for
quantum computation with classical control
• . . .
QML: A functional quantum programming language – p.3/14
Quantum Languages
•• P. Zuliani, PhD 2001, Quantum Programming (qGCL)
• P. Selinger, MSCS 2003, Towards a Quantum ProgrammingLanguage (QPL)
• A. van Tonder, SIAM 2003, A Lambda Calculus for QuantumComputation
• A. Sabry, Haskell 2003, Modeling quantum computing in Haskell
• P. Selinger and B. Valiron, TLCA 2005, A lambda calculus for
quantum computation with classical control
• . . .
• Quantum data, Classical control
QML: A functional quantum programming language – p.3/14
QML Overview
• A first-order functional language for quantum computations onfinite types
QML: A functional quantum programming language – p.4/14
QML Overview
• A first-order functional language for quantum computations onfinite types
• “Quantum Data and Control”
QML: A functional quantum programming language – p.4/14
QML Overview
• A first-order functional language for quantum computations onfinite types
• “Quantum Data and Control”
• Based on strict linear logic - controlled, explicit, weakening
QML: A functional quantum programming language – p.4/14
QML Overview
• A first-order functional language for quantum computations onfinite types
• “Quantum Data and Control”
• Based on strict linear logic - controlled, explicit, weakening
• Operational Semantics: Quantum Circuit Model
QML: A functional quantum programming language – p.4/14
QML Overview
• A first-order functional language for quantum computations onfinite types
• “Quantum Data and Control”
• Based on strict linear logic - controlled, explicit, weakening
• Operational Semantics: Quantum Circuit Model
• Denotational Semantics: Superoperators
QML: A functional quantum programming language – p.4/14
QML Overview
• A first-order functional language for quantum computations onfinite types
• “Quantum Data and Control”
• Based on strict linear logic - controlled, explicit, weakening
• Operational Semantics: Quantum Circuit Model
• Denotational Semantics: Superoperators
• Notion of Finite Quantum Computations (FQC) developed byanalogy with Finite Classical Computations (FCC)
QML: A functional quantum programming language – p.4/14
Classical v. Quantum
QML: A functional quantum programming language – p.5/14
Classical v. Quantum
Classical Case (FCC) Quantum Case (FQC)
QML: A functional quantum programming language – p.5/14
Classical v. Quantum
Classical Case (FCC) Quantum Case (FQC)
Finite sets
QML: A functional quantum programming language – p.5/14
Classical v. Quantum
Classical Case (FCC) Quantum Case (FQC)
Finite sets Finite dimensional Hilbert spaces
QML: A functional quantum programming language – p.5/14
Classical v. Quantum
Classical Case (FCC) Quantum Case (FQC)
Finite sets Finite dimensional Hilbert spaces
Cartesian product (×)
QML: A functional quantum programming language – p.5/14
Classical v. Quantum
Classical Case (FCC) Quantum Case (FQC)
Finite sets Finite dimensional Hilbert spaces
Cartesian product (×) Tensor product (⊗)
QML: A functional quantum programming language – p.5/14
Classical v. Quantum
Classical Case (FCC) Quantum Case (FQC)
Finite sets Finite dimensional Hilbert spaces
Cartesian product (×) Tensor product (⊗)
Bijections
QML: A functional quantum programming language – p.5/14
Classical v. Quantum
Classical Case (FCC) Quantum Case (FQC)
Finite sets Finite dimensional Hilbert spaces
Cartesian product (×) Tensor product (⊗)
Bijections Unitary operators
QML: A functional quantum programming language – p.5/14
Classical v. Quantum
Classical Case (FCC) Quantum Case (FQC)
Finite sets Finite dimensional Hilbert spaces
Cartesian product (×) Tensor product (⊗)
Bijections Unitary operators
Functions
QML: A functional quantum programming language – p.5/14
Classical v. Quantum
Classical Case (FCC) Quantum Case (FQC)
Finite sets Finite dimensional Hilbert spaces
Cartesian product (×) Tensor product (⊗)
Bijections Unitary operators
Functions Superoperators
QML: A functional quantum programming language – p.5/14
Classical v. Quantum
Classical Case (FCC) Quantum Case (FQC)
Finite sets Finite dimensional Hilbert spaces
Cartesian product (×) Tensor product (⊗)
Bijections Unitary operators
Functions Superoperators
Injective functions
QML: A functional quantum programming language – p.5/14
Classical v. Quantum
Classical Case (FCC) Quantum Case (FQC)
Finite sets Finite dimensional Hilbert spaces
Cartesian product (×) Tensor product (⊗)
Bijections Unitary operators
Functions Superoperators
Injective functions Isometries
QML: A functional quantum programming language – p.5/14
Classical v. Quantum
Classical Case (FCC) Quantum Case (FQC)
Finite sets Finite dimensional Hilbert spaces
Cartesian product (×) Tensor product (⊗)
Bijections Unitary operators
Functions Superoperators
Injective functions Isometries
Projections
QML: A functional quantum programming language – p.5/14
Classical v. Quantum
Classical Case (FCC) Quantum Case (FQC)
Finite sets Finite dimensional Hilbert spaces
Cartesian product (×) Tensor product (⊗)
Bijections Unitary operators
Functions Superoperators
Injective functions Isometries
Projections Partial trace
QML: A functional quantum programming language – p.5/14
QML Syntax
• Types:
σ = Q1 | Q2 | σ ⊗ τ
QML: A functional quantum programming language – p.6/14
QML Syntax
• Types:
σ = Q1 | Q2 | σ ⊗ τ
• Syntax:
(Variables) x , y , ... ∈ Vars
(Prob.amplitudes) κ, ι, ... ∈ C
(Patterns) p, q ::= x | (x , y)
(Terms) t , u, e ::= x | x~y | () | (t , u)
| let p = t in u
| if t then u else u ′
| if◦ t then u else u ′
| false | true |−→0 | κ × t | t + u
QML: A functional quantum programming language – p.6/14
QML Syntax
• Types:
σ = Q1 | Q2 | σ ⊗ τ
• Syntax:
(Variables) x , y , ... ∈ Vars
(Prob.amplitudes) κ, ι, ... ∈ C
(Patterns) p, q ::= x | (x , y)
(Terms) t , u, e ::= x | x~y | () | (t , u)
| let p = t in u
| if t then u else u ′
| if◦ t then u else u ′
| false | true |−→0 | κ × t | t + u
• EPR State: 1√2× (false, false) + 1√
2× (true, true)
QML: A functional quantum programming language – p.6/14
Control of Decoherence
• Projection Function
π1 ∈ (Q2,Q2) → C2
π1 (x , y) = x
Q2 Q2
Q2
�
φπ1
QML: A functional quantum programming language – p.7/14
Control of Decoherence
• Projection Function
π1 ∈ (Q2,Q2) → C2
π1 (x , y) = x
Q2 Q2
Q2
�
φπ1
• Diagonal Function
δ ∈ Q2 → (Q2,Q2)
δ x = (x , x )
x :: Q2 • x :: Q2
0 :: Q2
�
�������� x :: Q2
QML: A functional quantum programming language – p.7/14
Control of Decoherence
• π1.δ ∈ Q2 → Q2
x :: Q2 • x :: Q2
0 :: Q2
�
���������
φδ φπ1
QML: A functional quantum programming language – p.8/14
Control of Decoherence
• π1.δ ∈ Q2 → Q2
x :: Q2 • x :: Q2
0 :: Q2
�
���������
φδ φπ1
• Classical Case:
Q2 Q2
QML: A functional quantum programming language – p.8/14
Control of Decoherence
• π1.δ ∈ Q2 → Q2
x :: Q2 • x :: Q2
0 :: Q2
�
���������
φδ φπ1
• Classical Case:
Q2 Q2
• Quantum Case:
Input = 1√2× false + 1√
2× true (equal superposition)
QML: A functional quantum programming language – p.8/14
Control of Decoherence
• π1.δ ∈ Q2 → Q2
x :: Q2 • x :: Q2
0 :: Q2
�
���������
φδ φπ1
• Classical Case:
Q2 Q2
• Quantum Case:
Input = 1√2× false + 1√
2× true (equal superposition)
Output = { 1
2}false + { 1
2}true (probability distribution)
QML: A functional quantum programming language – p.8/14
Control of Decoherence
• π1.δ ∈ Q2 → Q2
x :: Q2 • x :: Q2
0 :: Q2
�
���������
φδ φπ1
• Classical Case:
Q2 Q2
• Quantum Case:
Input = 1√2× false + 1√
2× true (equal superposition)
Output = { 1
2}false + { 1
2}true (probability distribution)
Decoherence! Not the identity function
QML: A functional quantum programming language – p.8/14
More Decoherence
QML: A functional quantum programming language – p.9/14
More Decoherence
• forget mentions x
forget ∈ Q2 ⊸ Q2
forget x = if x then true else true
QML: A functional quantum programming language – p.9/14
More Decoherence
• forget mentions x
forget ∈ Q2 ⊸ Q2
forget x = if x then true else true
• but doesn’t use it.
QML: A functional quantum programming language – p.9/14
More Decoherence
• forget mentions x
forget ∈ Q2 ⊸ Q2
forget x = if x then true else true
• but doesn’t use it.
• Hence, it has to measure it!
QML: A functional quantum programming language – p.9/14
More Decoherence
• forget mentions x
forget ∈ Q2 ⊸ Q2
forget x = if x then true else true
• but doesn’t use it.
• Hence, it has to measure it!
• if always measures the conditional
QML: A functional quantum programming language – p.9/14
More Decoherence
• forget mentions x
forget ∈ Q2 ⊸ Q2
forget x = if x then true else true
• but doesn’t use it.
• Hence, it has to measure it!
• if always measures the conditional
• Not, using if
not ∈ Q2 ⊸ Q2
not x = if x then false else true
QML: A functional quantum programming language – p.9/14
if◦ – Quantum control
QML: A functional quantum programming language – p.10/14
if◦ – Quantum control
•forget ′ ∈ Q2 ⊸ Q2
forget ′ x = if◦ x then true else true
QML: A functional quantum programming language – p.10/14
if◦ – Quantum control
•forget ′ ∈ Q2 ⊸ Q2
forget ′ x = if◦ x then true else true
• This program has a type error, because true 6⊥ true.
QML: A functional quantum programming language – p.10/14
if◦ – Quantum control
•forget ′ ∈ Q2 ⊸ Q2
forget ′ x = if◦ x then true else true
• This program has a type error, because true 6⊥ true.
•qnot ∈ Q2 ⊸ Q2
qnot x = if◦ x then false else true
QML: A functional quantum programming language – p.10/14
if◦ – Quantum control
•forget ′ ∈ Q2 ⊸ Q2
forget ′ x = if◦ x then true else true
• This program has a type error, because true 6⊥ true.
•qnot ∈ Q2 ⊸ Q2
qnot x = if◦ x then false else true
• This program typechecks, because false ⊥ true.
QML: A functional quantum programming language – p.10/14
if◦ – Quantum control
•forget ′ ∈ Q2 ⊸ Q2
forget ′ x = if◦ x then true else true
• This program has a type error, because true 6⊥ true.
•qnot ∈ Q2 ⊸ Q2
qnot x = if◦ x then false else true
• This program typechecks, because false ⊥ true.
•cnot c x = if
◦ c then (true, qnot x ) else (false, x )
QML: A functional quantum programming language – p.10/14
if◦ – Quantum control
•forget ′ ∈ Q2 ⊸ Q2
forget ′ x = if◦ x then true else true
• This program has a type error, because true 6⊥ true.
•qnot ∈ Q2 ⊸ Q2
qnot x = if◦ x then false else true
• This program typechecks, because false ⊥ true.
•cnot c x = if
◦ c then (true, qnot x ) else (false, x )
• Deutsch-Joza Algorithm, Quantum Teleport Algorithm, ...
QML: A functional quantum programming language – p.10/14
Quantum Teleport Algorithm
pZed ∈ Q2 ⊸ Q2
pZed x = if◦ x then (−1) × true else false
had ∈ Q2 ⊸ Q2
had x = if◦ x then (−1) × true + false else true + false
tel ∈ Q2 ⊸ Q2
tel x = let (a, b) = (false, false) + (true, true)
(a ′, x ′) = cnot a x
b ′ = if a ′then qnot b else b
b ′′ = if◦ had x ′
then pZed b ′else b ′
in b ′′
QML: A functional quantum programming language – p.11/14
Inner Product & ⊥
• We define the inner product of terms, which to any pair of terms
Γ ⊢ t, u : σ assigns 〈t|u〉 ∈ C ∪ {?}.
QML: A functional quantum programming language – p.12/14
Inner Product & ⊥
• We define the inner product of terms, which to any pair of terms
Γ ⊢ t, u : σ assigns 〈t|u〉 ∈ C ∪ {?}.
• t ⊥ u holds if 〈t|u〉 = 0.
QML: A functional quantum programming language – p.12/14
Inner Product & ⊥
• We define the inner product of terms, which to any pair of terms
Γ ⊢ t, u : σ assigns 〈t|u〉 ∈ C ∪ {?}.
• t ⊥ u holds if 〈t|u〉 = 0.
• 〈t|t〉 = 1, 〈false|true〉 = 0, 〈true|false〉 = 0
QML: A functional quantum programming language – p.12/14
Inner Product & ⊥
• We define the inner product of terms, which to any pair of terms
Γ ⊢ t, u : σ assigns 〈t|u〉 ∈ C ∪ {?}.
• t ⊥ u holds if 〈t|u〉 = 0.
• 〈t|t〉 = 1, 〈false|true〉 = 0, 〈true|false〉 = 0
• 〈−→0 |true〉 = 0 = 〈true|
−→0 〉, 〈
−→0 |false〉 = 0 = 〈false|
−→0 〉,
〈−→0 |x〉 = 0 = 〈x|
−→0 〉
QML: A functional quantum programming language – p.12/14
Inner Product & ⊥
• We define the inner product of terms, which to any pair of terms
Γ ⊢ t, u : σ assigns 〈t|u〉 ∈ C ∪ {?}.
• t ⊥ u holds if 〈t|u〉 = 0.
• 〈t|t〉 = 1, 〈false|true〉 = 0, 〈true|false〉 = 0
• 〈−→0 |true〉 = 0 = 〈true|
−→0 〉, 〈
−→0 |false〉 = 0 = 〈false|
−→0 〉,
〈−→0 |x〉 = 0 = 〈x|
−→0 〉
• 〈(t, t′) | (u, u′)〉 = 〈t|u〉 ∗ 〈t′|u′〉
QML: A functional quantum programming language – p.12/14
Inner Product & ⊥
• We define the inner product of terms, which to any pair of terms
Γ ⊢ t, u : σ assigns 〈t|u〉 ∈ C ∪ {?}.
• t ⊥ u holds if 〈t|u〉 = 0.
• 〈t|t〉 = 1, 〈false|true〉 = 0, 〈true|false〉 = 0
• 〈−→0 |true〉 = 0 = 〈true|
−→0 〉, 〈
−→0 |false〉 = 0 = 〈false|
−→0 〉,
〈−→0 |x〉 = 0 = 〈x|
−→0 〉
• 〈(t, t′) | (u, u′)〉 = 〈t|u〉 ∗ 〈t′|u′〉
• 〈λ ∗ t + λ′ ∗ t′ | u〉 = λ∗ ∗ 〈t|u〉 + λ′∗ ∗ 〈t′|u〉,〈t | κ ∗ u + κ′ ∗ u′〉 = κ ∗ 〈t|u〉 + κ′ ∗ 〈t|u′〉
QML: A functional quantum programming language – p.12/14
Inner Product & ⊥
• We define the inner product of terms, which to any pair of terms
Γ ⊢ t, u : σ assigns 〈t|u〉 ∈ C ∪ {?}.
• t ⊥ u holds if 〈t|u〉 = 0.
• 〈t|t〉 = 1, 〈false|true〉 = 0, 〈true|false〉 = 0
• 〈−→0 |true〉 = 0 = 〈true|
−→0 〉, 〈
−→0 |false〉 = 0 = 〈false|
−→0 〉,
〈−→0 |x〉 = 0 = 〈x|
−→0 〉
• 〈(t, t′) | (u, u′)〉 = 〈t|u〉 ∗ 〈t′|u′〉
• 〈λ ∗ t + λ′ ∗ t′ | u〉 = λ∗ ∗ 〈t|u〉 + λ′∗ ∗ 〈t′|u〉,〈t | κ ∗ u + κ′ ∗ u′〉 = κ ∗ 〈t|u〉 + κ′ ∗ 〈t|u′〉
• . . .
QML: A functional quantum programming language – p.12/14
Inner Product & ⊥
• We define the inner product of terms, which to any pair of terms
Γ ⊢ t, u : σ assigns 〈t|u〉 ∈ C ∪ {?}.
• t ⊥ u holds if 〈t|u〉 = 0.
• 〈t|t〉 = 1, 〈false|true〉 = 0, 〈true|false〉 = 0
• 〈−→0 |true〉 = 0 = 〈true|
−→0 〉, 〈
−→0 |false〉 = 0 = 〈false|
−→0 〉,
〈−→0 |x〉 = 0 = 〈x|
−→0 〉
• 〈(t, t′) | (u, u′)〉 = 〈t|u〉 ∗ 〈t′|u′〉
• 〈λ ∗ t + λ′ ∗ t′ | u〉 = λ∗ ∗ 〈t|u〉 + λ′∗ ∗ 〈t′|u〉,〈t | κ ∗ u + κ′ ∗ u′〉 = κ ∗ 〈t|u〉 + κ′ ∗ 〈t|u′〉
• . . .
• 〈t|u〉 =? otherwise
QML: A functional quantum programming language – p.12/14
Summary
• Our semantic ideas proved useful when designing a quantumprogramming language, analogous concepts are modelled by thesame syntactic constructs
QML: A functional quantum programming language – p.13/14
Summary
• Our semantic ideas proved useful when designing a quantumprogramming language, analogous concepts are modelled by thesame syntactic constructs
• Our analysis also highlights the differences between classical andquantum programming
QML: A functional quantum programming language – p.13/14
Summary
• Our semantic ideas proved useful when designing a quantumprogramming language, analogous concepts are modelled by thesame syntactic constructs
• Our analysis also highlights the differences between classical andquantum programming
• Quantum programming introduces the problem of control of
decoherence, which we address by making the ‘forgetting’ ofvariables explicit, and by having two if constructs and theorthogonality condition
QML: A functional quantum programming language – p.13/14
Summary
• Our semantic ideas proved useful when designing a quantumprogramming language, analogous concepts are modelled by thesame syntactic constructs
• Our analysis also highlights the differences between classical andquantum programming
• Quantum programming introduces the problem of control of
decoherence, which we address by making the ‘forgetting’ ofvariables explicit, and by having two if constructs and theorthogonality condition
• Other work:
QML: A functional quantum programming language – p.13/14
Summary
• Our semantic ideas proved useful when designing a quantumprogramming language, analogous concepts are modelled by thesame syntactic constructs
• Our analysis also highlights the differences between classical andquantum programming
• Quantum programming introduces the problem of control of
decoherence, which we address by making the ‘forgetting’ ofvariables explicit, and by having two if constructs and theorthogonality condition
• Other work:
• A compiler for QML, in Haskell, that produces (typed) circuits
QML: A functional quantum programming language – p.13/14
Summary
• Our semantic ideas proved useful when designing a quantumprogramming language, analogous concepts are modelled by thesame syntactic constructs
• Our analysis also highlights the differences between classical andquantum programming
• Quantum programming introduces the problem of control of
decoherence, which we address by making the ‘forgetting’ ofvariables explicit, and by having two if constructs and theorthogonality condition
• Other work:
• A compiler for QML, in Haskell, that produces (typed) circuits
• Extend algebra and normal form beyond pure subset of QML
QML: A functional quantum programming language – p.13/14
Summary
• Our semantic ideas proved useful when designing a quantumprogramming language, analogous concepts are modelled by thesame syntactic constructs
• Our analysis also highlights the differences between classical andquantum programming
• Quantum programming introduces the problem of control of
decoherence, which we address by making the ‘forgetting’ ofvariables explicit, and by having two if constructs and theorthogonality condition
• Other work:
• A compiler for QML, in Haskell, that produces (typed) circuits
• Extend algebra and normal form beyond pure subset of QML
• Higher-order types, composionality proofs, implement usingmeasurement calculus ...
QML: A functional quantum programming language – p.13/14
Thanks for listening
• Papers on QML can be found at:
• sneezy.cs.nott.ac.uk/qml
• There is also an interactive research diary:
• sneezy.cs.nott.ac.uk/qml/weblog
• Jonathan Grattage (www.cs.nott.ac.uk/∼ jjg)Thorsten Altenkirch (www.cs.nott.ac.uk/∼ txa)
QML: A functional quantum programming language – p.14/14