qml: a functional quantum programming languageallowing formal reasoning principles for quantum...

68
QML: A functional quantum programming 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

Upload: others

Post on 03-Sep-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 2: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 3: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 4: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 5: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 6: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 7: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 8: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 9: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

QML Overview

• A first-order functional language for quantum computations onfinite types

QML: A functional quantum programming language – p.4/14

Page 10: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 11: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 12: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 13: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 14: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 15: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

Classical v. Quantum

QML: A functional quantum programming language – p.5/14

Page 16: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

Classical v. Quantum

Classical Case (FCC) Quantum Case (FQC)

QML: A functional quantum programming language – p.5/14

Page 17: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

Classical v. Quantum

Classical Case (FCC) Quantum Case (FQC)

Finite sets

QML: A functional quantum programming language – p.5/14

Page 18: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

Classical v. Quantum

Classical Case (FCC) Quantum Case (FQC)

Finite sets Finite dimensional Hilbert spaces

QML: A functional quantum programming language – p.5/14

Page 19: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 20: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 21: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 22: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 23: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 24: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 25: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 26: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 27: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 28: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 29: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

QML Syntax

• Types:

σ = Q1 | Q2 | σ ⊗ τ

QML: A functional quantum programming language – p.6/14

Page 30: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 31: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 32: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 33: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 34: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

Control of Decoherence

• π1.δ ∈ Q2 → Q2

x :: Q2 • x :: Q2

0 :: Q2

���������

φδ φπ1

QML: A functional quantum programming language – p.8/14

Page 35: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 36: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 37: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 38: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 39: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

More Decoherence

QML: A functional quantum programming language – p.9/14

Page 40: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 41: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 42: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 43: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 44: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 45: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

if◦ – Quantum control

QML: A functional quantum programming language – p.10/14

Page 46: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

if◦ – Quantum control

•forget ′ ∈ Q2 ⊸ Q2

forget ′ x = if◦ x then true else true

QML: A functional quantum programming language – p.10/14

Page 47: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 48: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 49: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 50: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 51: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 52: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 53: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 54: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 55: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 56: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 57: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 58: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 59: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 60: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 61: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 62: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 63: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 64: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 65: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 66: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 67: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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

Page 68: QML: A functional quantum programming languageAllowing formal reasoning principles for quantum programs Giving a more intuitive understanding of quantum algorithms • A functional

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