46
Quantum Programming Languages –A Survey– Roland R¨ udiger [email protected] Seminar talks given at Institut f ¨ ur Mathematische Physik , TU Braunschweig February 26/27, 2003

Roland Rudiger- Quantum Programming Languages:A Survey

  • Upload
    gholsas

  • View
    226

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 146

Quantum Programming LanguagesndashA Surveyndash

Roland Rudigerrruedigerfh-wolfenbuettelde

Seminar talks given at Institut f ur Mathematische Physik TU Braunschweig

February 2627 2003

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 246

Outline

ndash Simulation of Quantum Computers

ndash ldquoClassicalrdquo Programming LanguagesmdashConcepts and Terminology

ndash QPLs Design Considerations

ndash QPLs Detailed Examples

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 346

Simulation of Quantum Computers

review of quantum computer simulators by J Wallace [home page] 37 ldquosimulatorsrdquo (Jan 2002) covering a wide range of QM

some features

ndash implementation languages Pascal C++ Java Haskell

Mathematica Perl also implementation on a parallelmachine

ndash simulation of single algorithms vs generic simulator

ndash visualization of quantum physical processes algorithms

ndash new language vs library support for implementing algorithmsin conventional languages

ndash specific new data structures (entanglement of variables)

ndash different computing models quantum Turing machine vs quan-

tum circuit model

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 446

ldquoClassicalrdquo Programming LanguagesmdashConcepts and Ter-

minology

remark on terminology ldquoprogrammingrdquo

pragmatic vs theoretical approach

programming in the small vs programming in the large

classes of programming languages

ndash imperative programming languages

Computation is seen as a sequence of state transitions on a set

of state variables

language elements e g assignment statement

refined classification (based on programming methodology)

lowast structured (e g Pascal)

lowast modular (e g Modula-2)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 546

lowast object-oriented (e g C++ Java Eiffel )

lowast also mixtures modular object-oriented (e g Oberon)

ndash functional programming languagesprogram describes computation of a function

no variables no assignment statements (in a purely functional

language)

formal basis λ-calculus (Church)examples Lisp ML Scheme Haskell

ndash logic programming languages

also declarative programming languages rule-based

example Prolog syntax context free grammar

Context free means non-terminal symbols can be substituted in-

dependently of their context (lhs of production rule exactly one

non-terminal symbol)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 646

semantics (adopted from [Mey90 ch 4])

ndash translational semantics

meaning of a language is expressed by a translational schema

program in this language is translated into a program in an-

other (known) language

ndash operational semantics

semantics of a language is defined by an interpreting automa-

ton a formal device capable of formally executing a program

ndash denotational semantics

meaning of a program is a mathematical object a function

(whereas in translational semantics itrsquos another program)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 746

ndash axiomatic semantics

basis program formulae

P a Q

P Q are assertions specifically

lowast a precondition P

lowast a postcondition Qlowast a instruction

meaning of a program formula

If a is executed in a state in which assertion P is satis-

fied then it will result in a state in which assertion Q

issatisfied [Mey90 p 111]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 846

abstraction abstract datatypes (ADTs)

ndash good examples include

lowast First-In-First-Out (FIFO) queue

lowast Stack

lowast Priority Queue

ndash data and operations acting on these data are combined to form

ldquoobjectsrdquo

ndash implementation details remain invisible

ndash excessively large example based on the idea of abstraction

Java library (API) (Application Programming Interface)

(estimate of 20000 - 30000 names (methods attributes))

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 946

First-In-First-Out (FIFO) queue (ADT formalized)

SPECIFICATION

LIBRARY Boolean Integer ENDLIB ( library types )

TYPE fifo IS

OPNS ( operations )

( 1) empty -gt fifo

( 2) put int fifo -gt fifo

( 3) head fifo -gt int

( 4) tail fifo -gt fifo

( 5) isempty fifo -gt bool

continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1046

EQNS ( equations or axioms )

FORALL f fifo d1 d2 int

OFSORT bool ( boolean equations )

( 6) isempty (empty) = true

( 7) isempty (put (d1 f)) = false

OFSORT fifo ( fifo equations )

( 8) tail (empty) = empty

( 9) tail (put (d1 empty)) = empty

(10) tail (put (d1 put (d2 f))) = put (d1 tail (put (d2 f)))

OFSORT int ( integer equations )

(11) head (put (d1 put (d2 f))) = head (put (d2 f))

(12) head (put (d1 empty)) = d1

(13) head (empty) = 0

ENDTYPE

ENDSPEC

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1146

QPLs Design Considerations

talking about and specifying QPLs answers for questions (never)to come

What can (or cannot) be expected (pros and cons)

ndash new fundamental insights into the ldquoodditiesrdquo of quantum the-

oryQPLs might serve as a ldquocatalystrdquo for asking new questions

ndash helpful in finding new algorithms

cf learning Pascal and re-inventing heapsort

ndash but exact notations of algorithms require some sort of pro-gramming language notation

one goal could be formalized description of algorithms by

means of a universal language

ndash fresh look at quantum systems

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1246

(What can physics learn from classical concepts of computer

science)

ndash feasibility of computer science concepts (of classical origin)(What can computer science learn from physics)

ndash What can be formulated using existing language concepts

example modularization composing a larger system from its

partsallocated memory is additive

ndash QPL-design isnrsquot merely numerics of matrix operations |ψ =

U |ψ

main difference program structurendash ldquooperational viewrdquo to quantum systems

one important aspect of programming languages handling of

a system machine by non-specialists

ndash didactical aspects

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1346

hardware model

QRAM model (Knill [Kni96] Bettelli et al [BCS01])

-

-

device

quantum quantum

devicedriver

bytecode

measure

Classical Computer

(Master) (Slave)

Quantum Processor

basic idea [BCS01 p 15] What is really needed is a mechanism for generating the whole circuital description before the quan-

tum device is even fired up applying algebraic simplifications

once for all

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1446

alternatives

ndash pragmatic vs theoretical approach

ndash new language vs conventional language with library extension

historical analogy transputer

one way of designing an ADT based ldquohigh levelrdquo language

6 6 6 6 6

QFT

QPL based on basic functions

Reset MeasureU(α β γ δ)CNotCreate

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1546

Niels Bohr

However far the quantum phenomena transcend the

scope of classical physical explanation the account of all evidence must be expressed in classical terms The

argument is simply that by the word lsquoexperimentrsquo we re-

fer to a situation where we can tell others what we have

done and what we have learned and that therefore theaccount of the experimental arrangement and the results

of the observations must be expressed in unambiguous

language with suitable application of the terminology of

classical physics

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 2: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 246

Outline

ndash Simulation of Quantum Computers

ndash ldquoClassicalrdquo Programming LanguagesmdashConcepts and Terminology

ndash QPLs Design Considerations

ndash QPLs Detailed Examples

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 346

Simulation of Quantum Computers

review of quantum computer simulators by J Wallace [home page] 37 ldquosimulatorsrdquo (Jan 2002) covering a wide range of QM

some features

ndash implementation languages Pascal C++ Java Haskell

Mathematica Perl also implementation on a parallelmachine

ndash simulation of single algorithms vs generic simulator

ndash visualization of quantum physical processes algorithms

ndash new language vs library support for implementing algorithmsin conventional languages

ndash specific new data structures (entanglement of variables)

ndash different computing models quantum Turing machine vs quan-

tum circuit model

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 446

ldquoClassicalrdquo Programming LanguagesmdashConcepts and Ter-

minology

remark on terminology ldquoprogrammingrdquo

pragmatic vs theoretical approach

programming in the small vs programming in the large

classes of programming languages

ndash imperative programming languages

Computation is seen as a sequence of state transitions on a set

of state variables

language elements e g assignment statement

refined classification (based on programming methodology)

lowast structured (e g Pascal)

lowast modular (e g Modula-2)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 546

lowast object-oriented (e g C++ Java Eiffel )

lowast also mixtures modular object-oriented (e g Oberon)

ndash functional programming languagesprogram describes computation of a function

no variables no assignment statements (in a purely functional

language)

formal basis λ-calculus (Church)examples Lisp ML Scheme Haskell

ndash logic programming languages

also declarative programming languages rule-based

example Prolog syntax context free grammar

Context free means non-terminal symbols can be substituted in-

dependently of their context (lhs of production rule exactly one

non-terminal symbol)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 646

semantics (adopted from [Mey90 ch 4])

ndash translational semantics

meaning of a language is expressed by a translational schema

program in this language is translated into a program in an-

other (known) language

ndash operational semantics

semantics of a language is defined by an interpreting automa-

ton a formal device capable of formally executing a program

ndash denotational semantics

meaning of a program is a mathematical object a function

(whereas in translational semantics itrsquos another program)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 746

ndash axiomatic semantics

basis program formulae

P a Q

P Q are assertions specifically

lowast a precondition P

lowast a postcondition Qlowast a instruction

meaning of a program formula

If a is executed in a state in which assertion P is satis-

fied then it will result in a state in which assertion Q

issatisfied [Mey90 p 111]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 846

abstraction abstract datatypes (ADTs)

ndash good examples include

lowast First-In-First-Out (FIFO) queue

lowast Stack

lowast Priority Queue

ndash data and operations acting on these data are combined to form

ldquoobjectsrdquo

ndash implementation details remain invisible

ndash excessively large example based on the idea of abstraction

Java library (API) (Application Programming Interface)

(estimate of 20000 - 30000 names (methods attributes))

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 946

First-In-First-Out (FIFO) queue (ADT formalized)

SPECIFICATION

LIBRARY Boolean Integer ENDLIB ( library types )

TYPE fifo IS

OPNS ( operations )

( 1) empty -gt fifo

( 2) put int fifo -gt fifo

( 3) head fifo -gt int

( 4) tail fifo -gt fifo

( 5) isempty fifo -gt bool

continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1046

EQNS ( equations or axioms )

FORALL f fifo d1 d2 int

OFSORT bool ( boolean equations )

( 6) isempty (empty) = true

( 7) isempty (put (d1 f)) = false

OFSORT fifo ( fifo equations )

( 8) tail (empty) = empty

( 9) tail (put (d1 empty)) = empty

(10) tail (put (d1 put (d2 f))) = put (d1 tail (put (d2 f)))

OFSORT int ( integer equations )

(11) head (put (d1 put (d2 f))) = head (put (d2 f))

(12) head (put (d1 empty)) = d1

(13) head (empty) = 0

ENDTYPE

ENDSPEC

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1146

QPLs Design Considerations

talking about and specifying QPLs answers for questions (never)to come

What can (or cannot) be expected (pros and cons)

ndash new fundamental insights into the ldquoodditiesrdquo of quantum the-

oryQPLs might serve as a ldquocatalystrdquo for asking new questions

ndash helpful in finding new algorithms

cf learning Pascal and re-inventing heapsort

ndash but exact notations of algorithms require some sort of pro-gramming language notation

one goal could be formalized description of algorithms by

means of a universal language

ndash fresh look at quantum systems

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1246

(What can physics learn from classical concepts of computer

science)

ndash feasibility of computer science concepts (of classical origin)(What can computer science learn from physics)

ndash What can be formulated using existing language concepts

example modularization composing a larger system from its

partsallocated memory is additive

ndash QPL-design isnrsquot merely numerics of matrix operations |ψ =

U |ψ

main difference program structurendash ldquooperational viewrdquo to quantum systems

one important aspect of programming languages handling of

a system machine by non-specialists

ndash didactical aspects

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1346

hardware model

QRAM model (Knill [Kni96] Bettelli et al [BCS01])

-

-

device

quantum quantum

devicedriver

bytecode

measure

Classical Computer

(Master) (Slave)

Quantum Processor

basic idea [BCS01 p 15] What is really needed is a mechanism for generating the whole circuital description before the quan-

tum device is even fired up applying algebraic simplifications

once for all

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1446

alternatives

ndash pragmatic vs theoretical approach

ndash new language vs conventional language with library extension

historical analogy transputer

one way of designing an ADT based ldquohigh levelrdquo language

6 6 6 6 6

QFT

QPL based on basic functions

Reset MeasureU(α β γ δ)CNotCreate

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1546

Niels Bohr

However far the quantum phenomena transcend the

scope of classical physical explanation the account of all evidence must be expressed in classical terms The

argument is simply that by the word lsquoexperimentrsquo we re-

fer to a situation where we can tell others what we have

done and what we have learned and that therefore theaccount of the experimental arrangement and the results

of the observations must be expressed in unambiguous

language with suitable application of the terminology of

classical physics

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 3: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 346

Simulation of Quantum Computers

review of quantum computer simulators by J Wallace [home page] 37 ldquosimulatorsrdquo (Jan 2002) covering a wide range of QM

some features

ndash implementation languages Pascal C++ Java Haskell

Mathematica Perl also implementation on a parallelmachine

ndash simulation of single algorithms vs generic simulator

ndash visualization of quantum physical processes algorithms

ndash new language vs library support for implementing algorithmsin conventional languages

ndash specific new data structures (entanglement of variables)

ndash different computing models quantum Turing machine vs quan-

tum circuit model

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 446

ldquoClassicalrdquo Programming LanguagesmdashConcepts and Ter-

minology

remark on terminology ldquoprogrammingrdquo

pragmatic vs theoretical approach

programming in the small vs programming in the large

classes of programming languages

ndash imperative programming languages

Computation is seen as a sequence of state transitions on a set

of state variables

language elements e g assignment statement

refined classification (based on programming methodology)

lowast structured (e g Pascal)

lowast modular (e g Modula-2)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 546

lowast object-oriented (e g C++ Java Eiffel )

lowast also mixtures modular object-oriented (e g Oberon)

ndash functional programming languagesprogram describes computation of a function

no variables no assignment statements (in a purely functional

language)

formal basis λ-calculus (Church)examples Lisp ML Scheme Haskell

ndash logic programming languages

also declarative programming languages rule-based

example Prolog syntax context free grammar

Context free means non-terminal symbols can be substituted in-

dependently of their context (lhs of production rule exactly one

non-terminal symbol)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 646

semantics (adopted from [Mey90 ch 4])

ndash translational semantics

meaning of a language is expressed by a translational schema

program in this language is translated into a program in an-

other (known) language

ndash operational semantics

semantics of a language is defined by an interpreting automa-

ton a formal device capable of formally executing a program

ndash denotational semantics

meaning of a program is a mathematical object a function

(whereas in translational semantics itrsquos another program)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 746

ndash axiomatic semantics

basis program formulae

P a Q

P Q are assertions specifically

lowast a precondition P

lowast a postcondition Qlowast a instruction

meaning of a program formula

If a is executed in a state in which assertion P is satis-

fied then it will result in a state in which assertion Q

issatisfied [Mey90 p 111]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 846

abstraction abstract datatypes (ADTs)

ndash good examples include

lowast First-In-First-Out (FIFO) queue

lowast Stack

lowast Priority Queue

ndash data and operations acting on these data are combined to form

ldquoobjectsrdquo

ndash implementation details remain invisible

ndash excessively large example based on the idea of abstraction

Java library (API) (Application Programming Interface)

(estimate of 20000 - 30000 names (methods attributes))

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 946

First-In-First-Out (FIFO) queue (ADT formalized)

SPECIFICATION

LIBRARY Boolean Integer ENDLIB ( library types )

TYPE fifo IS

OPNS ( operations )

( 1) empty -gt fifo

( 2) put int fifo -gt fifo

( 3) head fifo -gt int

( 4) tail fifo -gt fifo

( 5) isempty fifo -gt bool

continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1046

EQNS ( equations or axioms )

FORALL f fifo d1 d2 int

OFSORT bool ( boolean equations )

( 6) isempty (empty) = true

( 7) isempty (put (d1 f)) = false

OFSORT fifo ( fifo equations )

( 8) tail (empty) = empty

( 9) tail (put (d1 empty)) = empty

(10) tail (put (d1 put (d2 f))) = put (d1 tail (put (d2 f)))

OFSORT int ( integer equations )

(11) head (put (d1 put (d2 f))) = head (put (d2 f))

(12) head (put (d1 empty)) = d1

(13) head (empty) = 0

ENDTYPE

ENDSPEC

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1146

QPLs Design Considerations

talking about and specifying QPLs answers for questions (never)to come

What can (or cannot) be expected (pros and cons)

ndash new fundamental insights into the ldquoodditiesrdquo of quantum the-

oryQPLs might serve as a ldquocatalystrdquo for asking new questions

ndash helpful in finding new algorithms

cf learning Pascal and re-inventing heapsort

ndash but exact notations of algorithms require some sort of pro-gramming language notation

one goal could be formalized description of algorithms by

means of a universal language

ndash fresh look at quantum systems

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1246

(What can physics learn from classical concepts of computer

science)

ndash feasibility of computer science concepts (of classical origin)(What can computer science learn from physics)

ndash What can be formulated using existing language concepts

example modularization composing a larger system from its

partsallocated memory is additive

ndash QPL-design isnrsquot merely numerics of matrix operations |ψ =

U |ψ

main difference program structurendash ldquooperational viewrdquo to quantum systems

one important aspect of programming languages handling of

a system machine by non-specialists

ndash didactical aspects

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1346

hardware model

QRAM model (Knill [Kni96] Bettelli et al [BCS01])

-

-

device

quantum quantum

devicedriver

bytecode

measure

Classical Computer

(Master) (Slave)

Quantum Processor

basic idea [BCS01 p 15] What is really needed is a mechanism for generating the whole circuital description before the quan-

tum device is even fired up applying algebraic simplifications

once for all

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1446

alternatives

ndash pragmatic vs theoretical approach

ndash new language vs conventional language with library extension

historical analogy transputer

one way of designing an ADT based ldquohigh levelrdquo language

6 6 6 6 6

QFT

QPL based on basic functions

Reset MeasureU(α β γ δ)CNotCreate

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1546

Niels Bohr

However far the quantum phenomena transcend the

scope of classical physical explanation the account of all evidence must be expressed in classical terms The

argument is simply that by the word lsquoexperimentrsquo we re-

fer to a situation where we can tell others what we have

done and what we have learned and that therefore theaccount of the experimental arrangement and the results

of the observations must be expressed in unambiguous

language with suitable application of the terminology of

classical physics

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 4: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 446

ldquoClassicalrdquo Programming LanguagesmdashConcepts and Ter-

minology

remark on terminology ldquoprogrammingrdquo

pragmatic vs theoretical approach

programming in the small vs programming in the large

classes of programming languages

ndash imperative programming languages

Computation is seen as a sequence of state transitions on a set

of state variables

language elements e g assignment statement

refined classification (based on programming methodology)

lowast structured (e g Pascal)

lowast modular (e g Modula-2)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 546

lowast object-oriented (e g C++ Java Eiffel )

lowast also mixtures modular object-oriented (e g Oberon)

ndash functional programming languagesprogram describes computation of a function

no variables no assignment statements (in a purely functional

language)

formal basis λ-calculus (Church)examples Lisp ML Scheme Haskell

ndash logic programming languages

also declarative programming languages rule-based

example Prolog syntax context free grammar

Context free means non-terminal symbols can be substituted in-

dependently of their context (lhs of production rule exactly one

non-terminal symbol)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 646

semantics (adopted from [Mey90 ch 4])

ndash translational semantics

meaning of a language is expressed by a translational schema

program in this language is translated into a program in an-

other (known) language

ndash operational semantics

semantics of a language is defined by an interpreting automa-

ton a formal device capable of formally executing a program

ndash denotational semantics

meaning of a program is a mathematical object a function

(whereas in translational semantics itrsquos another program)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 746

ndash axiomatic semantics

basis program formulae

P a Q

P Q are assertions specifically

lowast a precondition P

lowast a postcondition Qlowast a instruction

meaning of a program formula

If a is executed in a state in which assertion P is satis-

fied then it will result in a state in which assertion Q

issatisfied [Mey90 p 111]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 846

abstraction abstract datatypes (ADTs)

ndash good examples include

lowast First-In-First-Out (FIFO) queue

lowast Stack

lowast Priority Queue

ndash data and operations acting on these data are combined to form

ldquoobjectsrdquo

ndash implementation details remain invisible

ndash excessively large example based on the idea of abstraction

Java library (API) (Application Programming Interface)

(estimate of 20000 - 30000 names (methods attributes))

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 946

First-In-First-Out (FIFO) queue (ADT formalized)

SPECIFICATION

LIBRARY Boolean Integer ENDLIB ( library types )

TYPE fifo IS

OPNS ( operations )

( 1) empty -gt fifo

( 2) put int fifo -gt fifo

( 3) head fifo -gt int

( 4) tail fifo -gt fifo

( 5) isempty fifo -gt bool

continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1046

EQNS ( equations or axioms )

FORALL f fifo d1 d2 int

OFSORT bool ( boolean equations )

( 6) isempty (empty) = true

( 7) isempty (put (d1 f)) = false

OFSORT fifo ( fifo equations )

( 8) tail (empty) = empty

( 9) tail (put (d1 empty)) = empty

(10) tail (put (d1 put (d2 f))) = put (d1 tail (put (d2 f)))

OFSORT int ( integer equations )

(11) head (put (d1 put (d2 f))) = head (put (d2 f))

(12) head (put (d1 empty)) = d1

(13) head (empty) = 0

ENDTYPE

ENDSPEC

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1146

QPLs Design Considerations

talking about and specifying QPLs answers for questions (never)to come

What can (or cannot) be expected (pros and cons)

ndash new fundamental insights into the ldquoodditiesrdquo of quantum the-

oryQPLs might serve as a ldquocatalystrdquo for asking new questions

ndash helpful in finding new algorithms

cf learning Pascal and re-inventing heapsort

ndash but exact notations of algorithms require some sort of pro-gramming language notation

one goal could be formalized description of algorithms by

means of a universal language

ndash fresh look at quantum systems

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1246

(What can physics learn from classical concepts of computer

science)

ndash feasibility of computer science concepts (of classical origin)(What can computer science learn from physics)

ndash What can be formulated using existing language concepts

example modularization composing a larger system from its

partsallocated memory is additive

ndash QPL-design isnrsquot merely numerics of matrix operations |ψ =

U |ψ

main difference program structurendash ldquooperational viewrdquo to quantum systems

one important aspect of programming languages handling of

a system machine by non-specialists

ndash didactical aspects

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1346

hardware model

QRAM model (Knill [Kni96] Bettelli et al [BCS01])

-

-

device

quantum quantum

devicedriver

bytecode

measure

Classical Computer

(Master) (Slave)

Quantum Processor

basic idea [BCS01 p 15] What is really needed is a mechanism for generating the whole circuital description before the quan-

tum device is even fired up applying algebraic simplifications

once for all

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1446

alternatives

ndash pragmatic vs theoretical approach

ndash new language vs conventional language with library extension

historical analogy transputer

one way of designing an ADT based ldquohigh levelrdquo language

6 6 6 6 6

QFT

QPL based on basic functions

Reset MeasureU(α β γ δ)CNotCreate

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1546

Niels Bohr

However far the quantum phenomena transcend the

scope of classical physical explanation the account of all evidence must be expressed in classical terms The

argument is simply that by the word lsquoexperimentrsquo we re-

fer to a situation where we can tell others what we have

done and what we have learned and that therefore theaccount of the experimental arrangement and the results

of the observations must be expressed in unambiguous

language with suitable application of the terminology of

classical physics

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 5: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 546

lowast object-oriented (e g C++ Java Eiffel )

lowast also mixtures modular object-oriented (e g Oberon)

ndash functional programming languagesprogram describes computation of a function

no variables no assignment statements (in a purely functional

language)

formal basis λ-calculus (Church)examples Lisp ML Scheme Haskell

ndash logic programming languages

also declarative programming languages rule-based

example Prolog syntax context free grammar

Context free means non-terminal symbols can be substituted in-

dependently of their context (lhs of production rule exactly one

non-terminal symbol)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 646

semantics (adopted from [Mey90 ch 4])

ndash translational semantics

meaning of a language is expressed by a translational schema

program in this language is translated into a program in an-

other (known) language

ndash operational semantics

semantics of a language is defined by an interpreting automa-

ton a formal device capable of formally executing a program

ndash denotational semantics

meaning of a program is a mathematical object a function

(whereas in translational semantics itrsquos another program)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 746

ndash axiomatic semantics

basis program formulae

P a Q

P Q are assertions specifically

lowast a precondition P

lowast a postcondition Qlowast a instruction

meaning of a program formula

If a is executed in a state in which assertion P is satis-

fied then it will result in a state in which assertion Q

issatisfied [Mey90 p 111]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 846

abstraction abstract datatypes (ADTs)

ndash good examples include

lowast First-In-First-Out (FIFO) queue

lowast Stack

lowast Priority Queue

ndash data and operations acting on these data are combined to form

ldquoobjectsrdquo

ndash implementation details remain invisible

ndash excessively large example based on the idea of abstraction

Java library (API) (Application Programming Interface)

(estimate of 20000 - 30000 names (methods attributes))

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 946

First-In-First-Out (FIFO) queue (ADT formalized)

SPECIFICATION

LIBRARY Boolean Integer ENDLIB ( library types )

TYPE fifo IS

OPNS ( operations )

( 1) empty -gt fifo

( 2) put int fifo -gt fifo

( 3) head fifo -gt int

( 4) tail fifo -gt fifo

( 5) isempty fifo -gt bool

continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1046

EQNS ( equations or axioms )

FORALL f fifo d1 d2 int

OFSORT bool ( boolean equations )

( 6) isempty (empty) = true

( 7) isempty (put (d1 f)) = false

OFSORT fifo ( fifo equations )

( 8) tail (empty) = empty

( 9) tail (put (d1 empty)) = empty

(10) tail (put (d1 put (d2 f))) = put (d1 tail (put (d2 f)))

OFSORT int ( integer equations )

(11) head (put (d1 put (d2 f))) = head (put (d2 f))

(12) head (put (d1 empty)) = d1

(13) head (empty) = 0

ENDTYPE

ENDSPEC

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1146

QPLs Design Considerations

talking about and specifying QPLs answers for questions (never)to come

What can (or cannot) be expected (pros and cons)

ndash new fundamental insights into the ldquoodditiesrdquo of quantum the-

oryQPLs might serve as a ldquocatalystrdquo for asking new questions

ndash helpful in finding new algorithms

cf learning Pascal and re-inventing heapsort

ndash but exact notations of algorithms require some sort of pro-gramming language notation

one goal could be formalized description of algorithms by

means of a universal language

ndash fresh look at quantum systems

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1246

(What can physics learn from classical concepts of computer

science)

ndash feasibility of computer science concepts (of classical origin)(What can computer science learn from physics)

ndash What can be formulated using existing language concepts

example modularization composing a larger system from its

partsallocated memory is additive

ndash QPL-design isnrsquot merely numerics of matrix operations |ψ =

U |ψ

main difference program structurendash ldquooperational viewrdquo to quantum systems

one important aspect of programming languages handling of

a system machine by non-specialists

ndash didactical aspects

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1346

hardware model

QRAM model (Knill [Kni96] Bettelli et al [BCS01])

-

-

device

quantum quantum

devicedriver

bytecode

measure

Classical Computer

(Master) (Slave)

Quantum Processor

basic idea [BCS01 p 15] What is really needed is a mechanism for generating the whole circuital description before the quan-

tum device is even fired up applying algebraic simplifications

once for all

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1446

alternatives

ndash pragmatic vs theoretical approach

ndash new language vs conventional language with library extension

historical analogy transputer

one way of designing an ADT based ldquohigh levelrdquo language

6 6 6 6 6

QFT

QPL based on basic functions

Reset MeasureU(α β γ δ)CNotCreate

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1546

Niels Bohr

However far the quantum phenomena transcend the

scope of classical physical explanation the account of all evidence must be expressed in classical terms The

argument is simply that by the word lsquoexperimentrsquo we re-

fer to a situation where we can tell others what we have

done and what we have learned and that therefore theaccount of the experimental arrangement and the results

of the observations must be expressed in unambiguous

language with suitable application of the terminology of

classical physics

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 6: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 646

semantics (adopted from [Mey90 ch 4])

ndash translational semantics

meaning of a language is expressed by a translational schema

program in this language is translated into a program in an-

other (known) language

ndash operational semantics

semantics of a language is defined by an interpreting automa-

ton a formal device capable of formally executing a program

ndash denotational semantics

meaning of a program is a mathematical object a function

(whereas in translational semantics itrsquos another program)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 746

ndash axiomatic semantics

basis program formulae

P a Q

P Q are assertions specifically

lowast a precondition P

lowast a postcondition Qlowast a instruction

meaning of a program formula

If a is executed in a state in which assertion P is satis-

fied then it will result in a state in which assertion Q

issatisfied [Mey90 p 111]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 846

abstraction abstract datatypes (ADTs)

ndash good examples include

lowast First-In-First-Out (FIFO) queue

lowast Stack

lowast Priority Queue

ndash data and operations acting on these data are combined to form

ldquoobjectsrdquo

ndash implementation details remain invisible

ndash excessively large example based on the idea of abstraction

Java library (API) (Application Programming Interface)

(estimate of 20000 - 30000 names (methods attributes))

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 946

First-In-First-Out (FIFO) queue (ADT formalized)

SPECIFICATION

LIBRARY Boolean Integer ENDLIB ( library types )

TYPE fifo IS

OPNS ( operations )

( 1) empty -gt fifo

( 2) put int fifo -gt fifo

( 3) head fifo -gt int

( 4) tail fifo -gt fifo

( 5) isempty fifo -gt bool

continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1046

EQNS ( equations or axioms )

FORALL f fifo d1 d2 int

OFSORT bool ( boolean equations )

( 6) isempty (empty) = true

( 7) isempty (put (d1 f)) = false

OFSORT fifo ( fifo equations )

( 8) tail (empty) = empty

( 9) tail (put (d1 empty)) = empty

(10) tail (put (d1 put (d2 f))) = put (d1 tail (put (d2 f)))

OFSORT int ( integer equations )

(11) head (put (d1 put (d2 f))) = head (put (d2 f))

(12) head (put (d1 empty)) = d1

(13) head (empty) = 0

ENDTYPE

ENDSPEC

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1146

QPLs Design Considerations

talking about and specifying QPLs answers for questions (never)to come

What can (or cannot) be expected (pros and cons)

ndash new fundamental insights into the ldquoodditiesrdquo of quantum the-

oryQPLs might serve as a ldquocatalystrdquo for asking new questions

ndash helpful in finding new algorithms

cf learning Pascal and re-inventing heapsort

ndash but exact notations of algorithms require some sort of pro-gramming language notation

one goal could be formalized description of algorithms by

means of a universal language

ndash fresh look at quantum systems

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1246

(What can physics learn from classical concepts of computer

science)

ndash feasibility of computer science concepts (of classical origin)(What can computer science learn from physics)

ndash What can be formulated using existing language concepts

example modularization composing a larger system from its

partsallocated memory is additive

ndash QPL-design isnrsquot merely numerics of matrix operations |ψ =

U |ψ

main difference program structurendash ldquooperational viewrdquo to quantum systems

one important aspect of programming languages handling of

a system machine by non-specialists

ndash didactical aspects

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1346

hardware model

QRAM model (Knill [Kni96] Bettelli et al [BCS01])

-

-

device

quantum quantum

devicedriver

bytecode

measure

Classical Computer

(Master) (Slave)

Quantum Processor

basic idea [BCS01 p 15] What is really needed is a mechanism for generating the whole circuital description before the quan-

tum device is even fired up applying algebraic simplifications

once for all

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1446

alternatives

ndash pragmatic vs theoretical approach

ndash new language vs conventional language with library extension

historical analogy transputer

one way of designing an ADT based ldquohigh levelrdquo language

6 6 6 6 6

QFT

QPL based on basic functions

Reset MeasureU(α β γ δ)CNotCreate

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1546

Niels Bohr

However far the quantum phenomena transcend the

scope of classical physical explanation the account of all evidence must be expressed in classical terms The

argument is simply that by the word lsquoexperimentrsquo we re-

fer to a situation where we can tell others what we have

done and what we have learned and that therefore theaccount of the experimental arrangement and the results

of the observations must be expressed in unambiguous

language with suitable application of the terminology of

classical physics

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 7: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 746

ndash axiomatic semantics

basis program formulae

P a Q

P Q are assertions specifically

lowast a precondition P

lowast a postcondition Qlowast a instruction

meaning of a program formula

If a is executed in a state in which assertion P is satis-

fied then it will result in a state in which assertion Q

issatisfied [Mey90 p 111]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 846

abstraction abstract datatypes (ADTs)

ndash good examples include

lowast First-In-First-Out (FIFO) queue

lowast Stack

lowast Priority Queue

ndash data and operations acting on these data are combined to form

ldquoobjectsrdquo

ndash implementation details remain invisible

ndash excessively large example based on the idea of abstraction

Java library (API) (Application Programming Interface)

(estimate of 20000 - 30000 names (methods attributes))

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 946

First-In-First-Out (FIFO) queue (ADT formalized)

SPECIFICATION

LIBRARY Boolean Integer ENDLIB ( library types )

TYPE fifo IS

OPNS ( operations )

( 1) empty -gt fifo

( 2) put int fifo -gt fifo

( 3) head fifo -gt int

( 4) tail fifo -gt fifo

( 5) isempty fifo -gt bool

continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1046

EQNS ( equations or axioms )

FORALL f fifo d1 d2 int

OFSORT bool ( boolean equations )

( 6) isempty (empty) = true

( 7) isempty (put (d1 f)) = false

OFSORT fifo ( fifo equations )

( 8) tail (empty) = empty

( 9) tail (put (d1 empty)) = empty

(10) tail (put (d1 put (d2 f))) = put (d1 tail (put (d2 f)))

OFSORT int ( integer equations )

(11) head (put (d1 put (d2 f))) = head (put (d2 f))

(12) head (put (d1 empty)) = d1

(13) head (empty) = 0

ENDTYPE

ENDSPEC

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1146

QPLs Design Considerations

talking about and specifying QPLs answers for questions (never)to come

What can (or cannot) be expected (pros and cons)

ndash new fundamental insights into the ldquoodditiesrdquo of quantum the-

oryQPLs might serve as a ldquocatalystrdquo for asking new questions

ndash helpful in finding new algorithms

cf learning Pascal and re-inventing heapsort

ndash but exact notations of algorithms require some sort of pro-gramming language notation

one goal could be formalized description of algorithms by

means of a universal language

ndash fresh look at quantum systems

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1246

(What can physics learn from classical concepts of computer

science)

ndash feasibility of computer science concepts (of classical origin)(What can computer science learn from physics)

ndash What can be formulated using existing language concepts

example modularization composing a larger system from its

partsallocated memory is additive

ndash QPL-design isnrsquot merely numerics of matrix operations |ψ =

U |ψ

main difference program structurendash ldquooperational viewrdquo to quantum systems

one important aspect of programming languages handling of

a system machine by non-specialists

ndash didactical aspects

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1346

hardware model

QRAM model (Knill [Kni96] Bettelli et al [BCS01])

-

-

device

quantum quantum

devicedriver

bytecode

measure

Classical Computer

(Master) (Slave)

Quantum Processor

basic idea [BCS01 p 15] What is really needed is a mechanism for generating the whole circuital description before the quan-

tum device is even fired up applying algebraic simplifications

once for all

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1446

alternatives

ndash pragmatic vs theoretical approach

ndash new language vs conventional language with library extension

historical analogy transputer

one way of designing an ADT based ldquohigh levelrdquo language

6 6 6 6 6

QFT

QPL based on basic functions

Reset MeasureU(α β γ δ)CNotCreate

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1546

Niels Bohr

However far the quantum phenomena transcend the

scope of classical physical explanation the account of all evidence must be expressed in classical terms The

argument is simply that by the word lsquoexperimentrsquo we re-

fer to a situation where we can tell others what we have

done and what we have learned and that therefore theaccount of the experimental arrangement and the results

of the observations must be expressed in unambiguous

language with suitable application of the terminology of

classical physics

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 8: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 846

abstraction abstract datatypes (ADTs)

ndash good examples include

lowast First-In-First-Out (FIFO) queue

lowast Stack

lowast Priority Queue

ndash data and operations acting on these data are combined to form

ldquoobjectsrdquo

ndash implementation details remain invisible

ndash excessively large example based on the idea of abstraction

Java library (API) (Application Programming Interface)

(estimate of 20000 - 30000 names (methods attributes))

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 946

First-In-First-Out (FIFO) queue (ADT formalized)

SPECIFICATION

LIBRARY Boolean Integer ENDLIB ( library types )

TYPE fifo IS

OPNS ( operations )

( 1) empty -gt fifo

( 2) put int fifo -gt fifo

( 3) head fifo -gt int

( 4) tail fifo -gt fifo

( 5) isempty fifo -gt bool

continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1046

EQNS ( equations or axioms )

FORALL f fifo d1 d2 int

OFSORT bool ( boolean equations )

( 6) isempty (empty) = true

( 7) isempty (put (d1 f)) = false

OFSORT fifo ( fifo equations )

( 8) tail (empty) = empty

( 9) tail (put (d1 empty)) = empty

(10) tail (put (d1 put (d2 f))) = put (d1 tail (put (d2 f)))

OFSORT int ( integer equations )

(11) head (put (d1 put (d2 f))) = head (put (d2 f))

(12) head (put (d1 empty)) = d1

(13) head (empty) = 0

ENDTYPE

ENDSPEC

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1146

QPLs Design Considerations

talking about and specifying QPLs answers for questions (never)to come

What can (or cannot) be expected (pros and cons)

ndash new fundamental insights into the ldquoodditiesrdquo of quantum the-

oryQPLs might serve as a ldquocatalystrdquo for asking new questions

ndash helpful in finding new algorithms

cf learning Pascal and re-inventing heapsort

ndash but exact notations of algorithms require some sort of pro-gramming language notation

one goal could be formalized description of algorithms by

means of a universal language

ndash fresh look at quantum systems

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1246

(What can physics learn from classical concepts of computer

science)

ndash feasibility of computer science concepts (of classical origin)(What can computer science learn from physics)

ndash What can be formulated using existing language concepts

example modularization composing a larger system from its

partsallocated memory is additive

ndash QPL-design isnrsquot merely numerics of matrix operations |ψ =

U |ψ

main difference program structurendash ldquooperational viewrdquo to quantum systems

one important aspect of programming languages handling of

a system machine by non-specialists

ndash didactical aspects

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1346

hardware model

QRAM model (Knill [Kni96] Bettelli et al [BCS01])

-

-

device

quantum quantum

devicedriver

bytecode

measure

Classical Computer

(Master) (Slave)

Quantum Processor

basic idea [BCS01 p 15] What is really needed is a mechanism for generating the whole circuital description before the quan-

tum device is even fired up applying algebraic simplifications

once for all

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1446

alternatives

ndash pragmatic vs theoretical approach

ndash new language vs conventional language with library extension

historical analogy transputer

one way of designing an ADT based ldquohigh levelrdquo language

6 6 6 6 6

QFT

QPL based on basic functions

Reset MeasureU(α β γ δ)CNotCreate

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1546

Niels Bohr

However far the quantum phenomena transcend the

scope of classical physical explanation the account of all evidence must be expressed in classical terms The

argument is simply that by the word lsquoexperimentrsquo we re-

fer to a situation where we can tell others what we have

done and what we have learned and that therefore theaccount of the experimental arrangement and the results

of the observations must be expressed in unambiguous

language with suitable application of the terminology of

classical physics

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 9: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 946

First-In-First-Out (FIFO) queue (ADT formalized)

SPECIFICATION

LIBRARY Boolean Integer ENDLIB ( library types )

TYPE fifo IS

OPNS ( operations )

( 1) empty -gt fifo

( 2) put int fifo -gt fifo

( 3) head fifo -gt int

( 4) tail fifo -gt fifo

( 5) isempty fifo -gt bool

continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1046

EQNS ( equations or axioms )

FORALL f fifo d1 d2 int

OFSORT bool ( boolean equations )

( 6) isempty (empty) = true

( 7) isempty (put (d1 f)) = false

OFSORT fifo ( fifo equations )

( 8) tail (empty) = empty

( 9) tail (put (d1 empty)) = empty

(10) tail (put (d1 put (d2 f))) = put (d1 tail (put (d2 f)))

OFSORT int ( integer equations )

(11) head (put (d1 put (d2 f))) = head (put (d2 f))

(12) head (put (d1 empty)) = d1

(13) head (empty) = 0

ENDTYPE

ENDSPEC

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1146

QPLs Design Considerations

talking about and specifying QPLs answers for questions (never)to come

What can (or cannot) be expected (pros and cons)

ndash new fundamental insights into the ldquoodditiesrdquo of quantum the-

oryQPLs might serve as a ldquocatalystrdquo for asking new questions

ndash helpful in finding new algorithms

cf learning Pascal and re-inventing heapsort

ndash but exact notations of algorithms require some sort of pro-gramming language notation

one goal could be formalized description of algorithms by

means of a universal language

ndash fresh look at quantum systems

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1246

(What can physics learn from classical concepts of computer

science)

ndash feasibility of computer science concepts (of classical origin)(What can computer science learn from physics)

ndash What can be formulated using existing language concepts

example modularization composing a larger system from its

partsallocated memory is additive

ndash QPL-design isnrsquot merely numerics of matrix operations |ψ =

U |ψ

main difference program structurendash ldquooperational viewrdquo to quantum systems

one important aspect of programming languages handling of

a system machine by non-specialists

ndash didactical aspects

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1346

hardware model

QRAM model (Knill [Kni96] Bettelli et al [BCS01])

-

-

device

quantum quantum

devicedriver

bytecode

measure

Classical Computer

(Master) (Slave)

Quantum Processor

basic idea [BCS01 p 15] What is really needed is a mechanism for generating the whole circuital description before the quan-

tum device is even fired up applying algebraic simplifications

once for all

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1446

alternatives

ndash pragmatic vs theoretical approach

ndash new language vs conventional language with library extension

historical analogy transputer

one way of designing an ADT based ldquohigh levelrdquo language

6 6 6 6 6

QFT

QPL based on basic functions

Reset MeasureU(α β γ δ)CNotCreate

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1546

Niels Bohr

However far the quantum phenomena transcend the

scope of classical physical explanation the account of all evidence must be expressed in classical terms The

argument is simply that by the word lsquoexperimentrsquo we re-

fer to a situation where we can tell others what we have

done and what we have learned and that therefore theaccount of the experimental arrangement and the results

of the observations must be expressed in unambiguous

language with suitable application of the terminology of

classical physics

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 10: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1046

EQNS ( equations or axioms )

FORALL f fifo d1 d2 int

OFSORT bool ( boolean equations )

( 6) isempty (empty) = true

( 7) isempty (put (d1 f)) = false

OFSORT fifo ( fifo equations )

( 8) tail (empty) = empty

( 9) tail (put (d1 empty)) = empty

(10) tail (put (d1 put (d2 f))) = put (d1 tail (put (d2 f)))

OFSORT int ( integer equations )

(11) head (put (d1 put (d2 f))) = head (put (d2 f))

(12) head (put (d1 empty)) = d1

(13) head (empty) = 0

ENDTYPE

ENDSPEC

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1146

QPLs Design Considerations

talking about and specifying QPLs answers for questions (never)to come

What can (or cannot) be expected (pros and cons)

ndash new fundamental insights into the ldquoodditiesrdquo of quantum the-

oryQPLs might serve as a ldquocatalystrdquo for asking new questions

ndash helpful in finding new algorithms

cf learning Pascal and re-inventing heapsort

ndash but exact notations of algorithms require some sort of pro-gramming language notation

one goal could be formalized description of algorithms by

means of a universal language

ndash fresh look at quantum systems

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1246

(What can physics learn from classical concepts of computer

science)

ndash feasibility of computer science concepts (of classical origin)(What can computer science learn from physics)

ndash What can be formulated using existing language concepts

example modularization composing a larger system from its

partsallocated memory is additive

ndash QPL-design isnrsquot merely numerics of matrix operations |ψ =

U |ψ

main difference program structurendash ldquooperational viewrdquo to quantum systems

one important aspect of programming languages handling of

a system machine by non-specialists

ndash didactical aspects

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1346

hardware model

QRAM model (Knill [Kni96] Bettelli et al [BCS01])

-

-

device

quantum quantum

devicedriver

bytecode

measure

Classical Computer

(Master) (Slave)

Quantum Processor

basic idea [BCS01 p 15] What is really needed is a mechanism for generating the whole circuital description before the quan-

tum device is even fired up applying algebraic simplifications

once for all

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1446

alternatives

ndash pragmatic vs theoretical approach

ndash new language vs conventional language with library extension

historical analogy transputer

one way of designing an ADT based ldquohigh levelrdquo language

6 6 6 6 6

QFT

QPL based on basic functions

Reset MeasureU(α β γ δ)CNotCreate

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1546

Niels Bohr

However far the quantum phenomena transcend the

scope of classical physical explanation the account of all evidence must be expressed in classical terms The

argument is simply that by the word lsquoexperimentrsquo we re-

fer to a situation where we can tell others what we have

done and what we have learned and that therefore theaccount of the experimental arrangement and the results

of the observations must be expressed in unambiguous

language with suitable application of the terminology of

classical physics

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 11: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1146

QPLs Design Considerations

talking about and specifying QPLs answers for questions (never)to come

What can (or cannot) be expected (pros and cons)

ndash new fundamental insights into the ldquoodditiesrdquo of quantum the-

oryQPLs might serve as a ldquocatalystrdquo for asking new questions

ndash helpful in finding new algorithms

cf learning Pascal and re-inventing heapsort

ndash but exact notations of algorithms require some sort of pro-gramming language notation

one goal could be formalized description of algorithms by

means of a universal language

ndash fresh look at quantum systems

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1246

(What can physics learn from classical concepts of computer

science)

ndash feasibility of computer science concepts (of classical origin)(What can computer science learn from physics)

ndash What can be formulated using existing language concepts

example modularization composing a larger system from its

partsallocated memory is additive

ndash QPL-design isnrsquot merely numerics of matrix operations |ψ =

U |ψ

main difference program structurendash ldquooperational viewrdquo to quantum systems

one important aspect of programming languages handling of

a system machine by non-specialists

ndash didactical aspects

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1346

hardware model

QRAM model (Knill [Kni96] Bettelli et al [BCS01])

-

-

device

quantum quantum

devicedriver

bytecode

measure

Classical Computer

(Master) (Slave)

Quantum Processor

basic idea [BCS01 p 15] What is really needed is a mechanism for generating the whole circuital description before the quan-

tum device is even fired up applying algebraic simplifications

once for all

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1446

alternatives

ndash pragmatic vs theoretical approach

ndash new language vs conventional language with library extension

historical analogy transputer

one way of designing an ADT based ldquohigh levelrdquo language

6 6 6 6 6

QFT

QPL based on basic functions

Reset MeasureU(α β γ δ)CNotCreate

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1546

Niels Bohr

However far the quantum phenomena transcend the

scope of classical physical explanation the account of all evidence must be expressed in classical terms The

argument is simply that by the word lsquoexperimentrsquo we re-

fer to a situation where we can tell others what we have

done and what we have learned and that therefore theaccount of the experimental arrangement and the results

of the observations must be expressed in unambiguous

language with suitable application of the terminology of

classical physics

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 12: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1246

(What can physics learn from classical concepts of computer

science)

ndash feasibility of computer science concepts (of classical origin)(What can computer science learn from physics)

ndash What can be formulated using existing language concepts

example modularization composing a larger system from its

partsallocated memory is additive

ndash QPL-design isnrsquot merely numerics of matrix operations |ψ =

U |ψ

main difference program structurendash ldquooperational viewrdquo to quantum systems

one important aspect of programming languages handling of

a system machine by non-specialists

ndash didactical aspects

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1346

hardware model

QRAM model (Knill [Kni96] Bettelli et al [BCS01])

-

-

device

quantum quantum

devicedriver

bytecode

measure

Classical Computer

(Master) (Slave)

Quantum Processor

basic idea [BCS01 p 15] What is really needed is a mechanism for generating the whole circuital description before the quan-

tum device is even fired up applying algebraic simplifications

once for all

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1446

alternatives

ndash pragmatic vs theoretical approach

ndash new language vs conventional language with library extension

historical analogy transputer

one way of designing an ADT based ldquohigh levelrdquo language

6 6 6 6 6

QFT

QPL based on basic functions

Reset MeasureU(α β γ δ)CNotCreate

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1546

Niels Bohr

However far the quantum phenomena transcend the

scope of classical physical explanation the account of all evidence must be expressed in classical terms The

argument is simply that by the word lsquoexperimentrsquo we re-

fer to a situation where we can tell others what we have

done and what we have learned and that therefore theaccount of the experimental arrangement and the results

of the observations must be expressed in unambiguous

language with suitable application of the terminology of

classical physics

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 13: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1346

hardware model

QRAM model (Knill [Kni96] Bettelli et al [BCS01])

-

-

device

quantum quantum

devicedriver

bytecode

measure

Classical Computer

(Master) (Slave)

Quantum Processor

basic idea [BCS01 p 15] What is really needed is a mechanism for generating the whole circuital description before the quan-

tum device is even fired up applying algebraic simplifications

once for all

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1446

alternatives

ndash pragmatic vs theoretical approach

ndash new language vs conventional language with library extension

historical analogy transputer

one way of designing an ADT based ldquohigh levelrdquo language

6 6 6 6 6

QFT

QPL based on basic functions

Reset MeasureU(α β γ δ)CNotCreate

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1546

Niels Bohr

However far the quantum phenomena transcend the

scope of classical physical explanation the account of all evidence must be expressed in classical terms The

argument is simply that by the word lsquoexperimentrsquo we re-

fer to a situation where we can tell others what we have

done and what we have learned and that therefore theaccount of the experimental arrangement and the results

of the observations must be expressed in unambiguous

language with suitable application of the terminology of

classical physics

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 14: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1446

alternatives

ndash pragmatic vs theoretical approach

ndash new language vs conventional language with library extension

historical analogy transputer

one way of designing an ADT based ldquohigh levelrdquo language

6 6 6 6 6

QFT

QPL based on basic functions

Reset MeasureU(α β γ δ)CNotCreate

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1546

Niels Bohr

However far the quantum phenomena transcend the

scope of classical physical explanation the account of all evidence must be expressed in classical terms The

argument is simply that by the word lsquoexperimentrsquo we re-

fer to a situation where we can tell others what we have

done and what we have learned and that therefore theaccount of the experimental arrangement and the results

of the observations must be expressed in unambiguous

language with suitable application of the terminology of

classical physics

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 15: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1546

Niels Bohr

However far the quantum phenomena transcend the

scope of classical physical explanation the account of all evidence must be expressed in classical terms The

argument is simply that by the word lsquoexperimentrsquo we re-

fer to a situation where we can tell others what we have

done and what we have learned and that therefore theaccount of the experimental arrangement and the results

of the observations must be expressed in unambiguous

language with suitable application of the terminology of

classical physics

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 16: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1646

QPLs Detailed Examples

Survey

QCL Q language qGCL (Block-)QPL

new language times times times

standard lang library times

imperative language times times times

functional language times

simulator available times timespragmatic approach times times

theoretical approach times times

formal semantics times times

universal language times times times times

QCL (Quant Computation Language) B Omer

Q language S Bettelli T CalarcoL Serafini

qGCL (Quant Guarded Command Lang) JW Sanders P Zuliani

QPL (Quant Programming Language) P Selinger

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 17: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1746

Q-gol (G Baker)

Greg Bakerrsquos Thesis on Q-gol

Additional remarks in thesis-pointsgeneral comments

bull Q-gol one of the first attempts of designing and implementing a

quantum progamming language

bull graphical tool for building and simulation of quantum circuits uses

the gate formalism

bull is not a concise programming language

bull not able to implement and simulate all known quantum algorithms

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 18: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1846

QCL (B Omer)

General properties

The relevant papers on QCL

Classical Concepts in Quantum Programming 2002 [Om02] abs

Quantum Programming in QCL 2000 [Om00] (B Omerrsquos master

thesis in computing science) A Procedural Formalism for Quantum Computing 1998 [Om98]

(B Omerrsquos master thesis in theoretical physics)

general comments

bull first actual quantum programming language

bull (rudimentary) procedural language classical sublanguage

bull not on top of a standard classical language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 19: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 1946

bull automatic scratch space management

bull syntactic reversibility of user-defined quantum operations

bull syntax like C Pascal

bull universal language can implement and simulate all known quan-

tum algorithms

bull no program refinement (no refinement calculus)

bull no (formal) semantics

bull non-trivial unitary operations are functions (function call syntax)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 20: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2046

QCL as a classical language

program example recursive

and non-recursive function call

int factorialR(int x)

recursive implementation

precondition x gt= 0

i f x = = 0

return 1

return

xfactorialR(x-1)

int x = 5

print x = factorialR(x)

-------------------------------

int factorialNR(int x)

iterative implementation

precondition x gt= 0

int k

int y = x

if (y == 0) or (y == 1) return 1

else else for better readability

here y gt= 2

k = y

while y gt= 3

y = y - 1

k = ky

return k

x = 7

print x = factorialNR(x)

print The End

result

5 = 120

7 = 5040

The End

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 21: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2146

quantum memory management

QCL p 53

start QCL with 16 qubits

qureg a[4] allocate a 4-qubit register

qureg b[3] allocate another 3-qubit register

print a a b b show actual qubit mappings

a |3210gt b |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 22: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2246

QCL p 53

qureg a[3] allocate 3 qubits

procedure test()

qureg b[2]

print a b

test() local register b gets allocated

qureg c[3] allocate another 3 qubits

print a c qubits from b have been reclaimed

|210gt |10gt

|210gt |210gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 23: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2346

QCL p 54

qureg q[4]Mix(q)

print dump q

dump

dump q

STATE 4 6 qubits allocated 2 6 qubits free

025 |000000gt + 025 |001000gt + 025 |000100gt + 025 |001100gt + 025 |000010gt

+ 025 |001010gt + 025 |000110gt + 025 |001110gt + 025 |000001gt + 025 |001001gt

+ 025 |000101gt + 025 |001101gt + 025 |000011gt + 025 |001011gt + 025 |000111gt

+ 025 |001111gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 24: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2446

quantum variables

see [Om02 p 6]

type restriction

qureg none

quconst invariant to all sub-operators

quvoid has to be empty when the un-inverted operator is calledquscratch has to be empty before and after the call

but proper type checking is a problem the knowledge of the quantum

device state is required

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 25: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2546

quantum expressions [Om00 p 57]

Expression Description Register

a reference a0 a1 ana[i] qubit ai

a[ij] substring ai ai+1 a j

a[il] substring ai ai+1 ai+lminus1

a amp bconcatenation

a0 a

1 a

n b

0 b

1 b

m

non-unitary operations

reset

measure q m

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 26: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2646

example initialize a qureg

qureg a[6]

qufunct inc(qureg p) QCL 2002 p 7

int i

for i=p-1 to 1 step -1

CNot(p[i] p[0i-1])

Not(p[0])

procedure setto(qureg p int x) initialize p with int val x

int i

for i = 0 to x-1

inc(p)

reset dump a

setto(a 19) dump a

result

SPECTRUM a |543210gt

1 |000000gt

SPECTRUM a |543210gt

1 |010011gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 27: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2746

typical evaluation loop

QCL p 58

reset

myoperator(q)

measure q m

until ok(m)

subroutines [Om00 p 59]

allowed side-effects

routine type program state machine state recursion

procedure classical all all yesoperator quantum none unitary no

qufunct quantum none pseudo-classic no

functions classical none none yes

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 28: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2846

general operators

QCL operator inversion p 60

qureg a[1]

dump

Mix(a)

dump

Mix(a)

dump

result

STATE 1 4 qubits allocated 3 4 qubits free

1 |0000gt

STATE 1 4 qubits allocated 3 4 qubits free

0707107 |0000gt + 0707107 |0001gt

STATE 1 4 qubits allocated 3 4 qubits free1 |0000gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 29: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 2946

example statistical experiment

int m

int count0int count1

const total = 30000

qureg q[4]

count0 = 0

count1 = 0

reset

Mix(q)

measure q[0] m

i f m = = 0

count0 = count0 + 1

else

count1 = count1 + 1

until count0 + count1 gt= total

print prob0 (count0+00)(count0+count1)

print prob1 (count1+00)(count0+count1)

result is

prob0 0503367

prob1 0496633

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 30: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3046

unitary gates

bull unitary matrices e g

extern operator Matrix2x2(complex u00 complex u10

complex u10 complex u11

qureg q)

bull qubit rotation

extern operator Rot(real theta qureg q)

bull Hadamard gate

extern operator Mix(qureg q)

bull conditional phase gate

extern operator CPhase(real phi qureg q)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 31: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3146

quantum functions

F |xx|0y rarr |xx|f (x)y with f Bn rarr Bm n m isin N

scratch space management

Bennet-style ldquoun-computationrdquo [NC00 p 158]|x 0 0 y

darr reversible computation of f (x) circuit C |x f (x) g(x) y

darr apply CNots

|x f (x) g(x) y oplus f (x)

darr apply C minus1 no effect on 4th register

|x 0 0 y oplus f (x)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 32: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3246

pseudo-classic gates

bull base permutation e g

extern qufunct Perm2(int p0 int p1 qureg q)

bull fanout

extern qufunc Fanout(quconst a quvoid b)

bull swapextern qufunct Swap(qureg a qureg b)

bull not controlled not

ndash extern qufunct Not(qureg q)

ndash extern qufunct CNot(qureg q quconst c)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 33: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3346

example teleportation

Alice

a[0] ---------

a[1] ---------

Bob

b[0] ---------

Nielsen Chuang p 27

teleportation a[0] -gt b[0]

const i = (01) int m0 int m1

qureg a[2] Alicersquos 2-qubits register

qureg b[1] Bobrsquos 1-qubit register

real x random values 0 lt= x lt 10

procedure prepare(real x qureg p)

prepare some example state

complex u00 = cos(2pix) + i0

complex u01 = -sin(2pix) + i0

complex u10 = sin(2pix) + i0

complex u11 = cos(2pix) + i0

Matrix2x2(u00 u01 u10 u11 p)

unitary operation

operator entangle(qureg p qureg q)

entangle qubits p and qMix(p)

CNot(q p)

reset

x = random()

prepare(x a[0])

print prepared state

dump a[0]

entangle(a[1] b[0])

entangle(a[0] a[1])

measure a[0] m0 measure a[1] m1

Alice to Bob

-----+

+-----gt continued

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 34: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3446

if m1 == 1

Matrix2x2((00) (10)

(10) (00) b[0]) sigma_x

if m0 == 1

Matrix2x2((10) (00)

(00) (-10) b[0])sigma_z

print teleported state

dump b[0]

result

prepared state

SPECTRUM a[0] |0gt

0370046 |0gt + 0629954 |1gt teleported state

SPECTRUM b[0] |0gt

0370046 |0gt + 0629954 |1gt

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 35: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3546

Shorrsquos algorithm (quantum kernel) [Om00 p 99]

generate random base

x=floor(random() (number-3)) + 2

until gcd(xnumber)==1

print chosen random x =x

--------------------------------------------------

Mix(reg1) Hadamard transform

expn(x number reg1 reg2) modular exponentiation measure reg2 measure 2nd register

dft(reg1) Fourier transform

measure reg1 m measure 1st register

reset clear local registers

--------------------------------------------------

if m==0 failed if measured 0

print measured zero in 1st register trying again

else

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 36: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3646

Q language (S Bettelli L Serafini T Calarco)

General properties

Relevant papers

bull Q language library

bull S Bettelli L Serafini T Calarco Toward an architecture for

quantum programming 2001 [csPL0103009psgz]general comments

bull Q language library extension of C++

bull quantum operators as objects

bull can be constructed and manipulated at run-time

bull run-time optimizations are possible

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 37: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3746

ldquoDesideratardquo for a quantum programming language

completeness it must be possible to code every quantum algo-

rithm

classical extension the (quantum) language must include a

high level ldquoclassical computing paradigmrdquo

separability keep classical and quantum programming sepa-

rated

expressivity language must provide high level constructs

hardware independence

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 38: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3846

Language primitives

bull Register handling

1 Register allocation e g Qreg a_register(5)

2 Register addressing and concatenation

eg Qreg a_qubit = a_register[3]

3 Register resizing4 Register deallocation

bull Quantum Operators and their manipulation

1 Identity operator e g Qop my_op

2 Fixed arity quantum operators

eg Qop my_op = QHadamard(7)

3 Macro quantum operators e g Qop my_op = QFourier(7)

4 Qubit line reordering e g Qop a_swap = QSwap(5)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 39: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 3946

5 Controlled operators e g Qop a_controlled_op(U 5)

6 Operators for classical functions

eg Qop an_oracle = Qop(f 3 5)7 Operator composition

eg Qop composed = part_1 amp part_2

8 Operator conjunction e g Qop adj_operator = an_op

9 Operator permutationseg Qop split = an_op(2 3 SPLIT)

10 Application of an operator e g an_operator(a_register)

bull Low level primitives

1 Register initialization and assignment

eg Qreg a_register(5 3) a_register = 7

2 Register measurement

eg int val = a_registermeasure()

3 Low level unitary gates cf [NC00]

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 40: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4046

qGCL (JW Sanders and P Zuliani)

General properties

Relevant papers

[SZ00] Quantum programming

see also Paolo Zulianirsquos dissertation Quantum Programming

general comments

bull extension of Edsger Dijkstrarsquos guarded command language GCL

bull qGCL expressed in terms of pGCL (probabilistic guarded com-

mand language)

bull qGCL imperative language

bull suitable as a specification language (high level mathematical nota-

tion)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 41: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4146

bull mechanism for stepwise refinement for program derivation and ver-

ification (correctness proof)

bull formal (operational) semanticspre- and post-conditions are extended to pre- and post-expectations

bull includes three high level quantum primitives state preparation

evolution observation

bull is universal language

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 42: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4246

QPL Block QPL (P Selinger)

General properties

Relevant paper see P Selingerrsquos home page[Sel] Towards a Quantum Programming Language

general comments

slogan ldquoquantum data classical controlrdquo

no ldquoquantum branchingrdquo

language is functional

statically typed program free of run-time errors

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 43: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4346

two alternative representations of quantum programs

ndash graphical flow charts

ndash textual

language admits a denotational semantics by assigning a superop-

erator to each program fragment

semantics of a quantum flow chart is given as a function from mixed

states to mixed states

not addressed in the paper quantum communication

Some additional references related to quantum programming

[Bla00] (Quantum Computers and Quantum Computer Lan-

guages Quantum Assembly and Quantum C )

[Fra02] (Quantum software)

[Sam02] (Practical State-charts in CC++)

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 44: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4446

References

[Bak96a] G Baker ldquoQgolrdquo A system for simulating quantum computations Theory Imple-mentations and Insights PhD thesis Macquarie University 1996 www

[Bak96b] Greg Baker Points from my hounors thesis 1996 www

[BCS01] S Bettelli T Calarco and L Serafini Toward an architecture for quantum program-ming 2001 abs

[Bla00] S Blaha Cosmos and Consciousness 1stBooks Library Bloomington IN 2000 ex-cerpt Quantum Computers and Quantum Computer Languages Quantum Assemblyand Quantum C www

[Di 00] David P Di Vincenzo The physical implementation of quantum computationFortschritte der Physik 48771ndash783 2000 abs

[EWZ] Matthias Eck Pawel Wocjan and Robert Michael Zeier Quasi User Documentationwww

[Fra02] Jaroslaw Francik Quantum software Studia Informatica 23(2A(48)) 2002 www

[KN01] EH Knill and MA Nielsen Theory of quantum computation Supplement III Ency-clopaedia of Mathematics 2001 abs

[Kni96] Emanuel H Knill Conventions for quantum pseudocode 1996 www

[Mey90] B Meyer Introduction to the Theory of Programming Languages Prentice-Hall 1990

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 45: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4546

[NC00] Michael A Nielsen and Isaac L Chuang Quantum Computation and Quantum Infor-mation Cambridge University Press 2000

[Om98] B Omer A procedural formalism for quantum computing Masterrsquos thesis TU Wien

1998 www

[Om00] B Omer Quantum programming in QCL Masterrsquos thesis TU Wien 2000 www

[Om02] B Omer Classical concepts in quantum programming 2002 arXiv abs

[Sam02] M Samek Practical Statecharts in CC++ CMPBooks Lawrence Kansas 2002www

[Sel] Peter Selinger Towards a quantum programming language www

[Sma] Eric Smalley Programming goes quantum www

[SZ00] JW Sanders and P Zuliani Quantum programming In Mathematics of Program Construction volume 1837 of LNCS pages 80ndash99 Springer Verlag 2000 also TechnicalReport TR-5-99

[Wal99] J Wallace Quantum computer simulators ndash a review (version 21) 1999 www

[Zul00] P Zuliani Logical reversibility Technical report Univ of Oxford 2000 TechnicalReport TR-11-00

[Zul01a] P Zuliani Formal reasoning for quantum mechanical nonlocality Technical reportUniv of Oxford 2001 Research Report RR-01-05

[Zul01b] P Zuliani Quantum Programming PhD thesis University of Oxford 2001 www

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest

Page 46: Roland Rudiger- Quantum Programming Languages:A Survey

832019 Roland Rudiger- Quantum Programming LanguagesA Survey

httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646

mdashEND OF TALKmdashand thank you for your interest