Functional Quantum Programming Thorsten Altenkirch University of - - PowerPoint PPT Presentation

functional quantum programming
SMART_READER_LITE
LIVE PREVIEW

Functional Quantum Programming Thorsten Altenkirch University of - - PowerPoint PPT Presentation

Functional Quantum Programming Thorsten Altenkirch University of Nottingham based on joint work with Jonathan Grattage and discussions with V.P . Belavkin Functional Quantum Programming p. 1/44 Background Functional Quantum Programming


slide-1
SLIDE 1

Functional Quantum Programming

Thorsten Altenkirch University of Nottingham based on joint work with Jonathan Grattage and discussions with V.P . Belavkin

Functional Quantum Programming – p. 1/44

slide-2
SLIDE 2

Background

Functional Quantum Programming – p. 2/44

slide-3
SLIDE 3

Background

Simulation of quantum systems is expensive: PSPACE complexity for polynomial circuits.

Functional Quantum Programming – p. 2/44

slide-4
SLIDE 4

Background

Simulation of quantum systems is expensive: PSPACE complexity for polynomial circuits. Feynman: Can we exploit this fact to perform computations more efficiently?

Functional Quantum Programming – p. 2/44

slide-5
SLIDE 5

Background

Simulation of quantum systems is expensive: PSPACE complexity for polynomial circuits. Feynman: Can we exploit this fact to perform computations more efficiently? Shor: Factorisation in quantum polynomial time.

Functional Quantum Programming – p. 2/44

slide-6
SLIDE 6

Background

Simulation of quantum systems is expensive: PSPACE complexity for polynomial circuits. Feynman: Can we exploit this fact to perform computations more efficiently? Shor: Factorisation in quantum polynomial time. Grover: Blind search in O(n/ √ 2)

Functional Quantum Programming – p. 2/44

slide-7
SLIDE 7

Background

Simulation of quantum systems is expensive: PSPACE complexity for polynomial circuits. Feynman: Can we exploit this fact to perform computations more efficiently? Shor: Factorisation in quantum polynomial time. Grover: Blind search in O(n/ √ 2) Can we build a quantum computer?

Functional Quantum Programming – p. 2/44

slide-8
SLIDE 8

Background

Simulation of quantum systems is expensive: PSPACE complexity for polynomial circuits. Feynman: Can we exploit this fact to perform computations more efficiently? Shor: Factorisation in quantum polynomial time. Grover: Blind search in O(n/ √ 2) Can we build a quantum computer?

yes We can run quantum algorithms.

Functional Quantum Programming – p. 2/44

slide-9
SLIDE 9

Background

Simulation of quantum systems is expensive: PSPACE complexity for polynomial circuits. Feynman: Can we exploit this fact to perform computations more efficiently? Shor: Factorisation in quantum polynomial time. Grover: Blind search in O(n/ √ 2) Can we build a quantum computer?

yes We can run quantum algorithms. no Nature is classical after all!

Functional Quantum Programming – p. 2/44

slide-10
SLIDE 10

Background

Simulation of quantum systems is expensive: PSPACE complexity for polynomial circuits. Feynman: Can we exploit this fact to perform computations more efficiently? Shor: Factorisation in quantum polynomial time. Grover: Blind search in O(n/ √ 2) Can we build a quantum computer?

yes We can run quantum algorithms. no Nature is classical after all!

Assumption: Nature is fair. . .

Functional Quantum Programming – p. 2/44

slide-11
SLIDE 11

The quantum software crisis

Functional Quantum Programming – p. 3/44

slide-12
SLIDE 12

The quantum software crisis

Quantum algorithms are usually presented using the circuit model.

Functional Quantum Programming – p. 3/44

slide-13
SLIDE 13

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.

Functional Quantum Programming – p. 3/44

slide-14
SLIDE 14

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!

Functional Quantum Programming – p. 3/44

slide-15
SLIDE 15

QML

Functional Quantum Programming – p. 4/44

slide-16
SLIDE 16

QML

QML: a functional language for quantum computations

  • n finite types.

Functional Quantum Programming – p. 4/44

slide-17
SLIDE 17

QML

QML: a functional language for quantum computations

  • n finite types.

Quantum control and quantum data.

Functional Quantum Programming – p. 4/44

slide-18
SLIDE 18

QML

QML: a functional language for quantum computations

  • n finite types.

Quantum control and quantum data. Design guided by denotational semantics

Functional Quantum Programming – p. 4/44

slide-19
SLIDE 19

QML

QML: a functional language for quantum computations

  • n finite types.

Quantum control and quantum data. Design guided by denotational semantics Analogy with classical computation FCC Finite classical computations FQC Finite quantum computations

Functional Quantum Programming – p. 4/44

slide-20
SLIDE 20

QML

QML: a functional language for quantum computations

  • n finite types.

Quantum control and quantum data. Design guided by denotational semantics Analogy with classical computation FCC Finite classical computations FQC Finite quantum computations Important issue: control of decoherence

Functional Quantum Programming – p. 4/44

slide-21
SLIDE 21

QML

QML: a functional language for quantum computations

  • n finite types.

Quantum control and quantum data. Design guided by denotational semantics Analogy with classical computation FCC Finite classical computations FQC Finite quantum computations Important issue: control of decoherence Draft paper available (Google:Thorsten,functional,quantum)

Functional Quantum Programming – p. 4/44

slide-22
SLIDE 22

QML

QML: a functional language for quantum computations

  • n finite types.

Quantum control and quantum data. Design guided by denotational semantics Analogy with classical computation FCC Finite classical computations FQC Finite quantum computations Important issue: control of decoherence Draft paper available (Google:Thorsten,functional,quantum) Compiler under construction (Jonathan)

Functional Quantum Programming – p. 4/44

slide-23
SLIDE 23

Example: Hadamard operation

Functional Quantum Programming – p. 5/44

slide-24
SLIDE 24

Example: Hadamard operation

Matrix

H = 1 √ 2

  • 1

1 1 −1

  • Functional Quantum Programming – p. 5/44
slide-25
SLIDE 25

Example: Hadamard operation

Matrix

H = 1 √ 2

  • 1

1 1 −1

  • QML

H x : Q2 = if◦ x then {qfalse | (−1)qtrue}

else {qfalse | qtrue}

Functional Quantum Programming – p. 5/44

slide-26
SLIDE 26

Related Work

P . Zuliani, 2001, Quantum Programming

  • S. Abramsky and B. Coecke, 2004, A Categorical Semantics of Quantum Protocols

S-C. Mu and R. S. Bird, 2001, Quantum functional programming

  • A. Sabry, 2003, Modeling quantum computing in Haskell
  • J. Karczmarczuk, 2003, Structure and interpretation of quantum mechanics: a

functional framework P . Selinger, 2002, Towards a Quantum Programming Language

  • A. van Tonder, 2003, A Lambda Calculus for Quantum Computation

Functional Quantum Programming – p. 6/44

slide-27
SLIDE 27

Something we know well . . .

Functional Quantum Programming – p. 7/44

slide-28
SLIDE 28

Something we know well . . .

Start with classical computations

  • n finite types.

Functional Quantum Programming – p. 7/44

slide-29
SLIDE 29

Something we know well . . .

Start with classical computations

  • n finite types.

Quantum mechanics is time-reversible. . .

Functional Quantum Programming – p. 7/44

slide-30
SLIDE 30

Something we know well . . .

Start with classical computations

  • n finite types.

Quantum mechanics is time-reversible. . . . . . hence quantum computation is based on reversible

  • perations.

Functional Quantum Programming – p. 7/44

slide-31
SLIDE 31

Something we know well . . .

Start with classical computations

  • n finite types.

Quantum mechanics is time-reversible. . . . . . hence quantum computation is based on reversible

  • perations.

However: Newtonian mechanics, Maxwellian electrodynamics is also time-reversible. . .

Functional Quantum Programming – p. 7/44

slide-32
SLIDE 32

Something we know well . . .

Start with classical computations

  • n finite types.

Quantum mechanics is time-reversible. . . . . . hence quantum computation is based on reversible

  • perations.

However: Newtonian mechanics, Maxwellian electrodynamics is also time-reversible. . . . . . hence classical computation should be based on reversible operations.

Functional Quantum Programming – p. 7/44

slide-33
SLIDE 33

Classical computations (FCC)

Functional Quantum Programming – p. 8/44

slide-34
SLIDE 34

Classical computations (FCC)

Given fi nite sets A (input) and B (output):

A B φ h H G

  • Functional Quantum Programming – p. 8/44
slide-35
SLIDE 35

Classical computations (FCC)

Given fi nite sets A (input) and B (output):

A B φ h H G

  • a fi nite set of initial heaps H,

Functional Quantum Programming – p. 8/44

slide-36
SLIDE 36

Classical computations (FCC)

Given fi nite sets A (input) and B (output):

A B φ h H G

  • a fi nite set of initial heaps H,

an initial heap h ∈ H,

Functional Quantum Programming – p. 8/44

slide-37
SLIDE 37

Classical computations (FCC)

Given fi nite sets A (input) and B (output):

A B φ h H G

  • a fi nite set of initial heaps H,

an initial heap h ∈ H, a fi nite set of garbage states G,

Functional Quantum Programming – p. 8/44

slide-38
SLIDE 38

Classical computations (FCC)

Given fi nite sets A (input) and B (output):

A B φ h H G

  • a fi nite set of initial heaps H,

an initial heap h ∈ H, a fi nite set of garbage states G, a bijection φ ∈ A × H ≃ B × G,

Functional Quantum Programming – p. 8/44

slide-39
SLIDE 39

Composing classical computations

Functional Quantum Programming – p. 9/44

slide-40
SLIDE 40

Composing classical computations

A φα

B

φβ C Hα

  • φβ◦α

Functional Quantum Programming – p. 9/44

slide-41
SLIDE 41

Composing classical computations

A φα

B

φβ C Hα

  • φβ◦α

Exercise: Define I.

Functional Quantum Programming – p. 9/44

slide-42
SLIDE 42

Extensional equality

Functional Quantum Programming – p. 10/44

slide-43
SLIDE 43

Extensional equality

Every computation α gives rise to a function

UFCC α ∈ A → B

A × H

φ B × G π1

  • A

(−,h)

  • UFCC α

B

Functional Quantum Programming – p. 10/44

slide-44
SLIDE 44

Extensional equality

Every computation α gives rise to a function

UFCC α ∈ A → B

A × H

φ B × G π1

  • A

(−,h)

  • UFCC α

B

α =ext β, if UFCC α = UFCC β

Functional Quantum Programming – p. 10/44

slide-45
SLIDE 45

Extensional equality

Every computation α gives rise to a function

UFCC α ∈ A → B

A × H

φ B × G π1

  • A

(−,h)

  • UFCC α

B

α =ext β, if UFCC α = UFCC β FCC:

Objects fi nite sets Morphisms computations / =ext.

Functional Quantum Programming – p. 10/44

slide-46
SLIDE 46

UFCC

UFCC I = I UFCC (β ◦ α) = (UFCC β) ◦ (UFCC α)

Functional Quantum Programming – p. 11/44

slide-47
SLIDE 47

UFCC

UFCC I = I UFCC (β ◦ α) = (UFCC β) ◦ (UFCC α) UFCC is a functor UFCC : FCC → FinSet.

Functional Quantum Programming – p. 11/44

slide-48
SLIDE 48

UFCC

UFCC I = I UFCC (β ◦ α) = (UFCC β) ◦ (UFCC α) UFCC is a functor UFCC : FCC → FinSet. UFCC is faithful (trivially).

Functional Quantum Programming – p. 11/44

slide-49
SLIDE 49

UFCC

UFCC I = I UFCC (β ◦ α) = (UFCC β) ◦ (UFCC α) UFCC is a functor UFCC : FCC → FinSet. UFCC is faithful (trivially).

Exercise: UFCC is full!

Functional Quantum Programming – p. 11/44

slide-50
SLIDE 50

Coming next: Quantum computations

Develop FQC analogously to FCC. . .

Functional Quantum Programming – p. 12/44

slide-51
SLIDE 51

Linear algebra revision

Functional Quantum Programming – p. 13/44

slide-52
SLIDE 52

Linear algebra revision

Given a fi nite set A (the base) C A = A → C is a Hilbert space.

Functional Quantum Programming – p. 13/44

slide-53
SLIDE 53

Linear algebra revision

Given a fi nite set A (the base) C A = A → C is a Hilbert space. Linear operators: f ∈ A → B → C induces ˆ f ∈ C A → C B. we write f ∈ A ⊸ B

Functional Quantum Programming – p. 13/44

slide-54
SLIDE 54

Linear algebra revision

Given a fi nite set A (the base) C A = A → C is a Hilbert space. Linear operators: f ∈ A → B → C induces ˆ f ∈ C A → C B. we write f ∈ A ⊸ B Norm of a vector: v = Σa∈A(va)∗(va) ∈ R+,

Functional Quantum Programming – p. 13/44

slide-55
SLIDE 55

Linear algebra revision

Given a fi nite set A (the base) C A = A → C is a Hilbert space. Linear operators: f ∈ A → B → C induces ˆ f ∈ C A → C B. we write f ∈ A ⊸ B Norm of a vector: v = Σa∈A(va)∗(va) ∈ R+, Unitary operators: A unitary operator φ ∈ A ⊸unitary B is a linear isomorphism that preserves the norm.

Functional Quantum Programming – p. 13/44

slide-56
SLIDE 56

Basics of quantum computation

Functional Quantum Programming – p. 14/44

slide-57
SLIDE 57

Basics of quantum computation

A pure state over A is a vector v ∈ C A with unit norm v = 1.

Functional Quantum Programming – p. 14/44

slide-58
SLIDE 58

Basics of quantum computation

A pure state over A is a vector v ∈ C A with unit norm v = 1. A reversible computation is given by a unitary operator φ ∈ A ⊸unitary B.

Functional Quantum Programming – p. 14/44

slide-59
SLIDE 59

Quantum computations (FQC)

Functional Quantum Programming – p. 15/44

slide-60
SLIDE 60

Quantum computations (FQC)

Given fi nite sets A (input) and B (output):

A B φ h H G

  • Functional Quantum Programming – p. 15/44
slide-61
SLIDE 61

Quantum computations (FQC)

Given fi nite sets A (input) and B (output):

A B φ h H G

  • a fi nite set H, the base of the space of initial

heaps,

Functional Quantum Programming – p. 15/44

slide-62
SLIDE 62

Quantum computations (FQC)

Given fi nite sets A (input) and B (output):

A B φ h H G

  • a fi nite set H, the base of the space of initial

heaps, a heap initialisation vector h ∈ C H,

Functional Quantum Programming – p. 15/44

slide-63
SLIDE 63

Quantum computations (FQC)

Given fi nite sets A (input) and B (output):

A B φ h H G

  • a fi nite set H, the base of the space of initial

heaps, a heap initialisation vector h ∈ C H, a fi nite set G, the base of the space of garbage states,

Functional Quantum Programming – p. 15/44

slide-64
SLIDE 64

Quantum computations (FQC)

Given fi nite sets A (input) and B (output):

A B φ h H G

  • a fi nite set H, the base of the space of initial

heaps, a heap initialisation vector h ∈ C H, a fi nite set G, the base of the space of garbage states, a unitary operator φ ∈ A ⊗ H ⊸unitary B ⊗ G.

Functional Quantum Programming – p. 15/44

slide-65
SLIDE 65

Composing quantum computations

Functional Quantum Programming – p. 16/44

slide-66
SLIDE 66

Composing quantum computations

A φα

B

φβ C Hα

  • φβ◦α

Functional Quantum Programming – p. 16/44

slide-67
SLIDE 67

Extensional equality. . .

Functional Quantum Programming – p. 17/44

slide-68
SLIDE 68

Extensional equality. . .

. . . is a bit more subtle.

Functional Quantum Programming – p. 17/44

slide-69
SLIDE 69

Extensional equality. . .

. . . is a bit more subtle. There is no sensible operator replacing π1 on vector spaces: A ⊗ H

φ B ⊗ G ???

  • A

−⊗h

  • ???

B

Functional Quantum Programming – p. 17/44

slide-70
SLIDE 70

Extensional equality. . .

. . . is a bit more subtle. There is no sensible operator replacing π1 on vector spaces: A ⊗ H

φ B ⊗ G ???

  • A

−⊗h

  • ???

B

Indeed: Forgetting part of a pure state results in a mixed state.

Functional Quantum Programming – p. 17/44

slide-71
SLIDE 71

Density Operators

A mixed state on A is given by a density

  • perator

ρ ∈ A ⊸ A such that all eigenvalues are positive reals ˆ ρ v = λv = ⇒ λ ∈ R+ and has a unit trace Σa ∈ A.v a = 1

Functional Quantum Programming – p. 18/44

slide-72
SLIDE 72

Superoperators

Functional Quantum Programming – p. 19/44

slide-73
SLIDE 73

Superoperators

A superoperator f ∈ A ⊸super B is a linear

  • perator on density operators which is

completely positive.

Functional Quantum Programming – p. 19/44

slide-74
SLIDE 74

Superoperators

A superoperator f ∈ A ⊸super B is a linear

  • perator on density operators which is

completely positive. A unitary operator φ ∈ A ⊸unitary B gives rise to a superoperator φ† ∈ A ⊸super B.

Functional Quantum Programming – p. 19/44

slide-75
SLIDE 75

Superoperators

A superoperator f ∈ A ⊸super B is a linear

  • perator on density operators which is

completely positive. A unitary operator φ ∈ A ⊸unitary B gives rise to a superoperator φ† ∈ A ⊸super B. Partial trace: trA,G ∈ A ⊗ G ⊸super A

Functional Quantum Programming – p. 19/44

slide-76
SLIDE 76

Extensional equality

Functional Quantum Programming – p. 20/44

slide-77
SLIDE 77

Extensional equality

Every computation α gives rise to a superoperator U α ∈ A ⊸super B A ⊗ H

  • φ

B ⊗ G trG

  • A

−⊗ h

  • UFQC α

B

Functional Quantum Programming – p. 20/44

slide-78
SLIDE 78

Extensional equality

Every computation α gives rise to a superoperator U α ∈ A ⊸super B A ⊗ H

  • φ

B ⊗ G trG

  • A

−⊗ h

  • UFQC α

B

α =ext β, if UFQC α = UFQC β

Functional Quantum Programming – p. 20/44

slide-79
SLIDE 79

Extensional equality

Every computation α gives rise to a superoperator U α ∈ A ⊸super B A ⊗ H

  • φ

B ⊗ G trG

  • A

−⊗ h

  • UFQC α

B

α =ext β, if UFQC α = UFQC β FCC:

Objects fi nite sets Morphisms computations / =ext.

Functional Quantum Programming – p. 20/44

slide-80
SLIDE 80

UFQC

Functional Quantum Programming – p. 21/44

slide-81
SLIDE 81

UFQC

UFQC I = I UFQC (β ◦ α) = (UFQC β) ◦ (UFQC α)

Functional Quantum Programming – p. 21/44

slide-82
SLIDE 82

UFQC

UFQC I = I UFQC (β ◦ α) = (UFQC β) ◦ (UFQC α) UFQC is a functor UFQC : FQC → Super.

Functional Quantum Programming – p. 21/44

slide-83
SLIDE 83

UFQC

UFQC I = I UFQC (β ◦ α) = (UFQC β) ◦ (UFQC α) UFQC is a functor UFQC : FQC → Super. UFQC is faithful (trivially).

Functional Quantum Programming – p. 21/44

slide-84
SLIDE 84

UFQC

UFQC I = I UFQC (β ◦ α) = (UFQC β) ◦ (UFQC α) UFQC is a functor UFQC : FQC → Super. UFQC is faithful (trivially). UFQC is full!

Functional Quantum Programming – p. 21/44

slide-85
SLIDE 85

Classical vs quantum

Functional Quantum Programming – p. 22/44

slide-86
SLIDE 86

Classical vs quantum

classical quantum

Functional Quantum Programming – p. 22/44

slide-87
SLIDE 87

Classical vs quantum

classical quantum finite sets

Functional Quantum Programming – p. 22/44

slide-88
SLIDE 88

Classical vs quantum

classical quantum finite sets finite dimensional Hilbert spaces

Functional Quantum Programming – p. 22/44

slide-89
SLIDE 89

Classical vs quantum

classical quantum finite sets finite dimensional Hilbert spaces bijections

Functional Quantum Programming – p. 22/44

slide-90
SLIDE 90

Classical vs quantum

classical quantum finite sets finite dimensional Hilbert spaces bijections unitary operators

Functional Quantum Programming – p. 22/44

slide-91
SLIDE 91

Classical vs quantum

classical quantum finite sets finite dimensional Hilbert spaces bijections unitary operators cartesian product (×)

Functional Quantum Programming – p. 22/44

slide-92
SLIDE 92

Classical vs quantum

classical quantum finite sets finite dimensional Hilbert spaces bijections unitary operators cartesian product (×) tensor product (⊗)

Functional Quantum Programming – p. 22/44

slide-93
SLIDE 93

Classical vs quantum

classical quantum finite sets finite dimensional Hilbert spaces bijections unitary operators cartesian product (×) tensor product (⊗) functions

Functional Quantum Programming – p. 22/44

slide-94
SLIDE 94

Classical vs quantum

classical quantum finite sets finite dimensional Hilbert spaces bijections unitary operators cartesian product (×) tensor product (⊗) functions superoperators

Functional Quantum Programming – p. 22/44

slide-95
SLIDE 95

Classical vs quantum

classical quantum finite sets finite dimensional Hilbert spaces bijections unitary operators cartesian product (×) tensor product (⊗) functions superoperators projections

Functional Quantum Programming – p. 22/44

slide-96
SLIDE 96

Classical vs quantum

classical quantum finite sets finite dimensional Hilbert spaces bijections unitary operators cartesian product (×) tensor product (⊗) functions superoperators projections partial trace

Functional Quantum Programming – p. 22/44

slide-97
SLIDE 97

Decoherence

Functional Quantum Programming – p. 23/44

slide-98
SLIDE 98

Decoherence

2

  • 2
  • φδ

φπ1

Functional Quantum Programming – p. 23/44

slide-99
SLIDE 99

Decoherence

2

  • 2
  • φδ

φπ1 Classically

π1 ◦ δ = I

Functional Quantum Programming – p. 23/44

slide-100
SLIDE 100

Decoherence

2

  • 2
  • φδ

φπ1 Classically

π1 ◦ δ = I

Quantum

Functional Quantum Programming – p. 23/44

slide-101
SLIDE 101

Decoherence

2

  • 2
  • φδ

φπ1 Classically

π1 ◦ δ = I

Quantum input: { 1

√ 2 |0 + 1 √ 2 |0}

Functional Quantum Programming – p. 23/44

slide-102
SLIDE 102

Decoherence

2

  • 2
  • φδ

φπ1 Classically

π1 ◦ δ = I

Quantum input: { 1

√ 2 |0 + 1 √ 2 |0}

  • utput: 1

2{|0} + 1 2{|1}

Functional Quantum Programming – p. 23/44

slide-103
SLIDE 103

QML basics

Functional Quantum Programming – p. 24/44

slide-104
SLIDE 104

QML basics

Γ ⊢ t : σ t ∈ FQC Γ τ

Functional Quantum Programming – p. 24/44

slide-105
SLIDE 105

QML basics

Γ ⊢ t : σ t ∈ FQC Γ τ QML is based on strict linear logic no weakening but contraction.

Functional Quantum Programming – p. 24/44

slide-106
SLIDE 106

QML basics

Γ ⊢ t : σ t ∈ FQC Γ τ QML is based on strict linear logic no weakening but contraction. QML types: 1, σ ⊗ τ, σ ⊕ τ

Functional Quantum Programming – p. 24/44

slide-107
SLIDE 107

Interpretation of types

Functional Quantum Programming – p. 25/44

slide-108
SLIDE 108

Interpretation of types

|1| = 0 |σ ⊔ τ| = max {|σ|, |τ|} |σ ⊕ τ| = |σ ⊔ τ| + 1 |σ ⊗ τ| = |σ| + |τ|

Functional Quantum Programming – p. 25/44

slide-109
SLIDE 109

Interpretation of types

|1| = 0 |σ ⊔ τ| = max {|σ|, |τ|} |σ ⊕ τ| = |σ ⊔ τ| + 1 |σ ⊗ τ| = |σ| + |τ| σ = 2|σ|

Functional Quantum Programming – p. 25/44

slide-110
SLIDE 110

⊗ on contexts

Functional Quantum Programming – p. 26/44

slide-111
SLIDE 111

⊗ on contexts

Γ, x : σ ⊗ ∆, x : σ = (Γ ⊗ ∆), x : σ Γ, x : σ ⊗ ∆ = (Γ ⊗ ∆), x : σ if x / ∈ dom ∆

  • ⊗ ∆

= ∆

Functional Quantum Programming – p. 26/44

slide-112
SLIDE 112

⊗ on contexts

Γ, x : σ ⊗ ∆, x : σ = (Γ ⊗ ∆), x : σ Γ, x : σ ⊗ ∆ = (Γ ⊗ ∆), x : σ if x / ∈ dom ∆

  • ⊗ ∆

= ∆ Γ ⊗ ∆ φCΓ,∆ Γ HΓ,∆ ∆

Functional Quantum Programming – p. 26/44

slide-113
SLIDE 113

The let-rule

Functional Quantum Programming – p. 27/44

slide-114
SLIDE 114

The let-rule

Γ ⊢ t : σ ∆, x : σ ⊢ u : τ let Γ ⊗ ∆ ⊢ let x = t in u : τ

Functional Quantum Programming – p. 27/44

slide-115
SLIDE 115

The let-rule

Γ ⊢ t : σ ∆, x : σ ⊢ u : τ let Γ ⊗ ∆ ⊢ let x = t in u : τ Γ ⊗ ∆ φCΓ,∆

Γ

φu HΓ,∆

  • φt

σ τ

B Ht

  • Gt
  • Hu
  • Gu
  • Functional Quantum Programming – p. 27/44
slide-116
SLIDE 116

The var-rule

Functional Quantum Programming – p. 28/44

slide-117
SLIDE 117

The var-rule

var Γ, x : σ ⊢ xdom Γ : σ

Functional Quantum Programming – p. 28/44

slide-118
SLIDE 118

The var-rule

var Γ, x : σ ⊢ xdom Γ : σ Γ

  • σ

σ

  • Functional Quantum Programming – p. 28/44
slide-119
SLIDE 119

Example

y : Q2 ⊢ let x = y in x{} : Q2

Functional Quantum Programming – p. 29/44

slide-120
SLIDE 120

Example

y : Q2 ⊢ let x = y in x{} : Q2 y : Q2 ⊢ let x = y in x{y} : Q2

Functional Quantum Programming – p. 29/44

slide-121
SLIDE 121

⊗-intro

Functional Quantum Programming – p. 30/44

slide-122
SLIDE 122

⊗-intro

Γ ⊢ t : σ ∆ ⊢ u : τ ⊗ intro Γ ⊗ ∆ ⊢ (t, u) : σ ⊗ τ

Functional Quantum Programming – p. 30/44

slide-123
SLIDE 123

⊗-intro

Γ ⊢ t : σ ∆ ⊢ u : τ ⊗ intro Γ ⊗ ∆ ⊢ (t, u) : σ ⊗ τ Γ ⊗ ∆ φCΓ,∆

Γ

φt

σ

σ HΓ,∆

  • τ

Ht

  • φu

τ

  • Gt
  • Hu
  • Gu
  • Functional Quantum Programming – p. 30/44
slide-124
SLIDE 124

⊗-elim

Functional Quantum Programming – p. 31/44

slide-125
SLIDE 125

⊗-elim

Γ ⊢ t : σ ⊗ τ ∆, x : σ, y : τ ⊢ u : C ⊗ elim Γ ⊗ ∆ ⊢ let (x, y) = t in u : C

Functional Quantum Programming – p. 31/44

slide-126
SLIDE 126

⊗-elim

Γ ⊢ t : σ ⊗ τ ∆, x : σ, y : τ ⊢ u : C ⊗ elim Γ ⊗ ∆ ⊢ let (x, y) = t in u : C Γ ⊗ ∆ φCΓ,∆

Γ

φu HΓ,∆

  • φt

σ τ C

C Ht

  • Gt
  • Hu
  • Gu
  • Functional Quantum Programming – p. 31/44
slide-127
SLIDE 127

Example

p : Q2 ⊗ Q2 ⊢ let (x, y) = p in (y{}, x{}) : Q2 ⊗ Q2

Functional Quantum Programming – p. 32/44

slide-128
SLIDE 128

Example

p : Q2 ⊗ Q2 ⊢ let (x, y) = p in (y{}, x{}) : Q2 ⊗ Q2 p : Q2⊗Q2 ⊢ let (x, y) = p in (y{p}, x{p}) : Q2⊗Q2

Functional Quantum Programming – p. 32/44

slide-129
SLIDE 129

⊕-intro

Functional Quantum Programming – p. 33/44

slide-130
SLIDE 130

⊕-intro

Γ ⊢ t : A Γ ⊢ inl t : A ⊕ B

Functional Quantum Programming – p. 33/44

slide-131
SLIDE 131

⊕-intro

Γ ⊢ t : A Γ ⊢ inl t : A ⊕ B Γ φt

σ

φPσ⊔τ ∆

  • σ ⊔ τ

σ ⊔ τ Ht−s

  • Q2

Q2 X

  • Gt
  • Functional Quantum Programming – p. 33/44
slide-132
SLIDE 132

⊕-elim

Functional Quantum Programming – p. 34/44

slide-133
SLIDE 133

⊕-elim

Γ ⊢ c : σ ⊕ τ ∆, x : σ ⊢ t : ρ ∆, y : τ ⊢ u : ρ + elim Γ ⊗ ∆ ⊢ case c of {inl x ⇒ t | inr y ⇒ u} : ρ

Functional Quantum Programming – p. 34/44

slide-134
SLIDE 134

⊕-elim

Γ ⊢ c : σ ⊕ τ ∆, x : σ ⊢ t : ρ ∆, y : τ ⊢ u : ρ + elim Γ ⊗ ∆ ⊢ case c of {inl x ⇒ t | inr y ⇒ u} : ρ Γ ⊗ ∆ φCΓ,∆

Γ

  • φ[t|u]

HΓ,∆

  • φb

σ ⊔ τ

ρ

Q2

Q2

  • Hb
  • G
  • Ht−u
  • Gb
  • Functional Quantum Programming – p. 34/44
slide-135
SLIDE 135

⊕-elim decoherence-free

Functional Quantum Programming – p. 35/44

slide-136
SLIDE 136

⊕-elim decoherence-free

Γ ⊢ c : σ ⊕ τ ∆, x : σ ⊢ t : ρ ∆, y : τ ⊢ u : ρ, t ⊥ u + elim◦ Γ ⊗ ∆ ⊢ case◦ b of {inl x ⇒ t | inr y ⇒ u} : ρ

Functional Quantum Programming – p. 35/44

slide-137
SLIDE 137

⊕-elim decoherence-free

Γ ⊢ c : σ ⊕ τ ∆, x : σ ⊢ t : ρ ∆, y : τ ⊢ u : ρ, t ⊥ u + elim◦ Γ ⊗ ∆ ⊢ case◦ b of {inl x ⇒ t | inr y ⇒ u} : ρ Γ ⊗ ∆ φCΓ,∆

Γ

  • φ[f|g]

HΓ,∆

  • φb

σ ⊔ τ S

φ⊥ ρ

Q2 Q2

Hb

  • G
  • Ht−u
  • Gb
  • Functional Quantum Programming – p. 35/44
slide-138
SLIDE 138

Orthogonality

inl t ⊥ inr u t ⊥ u inl t ⊥ inl u inr t ⊥ inr u t ⊥ u (t, v) ⊥ (u, w) (v, t) ⊥ (w, u)

Functional Quantum Programming – p. 36/44

slide-139
SLIDE 139

Semantics of ⊥

t ⊥ u = (S, φ, f, g) S fi nite set. φ ∈ Q2 ⊗ S ⊸unitary σ f ∈ FQC Γ S g ∈ FQC Γ S t = φ ◦ (true ⊗ −) ◦ f, u = φ ◦ (false ⊗ −) ◦ g

Functional Quantum Programming – p. 37/44

slide-140
SLIDE 140

Superpositions

Γ ⊢ t, u : σ t ⊥ u ||λ||2 + ||λ′||2 = 1 λ, λ′ = 0 Γ ⊢ {(λ)t | (λ′)u} : σ ≡ if◦ {(λ)qtrue | (λ′)qfalse} then t else u

Functional Quantum Programming – p. 38/44

slide-141
SLIDE 141

Example: Deutsch’s algorithm

Eq a : Q2, b : Q2 = let (x, y) = if◦ {qfalse | (−1)qtrue} then (qtrue, if a then {qfalse | (−1)qtrue} else {qfalse | qtrue}) else (qfalse,if b then {qfalse | (−1)qtrue} else {qfalse | qtrue}) in x : Q2

Functional Quantum Programming – p. 39/44

slide-142
SLIDE 142

Future work

Functional Quantum Programming – p. 40/44

slide-143
SLIDE 143

Future work

Higher order

Functional Quantum Programming – p. 40/44

slide-144
SLIDE 144

Future work

Higher order High level reasoning principles for QML programs

Functional Quantum Programming – p. 40/44

slide-145
SLIDE 145

Future work

Higher order High level reasoning principles for QML programs Categorical analysis

Functional Quantum Programming – p. 40/44

slide-146
SLIDE 146

Future work

Higher order High level reasoning principles for QML programs Categorical analysis Infi nite or indexed?

Functional Quantum Programming – p. 40/44