linguagens de programação quântica: um apanhado...
TRANSCRIPT
Linguagens de Programacao Quantica: Um
Apanhado Geral
Juliana Kaizer VizzottoESIN/UCPel
Antonio Carlos da Rocha CostaPPGINF/UCPel
10 Workshop-Escola de Computacao e Informacao QuanticaOutubro 2006
Roteiro
Motivacao
Arquiteturas para Computacao Quantica
Propriedades dos dados quanticos
Linguagens com dados quanticos e controle classico
QCL - Bernhard Omer, 1998QPL - Peter Selinger, 2004
Propriedades do controle quantico
Linguagens com dados e controle quanticos
QML - Altenkirch e Grattage, 2005QHaskell - Vizzotto e Rocha Costa, 2006
Motivacao I - Computacao Quantica
Computacao quantica e uma area jovem!
(Feynman & Benioff, 1982) - Sistema quantico pode serutilizado para executar computacoes(Deutsch, 1985) - Maquina de Turing quantica(Shor, 1994) - Algoritmo quantico para fatoracao de numerosinteiros(Grover, 1996) - Algoritmo quantico para procura
1. Evidencia que computadores quanticos podem realmenteexecutar algumas tarefas mais eficientemente que os computadoresclassicos!
2. Desenvolvimento de esquemas experimentais para execucao detais algoritmos!
Motivacao II - Programacao Quantica
Programacao quantica → Linkar 1. e 2.
Estudar algoritmos quanticos do ponto de vista de programacao
(Knill, 1996) - primeira proposta de pseudo-codigo paraprogramacao quantica
Programacao quantica:
Compreensao das estruturas de dados e controle quanticos
Entendimento da logica de programacao quantica
Impulsionar o desenvolvimento de algoritmos quanticos
Motivacao III - Programacao Quantica
Mesmo que a implementacao de computadores quanticos aindaseja muito limitada: poucos qubits em laboratorios!
Acredita-se que a pesquisa na area de linguagens deprogramacao quantica e consideravelmente importante!
tanto para o desenvolvimento de algoritmosquando para fundamentos de linguagens quanticas
Alem disso:
Em computacao classica o trabalho em linguagens deprogramacao e datado varios anos antes do desenvolvimentode dispositivos computacionais praticos na decada de 50.Church, 1936 - Calculo lambda
Turing, 1936 - Maquina de Turing Universal
Arquiteturas para Programacao Quantica
(Knill, 1996): QRAM - Dados quanticos e controle classico
...
representacao fisica dos recursos quanticos
hardware e software classicos
Codigo para operacoes quanticas
Resultados de Medidas
Memoria Quantica
Entradaclassica
saida classica
Arquiteturas para Programacao Quantica
QRAM - Dados quanticos e controle classico
Maquina classica controla a memoria quantica (recursosquanticos)
Recursos quanticos: colecao de qubits
Instrucoes:
InicializacoesEvolucoes unitariasMedidas
Operadores quanticos como componentes pre-definidos:codificam a definicao de um circuito quantico
Arquiteturas para Programacao Quantica
(Deutsch, 1985): Maquina de Turing Quantica (MTQ) - Dados eControle quanticos
Arquiteturas para Programacao Quantica
(Deutsch, 1985): Maquina de Turing Quantica (MTQ) - Dados eControle quanticos
Estado da fita e uma colecao de qubits, possivelmente emsuperposicao.
Como o controle da fita tambem e quantico, tambem podeestar em superposicao.
A MTQ evolui em direcoes diferentes simultaneamente.
Propriedades dos Dados Quanticos
Paralelismo quantico: estado quantico pode estar em umasuperposicao dos seus estados basicos:
α|0〉 + β|1〉
Exemplo: versao do algoritmo de Deutsch
Considerando uma funcao f : B→ B
Queremos saber se f e constante ou balanceada
Classicamente: duas aplicacoes de f
Em uma linguagem quantica: f pode ser aplicada uma unica vez!
f (α|0〉 + β|1〉)
Propriedades dos Dados Quanticos
Emaranhamento: estado quantico e GLOBAL
Evolucao unitaria global do estado!
Exemplo: considerando um estado de dois qubits como:
α|00〉 + β|11〉
Problema 1. Nao temos como separar o primeiro qubit do segundo!
Problema 2. A nao ser fazendo uma medida!
O que causa um efeito colateral no estado quantico!
meas(α|00〉 + β|11〉) 7→ {|00〉, |11〉}
Propriedades dos Dados Quanticos
Non-clonning: dado quantico nao pode ser copiado
Exemplo: considerando um estado como
α|0〉 + β|1〉
Nao temos como saber os valores de α e β!
Se tentamos, medimos!! Colapsando o estado e perdendo oestado original!
Linguagens com Dados Quanticos e Controle Classico
QCL - Bernhard Omer, 1998
Extensao de uma linguagem classica estruturada como C.
Possui dados classicos e estruturas de controle (comandos)classicos.
Parte quantica da linguagem:
Essencialmente trata a manipulacao de registradores quanticosatraves de estruturas de controle classicas!
Dado quantico e manipulado atraves de referencias a um vetorde dados quanticos.
QCL
Estado da maquina quantica
O estado da maquina com n qubits e dado por Hn
Exemplo: maquina quantica com 4 qubits
qcl> dump;
: STATE : 4 qubits free
1 |0000>
Registradores quanticos
Qubits: registradores quanticos de tamanho 1.
qcl> qureg a[1]; qureg b[1] // alocando 2 qubits
qcl> Rot(−π/3,a) // rotando o primeiro qubit
qcl> Had(b) // hadamard no segurndo qubit
QCL
Estado da maquina quantica apos alocacao:
|Ψ〉 = |00〉 ⊗ (H|0〉) ⊗ (Rx(π/3)|0〉)
qcl> dump;
: STATE : 2 / 4 qubits allocated, 2 / 4 qubits free
0.612372 |0000> + 0.612372 |0010> +
0.353553 |0001> + 0.353553 |0011>
Considera-se um conjunto universal de portas elementares!
Portas elementares sao as primitivas fundamentais para manipularo estado da maquina quantica! Como atribuicoes em computacaoclassica!
QCL
Operadores sobre registradores quanticos
Dado um operador unitario agindo sobre m qubitsU : Hm →Hm, a acao de U sobre um registrador em umamaquina quantica com n qubits e dada por:
U(s) = Π†s(U ⊗ I (n −m))Πs
Todos os operadores quanticos em QCL sao definidos dessamaneira!
O tamanho do registrador operando e passado comoparametro.
QCL
Operadores sobre registradores quanticos
Portas elementares sao tratadas como subrotinas externas
extern operator H(qureg q)
extern operator RotX(real theta, qureg q)
extern qufunct CNOT(qureg q, quconst c)
Chamadas a portas elementares podem ser invertidas:
qcl> qureg a[1];
[1/4] 1.0 |0000>
qcl> H(a);
[1/4] 0.7071 |0000> + 0.7071 |0001>
qcl> !H(a);
[1/4] 1.0 |0000>
QCL
Operadores sobre registradores quanticos
Condicionais
extern cond Not(qureg q) // not condicional
O registrador de controle e passado como um parametroimplıcito se o operador e utilizado no corpo de um condicional.
Exemplo:
qcl> qureg s[1]; qureg e[2];
qcl> if e {Not(s);} // invert s para e = 11
QCL
Operadores sobre registradores quanticos
Medidas
Observaveis sao restritos a base computacionalRetorna um valor classicoReduz o estado
qcl> qureg q[2];
qcl> int m;
qcl> H(q);
[2/4] 0.5 |0000> + 0.5 |0001> +
0.5 |0010> + 0.5 |0011>
qcl> measure q,m;
[2/4] 0.5 |0011>
qcl> print m;
: 3 // 2 ** 0 + 2 ** 1
QCL
Operadores sobre registradores quanticos
Registradores, portas elementares e medidas sao suficientes paraimplementacao de algoritmos quanticos
QCL apresenta subrotinas quanticas!
Exemplo:
operator U(qureg x,qureg y){
H(x);
Not(y);
}
QCL
Copiando dado quantico?
Duplicacao de uma referencia a um qubit
qcl> qureg x[1];
qcl> CNOT(x,x)
HUMMMM???
Sintaticamente permitido escrever!
Erro detectado em tempo de execucao somente!
QCL
Algoritmo de Deutsch
Algoritmo probabilıstico: com uma aplicacao da funcaof : B → B consegue-se calcular f (0)⊕ f (1) com probabilidade1/2 com uma unica aplicacao de f .
boolean g(boolean x) { ..}
qufunct G(qureg x, qureg y){...}
operator U(qureg x, qureg y) {
H(x);
G(x,y);
H(x & y);
}
QCL
Algoritmo de Deutsch
procedure deutsch(){
qureg x[1];
qureg y[1];
int m
{ reset ;
U(x,y);
measure y,m
} until m ≡ 1;
measure x,m;
print "g(0) xor g(1) = ",m;
reset;
}
Linguagens com Dados Quanticos e Controle Classico
QPL - Peter Selinger, 2004
Primeira linguagem funcional quantica!
Cada operacao transforma um conjunto especıfico de entradasem saıdas.
A primeira versao de QPL tinha uma sintaxe baseada emdiagramas de fluxo com operacoes para inicializacao,atribuicao (unica), condicional (medida), permutacoes, etc
Semantica denotacional baseada em matrizes de densidade esuperoperadores.
Sistema de tipos estatico.
QPL
Diagramas de fluxo quanticos
input p,q :qbit
measure p
output p,q :qbit
q *= N p *= N
p,q:qbit
p,q:qbit
p,q:qbit
p,q:qbit
p,q:qbit
p,q:qbit
B
DC
A
D 0
00
0
00
A
input p,q :qbit
measure p
output p,q :qbit
q *= N p *= N
p,q:qbit
p,q:qbit
p,q:qbit
p,q:qbit
p,q:qbit
D
0 0
0
0
00
NAN*
0
00
p,q:qbit NAN*+D
QPL
Diagramas basicos:
A 0
00q:qbit,Gamma =
new qbit q := 0
Gamma = A
Alocando qubit
q:qbit,Gamma = A
C
B
D
discard q
Descartando qubit
Gamma = A + D
QPL
Diagramas basicos:
A B
DC
measure p
q:qbit, Gamma =
q:qbit, Gamma = q:qbit, Gamma =
A
D
0 10
00
0 0
0
q *= S
q:qbit, Gamma = A
q:qbit, Gamma = (SXI)A(SXI)*
Medida Transformacao unitaria
QPL
Copiando dado quantico?
Em QPL a copia de dados quanticos e proibida via sintaxe!
Sistema de tipos (estatico)!!
Em qualquer contexto de tipos, variaveis distintas se referem aobjetos distintos em tempo de execucao.
q representa uma lista de variaveis distintas!
Isto satisfaz o requerimento que: operacoes agindo sobre
diversos qubits, precisam de locacoes fısicas diferentes.
Um programa bem tipado nunca causara erros em tempo deexecucao!
QPL
Exemplo: atirando uma moeda!
new qbit q := 0
A 000
A 000
Gamma = A
q *= H
p:qbit,Gamma =
p:qbit,Gamma = 1/2 A AA A
measure q
discard q discard q
q:qbit,Gamma= q:qbit,Gamma=0 1 0
00
A
Gamma =1/2A Gamma =1/2A
QPL
Loops e Procedimentos
new qbit q := 0
A 000
A 000
Gamma = A
q *= H
p:qbit,Gamma =
p:qbit,Gamma = 1/2 A AA A
measure q
discard q discard q
q:qbit,Gamma= q:qbit,Gamma=0 1 0
00
A
Gamma =1/2A Gamma =1/2A
coin toss
a:qbit
coin toss
input a
output1 b output2 a
a:qbitb:qbit
Lambda QPL
Calculo Lambda para Computacao Quantica com Controle Classico
Peter Selinger & Benoıt Valiron, 2004.
A linguagem:
M,N, P := x | MN | λ x ⋅ M
| if M then N else P
| 0 | 1 | meas | new | U | *
| <M,N> | let <x,y> = M in N
Lambda QPL
Semantica Operacional: sistema de reducao probabilıstico
Passos de reducao:
[Q,L,M]→p [Q ′,L′,M ′]
onde, [Q,L,M] e o estado de um programa dado por umvetor Q, um termo lambda L e um ambiente M.
Lambda QPL
[α |Q0> + β |Q1>, meas pi] →|α|2 [|Q0>,0]
Exemplo de reducao:
[|0>,(λx ⋅ plus x x) ( meas (H p0))]
→1 [1/sqrt(2)(|0>+|1>),(λx ⋅ plus x x) ( meas p0)]
→1/2 { [|0>,(λx ⋅ plus x x) (0)],
[|1>,(λx ⋅ plus x x) (1)]}
→1/2 { [|0>, plus 0 0],
[|1>, plus 1 1] }
→1/2 { [|0>,0],
[|1>,0]}
Lambda QPL
Considera-se um conjunto U de portas basicas universais
[Q, U<pi, ..., pj>] →1 [Q’,<pi, ..., pj>]
[Q,U<p0,p0>] ???
Sistema de Tipos!
Lambda QPL
Sistema de Tipos
Baseado na logica linear!
Capturar quais termos podem ser duplicados!
Um termo do tipo A nao pode ser duplicado!
Um termo do tipo !A pode ser duplicado!
Lambda QPL
Exemplo: teleportacao
EPR = λ x ⋅ CNOT<H (new 0), new 0>
BellMeasure =
λ q2 ⋅ λ q1 ⋅ ( let (p, p’) = CNOT<q1,q2>in <meas H(p), meas p’>)
U = λ q⋅ λ <x,y> ⋅ if x then ( if y thenU11q else U10q)else ( if y then U01q else U00q)
Lambda QPL
Exemplo: teleportacao
Teleport = let <p,p’> = EPR *in let f = BellMeasure pin let g = U p’in <f,g>
Linguagens com Dados e Controle Quanticos
QML - Altenkirch & Grattage, 2004
Uma linguagem funcional de primeira ordem com dadosquanticos e controle quantico.
Semantica operacional baseada em circuitos quanticos
QML: Syntax
(Variables) x, y, ... ∈ Vars
(Prob⋅ Amplitudes) κ, ι, ... ∈ C
(Patterns) p,q ::= x | (x,y)
(Terms) t,u,e ::= x | () | (t,u)
| let p = t in u
| if◦ t then u else u’
| false | true |−→0 | κ*t | t+u
QML
Exemplo: Not quantico
qnot x = if◦ x then false else true
qnot false = true
qnot (false + true) = if◦ falsethen falseelse true +
if◦ truethen falseelse true
= true + false
QML
Exemplo: Not condicional
cnot c x = if◦ cthen (true, qnot x)else (false, x)
Exemplo: Not condicional??
cnot c x = if◦ cthen (c, qnot x)else (c, x)
QML
Exemplo: Not condicional
cnot c x = if◦ cthen (true, qnot x)else (false, x)
Exemplo: Not condicional??
cnot c x = if◦ cthen (c, qnot x)else (c, x)
QML
Copiando dados quanticos.let x = false + truein (x,x) ≡ (false,false) + (true, true)
Descartando dados quanticos weakening: nao e permitido noscasos que informacao pode ser perdida.let (x,y) = (false,false) + (true,true)in x
Dado quantico ligado a y e descartado.
A expressao nao e bem tipada!
QML
Copiando dados quanticos.let x = false + truein (x,x) ≡ (false,false) + (true, true)
Descartando dados quanticos weakening: nao e permitido noscasos que informacao pode ser perdida.let (x,y) = (false,false) + (true,true)in x
Dado quantico ligado a y e descartado.
A expressao nao e bem tipada!
QML
Sistema de Tipos
Regras de tipo baseadas na logica linear estrita
Contracoes sao implıcitas.
Weakenings nao sao permitidos.
QML
Algumas regras do sistema de tipos
Γ ⊢ t : σ ∆, x : σ ⊢ u : τlet
Γ⊗∆ ⊢ let x = t in u : τ
f-intro• ⊢ false : Q2
t-intro• ⊢ true : Q2
varx : σ ⊢ x : σ
QML
Ortogonalidade
if◦ x then true else true
A expressao retorna true sem realmente utilizar qualquerinformacao sobre x .
A expressao nao e bem-tipada.
if◦ x then t else u
A expressao somente deve ser aceita se t e u sao valores quanticosortogonais (t ⊥ u).
t ⊥ u holds if 〈t|u〉 = 0
QML
Ortogonalidade
if◦ x then true else true
A expressao retorna true sem realmente utilizar qualquerinformacao sobre x .
A expressao nao e bem-tipada.
if◦ x then t else u
A expressao somente deve ser aceita se t e u sao valores quanticosortogonais (t ⊥ u).
t ⊥ u holds if 〈t|u〉 = 0
QML
Ortogonalidade
if◦ x then true else true
A expressao retorna true sem realmente utilizar qualquerinformacao sobre x .
A expressao nao e bem-tipada.
if◦ x then t else u
A expressao somente deve ser aceita se t e u sao valores quanticosortogonais (t ⊥ u).
t ⊥ u holds if 〈t|u〉 = 0
QML
Ortogonalidade
if◦ x then true else true
A expressao retorna true sem realmente utilizar qualquerinformacao sobre x .
A expressao nao e bem-tipada.
if◦ x then t else u
A expressao somente deve ser aceita se t e u sao valores quanticosortogonais (t ⊥ u).
t ⊥ u holds if 〈t|u〉 = 0
QML
Altenkirch, Grattage, Vizzotto, Sabry, 2005 - Teoria equacional
Dada a seguinte definicao para o porta de Hadamard:
H x = if◦ xthen ( false + (−1)*true )else ( false + true )
Gostarıamos de verificar que H (H x) e observacionalmente
equivalente a x.
QML: teoria equacional
As equacoes quanticas sao:
(if◦)
if◦ (λ*t0 + κ*t1) then u0 else u1
≡ λ*(if◦ t0 then u0 else u1) +
κ*(if◦ t1 then u0 else u1)
(superpositions)
t+u ≡ u+t
t +−→0 ≡ t
t+(u+v) ≡ (t+u)+v
λ*(t+u) ≡ λ*t + λ*uλ*t+κ*t ≡ (λ+κ)*t
0*t ≡−→0
QML: teoria equacional
By definition of H
H(H x) = if◦ ( if◦ xthen ( false + (−1)*true )else ( false + true ))then ( false + (−1)*true )else ( false + true )
QML: teoria equacional
By commuting conversion for if◦
= if◦ xthen if◦ ( false + (−1)*true )then ( false + (−1)*true )else ( false + true )else if◦ ( false + true )then ( false + (−1)*true )else ( false + true )
QML: teoria equacional
By ifo
= if◦ xthen ( if◦ falsethen (false + (−1)*true )else ( false + true ) +
(−1) if◦ truethen (false + (−1)*true )else ( false + true ) )else ( if◦ falsethen (false + (−1)*true )else ( false + true ) +
(−1) if◦ truethen (false + (−1)*true )else ( false + true ) )
QML: teoria equacional
By β
= if◦ xthen ( false − false + true + true )else ( false + false + true − true )
By simplification and normalisation
= if◦ x then true else false
By η-rule for if o
= x
QML: teoria equacional
By β
= if◦ xthen ( false − false + true + true )else ( false + false + true − true )
By simplification and normalisation
= if◦ x then true else false
By η-rule for if o
= x
QML: teoria equacional
By β
= if◦ xthen ( false − false + true + true )else ( false + false + true − true )
By simplification and normalisation
= if◦ x then true else false
By η-rule for if o
= x
QHaskell: sintaxe
x, y, ... ∈ Vars
κ, ι ∈ C
d ::= false | true | κ * d | q + r
p ::= e | x | meas x
| if x then p1 else p2
| proc xl → do cl
| pr −< xl
| let x = p1 in p2
| x ← e
| p1;p2
| qif x then p1 else p2
| returnA −< xl
QHaskell: exemplos
qnot = proc x → doqif x then x’ ← falseelse x’ ← qtrue
returnA −< x’
hadamar = proc x → doqif x then x’ ← (false + (−1) * true)else x’ ← false + true
returnA −< x’
QHaskell: exemplos
cqnot = let qnot = proc x → doqif x then x’ ← falseelse x’ ← true
returnA −< x’in proc (c,y) → doqif c then y’ ← qnot −< xelse y’ ← y
returnA −< (c,y’)
QHaskell: teleportacao
teleportation = proc (eprL,eprR,q) → do(m1,m2) ← alice −< (eprL,q)
q’← bob −< (eprR,(m1,m2))
returnA −< q’
alice = let qnot = ...
hadamard = ...in proc (eprL,q) → do(q1,e1) ← qcnot −< (q,eprL)
q2 ← hadamard −< q1
(m1,m2) ← meas −< (e1,q2)
returnA −< (m1,m2)
QHaskell: teleportacao
bob = proc (eprR,(m1,m2)) → doif m1 then r’ ← qnot −< eprRelse r’ ← eprRif m2 then r’’ ← z −< r’else r’’ ← r’
returnA r’’
QHaskell
Sistema de tipos
Controlar o uso de variaveis!!
Sistema de tipos baseado na logica linear!
Tipos classicos:
σ = 1 | Bool | σ ⊗ τ
Tipos quanticos:
θ = Q1 | QBool | θ ⊗ υ
QHaskell
Sistema de tipos
Valores classicos:
false• ◭ Γ ⊢ false : Bool
true• ◭ Γ ⊢ true : Bool
Variaveis:
cvar• ◭ x : σ,Γ ⊢ x : σ
qvarx : θ ◭ Γ ⊢ x : θ
QHaskell
Sistema de tipos
Medida: transforma dado quantico em classico
Θ ◭ x : |θ|,Γ ⊢ xmeas
x : θ ⊗Θ ◭ Γ ⊢ meas x
QHaskell
Sistema de tipos
returnA: todas e somente todas as variaveis quanticasretornas em um procedimento quantico devem ser provadas!
Θ ◭ Γ ⊢ (x ′1 : θ′1, . . . , x
′n : θ′n)
returnAΘ ◭ Γ ⊢ returnA(x ′
1 : θ′1, . . . , x′n : θ′n) : θ′1 ⊗ . . .⊗ θ′n
QHaskell
Sistema de tipos
Procedimentos quanticos:
x1 : θ1, . . . , xn : θn,Θ ◭ Γ ⊢ cl; returnA(x ′1 : θ′1, . . . , x
′n : θ′n) : t
Θ ◭ Γ ⊢ proc (x1:θ1, ...,xn:θn) do pro
clreturnA(x ′
1: θ′
1, . . . , x ′
n : θ′n)
QHaskell
QHaskell: uma proposta para uma linguagem quantica mista!
Sintaxe para manipulacao de dados quanticos possivelmenteemaranhados baseada na notacao do para setas em Haskell.
Sistema de tipos baseado na logica linear para controlar autilizacao de variaveis quanticas.
Um dado quantico que e medido se transforma em dadoclassico!
Trabalho futuro: definicao de uma semantica de reescrita paraQHaskell utilizando o calculo-ρ.