Roland Rudiger- Quantum Programming Languages:A Survey
Transcript of 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
832019 Roland Rudiger- Quantum Programming LanguagesA Survey
httpslidepdfcomreaderfullroland-rudiger-quantum-programming-languagesa-survey 4646
mdashEND OF TALKmdashand thank you for your interest