Professional Documents
Culture Documents
de lenguajes de programación
cuánticos
Alejandro Díaz-Caro
UNIVERSIDAD NACIONAL DE QUILMES & CONICET
WTPC 2018
9 de Marzo de 2018
Universidad Nacional de Quilmes
Primera explicación del título de la charla
Fundamentos de
Lenguajes de programación
Cuánticos
Fundamentos −→ principios básicos
Lenguajes de programación −→ computación
Computación cuántica −→ mecánica cuántica
Richard Feynman
First Conference on the Physics of Computation, MIT, 1981
Simulación
I Física clásica =⇒ computación clásica
I Física cuántica =⇒ ¿computación clásica?
Richard Feynman
First Conference on the Physics of Computation, MIT, 1981
Simulación
I Física clásica =⇒ computación clásica
I Física cuántica =⇒ ¿computación clásica?
Entre tanto en Rusia. . .
R. P. Poplavskii
Uspekhi Fizicheskikh Nauk, 115:3, 465–501, 1975
I Inviabilidad computacional de simular sistemas
cuánticos (debido al ppio de superposición)
Yuri I. Manin
Moscow, Sovetskoye Radio, 1980
I Uso del número exponencial de estados de base
I Propuesta de teoría de computación cuántica
David Deutsch
Proceedings of the Royal Society A 400
(1818):97–117, 1985 . . . Varios hitos históricos
omitidos . . .
I Máquina de Turing Cuántica:
máquina cuántica universal
Mecánica cuántica
−→ Computación cuántica
−→ Lenguajes de programación (cálculo lambda)
−→ Teoría de tipos
−→ Lógica
&
&
& = & &
&
& ⊗ &
& ⊗ &
Ejemplo:
f (g , x) = g (x) se escribe λg .λx.gx
Ejemplo:
f (g , x) = g (x) se escribe λg .λx.gx
f (g0 , x0 ) se escribe (λg .λx.gx)g0 x0 y β-reduce así
( λg . λx.gx ) g0 x0 −→ ( λx.g0 x )x0 −→ g0 x0
|{z} | {z } |{z} | {z }
(λx. t) r (r /x)t
Ω = (λx.xx)(λx.xx)
Ω = (λx.xx)(λx.xx) −→ (λx.xx/x)xx
Ω −→ Ω → Ω → · · ·
Ω −→ Ω → Ω → · · ·
Normalización
t está en forma normal, si no reescribe ej. λx.x
Ω −→ Ω → Ω → · · ·
Normalización
t está en forma normal, si no reescribe ej. λx.x
t es normalizante si puede terminar ej. (λx.λy .y )Ω
Ω −→ Ω → Ω → · · ·
Normalización
t está en forma normal, si no reescribe ej. λx.x
t es normalizante si puede terminar ej. (λx.λy .y )Ω
t es fuertemente normalizante si siempre termina ej. (λx.x)(λx.x)
Ω −→ Ω → Ω → · · ·
Normalización
t está en forma normal, si no reescribe ej. λx.x
t es normalizante si puede terminar ej. (λx.λy .y )Ω
t es fuertemente normalizante si siempre termina ej. (λx.x)(λx.x)
ax
Γ, x A ` x : A
Más aún...
(λx.x + 1)
Más aún...
&
&
e.g. f (α |0i + β |1i) → αf (|0i) + βf (|1i)
&
&
e.g.
(λx.πx) (α. |0i + β. |1i) −→ α.(λx.πx) |0i + β.(λx.πx) |1i ¡Incorrecto!
(Operador de medición)
A. Díaz-Caro Fundamentos de lenguajes de programación cuánticos 14 / 25
Clave
Necesitamos distinguir
estados en superposición
de estados de base
usando tipos
Los estados de base pueden ser clonados
Los estados superpuestos, no
Tipos
Ψ := B | S(Ψ) Tipos “Qubit”
A := Ψ | Ψ ⇒ A | S(A) Tipos generales
Términos
t := x | λx .t | |0i | |1i | tt | πt | ?t·t | t + t | α.t | ~0S(A)
Ψ
| {z } | {z }
términos de base combinaciones lineales
donde α ∈ C
√ √
( |0i , (1/ 2. |0i + 1/ 2. |1i)) ∈ {|0i , |1i} × C2
|{z} | {z }
B S(B)
√ √
1/ 2.(|0i , |0i) + 1/ 2.(|0i , |1i) ∈ C2 ⊗ C2
| {z }
S(B×B)
Types
Q := B | Q × Q Basis qubit types
Ψ := Q | S(Ψ) | Ψ × Ψ Qubit types
A := Ψ | Ψ ⇒ A | S(A) | A × A Types
Terms
t := x | λx Ψ .t | |0i | |1i | tt | πj t | ?t·t | t + t | α.t | ~0S(A)
| t × t | head t | tail t | ⇑ t
con α ∈ C
Γ ` t : A (AB) Γ, x : Ψ ` t : A
Γ ` t : A Γ ` u : A if ⇒I
Γ`t:B Γ ` ?t·u : B ⇒ A Γ ` λx : Ψ t : Ψ ⇒ A
Γ ` t : Ψ ⇒ A ∆ ` u : Ψ ⇒E Γ ` t : S(Ψ ⇒ A) ∆ ` u : S(Ψ) ⇒ES
Γ, ∆ ` tu : A Γ, ∆ ` tu : S(A)
Γ`t:A Γ, x : Q, y :Q`t:A
W C
Γ, x : Q ` t : A Γ, x : Q ` (x/y )t : A
Γ`t :A ∆`u :B × Γ`t :B×Q × Γ`t :B×Q
×El
I Er
Γ, ∆ ` t × u : A × B Γ ` head t : B Γ ` tail t : Q
Γ ` t : S(S(A) × B) Γ ` t : S(A × S(B))
⇑r ⇑l
Γ `⇑ t : S(A × B) Γ `⇑ t : S(A × B)
A. Díaz-Caro Fundamentos de lenguajes de programación cuánticos 21 / 25
Interpretación categórica
Trabajo en progreso con Octavio Malherbe
En general:
t
JΓ ` t : AK = JΓK −→ JAK
Ejemplos:
r z
Id
x : Ψ ` x : Ψ = Ψ −→ Ψ
s {
Γ`t:A ∆`r :A t×r +
= Γ × ∆ −→ A × A −→ S(A)
Γ, ∆ ` t + r : S(A)
Ejemplos:
r z
Id
x : Ψ ` x : Ψ = Ψ −→ Ψ
s {
Γ`t:A ∆`r :A t×r +
= Γ × ∆ −→ A × A −→ S(A)
Γ, ∆ ` t + r : S(A)
s {
∆`r :Ψ Γ`t:Ψ⇒A r ×t ε
= ∆ × Γ −→ Ψ × [Ψ, A] −→ A
∆, Γ ` tr : A
Ejemplos:
r z
Id
x : Ψ ` x : Ψ = Ψ −→ Ψ
s {
Γ`t:A ∆`r :A t×r +
= Γ × ∆ −→ A × A −→ S(A)
Γ, ∆ ` t + r : S(A)
s {
∆`r :Ψ Γ`t:Ψ⇒A r ×t ε
= ∆ × Γ −→ Ψ × [Ψ, A] −→ A
∆, Γ ` tr : A
s {
∆ ` r : S(Ψ) Γ ` t : S(Ψ ⇒ A) r ×t
= ∆ × Γ −→ S(Ψ) × S([Ψ, A])
∆, Γ ` tr : S(A)
Ejemplos:
r z
Id
x : Ψ ` x : Ψ = Ψ −→ Ψ
s {
Γ`t:A ∆`r :A t×r +
= Γ × ∆ −→ A × A −→ S(A)
Γ, ∆ ` t + r : S(A)
s {
∆`r :Ψ Γ`t:Ψ⇒A r ×t ε
= ∆ × Γ −→ Ψ × [Ψ, A] −→ A
∆, Γ ` tr : A
s {
∆ ` r : S(Ψ) Γ ` t : S(Ψ ⇒ A) r ×t
= ∆ × Γ −→ S(Ψ) × S([Ψ, A])
∆, Γ ` tr : S(A)
⊗
−→ S(Ψ) ⊗ S([Ψ, A]) ≈ S(Ψ × [Ψ, A])
Ejemplos:
r z
Id
x : Ψ ` x : Ψ = Ψ −→ Ψ
s {
Γ`t:A ∆`r :A t×r +
= Γ × ∆ −→ A × A −→ S(A)
Γ, ∆ ` t + r : S(A)
s {
∆`r :Ψ Γ`t:Ψ⇒A r ×t ε
= ∆ × Γ −→ Ψ × [Ψ, A] −→ A
∆, Γ ` tr : A
s {
∆ ` r : S(Ψ) Γ ` t : S(Ψ ⇒ A) r ×t
= ∆ × Γ −→ S(Ψ) × S([Ψ, A])
∆, Γ ` tr : S(A)
⊗
−→ S(Ψ) ⊗ S([Ψ, A]) ≈ S(Ψ × [Ψ, A])
S(ε)
−→ S(A)
Definimos una interpretación LAM alternativa para cada tipo con las
siguientes propiedades:
Trabajos en progreso
I Terminar la prueba de normalización fuerte (con J. P. Rinaldi)
I Modelo categórico abstracto (con O. Malherbe)
I Implementación en Haskell (con I. Grimma y P. E. Martínez López)