Вы находитесь на странице: 1из 95

Introduccin a la computacin cuntica y

fundamentos de lenguajes de programacin


Materia optativa de la
Licenciatura en Ciencias de la Computacin
con crditos para el doctorado
Universidad Nacional de Rosario

Alejandro Daz-Caro
CONICET & Universidad Nacional de Quilmes

2016
Enfoque de este apunte

Estas notas estn pensadas para estudiantes


de grado y posgrado de computacin, no de f-
sica. Es por ello que el enfoque que se da es casi
puramente matemtico, con algn comentario
aqu y all de la fsica que motiva el formalis-
mo, pero todos los razonamientos se realizan
exclusivamente desde el lado de la matemtica.

Materia:
Introduccin a la computacin cuntica y fundamentos de lenguajes de programacin

Departamento de Ciencias de la Computacin


Facultad de Ciencias Exactas, Ingeniera y Agrimensura
Universidad Nacional de Rosario


CC Este apunte tiene Licencia Creative Commons Attibution 4.0 Internacional.
Pods ver una copia de la licencia en http://creativecommons.org/licenses/by/4.0/.
ndice general

1. Introduccin a la computacin cuntica 7


1.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2. Preliminares: un poco de lgebra . . . . . . . . . . . . . . . . . . . . . . 9
1.2.1. Espacio de Hilbert . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.2. Productos tensoriales . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.3. Notacin braket . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.3.1. Notacin bra y ket para vectores . . . . . . . . . . . . . 11
1.2.3.2. Notacin bra y ket para matrices . . . . . . . . . . . . . 13
1.3. Bits cunticos y operadores . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.1. Primera intuicin . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.2. Bits cunticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.3. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4. Teorema del no-clonado . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.5. Estados de Bell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.6. Usando los estados de Bell . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.6.1. Codificacin superdensa . . . . . . . . . . . . . . . . . . . . . . . 19
1.6.2. Teleportacin cuntica . . . . . . . . . . . . . . . . . . . . . . . . 20
1.7. Paralelismo Cuntico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2. Algoritmos cunticos y aplicacin a criptografa 23


2.1. Algoritmo de Deutsch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2. Algoritmo de Deutsch-Jotza . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3. Algoritmo de Bsqueda de Grover . . . . . . . . . . . . . . . . . . . . . . 26
2.3.1. Orculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.3.2. Inversin sobre el promedio . . . . . . . . . . . . . . . . . . . . . 27
2.3.3. El algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.3.1. Paso 1: Se aplica Hadamard (H n ) . . . . . . . . . . . . 28
2.3.3.2. Paso 2: Se aplica el orculo (U ) . . . . . . . . . . . . . . 28
2.3.3.3. Paso 3: Se aplica la inversin sobre el promedio (G) . . . 29
2.3.4. Clculo del nmero ptimo de iteraciones . . . . . . . . . . . . . . 30
2.4. Aplicacin criptogrfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.4.1. One-time pad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.4.2. Criptosistema Cuntico QKD-BB84 . . . . . . . . . . . . . . . . . 32

3
3. Introduccin a la mecnica cuntica 35
3.1. Postulados de la mecnica cuntica . . . . . . . . . . . . . . . . . . . . . 35
3.1.1. Medicin proyectiva . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.1.1.1. Preliminares . . . . . . . . . . . . . . . . . . . . . . . . 36
3.1.1.2. Medicin proyectiva . . . . . . . . . . . . . . . . . . . . 38
3.1.2. Fase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.2. Operador densidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.1. Preliminares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.2. Conjuntos de estados cunticos . . . . . . . . . . . . . . . . . . . 40
3.2.3. Propiedades generales del operador densidad . . . . . . . . . . . . 42
3.2.4. El operador densidad reducido . . . . . . . . . . . . . . . . . . . . 44
3.2.4.1. Teleportacin cuntica y el operador densidad reducido . 45
3.3. Descomposicin de Schmidt . . . . . . . . . . . . . . . . . . . . . . . . . 46

4. Introduccin al lambda clculo y a la teora de tipos 49


4.1. PCF no tipado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.1.1. Primeras definiciones . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.1.2. Gramtica de PCF . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.1.3. Semntica operacional . . . . . . . . . . . . . . . . . . . . . . . . 51
4.1.4. No terminacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.1.5. Captura de variables . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.2. Estrategias de reduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2.1. Primeras definiciones . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2.2. Reduccin dbil . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.2.3. Call-by-name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.2.4. Call-by-value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3. PCF tipado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3.2. Gramtica de PCF tipado . . . . . . . . . . . . . . . . . . . . . . 57
4.3.3. La relacin de tipado . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.3.4. Correctitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.4. Inferencia de tipos simples . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.4.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.4.2. Algoritmo de Hindley . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.4.3. Algoritmo de unificacin de Robinson . . . . . . . . . . . . . . . . 63
4.5. Polimorfismo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.5.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.5.2. Tipos polimrficos . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.6. Interpretacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.6.1. Interpretacin en CBN . . . . . . . . . . . . . . . . . . . . . . . . 66
4.6.2. Interpretacin en CBV . . . . . . . . . . . . . . . . . . . . . . . . 67
4.7. Semntica denotacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.7.1. Primeras definiciones . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.7.2. La semntica denotacional de PCF tipado . . . . . . . . . . . . . 69
5. Extensiones cunticas al lambda clculo 73
5.1. Control clsico, datos cunticos . . . . . . . . . . . . . . . . . . . . . . . 73
5.1.1. El clculo de Selinger y Valiron . . . . . . . . . . . . . . . . . . . 73
5.2. Control y datos cunticos . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.2.1. El clculo de van Tonder . . . . . . . . . . . . . . . . . . . . . . . 78
5.2.2. El lambda clculo lineal algebraico . . . . . . . . . . . . . . . . . 80
5.2.3. Tipando superposiciones y mediciones proyectivas . . . . . . . . . 84
Captulo 1

Introduccin a la computacin cuntica

I feel that a deep understanding of why quantum algorithms work is still lac-
king. Surely the power of quantum computers has something to do with entan-
glement, quantum parallelism, and the vastness of Hilbert space, but I think
that it should be possible to pinpoint more precisely the true essence of the
matter. John Preskill [1998]

1.1. Introduccin
La computacin cuntica, una rama de las ciencias de la computacin terica, tiene su
origen en la fsica, y ms precisamente en el fsico estadounidense Richard Feynman,
quien en 1981 dedic una charla en el Massachusetts Institute of Technology (MIT) al
problema de la simulacin de la fsica cuntica con computadoras clsicas. Sus ya clebres
palabras finales resumen su frustracin de ese entonces:

And Im not happy with all the analyses that go with just the classical theory,
because nature isnt classical, dammit, and if you want to make a simulation of
nature, youd better make it quantum mechanical, and by golly its a wonderful
problem, because it doesnt look so easy. Thank you.
(ver, por ejemplo, [Brown, 2001, pp.100])

Esta provocacin, lejos de plantear soluciones, abri las puertas a interrogantes nunca
antes concebidos. Qu ganancia se lograra si las computadoras fuesen regidas por las
leyes de la mecnica cuntica? Fueron los algoritmos de Grover [1996] y Shor [1997] los
cuales despertaron el gran inters desde las ciencias de la computacin en este nuevo
paradigma. El primero es un algoritmo de bsqueda sobre registros desordenados, el cual
provee una ganancia cuadrtica de complejidad temporal frente a cualquier algoritmo
clsico conocido. El segundo es un algoritmo para la factorizacin de nmeros, con una
ganancia exponencial.
Actualmente existen muchas reas de investigacin dentro de la computacin cuntica.
Por ejemplo, desde un punto de vista prctico se plantea el problema de construir el
hardware de una computadora cuntica. Desde sus orgenes, en las palabras de Feinmann,

7
8 1.1. Introduccin

la idea es que un algoritmo cuntico sea una simulacin cuntica en hardware que se
comporta de acuerdo a las leyes de la fsica cuntica. Es decir que un experimento cuntico
en un laboratorio, puede considerarse como un algoritmo. O dicho de otro modo: podemos
describir el comportamiento de un sistema cuntico a travs de un algoritmo. La pregunta
es, podemos realizar el experimento cuntico que describe un algoritmo dado? All es
donde se manifiesta el desafo tcnico.
Otra rea es la de desarrollar algoritmos que obtengan una ganancia con respecto a su
contraparte clsica. En general los algoritmos de Grover y Shor mencionados anterior-
mente se consideran como los ejemplos cannicos de aceleracin obtenida gracias a la
computacin cuntica. Muchos otros algoritmos cunticos son derivados de ellos. La pre-
gunta aqu es qu otros algoritmos podemos obtener que nos den una ganancia respecto
a los algoritmos clsicos?
Otra rama de investigacin es la del diseo de lenguajes de programacin que permitan
expresar los algoritmos cunticos de una manera amigable, y quiz permitiendo descubrir
nuevos algoritmos al tener una herramienta de alto nivel para pensarlos.
Desde un punto de vista ms fundamental, y como lo expresara Preskill en la cita que
abre este captulo, los fundamentos lgicos detrs de la computacin cuntica, siguen
siendo un misterio. Si bien existe una lgica cuntica [Birkhoff y von Neumann, 1936],
sta fue propuesta muchos aos antes de la computacin cuntica, por lo que encontrar la
correspondencia entre computacin y lgica cuntica no es trivial. Esta rea tiene muchas
subreas con metodologas diferentes. En particular, el estudio de semntica de lenguajes
de programacin sigue este objetivo. En este caso no se persigue el estudio del lenguaje
en s mismo, sino que el objetivo es el estudio de la lgica subyacente. Estudiar la lgica
detrs de la computacin cuntica implica estudiar la lgica detrs de la fsica cuntica,
lo cual puede tener influencia en el desarrollo de nuevas teoras sobre el mundo que nos
rodea.

En esta materia nos interesan los dos ltimos aspectos: lenguajes de programacin que
permitan expresar el cmputo cuntico de una manera estructurada y amigable, y el
estudio de propiedades de lenguajes que nos acerquen hacia una lgica computacional de
la fsica cuntica.

Estructura de la materia y de estos apuntes En el primer encuentro, de dos das


(10hs en total), y se plantea la primera introduccin a la computacin cuntica. Esta es
una introduccin para un slo encuentro, para una introduccin ms extensa, se reco-
mienda el libro de Nielsen y Chuang [2010]. En el resto de este captulo desarrollaremos
los rudimentos bsicos de la computacin cuntica, desde un enfoque puramente matem-
tico (en contraposicin con el enfoque fsico). En el Captulo 2 explicaremos algunos de
los algoritmos ms conocidos y una aplicacin a la criptografa. En el segundo encuentro
estudiaremos los postulados de la mecnica cuntica, desarrollados en el Captulo 3, des-
de un punto de vista ms fsico, relacionndolo con el formalismo aprendido. En el tercer
encuentro estudiaremos el clculo lambda tipado y el isomorfismo de Curry-Howard. Fi-
nalmente, en el cuarto y ltimo encuentro, estudiaremos extensiones cunticas al clculo
lambda, en el paradigma de control clsico y datos cunticos y en el paradigma de control
y datos cunticos.
Captulo 1. Introduccin a la computacin cuntica 9

1.2. Preliminares: un poco de lgebra


1.2.1. Espacio de Hilbert
TL;DR Cn con la suma (+) y el producto () usuales, y el producto escalar definido
por
n
X
h~v , wi
~ = h(v1 , v2 , . . . , vn ), (w1 , w2 , . . . , wn )i = vi wi
i=1

donde v es el complejo conjugado de v, es un espacio de Hilbert.
En el resto de la seccin se define formalmente qu es un espacio de Hilbert.

Definicin 1.1 (Producto escalar). Sea E un espacio vectorial sobre el cuerpo K (R


o C). Un producto escalar (tambin llamado producto interno) definido sobre E es una
funcin h, i : E E K que verifica las siguientes propiedades.
~ E, a, b K, se cumple:
Para todo ~u, ~v , w

h~u, ~ui 0
(Definida positiva)
h~u, ~ui = 0 ~u = ~0E
hw,
~ a~u + b~v i = ahw, ~ ~ui + bhw,
~ ~v i (Lineal por derecha)

ha~u + b~v , wi
~ = a h~u, wi ~ + b h~v , wi
~ (Antilineal por izquierda)

h~u, ~v i = h~v , ~ui (Hermtica)

Definicin 1.2 (Espacio pre-Hilbert). Un espacio pre-Hilbert es un espacio vectorial


sobre K con producto escalar.

Observacin. Todo espacio pre-Hilbert es un espacio vectorial normado con la norma


p
k~v k = h~v , ~v i

Definicin 1.3 (Sucesin de Cauchy). Sea ~vn una sucesin de vectores del espacio E.
Si k~vn ~vm k 0 cuando n, m , entonces la sucesin ~vn es una sucesin de Cauchy.
(Esto quiere decir que puedo hacer distar entre s los trminos tan poco como quiera).

Observacin. Toda sucesin convergente es de Cauchy, pero no toda sucesin de Cauchy


es convergente.

Definicin 1.4 (Espacio completo). E es completo para la norma k k, si y slo si toda


sucesin de Cauchy converge con esa norma.

Definicin 1.5 (Espacio de Hilbert). Un espacio pre-Hilbert completo en su norma se


denomina espacio de Hilbert.

1.2.2. Productos tensoriales


En esta seccin consideramos espacios vectoriales equipados con una base cannica.
10 1.2. Preliminares: un poco de lgebra

Definicin 1.6 (Producto tensorial). Sean E y F dos espacios vectoriales con bases
cannicas B = {~bi | i I} y C = {~cj | j J} respectivamente. El producto tensorial
E F de E y F es el espacio vectorial de base cannica {~bi ~cj | i I y j J}, donde
~bi ~cj es el par ordenado formado por el vector ~bi y el vector ~cj . La operacin se
extiende a vectores de E y F bilinearmente:
X X X
( i~bi ) ( j~cj ) = i j (~bi ~cj )
i j ij

Definicin 1.7 (Producto cartesiano entre dos subconjuntos de espacios vectoriales).


Sean E y F dos espacios vectoriales equipados con bases B y C, y sean S y T dos
subconjuntos de E y F respectivamente. Definimos el conjunto S T , subconjunto del
espacio vectorial E F , de la siguiente manera:

S T = {~u ~v | ~u S, ~v T }

Observacin. E F 6= E F . Por ejemplo, si E = F = C2 , con base cannica {~i, ~j},


entonces E F contiene a ~i ~i y a ~j ~j, pero no a ~i ~i + ~j ~j, que no es producto de
dos vectores de C2 .
Definicin 1.8 (Generador). Sea E un espacio vectorial equipado con una base B, y
S E. Escribimos G(S) al espacio vectorial sobre C generado por S, es decir, que
contiene todas las combinaciones lineales de elementos de S.
Observacin. Si E y F son dos espacios vectoriales con bases B y C respectivamente,
entonces
E F = G(B C) = G(E F )
La operacin introducida genricamente en la Definicin 1.6, puede ser definida ms
precisamente para matrices (y vectores, tomando matrices columna o fila) de la siguiente
manera.
Definicin 1.9 (Producto tensorial entre matrices). El producto tensorial de dos matri-
ces, P y Q se define como la matriz

p11 Q . . . p1m Q
P Q = ... ..

.
pn1 Q . . . pnm Q

Ejemplos 1.10.
   
5 6 5 6 5 6 10 12
    1 2
1 2 5 6
7 8 7 8 7 8 14
16
= =
3 4 7 8 5 6 5 6 15 18 20 24
3 4
7 8 7 8 21 24 28 32
 
3 3
    1
1 3
4 = 4

=
2 4 3 6
2
4 8
Captulo 1. Introduccin a la computacin cuntica 11

Observacin. El producto escalar, o producto interno, entre dos vectores nos da un n-


mero. El producto tensorial, o producto externo, entre dos vectores nos da un vector de
mayor dimensin.
Como se dijo anteriormente, E F 6= E F , y por lo tanto:

Existen vectores de E F que no son producto


tensorial entre uno de E y uno de F .
   
2 2 0 21
Ejemplo 1.11. Consideremos el espacio C C . Una base de C es { , } Por lo
1 0
tanto

0 0 0 1
0 0 1 0

C C = Gen( , , , ) = C4
2 2

0 1 0 0
1 0 0 0

Tomemos ~v = (, 0, 0, )T , con , 6= 0. Es fcil verificar que ~v C4 . Sin embargo, no


existen ~v1 , ~v2 C2 tal que ~v = ~v1 ~v2 .

Demostracin. Supongamos que existen ~v1 y ~v2 tales que ~v1 ~v2 = ~v , entonces

    ac
ac =
a c ad 0 ad = 0

= =
b d bc 0
bc = 0
bd bd =

pero este es un sistema que no tiene solucin.

1.2.3. Notacin braket


Notacin introducida por Paul Dirac [1939] para describir estados cunticos.

1.2.3.1. Notacin bra y ket para vectores


En lugar de escribir los vectores como ~v la notacin ket usa |vi.
En particular definimos:    
1 0
|0i = |1i =
0 1
Por lo tanto, cualquier vector de C2 puede escribirse como
     
1 0
= + = |0i + |1i
0 1

Podemos, por ejemplo, definir vectores como los siguientes


! !
1 1 1 1
|+i = (|0i + |1i) = 12 |i = (|0i |1i) = 2
2 2 2 12
12 1.2. Preliminares: un poco de lgebra

y como estos son dos vectores ortogonales (por ende, forman una base), ahora es posible
tambin escribir cualquier vector de C2 como combinacin lineal de |+i y |i.
Por ejemplo:
 
1 1
= |0i + |1i = ( + )|+i + ( )|i
2 2
Observacin. Al menos que se indique lo contrario, en el resto del apunte consideraremos
n
el espacio complejo de dimensin N = 2n , CN = C2 .

Definicin 1.12 (Bra y Ket). Llamamos ket a un vector de la forma



1
..
|i = .
N

y bra a un vector de la forma


h| = (1 , . . . , N

)
donde i C y i denota el conjugado de i .

Observaciones.
Haciendo un abuso de notacin, podemos escribir vectores como el siguiente:

|1 1 + 2 2 i = 1 |1 i + 2 |2 i

A partir la definicin de bras y kets, llamamos braket al producto escalar:



1
..
h|i = (1 , . . . , N ) . = a C
N

Recordatorio de lgebra: Una base ortonormal de un espacio vectorial normado es


una base donde todos los vectores tienen norma 1. Adems, en una base, todos los
vectores son ortogonales entre s (es decir, el producto escalar entre ellos es 0). Por
lo tanto:
Dado un conjunto B = {|u1 i, . . . , |uN i}, B es una base ortonormal de CN si y slo
si para todo i, j tenemos hui |uj i = ij , donde ij es la delta de Kronecker (igual a
1 si i = j, y 0 en otro caso).

Entonces, todo Ket |i se puede expresar como |i = N


P
i=1 ai |ui i.

Si tomamos la base cannica de CN , con |ui i el vector i-simo de dicha base, pode-
mos calcular la componente i-sima de un vector cualquiera de la siguiente manera:
N
X N
X
hui |i = hui | aj |uj i = aj hui |uj i = ai
| {z }
j=1 j=1
ij
Captulo 1. Introduccin a la computacin cuntica 13

N
P
Teorema 1.13. Sea B = {|u1 i, . . . , |uN i} una base ortonormal, entonces |ui ihui | = I.
i=1
Demostracin.
N
! N
! N
!
X X X
|ui ihui | |i = |ui ihui | aj |ui i
i=1 i=1 j=1
N X
X N N
X
= aj |ui i hui |uj i = ai |ui i = |i
| {z }
i=1 j=1 i=1
ij

Observaciones.
N
bi hui |.
P
Anlogamente a los kets, todo bra h| puede ser descompuesto como h| =
i=1

Podemos ver que bi


= h|ui i C ya que
" N # N
X X
h| = h| |ui ihui | = h|ui ihui | bi = h|ui i
| i=1 {z } i=1

Observacin. De aqu en ms, trabajaremos slo con los vectores normalizados de CN (es
decir, vectores cuya norma es 1). Esto es
N
! N ! N N
X X X X
2
1 = kk = h|i = aj huj | ai |ui i = aj ai huj |ui i = |ai |2 = 1
| {z }
j=1 i=1 i,j=1 i=1
ij

Es decir, trabajamos con vectores cuya suma de los mdulos al cuadrado de sus compo-
nentes es 1.

1.2.3.2. Notacin bra y ket para matrices


Para toda matriz cuadrada de dimensin N a coeficientes complejos A, tenemos la si-
guiente representacin:

|vectori
X N XN N XN z }| { N X N
X X
A= |ui ihui | A |uj ihuj | = |ui i hui | A|uj i huj | = ij |ui ihuj |

i=1 j=1 i=1 j=1 | {z }
i=1 j=1
| {z } | {z } ij
I I

donde ij es la componente ij de la matriz.


Con esta representacin, podemos representar el producto de una matriz por un vector
de la siguiente manera:
N XN
! N !
X X
A|i = ij |ui ihuj | ak |uk i
i=1 j=1 k=1
N X
X N X
N N X
X N
= ij ak |ui i huj |uk i = ij aj |ui i
| {z }
i=1 j=1 k=1 i=1 j=1
jk
14 1.3. Bits cunticos y operadores

PN
Es decir, las componentes del vector A|i son bi = j=1 ij aj .

1.3. Bits cunticos y operadores


1.3.1. Primera intuicin
En computacin clsica la unidad mnima de informacin es el bit, el cual puede estar en
un estado 0 o 1. Leer un bit es una operacin que no conlleva ninguna particularidad. En
contraposicin, un bit cuntico o qubit puede estar en un estado que sea una superposicin
de los estados 0 y 1. Un qubit es un vector de C2 , por lo tanto lo podemos representar
como |0i + |1i, lo cual representa el estado que es 0 y en 1 a la vez. Leer un qubit en
cambio se produce a travs de una operacin llamada medicin, y al medir un qubit, ste
colapsa, cambia su estado (dependiendo de la medicin puede cambiar por ejemplo a |0i
o |1i, pero tambin podra usarse otro operador de medicin que lo colapse a otra base).

1.3.2. Bits cunticos


Definicin 1.14 (Qubit). Un qubit o bit cuntico es un vector normalizado (es decir,
con norma 1) del espacio de Hilbert C2 .

Observacin. Considerando la base {|0i, |1i} de C2 , cualquier qubit puede escribirse como
|i = |0i + |1i, con ||2 + ||2 = 1.

Definicin 1.15 (n-qubits). Un sistema de n-qubits es un vector normalizado del espacio


n
n
C2 = C2 .
N
i=1

Observaciones.
En lugar de escribir |0i |1i |0i escribimos |01 . . . 0i.

De la misma manera, en ocasiones, en lugar de |0i (|0i + |1i) escribimos sim-


plemente |0i(|0i + |1i).
n
La base cannica del espacio C2 es {|0 . . . 00i, |0 . . . 01i, . . . , |1 . . . 11i}.

1.3.3. Operadores
Definicin 1.16 (Operador). Un operador de CN es una matriz cuadrada de dimensin
N a coeficientes complejos.

Definicin 1.17 (Adjunto). El adjunto de un operador A se nota por A y se define


como el operador transpuesto y conjugado de A. Es decir, si ij = hui |A|uj i son las
componentes de A, las componentes de A son ji

= huj |A|ui i = hui |A |uj i.

Propiedades. Sean A y B operadores de CN , a C y |i CN


Captulo 1. Introduccin a la computacin cuntica 15

(A ) = A (aA) = a A hA| = h|A


(A + B) = A + B (AB) = B A

Definicin 1.18 (Proyector). A los operadores de la forma P = |ih| se les llama


proyectores, ya que proyecta ortogonalmente un ket |i cualquiera sobre el ket |i:

P |i = |i h|i = a|i
| {z }
aC

   
1 0
Ejemplo 1.19. Tomemos la base {|0i, |1i}, con |0i = y |1i = . Un vector |i
0 1
cualquiera puede escribirse como |i = |0i + |1i. Por lo tanto

|0ih0|i = |0ih0|(|0i + |1i) = |0i( h0|0i + h1|0i) = |0i


| {z } | {z }
1 0

Definicin 1.20 (Operador hermtico). Un operador A es hermtico si A = A .

Definicin 1.21 (Operador unitario). Un operador U es unitario si U U = U U = I, o


lo que es lo mismo U = U 1 .

Propiedades. Para cualquier operador U unitario vale:

U preserva el producto interno: hU |U i = h|U U |i = h|i

U 1 es unitario.

Si {|1 i, . . . , |N i} es base ortonormal, entonces {U |1 i, . . . , U |N i} tambin lo es.

Definicin 1.22 (Operador de medicin). Un conjunto de proyectores {M1 , . . . , Mk } se


dice que es un operador de medicin si satisface
k
X
Mi Mi = I
i=1

Definicin 1.23 (Compuertas cunticas). A los operadores unitarios se les llama com-
puertas cunticas, como analoga a las compuertas lgicas de la computacin clsica, ya
que sern esos los que se utilizan para realizar el cmputo.

Observacin. La mayora de las compuertas cunticas que usaremos a lo largo del curso
sern adems de operadores unitarios, hermticos, por lo que coinciden con su inversa.

Definicin 1.24 (Evolucin). Se dice que un sistema representado por un ket |i evo-
luciona al sistema |i, cuando se realiza una de las siguientes operaciones:

Se premultiplica por una compuerta cuntica U :

|i = U |i
16 1.3. Bits cunticos y operadores

Se aplica un operador de medicin M = {M1 , . . . , Mk } de la siguiente manera:


Mi |i
|i = q para algn 1 i k

h|Mi Mi |i

La eleccin del Mi no se conoce de antemano, slo se conoce la probabilidad para


cada i, la cual viene dada por la siguiente ley:

p(i) = h|Mi Mi |i

Observaciones.
U M
Usaremos tambin la notacin |i
|i o |i |i para indicar que el ket |i
evoluciona al ket |i.
Cuando se quiera hacer evolucionar slo un qubit de un sistema de n-qubits, digamos
el qubit i, se premultiplica tensorialmente i 1 veces y se postmultiplica n i 1
veces la compuerta a aplicar por la matriz identidad. Ejemplo: U aplicada al segundo
qubit de un sistema de 2qubits, ser la compuerta I U .
Ejemplo 1.25. Consideramos el operador medicin de {M0 , M1 } con
   
1 0 0 0
M0 = |0ih0| = M1 = |1ih1| =
0 0 0 1

Podemos verificar que M0 M0 + M1 M1 = M0 + M1 = I, y por lo tanto es un operador de


medicin.
Sea |i = |0i + |1i, entonces, la probabilidad de que el proyector que se aplique sea
M0 es

p(0) = h|M0 M0 |i
= ( h0| + h1|)M0 (|0i + |1i)
= ||2 h0|M0 |0i + h0|M0 |1i + h1|M0 |0i + ||2 h1|M0 |1i
= ||2 h0|0i h0|0i + h0|0i h0|1i + h1|0i h0|0i +||2 h1|0i h0|1i
| {z } | {z } | {z } | {z } | {z } | {z } | {z } | {z }
1 1 1 0 0 1 0 0
2
= ||

Anlogamente, p(1) = h|M1 M1 |i = = ||2 .


Dado que el vector est normalizado, p(0) + p(1) = ||2 + ||2 = kk = 1.
Luego de aplicar este operador de medicin, la evolucin es la siguiente. Si se aplic el
proyector M0 , el sistema queda en el siguiente estado:
M0 |i M0 |i
q =p = |0i
p(0) ||
h|M0 M0 |i
2
||2
Este estado est normalizado ya que || = ||2
= 1.
M1 |i
Anlogamente si se aplic M1 se obtiene = ||
|1i.
p(1)
Captulo 1. Introduccin a la computacin cuntica 17

Definicin 1.26 (Compuertas ms comunes y operadores de Pauli). Las compuertas


cunticas ms importantes, por su utilidad en el diseo de algoritmos, son las siguientes:
La compuerta H de Hadamard:
H|0i = 1 (|0i + |1i)
 
2 1
1 1
1 (|0i
donde: H=
H|1i = 2
|1i) 2 1 1

La identidad I:  
I|0i = |0i 1 0
donde: I=
I|1i = |1i 0 1
La negacin X:  
X|0i = |1i 0 1
donde: X=
X|1i = |0i 1 0
El cambio de fase Z:
 
Z|0i = |0i 1 0
donde: Z=
Z|1i = |1i 0 1

La No-controlada CN OT :
 
CN OT |0xi = |0xi I 0
donde: CN OT =
CN OT |1xi = |1i X|xi 0 X

En particular, las matrices I, X, iXZ y Z son las llamadas matrices de Pauli en honor
a Wolfgang Pauli

1.4. Teorema del no-clonado


El teorema de no-clonado [Wootters y Zurek, 1982] dice que es imposible construir una
mquina universal de clonado. Es decir, no podemos copiar un qubit arbitrario, ya que no
existe ningn mtodo que pueda copiarlo sin saber su estado preciso, y como la medicin
cambia el qubit, no podemos saber su estado preciso. En consecuencia, no podemos copiar
un qubit arbitrario.
Teorema 1.27 (No-cloning). No existe ninguna compuerta cuntica U tal que para algn
|i CN y |i CN se cumpla U |i = |i.
Demostracin. Supongamos que existe la operacin U de la cual se habla en el teorema,
entonces, dados cualesquiera |i, |i CN , se cumple
U |i = |i
U |i = |i
Por lo tanto, hU |U i = h|i. Sin embargo, por un lado
hU |U i = h|U U |i = h|i = h|ih|i = h|i
Mientras por el otro h|i = h|ih|i = h|i2
Pero si h|i = h|i2 , entonces h|i = 0 o h|i = 1, lo cual es imposible: 0 implica
que los dos vectores tomados al azar son ortogonales, y 1 que son iguales.
18 1.5. Estados de Bell

1.5. Estados de Bell


Consideremos el siguiente circuito cuntico

|xi H
xy
|yi
Es decir, partiendo del estado inicial |xyi, se aplica H al primer qubit. Luego se aplica
CN OT a ambos, donde el primero es el de control (marcado con el punto negro). En
otras palabras, este circuito representa la siguiente ecuacin:

xy = CN OT (H I)|xyi

Las posibles salidas de este circuito, cuando x e y varan entre 0 y 1 son las siguientes:
H(1) 1 1 CN OT (1,2) 1
|00i (|0i + |1i) |0i = (|00i + |10i) (|00i + |11i) = 00
2 2 2
H(1) 1 1 CN OT (1,2) 1
|01i (|0i + |1i) |1i = (|01i + |11i) (|01i + |10i) = 01
2 2 2
H(1) 1 1 CN OT (1,2) 1
|10i (|0i |1i) |0i = (|00i |10i) (|00i |11i) = 10
2 2 2
H(1) 1 1 CN OT (1,2) 1
|11i (|0i |1i) |1i = (|01i |11i) (|01i |10i) = 11
2 2 2
Observacin. 00 = (X I)01 = (Z I)10 = (XZ I)11 .
A estos cuatro estados se les llama Estados de Bell, en honor a John S. Bell. Estos son
estados entrelazados, es decir, estados que no pueden representarse como el producto
tensorial de dos estados individuales.
A los estados entrelazados tambin se les llama estados EPR por Einstein, Podolsky, y
Rosen [1935] quienes detectaron, en pleno auge de las formulaciones de la teora cuntica,
que exista una accin a distancia que pareca no razonable. Por muchos aos se llam la
paradoja EPR. Lo que determinaron es que cuando se tiene un par entrelazado (fsica-
mente el estado representa por ejemplo el spin en un par de electrones, o la polarizacin
de un par de fotones), sucede que cuando se colapsa (por accin de la medicin) un estado
del par, el segundo tambin colapsar, incluso cuando fsicamente se encuentren a aos
luz de distancia. Con el tiempo se demostr experimentalmente que esto es exactamente
lo que sucede, y por lo tanto no hay paradoja. Tambin se demuestra que esto no contra-
dice la teora de la relatividad (que entre otras cosas determina que nada puede viajar
a mayor velocidad que la luz, ni siquiera la informacin), ya que no hay trasmisin de
informacin en este colapso a distancia.
Matemticamente la accin de medir un estado de un par se ve con el siguiente ejemplo:
Ejemplo 1.28. Consideremos el siguiente operador de medicin: M = {M0 , M1 } donde
M0 = |0ih0| y M1 = |1ih1|.
Aplicando este operador al primer qubit del estado 00 , se obtiene uno de los siguientes
resultados:
Captulo 1. Introduccin a la computacin cuntica 19

Si se aplica el proyector M0 (el cual lo expresamos como M0 I para que se aplique


M0 al primer qubit y la identidad al segundo), el estado resultante ser

(M0 I)00 (|00ih00| + |01ih01|) 12 (|00i + |11i)


p =q
p(0) 1 (h00| + h11|)(|00ih00| + |01ih01|) 1 (|00i + |11i)
2 2
1 (|00ih00|00i)
2
=q = |00i
1
2
h00|00ih00|00i

Anlogamente, si se aplica M1 se obtiene |11i

Es decir, al medir el primer qubit del estado entrelazado 00 , se obntiene |00i o |11i, es
decir que ambos qubits colapsan.

1.6. Usando los estados de Bell


Como se mencion en la seccin anterior, el colapso de un par entrelazado no transmite
informacin (y por eso no viola la teora de la relatividad), sin embargo, es posible utilizar
dicho colapso como canal de comunicacin, el cual necesita tambin de un canal clsico
para terminar la transmisin (y por ende, el canal clsico implica todas las limitaciones
impuestas por la relatividad).
El algoritmo cuntico descripto en la seccin 1.6.1, descripto por primera vez por Ben-
nett y Wiesner [1992], permite transmitir dos bit clsicos, enviando slo un bit cuntico,
utilizando un par entrelazado como canal de comunicacin. Es llamado codificacin su-
perdensa ya que se trata de codificar dos bits de informacin en un bit cuntico, o dicho
de otro modo: dos bits de informacin en el estado de una partcula cuntica.
El algoritmo descripto en la seccin 1.6.2, descripto por primera vez por Bennett, Bras-
sard, Crpeau, Jozsa, Peres, y Wootters [1993], permite enviar un bit cuntico enviando
dos bit clsicos y utilizando un par entrelazado como canal de comunicacin. Es llamado
teleportacin cuntica ya que se trata de mover el valor de un bit cuntico (recorde-
mos que un bit cuntico no puede ser copiado (ver Teorema 1.27)) a otro bit cuntico, o
dicho de otro modo: se trata de teletransportar el estado de una partcula a una nueva
partcula, destruyendo la primera.

1.6.1. Codificacin superdensa


El objetivo de esta tcnica es transmitir 2 bits clsicos enviando tan slo 1 qubit.
Los pasos a seguir por el emisor (a quien llamaremos Alice) y el receptor (a quien
llamaremos Bob) son los siguientes.

1. Alice y Bob preparan un estado 00 .

2. Alice se queda con el primer qubit del par y Bob se lleva el segundo. Podemos
considerar que estos dos pasos son la preparacin del canal cuntico.
20 1.6. Usando los estados de Bell

Observacin. El estado entrelazado no se puede separar en el sentido de que no


puede considerarse matemticamente como un qubit multiplicado tensorialmente
por otro qubit. Debemos considerarlos como un vector del espacio C2 C2 , es decir,
un vector de dimensin 4. Pero fsicamente son un par de electrones, o fotones
(u otra partcula elemental), las cuales s pueden ser separadas fsicamente (ms
all de que no es trivial el problema experimental que representa manipular dichas
partculas sin que interaccionen con el ambiente).

3. Alice aplica una transformacin a su qubit, de acuerdo a los bits que quiere enviar:
Z b1 X b2 , donde C 0 = I y C 1 = C.

4. Alice enva su qubit a Bob.

5. Bob aplica CNOT a los dos elementos del par y luego Hadamard al primero.

6. Bob realiza una medicin.

El circuito completo queda de la siguiente manera

Z b1 X b2 | H |b1 i

00 |

| |b2 i

donde la lnea punteada determina el paso 4, en el que Alice enva su qubit a Bob.
Ejemplo 1.29. Se quiere enviar los bits 11. Por lo tanto se aplica (ZX I) a 00 , con lo
que se obtiene 11 (en general, la aplicacin de la compuerta Z b1 X b2 cambia el estado 00
a b1 b2 ):

(ZX I)00 = (Z I) ((X I)00 )


 
1
= (Z I) (X I) (|00i + |11i)
2
 
1
= (Z I) (|10i + |01i)
2
1
= (|10i + |01i) = 11
2
El resto del circuito (a partir de la lnea punteada vertical) es el circuito inverso al de
Bell, y como toda compuerta unitaria es tal que U = U 1 , aplicando el circuito inverso
al de Bell se obtiene los estados iniciales. En este caso, |11i.

1.6.2. Teleportacin cuntica


El objetivo de esta tcnica es transmitir un qubit mediante el envo de dos bits clsicos.
Los pasos a seguir por Alice y Bob son los siguientes.

1. Alice y Bob preparan un estado 00 .


Captulo 1. Introduccin a la computacin cuntica 21

2. Alice se queda con el primer qubit del par y Bob se lleva el segundo.
3. Alice aplica CNOT entre el qubit a transmitir y el primero del par 00 , y luego
Hadamard al primero.
4. Alice realiza una medicin sobre los dos qubits en su posesin y enva el resultado
de la medicin (2 bits clsicos) a Bob.
5. Bob aplica una transformacin sobre su qubit, de acuerdo a los bits recibidos:
Z b1 X b2 .
El circuito completo queda de la siguiente manera
|i H

00

Z b1 X b2 |i
donde |i es el qubit a transmitir (o teleportar).
Ejemplo 1.30. Se quiere transmitir el qubit |i = |0i + |1i, entonces
 
1
|i 00 = (|0i + |1i) (|00i + |11i)
2
1
= (|0i(|00i + |11i) + |1i(|00i + |11i))
2
CN OT (1,2) 1
(|0i(|00i + |11i) + |1i(|10i + |01i))
2
 
H(1) 1 1 1
(|0i + |1i)(|00i + |11i) + (|0i |1i)(|10i + |01i)
2 2 2
1
= [|00i(|0i+|1i) + |01i(|1i+|0i) + |10i(|0i|1i) + |11i(|1i|0i)]
2
1 1
1XX
= |b1 b2 i(X b2 Z b1 )|i
2 b =0 b =0
1 2

Por lo tanto, aplicando Z b1 X b2 , Bob obtendr el estado original |i. (Ntese que para
toda compuerta U , U = U 1 ).
Observacin. Si se quiere escribir la compuerta Z b1 X b2 como dos dos compuertas,
b b b
debe escribirse b
X2 Z 1 , ya que en Z X primero se aplica la compuerta X 2 y
b 1 2

luego Z b1 .

1.7. Paralelismo Cuntico


Consideremos una funcin f : {0, 1} {0, 1}. Clsicamente para obtener todos los
resultados posibles de esta funcin, es necesario evaluarla tantas veces como sea el cardinal
del dominio (2 en este caso, una evaluacin para la entrada 0, y otra para la entrada 1).
22 1.7. Paralelismo Cuntico

Esta es una funcin que toma un bit y devuelve un bit. Si fuese un bit cuntico, sera
posible evaluar la funcin en una superposicin de 0 y 1 (por ejemplo 12 (|0i + |1i)), lo
cual nos dara como resultado una superposicin de f aplicada a 0 y a 1.
El mtodo es el siguiente. Primero se debe construir una matriz unitaria Uf de C4 que
calcule la funcin, de la siguiente manera:

Uf |x, 0i = |x, f (x)i

En realidad, aunque vamos a usar la definicin que acabamos de dar, se debe definir
tambin qu sucede cuando el segundo qubit es |1i, por lo que esta compuerta se define
ms generalmente como Uf |x, yi = |x, y f (x)i, donde es la suma mdulo 2.
Lo que se pretende es aplicar f a todas las entradas posibles, por lo que primero se aplicar
Hadamard al |0i, a fin de obtener una superposicin, y luego se aplicar la compuerta
Uf . El circuito es el siguiente:

|0i H
|0,f (0)i+|1,f (1)i
Uf |i =
2
|0i
Es decir:
H(1) 1 1 Uf 1
|00i (|0i + |1i)|0i = (|00i + |10i) (|0, f (0)i + |1, f (1)i)
2 2 2
La salida de este circuito es un estado que es superposicin de todos los resultados posibles
de la aplicacin de la funcin f . Y la compuerta Uf fue utilizada una sola vez. El problema
ahora pasa porque el resultado es una superposicin de todos los resultados posibles, y
al querer leerlo (es decir, al medirlo), ste colapsar a uno de los dos. El problema de
los algoritmos cunticos pasa por utilizar la superposicin de manera inteligente para
aprovechar el paralelismo, pero obteniendo el resultado buscado y no una superposicin
de resultados sin utilidad.
En el siguiente captulo mostraremos algunos de los algoritmos que, haciendo uso del
paralelismo, consiguen ganancias en complejidad respecto a su contrapartida clsica.
Captulo 2

Algoritmos cunticos y aplicacin a


criptografa

En este captulo veremos algunos de los algoritmos cunticos ms conocidos. En particu-


lar, los algoritmos de Deutsch [1985] y de Deutsch y Jozsa [1992], que pueden considerarse
como los primeros algoritmos cunticos que hacen uso del paralelismo (ver Seccin 1.7).
El algoritmo de Grover [1996], que es uno de los que motiv que los investigadores en
computacin se interesaran en el rea. No se incluye el algoritmo de Shor [1997], el otro
importante algoritmo que motiv a investigadores en computacin a adentrarse en el rea.
Finalmente, el ltimo ejemplo es una aplicacin directa de la fsica cuntica en cripto-
grafa, diseado por Bennett y Brassard [1984], la cual no sigue el esquema de los otros
algoritmos cunticos presentados, pero es tambin el puntapi de un rea de investigacin
activa dentro de la computacin cuntica.

2.1. Algoritmo de Deutsch


El objetivo de este algoritmo es saber si una funcin que toma un bit y devuelve un bit,
es constante o no.
El algoritmo se resume en el siguiente circuito

|0i H H
Uf
|1i H

Observacin. Uf es la compuerta definida en la Seccin 1.7, la cual consideraremos que


existe sin dar ms detalles de su construccin.

Uf |x, yi = |x, y f (x)i

Las primeras dos compuertas Hadamard, aplicadas a |0i y |1i, producen lo siguiente:
H(1,2) 1 1 1 1
|01i (|0i + |1i) (|0i |1i) = |xi (|0i |1i) = (|x, 0i |x, 1i) (2.1)
2 2 2 2

donde |xi = 1 (|0i + |1i) es una abreviacin introducida por comodidad.


2

23
24 2.2. Algoritmo de Deutsch-Jotza

La aplicacin de Uf sobre el estado (2.1) produce el siguiente estado:

1
Uf ( (|x, 0i |x, 1i))
2
1
= (Uf |x, 0i Uf |x, 1i)
2
  (2.2)
1 1 1
= (|0, f (0)i + |1, f (1)i) (|0, 1 f (0)i + |1, 1 f (1)i)
2 2 2
1
= (|0, f (0)i + |1, f (1)i |0, 1 f (0)i |1, 1 f (1)i)
2
Si f (0) 6= f (1), (2.2) es igual a
  
1 |0i |1i |0i |1i
(|00i + |11i |01i |10i) =
2 2 2

en cambio si f (0) = f (1),


  
1 |0i + |1i |0i |1i
(|00i + |10i |01i |11i) =
2 2 2

Es decir, el primer qubit es |i, si f (0) 6= f (1) y |+i si f (0) = f (1). Aplicando
Hadamard al primer qubit, obtenemos |1i si ste era |i y |0i si ste era |+i.
 
|0i |1i
Si f (0) 6= f (1), aplicando Hadamard se obtiene |1i
2
 
|0i |1i
Si f (0) = f (1), aplicando Hadamard se obtiene |0i
2
es decir, aplicando Hadamard, se obtiene
 
|0i |1i
|f (0) f (1)i
2

Dado que el primer qubit es |0i o |1i, podemos medirlo y nos dar con probabilidad 1 el
valor 0 si f es constante y con probabilidad 1 el valor 1 si f no lo es.
Observacin. Este algoritmo hace uso del paralelismo, ya que la evaluacin de la funcin se
realiza una vez sobre el estado en superposicin de 0 y 1. El algoritmo clsico equivalente
hara dos evaluaciones de la funcin y una comparacin.

2.2. Algoritmo de Deutsch-Jotza


Este algoritmo es una generalizacin del anterior. Dada una funcin que toma n bits y
devuelve uno, el algoritmo permite distinguir si la funcin es constante o balanceada (o
sea, con la mitad de las entradas devuelve 0 y con la otra mitad 1). Slo se distinguen
esos dos casos, el algoritmo no es til para otro tipo de funciones.
Captulo 2. Algoritmos cunticos y aplicacin a criptografa 25

El circuito es el siguiente:
|0i H H

|0i H H
Uf
.. ..
. .
|1i H
La entrada de este algoritmo son n + 1 qubits: |0in |1i = |0 . . . 01i.
Aplicando las n + 1 compuertas Hadamard sobre la entrada, se obtiene
 n   X |xi  |0i |1i 
|0i + |1i |0i |1i
= (2.3)
2 2 2n 2
x{0,1}n

La compuerta Uf que se utiliza es una generalizacin del caso anterior definida por
Uf |x, yi = |x, y f (x)i
donde x son cadenas de n bits.
Es decir
Uf |x, 0i = |x, f (x)i Uf |x, 1i = |x, 1 f (x)i
Por lo tanto, aplicando Uf sobre el estado (2.3) se obtiene

X |xi  |0i |1i  X 1

|0i |1i

Uf = Uf |xi
2n 2 2 n 2
x{0,1}n x{0,1}n
X 1
= (Uf |x, 0i Uf |x, 1i)
2 n+1
x{0,1}n
(2.4)
X 1
= (|x, f (x)i |x, 1 f (x)i)
x{0,1}n
2n+1
 
X 1 |f (x)i |1 f (x)i
= |xi
2 n 2
x{0,1}n

Para simplificar la notacin, la compuerta Hadamard puede expresarse como sigue


)
H|0i = 12 (|0i + |1i) 1 X
1 H|xi = (1)xy |yi
H|1i = 2 (|0i |1i) 2 y{0,1}

De la misma manera, es posible generalizar la aplicacin de H a n qubits como sigue:



1 X 1 X
H n |x1 . . . xn i = (1)x1 z1 |z1 i (1)xn zn |zn i
2 z {0,1} 2 z {0,1}
1 n

1 X
= (1)xz |zi
n
2 z{0,1}n

donde x z = x1 z1 + . . . + xn zn .
26 2.3. Algoritmo de Bsqueda de Grover

Con esta notacin, se aplica Hadamard a los primeros n qubits del estado (2.4) (es decir,
al ket |xi), obteniendo

 
X 1 1 X
xz |f (x)i |1 f (x)i
(1) |zi
2n 2n 2
x{0,1}n z{0,1}n
(2.5)
X X (1)xz |zi  |f (x)i |1 f (x)i 
=
n n
2n 2
x{0,1} z{0,1}

Casos:

Si f es constante, el estado (2.5) es


X X (1)xz |zi  |0i |1i 

2n 2
x{0,1}n z{0,1}
n

Cuando z = 0, los primeros n qubits son


X |0in 2n n
n
= n
|0i = |0in
n
2 2
x{0,1}

Por lo tanto, dado que este vector tiene norma 1, el resto de los trminos de la
suma deben anularse, debido a que el resultado tiene que ser forzosamente un vector
normalizado. Por lo tanto, cuando f es constante, el estado (2.5) es
 
n |0i |1i
|0i
2
Es decir, midiendo los primeros n qubits se obtiene 0 . . . 0 en este caso.

Si f es balanceada (50 % de las veces devuelve 0 y 50 % devuelve 1), entonces para


z=0
X |0in  |f (x)i |1 f (x)i  n
 
x |0i |0i |1i
X
= (1) =0
n
2n 2 n
2n 2
x{0,1} x{0,1}

Es decir que los primeros n qubits no incluyen al qubit |0in , y por lo tanto, al
medir los primeros n qubits no se puede obtener 0 . . . 0 en este caso.

Conclusin: Si se obtiene |0in a la salida de la medicin, la funcin es constante, en otro


caso la funcin es balanceada.

2.3. Algoritmo de Bsqueda de Grover


Antes de analizar este algoritmo, son necesarias algunas compuertas extras: la compuerta
Orculo (Seccin 2.3.1), y la compuerta de inversin sobre el promedio (Seccin 2.3.2).
Captulo 2. Algoritmos cunticos y aplicacin a criptografa 27

2.3.1. Orculo

Dada una funcin de un bit en un bit f , la compuerta Uf definida en la Seccin 1.7, es


Uf |x, yi = |x, y f (x)i.
Si se elije y = |i = 12 (|0i |1i), entonces

 
1
Uf |x, yi = Uf |xi (|0i |1i)
2
1
= (Uf |x, 0i Uf |x, 1i)
2
1
= (|x, f (x)i |x, 1 f (x)i)
2
1
= |xi (|f (x)i |1 f (x)i)
2
f (x)
= (1) |x, yi

Dado que Uf no modifica el estado y, es posible omitirlo y tomarlo como parte de la


definicin de la compuerta. Entonces, definimos la compuerta

U |xi = (1)f (x) |xi

a la cual se le llama Orculo.

2.3.2. Inversin sobre el promedio


P
Sea el estado |i = 1/ 2n x{0,1}n |xi. Definimos la compuerta de Inversin sobre el
promedio como G = 2|ih| I. Es decir

G = 2|ih| I
1

2n
= 2 ...
 
1 12n I

2n
2n
1
2n 2n
2 2 2

2n
1 2n
2n
2 2 2

2n 2n
1 2n

=

.. .. ..
. . .
2 2 2
2n 2n
2n
1 2n 2n

P
La aplicacin de G sobre un estado cualquiera |i = x{0,1}n ax |xi es la siguiente
28 2.3. Algoritmo de Bsqueda de Grover


a0
..
G|i .
a2n 1

X 2ax
2 2 a0
2 n
1

2n x{0,1}n
2n


.. ..
..
. .
.
2 2

1
X 2ax

2n 2n a2n 1
n
2n
x{0,1}

Es decir:

X X X 2ay X
G ax |xi = ax |xi = (2A ax )|xi
2n
x{0,1}n x{0,1}n n
y{0,1} x{0,1}n

donde A es el promedio de los ax .

2.3.3. El algoritmo
El algoritmo de Grover es un algoritmo de bsqueda sobre una lista desordenada. Supo-
nemos una lista de tamao N , con N = 2n (observar que siempre es posible aumentar
la lista con datos irrelevantes para cumplir la condicin sobre N ). Los ndices de la lista
son x 0, 1n , es decir x = 0 . . . 2n 1.
El objetivo del algoritmo es localizar el x0 tal que f (x0 ) = 1, para una funcin booleana
f dada.
El input del circuito es |0in .

2.3.3.1. Paso 1: Se aplica Hadamard (H n )


El primer paso es generar una superposicin en todos los qubits.

H n 1 X
|0in |xi (2.6)
2n x{0,1}n

Este estado es una superposicin de todos los elementos de la lista. La idea del algoritmo
es subir la probabilidad de que al medir este estado obtengamos el elemento x0 .

2.3.3.2. Paso 2: Se aplica el orculo (U )


Aplicar el orculo es el equivalente a aplicar la funcin booleana f sobre la superposicin.

U 1 X

(2.6) (1)f (x) |xi (2.7)
2n x{0,1}n
Captulo 2. Algoritmos cunticos y aplicacin a criptografa 29

2.3.3.3. Paso 3: Se aplica la inversin sobre el promedio (G)

X  (1)f (x) 
(2.7) = |xi
2n
n
x{0,1} | {z }
ax
G
X

(2A ax )|xi
x{0,1}n

X X (1)f (y) (1)f (x)
= 2 |xi
2n 2n 2 n
x{0,1}n y{0,1}n
(2.8)

X X (1)f (y) 2(1)f (x) (1)f (x)


= 2 + |xi
2n 2n 2n 2n 2n
x{0,1}n y{0,1}n
y6=x

X X (1)f (y) 2 2n
= 2 + (1)f (x) |xi
x{0,1}n

y{0,1}n
2n 2n 2n 2n
y6=x

En el estado (2.8), el trmino x = x0 , con f (x0 ) = 1, el cual estamos buscando es el


siguiente:

2n 2 n
 
X 1 2 n 2 2
2 + |x0 i = (2 1) + |x0 i
2n 2n 2n 2n 2n 2n 2n 2n
y{0,1}n
y6=x0

2n+1 + 2n 4
 
= |x0 i
2n 2n

mientras que los otros trminos, donde x 6= x0 , son


n
 n+1 n

X 1 2(1) 2 2 2 2 4
2 + + |xi =
|xi
y{0,1}n 2n 2n 2n 2n 2n 2n 2n 2n

y6=x0
y6=x

El algoritmo ha cambiado las amplitudes del estado, aumentando la amplitud del estado
x0 y disminuyendo las otras.
Repitiendo este proceso (pasos 2 y 3) se va subiendo la amplitud del estado que se
quiere encontrar y disminuyendo las otras. Sin embargo es cclico: pasado cierto nmero
de repeticiones, esa amplitud vuelve a decrecer. En la Seccin 2.3.4 se calcula el nmero
optimo de repeticiones para obtener la amplitud mxima. Cuando la amplitud es mxima,
se realiza una medicin, obteniendo el estado x0 con la mxima probabilidad. En la
Seccin 2.3.4 se muestra que la probabilidad de error tiene cota mxima en 1/2n .
30 2.3. Algoritmo de Bsqueda de Grover

Ejemplo
Sea una lista de 24 = 16 elementos, de los que slo uno, x0 , verifica la propiedad f (x0 ) = 1.
El algoritmo comienza por tomar el estado |0i4 y aplicar H 4 obteniendo,
1 X
|xi
4 4
x{0,1}

Inicialmente todas las amplitudes son iguales a 1/4. Se aplica el orculo y se obtiene
1 X
(1)f (x) |xi
4 4
x{0,1}

Luego se aplica la inversin sobre el promedio, y la nueva amplitud del estado x0 ser
25 + 24 4 11
= = 0,6875
24 24 16
y para el resto de los x la amplitud ser
25 24 4 3
= = 0,1875
24 24 16
Con las sucesivas repeticiones de la aplicacin del orculo y la inversin sobre el promedio,
se obtienen las siguientes amplitudes:
Repeticin Amplitud de x0 Amplitud de x 6= x0 Probabilidad de error
1 0.6875 0.1875 0.527
2 0.953125 0.078125 0.092
3 0.98046875 -0.05078125 0.039
A partir de la iteracin 4 la probabilidad de error comienza a subir, por lo tanto el nmero
ptimo de iteraciones es 3, con una probabilidad de error de 0,039.

2.3.4. Clculo del nmero ptimo de iteraciones


Luego de k iteraciones x0 tendr una amplitud bk y el resto tendrn todos una amplitud
mk . Es decir, el estado ser X
bk |x0 i + mk |xi
x{0,1}n
x6=x0

En cada iteracin se aplica el orculo U , el cual cambia el signo de bk , y luego G. Es


posible definir recursivamente las amplitudes en la repeticin k:

1
m0 = b0 =
2n (2n 1)mk bk
mk+1 = 2Ak mk donde Ak =
2n
bk+1 = 2Ak + bk
Captulo 2. Algoritmos cunticos y aplicacin a criptografa 31

Las frmulas cerradas para estas recursiones son


1
mk = n cos((2k + 1))
2 1
bk = sen((2k + 1))
r n r
2 1 1
donde cos() = n
y sen() = .
2 2n
Para conseguir la mnima probabilidad de error, se debe minimizar |mk |. Notar que mk =
1
0 si y slo si (2k + 1) = , es decir, si k = .
2 4 2
Sin embargo, dado que k es el nmero de repeticiones, debe ser entero, por lo tanto, el
nmero ptimo de iteraciones es  

k=
4
1,
Para calcular una cota de la probabilidad de error, observar primero que que |k k|
2
entonces

| (2k + 1)| = |(2k + 1) (2k + 1)| = |2(k k)|

2
Con esto, podemos determinar que la probabilidad de error luego de k iteraciones es
1
(2n 1)(mk )2 = cos2 ((2k + 1)) = sen2 ( (2k + 1)) sen2 () = n
2 2
En el ejemplo anterior


k =

q =3
1
4asen( 16 )
1
y la probabilidad de error es 0,039 = 0,0625.
24

2.4. Aplicacin criptogrfica


2.4.1. One-time pad
Este es un mtodo de criptografa clsica [Vernam, 1926] que consiste en compartir una
secuencia de bits (clave) del largo del mensaje a transmitir y aplicar la operacin reversible
XOR para cifrar y descifrar. (Ver Figura 2.1). Las claves deben ser secretas y no deben
ser reutilizadas.
Este mtodo es 100 % seguro: un 0 en el mensaje encriptado puede significar un 0 en el
mensaje original y un 0 en la clave, o un 1 en el mensaje y un 1 en la clave. Lo mismo
sucede con un 1 en el mensaje encriptado. Es decir que adivinar la clave tiene la misma
probabilidad que adivinar el mensaje original. La nica debilidad de este mtodo es la
predistribucin de claves, ya que el canal que se use para distribuirla podra ser vulnerado.
El mtodo cuntico que se describe a continuacin, QKD-BB84 (por Quantum Key Dis-
tribution de Bennett y Brassard [1984]), es justamente un mtodo para la distribucin
segura de claves.
32 2.4. Aplicacin criptogrfica

Figura 2.1: One-Time pad

2.4.2. Criptosistema Cuntico QKD-BB84


La idea es transmitir una clave binaria por un canal inseguro.
Para transmitir el bit 0, Alice (el emisor) puede elegir, al azar, la base {|0i, |1i} (a la que
llamaremos esquema +) y considerar 0 |0i, o la base {|i, |+i} (a la que llamaremos
esquema ) y considerar 0 |i. Anlogamente al bit 1 lo codificamos como |1i en el
esquema + o como |+i en el esquema .
Bob realizar una medicin sobre el estado recibido eligiendo al azar entre el esquema
+ y el esquema . Ver ejemplo en Figura 2.2. El paso final es intercambiar informacin
(por un canal abierto) de los esquemas utilizados, y slo conservar los bits producidos
usando el mismo esquema.

1 |1i 1
(1) Alice Esquema + Esquema + Bob

1 |1i 1o0
(2) Alice Esquema + Esquema Bob

Figura 2.2: Ejemplo: (1) Alice transmite un 1 codificado mediante el esquema + y Bob
elije al azar el esquema + obteniendo un 1 (2) si Bob elige el esquema obtiene 0 1
con probabilidad 1/2.

El algoritmo paso a paso:


1. Alice comienza a transmitir una secuencia de 0 y 1, elegidos aleatoriamente, alter-
nando los esquemas + y tambin aleatoriamente.
Captulo 2. Algoritmos cunticos y aplicacin a criptografa 33

2. Bob recibe la secuencia y va alternando las mediciones entre los esquemas + y


aleatoriamente.

3. Alice le transmite a Bob la sucesin de esquemas empleada.

4. Bob le informa a Alice en qu casos utiliz el mismo esquema.

5. Usando solamente los bits de los esquemas idnticos a dos puntas, ambos han defi-
nido una sucesin aleatoria de bits que servir como one-time pad de encriptacin
para transmisiones futuras por cualquier canal.

Esquemas de Alice + + + +
Valores de Alice |i |0i |0i |+i |i |0i |i |1i
Esquemas de Bob + + + +
Valores de Bob |0i |+i |0i |+i |1i |0i |i |i

Coincidencias
Clave 0 1 0 0

6. Alice y Bob intercambian hashes de las claves (en bloques) para aceptarla o descar-
tarla.

Inviolabilidad Este protocolo es, en teora, inviolable. Supongamos que Cliff espa el
canal de comunicacin entre Alice y Bob e intenta recuperar la clave. Cliff est en la
misma situacin que Bob y no conoce cul esquema es el correcto, + o . Por lo tanto
elige al azar y se equivocar, en promedio, la mitad de las veces.
En el paso 5 Alice y Bob se ponen de acuerdo en cules valores tomar en cuenta (las coin-
cidencias de la secuencia de esquemas). Esta informacin no le es til a Cliff porque slo
en la mitad de las veces habr usado el detector correcto, de manera que mal interpretar
sus valores finales.
Adems el QKD brinda el mtodo para que Alice y Bob puedan detectar el potencial
espionaje de Cliff:
Imaginemos que Alice envi un 0 con el esquema (es decir, el qubit |i). Si Cliff usa el
esquema +, colapsar el qubit a |0i o |1i. Si Bob usa el esquema y mide |i coincide con
lo enviado por Alice, pero si mide |+i Alice y Bob descubrirn esa discrepancia durante
el intercambio de hashes, por lo tanto descartarn el bloque.
34 2.4. Aplicacin criptogrfica
Captulo 3

Introduccin a la mecnica cuntica

3.1. Postulados de la mecnica cuntica


En el Captulo 1 vimos los postulados de la mecnica cuntica sin mencionarlo, desde
un punto de vista matemtico formal. Revisitaremos los mismos postulados, nombrn-
dolos como tales. Estos cuatro postulados definen el entorno matemtico conocido como
mecnica cuntica.
Postulado 1 (Espacio de estados). Todo sistema fsico cuntico aislado tiene
asociado un espacio vectorial complejo con producto escalar conocido como el
espacio de estados del sistema. El sistema se describe completamente por un
vector de estado, el cual es un vector unidad en el espacio de estados.

Postulado 2 (Evolucin). La evolucin de un sistema fsico cuntico aislado se


describe por una transformacin unitaria. Es decir, el estado |i del sistema en
el tiempo t1 se relaciona con el estado | 0 i del sistema en el tiempo t2 a travs
del operador unitario U , el cual slo depende de los tiempos t1 y t2 .

| 0 i = U |i

El postulado anterior se puede tomar con tiempo continuo, para lo cual hace falta una
ecuacin diferencial, y el postulado se transforma en el siguiente:
Postulado 20 . La evolucin del estado de un sistema fsico cuntico aislado es
descripta por la ecuacin de Shcrdinger,

d|i
i~ = H|i
dt
En esta ecuacin, ~ es una constante fsica conocida como constante de Planck
cuyo valor debe ser determinado experimentalmente. El valor exacto no es im-
portante, en la prctica es comn absorber el valor ~ en H y tomando ~ = 1. El
operador H no es la compuerta Hadamard vista anteriormente sino un operador
hermtico fijo conocido como el Hamiltoniano del sistema.

35
36 3.1. Postulados de la mecnica cuntica

Postulado 3 (Medicin cuntica). La medicin cuntica se describe por una


coleccin {Mm } de matrices de medicin. Dichas matrices actan en el espacio
de estados del sistema que se mide. El ndice m refiere a los resultados posibles de
la medicin. Si el estado del sistema es |i, inmediatamente antes de la medicin,
entonces la probabilidad de que el resultado m ocurra viene dado por

p(m) = h|Mm Mm |i

y el estado del sistema luego de la medicin es

Mm |i
q

h|Mm Mm |i

Las matrices satisfacen la ecuacin de completitud,


X

Mm Mm = I
m

La ecuacin de completitud expresa el hecho de que las probabilidades suman


uno: !
X X X

1= p(m) = h|Mm Mm |i = h| Mm Mm |i
m m m

Postulado 4 (Sistema compuesto). El espacio de estados de un sistema fsico


compuesto es el producto tensorial de los espacios de estados de los componentes.
Ms an, si tenemos sistemas enumerados de 1 a n, donde el sistema i est en el
estado |i i, el estado conjunto del sistema total es

|1 i |2 i |n i

3.1.1. Medicin proyectiva


Un caso particular del postulado 3 es el conocido como medicin proyectiva. De hecho, la
medicin general es equivalente a las mediciones proyectivas ms operaciones unitarias.
Por lo tanto, en general, usaremos slo mediciones proyectivas.

3.1.1.1. Preliminares
Definicin 3.1 (Autovectores y autovalores). Un autovector de un operador lineal A en
un espacio vectorial dado es un vector no-nulo |vi tal que A|vi = v|vi, donde v es un
nmero complejo conocido como autovalor de A correspondiente a |vi.

Observacin. En la definicin anterior, notar que v 6= |vi. De hecho, v C y |vi C2 .


La v que aparece en |vi es simplemente una etiqueta, un nombre, para el vector.
Captulo 3. Introduccin a la mecnica cuntica 37

Ejemplo 3.2. Consideremos la matriz de Pauli iXZ


iXZ = i(|0ih1| + |1ih0|)(|0ih0| |1ih1|)
= i(|0ih1|0ih0| |0ih1|1ih1| + |1ih0|0ih0| |1ih0|1ih1|)
= i(|1ih0| |0ih1|)
 
0 i
O, en su notacin matricial, iXZ =
i 0
Queremos buscar un vector |vi = |0i + |1i tal que iXZ|vi = v|vi, para algn v, y con
k|vik = 1. Es decir:
i(|1ih0| |0ih1|)(|0i + |1i) = i(|1i |0i) = i|0i + i|1i
debe ser igual a v(|0i + |1i), con ||2 + ||2 = 1.
Por lo tanto,

i 2
+ ||2 = 1
s
|v|

v

||2 + ||2 = 1 || =



v = i
i
|v| + 1
=

v = i

v 
= i

i
2
v =1
v = i


v

1 1
|| = || =



2 o 2

= i
= i
v=1 v = 1

Tomando, por ejemplo, v = 1 y = 1/ 2 tenemos = i/ 2, y por lo tanto 1 es un

autovalor de iXZ con autovector 1/ 2(|1i i|0i).
Definicin 3.3 (Funcin caracterstica). La funcin caracterstica de un operador lineal
A es c(x) = det |A xI|.
Teorema 3.4. Las soluciones a la ecuacin c(x) = 0 son los autovalores del operador
A.
Ejemplo 3.5. En el ejemplo anterior, podemos ver que
c(x) = det |iXZ xI|
= det |i(|1ih0| |0ih1|) x(|0ih0| + |1ih1|)|
= det | x|0ih0| i|0ih1| + i|1ih0| x|1ih1||
= (x)2 (i2 )
= x2 1
Y tenemos c(x) = 0 x2 1 = 0 x = 1.
Definicin 3.6 (Autoespacio). El autoespacio correspondiente un autovalor v de un
operador linear A es el conjunto de vectores que tienen a v como autovalor.
Ejemplo 3.7. Siguiendo con el ejemplo anterior, el autoespacio correspondiente al auto-
valor 1 del operador iXZ es {|1i i|0i | C}.
Teorema 3.8. El autoespacio de un autovalor v de un operador lineal A en un espacio
vectorial V es un subespacio vectorial de V .
38 3.1. Postulados de la mecnica cuntica

3.1.1.2. Medicin proyectiva


Definicin 3.9. Una medicin proyectiva es descripta por un observable, M , el cual es un
operador hermtico en el espacio de estados del sistema que es objeto de la observacin.
El observable tiene descomposicin espectral (es decir, factorizacin a forma cannica)
dada por: X
M= mPm
m
donde Pm es el proyector al autoespacio de M con autovalor m. Los posibles resultados
de la medicin corresponden con los autovalores m del observable. Luego de medir |i,
la probabilidad de obtener el resultado m viene dada por
p(m) = h|Pm |i
Al obtener el resultado m, el estado del sistema inmediatamente luego de la medicin es
P |i
pm
p(m)
Observacin. La medicin proyectiva se puede ver como un caso particular del Postula-
do 3. Si a las matrices que forman el operador medicin del Postulado 3 le agregamos
la condicin que cada Mm son hermticos y ortogonales, es decir Mm Mm0 = m,m0 Mm ,
entonces el Postulado 3 reduce a las mediciones proyectivas que acabamos de definir.
Ejemplo 3.10. Consideremos la medicin del observable Z.
c(x) = det |Z xI| = det |(1 x)|0ih0| (1 + x)|1ih1|| = (1 x)(1 x) = 1 + x2
Por lo tanto, las soluciones a c(x) = 0 son 1 y 1, y esos son los autovalores de Z. Dichos
autovalores corresponden a los autovectores |0i y |1i respectivamente.
Los proyectores P0 y P1 sobre los autoespacios {|0i | C} y {|1i | C} respecti-
vamente son P0 = |0ih0| y P1 = |1ih1|. Notar que
Z = |0ih0| |1ih1|

Entonces, la medicin de Z sobre el estado |i = (|0i+|1i)/ 2 da como resultado 1 con
probabilidad h|0ih0|i = 1/2. Similarmente, se obtiene resultado 1 con probabilidad
1/2.

3.1.2. Fase
Consideremos por ejemplo el estado ei |i , donde |i es un vector de estado, y es un
nmero real. Decimos que el estado ei |i es igual a |i, excepto por la fase global ei .
La medicin sobre ambos estados es la misma: Supongamos que Mm es una matriz de
un operador de medicin. Entonces las probabilidades de aplicar esa matriz vienen dadas

por h|Mm Mm |i y por h|ei Mm
Mm ei |i = h|Mm
Mm |i . Por lo tanto, desde un
punto de vista observacional, ambos estados son idnticos.
Por esta razn solemos ignorar las fases globales ya que son irrelevantes a las propiedades
observacionales de sistemas fsicos.
i
e = cos + i sin (aei es la llamada notacin exponencial de un nmero complejo, donde a su
mdulo y su argumento).
i i
e e = ei+i = e0 = 1.
Captulo 3. Introduccin a la mecnica cuntica 39

3.2. Operador densidad


Hasta ahora hemos visto la mecnica cuntica en trminos de vectores de estados. Una
formulacin alternativa es usando el operador densidad (o matriz densidad). Esta presen-
tacin es equivalente matemticamente, pero provee un lenguaje ms conveniente para
razonar en algunos escenarios comunes que se encuentran en la mecnica cuntica.

3.2.1. Preliminares
Definicin P
3.11
P(Traza). La traza de una matriz es la suma de sus elementos diagonales.
As, si A = i j ij |ui ihuj |, la traza se define por
X
tr(A) = ii
i

Teorema 3.12. Sea A = |ih|. Entonces, tr(A) = h|i.


P P
Demostracin. Sean |i = i ai |ui i y |i = j bj |uj i. Entonces,
X X X X
tr(A) = tr(|ih|) = tr( ai |ui i bj huj |) = tr( ai bj |ui ihuj |) = ai bi = h|i
i j ij i

Ejemplos 3.13.

1. Sea A = |ih| con |i = |0i y |i = |i. Entonces, A = 1/ 2(|0ih0| |0ih1|) y

tr(A) = 1/ 2.

Por otro lado, siguiendo el teorema, tr(A) = h|i = 1/ 2(h0|0i h0|1i) = 1/ 2.
2. Sea A = |+ih| = 1/2(|0ih0| |0ih1| + |1ih0| |1ih1|).
Entonces, tr(A) = 1/2 1/2 = 0 = h+|i.
Propiedades (de la traza de una matriz). Sean A y B matrices de la misma dimensin,
U un operador unitario y C. Entonces

1. tr(AB) = tr(BA) 3. tr(A) = tr(A)

2. tr(A + B) = tr(A) + tr(B) 4. tr(U AU ) = tr(A)

Demostracin. Slo mostramos la propiedad 4, las otras se dejan como ejercicio. De la


propiedad 1 se tiene tr(U AU ) = tr(U U A), y como U es unitaria, tr(U U A) = tr(A).
El siguiente teorema es muy til para evaluar la traza de un operador.
Teorema 3.14. Sea |i un vector normalizado y A un operador cuntico. Entonces

tr(A|ih|) = h|A|i

Demostracin. Ejercicio.
Ejemplo 3.15. tr(X|0ih0|) = h0|X|0i = h0|0ih1|0i + h0|1ih0|0i = 0.
40 3.2. Operador densidad

3.2.2. Conjuntos de estados cunticos


El operador densidad provee una manera conveniente de describir un sistema cuntico en
el cual el estado no se conoce del todo.

Definicin 3.16 (Operador o matriz densidad). Supongamos que un sistema cuntico


est en uno de un nmero de estados |i i, donde la probabilidad de que el estado sea |i i
viene dada por pi .
Decimos que el conjunto {pi , |i i} es el conjunto de estados puros. El operador densidad
o matriz densidad para este estado viene dado por la ecuacin
X
= pi |i ihi |
i

Ejemplo 3.17. El operador densidad del conjunto de estados puros {(1/4, |+i); (3/4, |1i)}
tiene operador densidad

= 1/4|+ih+| + 3/4|1ih1| = 1/8|0ih0| + 1/8|0ih1| + 1/8|1ih0| + 7/8|1ih1|

Es decir  
1/8 1/8
= 1/8 7/8

Observacin. Todos los postulados de la mecnica cuntica se pueden reformular en tr-


minos del operador densidad, y haremos eso ms adelante en esta seccin.

Evolucin Supongamos que la evolucin de un sistema cuntico cerrado se describe por


el operador unitario U . Si el sistema estaba inicialmente en el estado |i i con probabilidad
pi , entonces, luego de la evolucin el sistema estar en estado U |i i con probabilidad pi .
Por lo tanto, la evolucin del operador densidad se describe por

U
X X
= pi |i ihi |
pi U |i ihi |U = U U
i i

Ejemplo 3.18. Siguiendo con el Ejemplo 3.17, tomemos U = H, entonces el conjunto de


estados puros original {(1/4, |+i); (3/4, |1i)} evolucionar a {(1/4, |0i); 3/4, |i)} y su matriz
densidad puede calcularse de dos maneras equivalentes:

1. A partir del conjunto de estados puros:


 
0
5/8 3/8
= 1/4|0ih0| + 3/4|ih| = 5/8|0ih0| 3/8|0ih1| 3/8|1ih0| + 3/8|1ih1| =
3/8 3/8

2. O utilizando la igualdad dada ms arriba: 0 = HH = HH.


Captulo 3. Introduccin a la mecnica cuntica 41

Medicin Supongamos que realizamos una medicin descripta por las matrices Mm . Si
el estado inicial era |i i, entonces la probabilidad de obtener el resultado m es

Teor.3.14
p(m|i) = hi |Mm Mm |i i = tr(Mm Mm |i ihi |)

Usando la ley de probabilidades totales, la probabilidad de obtener el resultado m es


X
p(m) = p(m|i)pi
i
X

= pi tr(Mm Mm |i ihi |)
i
X

= tr( pi Mm Mm |i ihi |)
i
X

= tr(Mm Mm pi |i ihi |)
i

= tr(Mm Mm )

Si el estado inicial era |i i, el estado luego de obtener el resultado m ser

Mm |i i
|im i = q

hi |Mm Mm |i i

Por lo tanto, luego de una medicin que de resultado m tendremos el conjunto de estados
|im i, con probabilidades p(i|m) respectivamente. Por lo tanto, el operador densidad m
correspondiente es

X X Mm |i ihi |Mm
m = p(i|m)|im ihim | = p(i|m)
(3.1)
i i hi |Mm Mm |i i

Pero, usando teora de probabilidad condicional,



p(m i) p(m|i)pi tr(Mm Mm |i ihi |) hi |Mm Mm |i i
p(i|m) = = = pi
= p i
p(m) p(m) tr(Mm Mm ) tr(Mm Mm )

Substituyendo en (3.1), obtenemos



X Mm |i ihi |Mm Mm Mm
m = pi
=
i tr(Mm Mm ) tr(Mm Mm )

Ejemplo 3.19. Volviendo al conjunto de estados del Ejemplo 3.17, tenemos

= 1/8|0ih0| + 1/8|0ih1| + 1/8|1ih0| + 7/8|1ih1|

que corresponde a la matriz densidad del conjunto de estados {( 41 , |+i); ( 34 , |1i)}.


Utilizaremos la medicin proyectiva {P0 , P1 } con P0 = |0ih0| y P1 = |1ih1|.
42 3.2. Operador densidad

Entonces, la probabilidad de medir 0 viene dada por

tr(P0 P0 ) = |0ih0|(1/8|0ih0| + 1/8|0ih1| + 1/8|1ih0| + 7/8|1ih1|)


= tr(1/8|0ih0| + 1/8|0ih1|)
= 1/8 tr(|0ih0|) + 1/8 tr(|0ih0|)
= 1/8

Similarmente, la probabilidad de medir 1 por

tr(|1ih1|) = 1/8 tr(|1ih0|) + 7/8 tr(|1ih1|) = 7/8

Podemos ver que el conjunto de estados est en el estado |1i con probabilidad 3/4. Si ese
es efectivamente el estado inicial, la probabilidad de medir 1 sera 1. Por otro lado, en el
estado |+i, la probabilidad de medir 1 es 1/2. De ah que la probabilidad de medir 1 es

3/4 1 + 1/4 1/2 = 7/8

tal y como dedujimos con la traza.


Luego de realizar la medicin, si se midi 1, el estado del sistema podr ser descripto por
el operador siguiente:
P1 P1 7/8|1ih1|
1 = 7 = = |1ih1|
/8 7/8

Efectivamente, si se midi 1 y el estado inicial era |+i, el estado final ser |1i, pero lo
mismo pasa si el estado inicial era |1i, por lo que la matriz densidad es la matriz densidad
del conjunto de estados {1, |1i}.

Definicin 3.20. Un sistema cuntico donde el estado |i se conoce exactamente se dice


que est en un estado puro. En este caso, el operador densidad es simplemente = |ih|.
Si no es un estado puro, est en un estado mezcla (o mixto), o que es una mezcla de
diferentes estados puros.

Teorema 3.21. Para todo operador densidad se tiene tr(2 ) 1.


Ms an, la igualdad se cumple si y slo si est en un estado puro

Demostracin. Ejercicio.

Teorema 3.22. Un estado cunticoP que est en estado i con probabilidad pi , puede ser
descripto por la matriz densidad i pi i .

Demostracin. Supongamos que i viene de un conjunto {pij , |ij i de estados puros (con
i fijo). Por lo tanto, la probabilidadP estar en el estado |P
de P ij i viene dada por pi pij . Es
decir que la matriz densidad es = i j pi pij |ij ihij | = i pi i .

3.2.3. Propiedades generales del operador densidad


Definicin 3.23 (Operador positivo). Un operador A se dice positivo si para todo vector
|i, h|A|i 0. Si h|A|i > 0 para todo |i =
6 0, decimos que A es definido positivo.
Captulo 3. Introduccin a la mecnica cuntica 43

Teorema 3.24. Si A es un operador positivo, entonces existe una descomposicin A =


+
P
j j |jihj| donde los vectores |ji son ortonormales y j R0 son autovalores de A.

Teorema 3.25 (Caracterizacin de operadores densidad). Un operador es el operador


densidad de un conjunto {pi , |i i} si y slo si satisface las siguientes condiciones:

1. tr() = 1

2. es un operador positivo

Demostracin.
P
) Sea = i pi |i ihi | un operador densidad. Entonces,

P P
1. tr() = i pi tr(|i ihi |) = i pi = 1.
2. Sea |i un vector arbitrario en el espacio de estados. Entonces,
!
X X X
h||i = h| pi |i ihi | |i = pi h|i ihi |i = pi |h|i i|2 0
i i i

) Sea cualquier operador positivo


Pcon traza igual a 1. Como es positivo, usando
el Teorema 3.24 tenemos = j j |jihj|, donde los vectores |ji son ortogonales
y j R+
P
0 son autovalores de . Por la condicin de traza 1, tenemos j j = 1.
Por lo tanto, un sistema en el estado |ji con probabilidad j tendr un operador
de densidad .

El Teorema 3.25 nos permite reformular el Postulado 1 para no depender de vectores, y


podemos entonces escribir todos los postulados en trminos del operador densidad.
Postulado 1. Todo sistema fsico cuntico aislado tiene asociado un espacio
vectorial complejo con producto escalar conocido como el espacio de estados del
sistema. El sistema se describe completamente por su operador densidad, el cual
es un operador positivo con traza 1, que acta en el espacio de estados del
P en estado i con probabilidad pi , entonces el
sistema. Si un sistema cuntico est
operador densidad del sistema es i pi i .

Postulado 2. La evolucin de un sistema fsico cuntico aislado se describe por


una transformacin unitaria. Es decir, el estado del sistema en el tiempo t1
se relaciona con el estado 0 del sistema en el tiempo t2 a travs del operador
unitario U , el cual slo depende de los tiempos t1 y t2 .

0 = U U
44 3.2. Operador densidad

Postulado 3. La medicin cuntica se describe por una coleccin {Mm } de


matrices de medicin. Dichas matrices actan en el espacio de estados del sistema
que se mide. El ndice m refiere a los resultados posibles de la medicin. Si
el estado del sistema es , inmediatamente antes de la medicin, entonces la
probabilidad de que el resultado m ocurra viene dado por

p(m) = tr(Mm Mm )

y el estado del sistema luego de la medicin es



Mm Mm

tr(Mm Mm )

Las matrices satisfacen la ecuacin de completitud,


X

Mm Mm = I
m

Postulado 4. El espacio de estados de un sistema fsico compuesto es el producto


tensorial de los espacios de estados de los componentes. Ms an, si tenemos
sistemas enumerados de 1 a n, donde el sistema i est en el estado i , el estado
conjunto del sistema total es 1 2 n .

3.2.4. El operador densidad reducido


Uno de los usos ms interesantes del operador densidad es para describir subsistemas
de un sistema cuntico compuesto. Tal descripcin viene dada por el operador densidad
reducido.

Definicin 3.26. Sean A y B dos sistemas fsicos tales que su estado es descripto por el
operador densidad AB . El operador densidad reducido para A se define por

A = trB (AB )

donde trB es la traza parcial sobre el sistema B, y es un operador lineal definido por

trB (|a1 iha2 | |b1 ihb2 |) = |a1 iha2 |tr(|b1 ihb2 |) = hb2 |b1 i|a1 iha2 |

para todo |a1 i, |a2 i en el espacio de estados de A y |b1 i, |b2 i en el espacio de estados de
B.

Ejemplos 3.27. Supongamos que tenemos un sistema cuntico en el estado AB = ,


donde es el operador densidad del sistema A y el del sistema B. Entonces,

A = trB ( ) = tr() =

Similarmente, B = .
Captulo 3. Introduccin a la mecnica cuntica 45


Un ejemplo menos trivial es el estado de Bell 00 = 1/ 2(|00i + |11i), que tiene el siguiente
operador densidad
  
|00i + |11i h00| + h11| |00ih00| + |11ih00| + |00ih11| + |11ih11|
= =
2 2 2

Haciendo la traza sobre el segundo qubit obtenemos el operador densidad del primer
qubit:

1 = tr2 ()
tr2 (|00ih00|) + tr2 (|11ih00|) + tr2 (|00ih11|) + tr2 (|11ih11|)
=
2
tr2 (|0ih0| |0ih0|) + tr2 (|1ih0| |1ih0|) + tr2 (|0ih1| |0ih1|) + tr2 (|1ih1| |1ih1|)
=
2
h0|0i|0ih0| + h0|1i|1ih0| + h1|0i|0ih1| + h1|1i|1ih1|
=
2
|0ih0| + |1ih1|
=
2
I
=
2

Notar que este es un estado mixto, ya que tr((I/2)2 ) = 1/2 < 1. Es decir que al estar
enredados, por ms que el estado de dos qubits sea un estado puro, el primer qubit slo
est en un estado mixto: es decir, un estado que no conocemos completamente.

3.2.4.1. Teleportacin cuntica y el operador densidad reducido

Podemos usar el operador densidad reducido para analizar el algoritmo de teleportacin.


Cuando presentamos el algoritmo de teleportacin (Seccin 1.6.2) dijimos que no contra-
dice la teora de la relatividad (que entre otras cosas determina que nada puede viajar a
mayor velocidad que la luz, ni siquiera la informacin), ya que no hay trasmisin de infor-
macin hasta que Alice no le enva (usando un canal clsico) el resultado de la medicin
a Bob. Podemos hacer esta afirmacin de manera ms rigurosa utilizando el operador
densidad reducido.
Antes de que Alice haga la medicin, el estado del sistema es

1
(|00i(|0i + |1i) + |01i(|1i + |0i) + |10i(|0i |1i) + |11i(|1i |0i))
2

por lo que al medir los dos primeros qubits, se obtendr

|00i(|0i + |1i) con probabilidad 1/4

|01i(|1i + |0i) con probabilidad 1/4

|10i(|0i |1i) con probabilidad 1/4

|11i(|1i |0i) con probabilidad 1/4


46 3.3. Descomposicin de Schmidt

Por lo tanto, el operador densidad del sistema es

1
= (|00ih00|(|0i + |1i)( h0| + h1|)
4
+|01ih01|(|1i + |0i)( h1| + h0|)
+|10ih10|(|0i |1i)( h0| h1|)
+|11ih11|(|1i |0i)( h1| h0|))

Por lo tanto, si hacemos la traza parcial sobre el sistema de Alice, obtenemos que operador
densidad del sistema de Bob es

1
B = ((|0i + |1i)( h0| + h1|) + (|1i + |0i)( h1| + h0|)
4
+ (|0i |1i)( h0| h1|) + (|1i |0i)( h1| h0|))
2(||2 + ||2 )|0ih0| + 2(||2 + ||2 )|1ih1|
=
4
|0ih0| + |1ih0|
=
2
I
=
2

Por lo tanto, el estado de Bob despus de que Alice hizo la medicin, pero antes de que
Bob obtuvo el resultado de esa medicin es I/2. Este estado no depende del estado |i que
se transmiti, y por lo tanto, cualquier medicin que haga Bob no contendr informacin
sobre |i, lo que previene que Alice use la teleportacin para enviar informacin a mayor
velocidad que la luz.

3.3. Descomposicin de Schmidt


Teorema 3.28 (Descomposicin de Schmidt). Sea |i un estado puro de un sistema
compuesto AB. Entonces existen estados ortonormales |iA i en el sistema A y estados
ortogonales |iB i en el sistema B tal que
X
|i = i |iA i|iB i
i

donde para todo i, i R+ 2i = 1. A los i se los conoce como coeficientes


P
0 tales que i
de Schmidt.

Corolario 3.29. Sea |i un estado puro de un sistema compuesto AB. Entonces


X X
A = 2i |iA ihiA | y B = 2i |iB ihiB |
i i
Captulo 3. Introduccin a la mecnica cuntica 47

P
Demostracin. Por el Teorema 3.28, |i = i |iA i|iB i. Por lo tanto,
i
! !
X X
AB = i |iA i|iB i j hjA |hjB |
i j
X
= i j |iA i|iB ihjA |hjB |
ij
X
= i j (|iA ihjA | |iB ihjB |)
ij

Entonces
X X X
A = trB (AB ) = i j trB (|iA ihjA ||iB ihjB |) = i j hiB |jB i|iA ihjA | = 2i |iA ihiA |
ij ij i

Anlogamente, B = 2i |iB ihiB |.


P
i

|00i + |01i + |11i


Ejemplo 3.30. Sea |i = .
3
Primero debemos hallar la descomposicin de Schmidt de este estado, para luego obtener
los operadores densidad reducidos.
Llamamos A a la matriz de coeficientes de |i:
1
A = (|0ih0| + |0ih1| + |1ih1|)
3
Buscamos los autovalores de A A
1 1
A A = (|0ih0| + |1ih0| + |1ih1|) (|0ih0| + |0ih1| + |1ih1|)
3 3
1
= (|0ih0| + |0ih1| + |1ih0| + 2|1ih1|)
3
Vemos que det(A A Ix) = x2 x + 91 , por lo tanto, los autovalores de A A son

3+ 5 3 5
1 = y 2 =
6 6
Sean v1 = 1 |0i + 1 |1i un autovalor de norma 1 asosiado a 1 . Entonces
1 + 1 1 + 21
A Av1 = |0i + |1i (3.2)
3 3
y por otro lado
3+ 5 3+ 5
1 v1 = 1 |0i + 1 |1i (3.3)
6 6
Tomando (3.2) = (3.3), y kv1 k = 1 tenemos

1 + 1 3 + 5 2
=

1 |1 |2 =

3 6


1 + 21 3+ 5 = 5 + 5
= 1 | |2 =
5 + 5

3 6 1

||2 + ||2 = 1 10
48 3.3. Descomposicin de Schmidt

Tomamos, por ejemplo,


s s
2 5+ 5
1 = 1 =
5+ 5 10

Anlogamente, sea v2 = 2 |0i + 2 |1i un autovector de norma 1 asociado a 2 , entonces


tomamos s s
2 5 5
2 = 2 =
5 5 10
Av1 Av2
Sean u1 = 1
y u2 = 2
. Por la descomposicin de valores singulares de A, tenemos que
{u1 , u } son bases ortonormales de C2 y A = U DV , donde U = u1 |0i + u2 |1i,
2 } y {v1 , v2
D = 1 |00i + 2 |11i y V = v1 |0i + v2 |1i.
Luego, para la descomposicin de Schmidt tomamos |1A i =u1 , |2A i = u2 , |1B i = v1 y
|2B i = v2 , y como coeficientes de Schmidt 1 = 1 y 2 = 2 . Es decir,

|i = 1 |1A i|1B i + 2 |2A i|2B i

Por lo tanto, por el Corolario 3.29,

A = 1 |1A ih1A | + 2 |2A ih2A |


7
Por lo tanto, tr((A )2 ) = tr((1 |1A ih1A | + 2 |2A ih2A |)2 ) = 14 + 24 = .
9
Captulo 4

Introduccin al lambda clculo y a la


teora de tipos

4.1. PCF no tipado


En lugar de comenzar con lambda clculo, veremos PCF (Programming language for
computable functions ). PCF se puede ver como una extensin al lambda clculo con
algunas construcciones prcticas como nmeros naturales y el operador de punto fijo.
Dichas construcciones no son necesarias, ya que es posible codificar todas ellas en lambda
clculo, sin embargo, harn el razonamiento ms sencillo.
La mayor parte del material de este captulo ha sido tomado del libro de Dowek y Lvy
[2011].

4.1.1. Primeras definiciones


Dos construcciones de base:
Construccin explcita de funcin (sin nombre): x.t.
Aplicacin de una funcin a un argumento: tu.
Una constante para cada nmero natural.
Operaciones: +, , , / .
Test a cero: t?u : v devuelve u si t es 0 y v si t es > 0.

Observaciones.
Todo es funcin: Una funcin tomando un argumento constante u otra funcin, es lo
mismo. Por ejemplo, la funcin que toma una funcin y la compone consigo misma,
es
f.x.f (f x)

PCF es un lenguaje de programacin para funciones computables, basado en la lgica de Scott para
funciones computables LCF [Plotkin, 1977].

Dado que slo usamos naturales, consideraremos que n m = 0 si m > n, y / representa la divisin
euclidiana (con resto), donde la divisin por 0 da error.

49
50 4.1. PCF no tipado

No existen funciones que tomen varios argumentos. Por ejemplo, f (x, y) = x2 + y 2 ,


en PCF se escribe
x.y.x x + y y
| {z }
F

F 3 es una funcin que espera un argumento para elevarlo al cuadrado y sumarle 9.

La aplicacin asocia a la izquierda: F 34 = (F 3)4.


El punto (.) de la construccin y los dos puntos (:) de la construccin ? : son
equivalentes a parntesis de apertura que cierran lo ms a la derecha posible.
Ejemplo: x.(x?t : rs)u es x.((x?t : (rs))u).

Recursin

Cmo escribiramos la funcin factorial en PCF?

n.n?1 : n (F act}(n 1))


| {z
?

En PCF hay un smbolo (palabra clave) que liga una variable en su argumento tal
que f.G es el punto fijo de f.G.

f.G = (f.G)(f.G)

Por lo tanto,
F act = f. n.n?1 : n (f (n 1))
| {z }
G

Ejemplo 4.1.

F act 2 = (f.G)2
= ((f.G)F act)2
= (n.n?1 : n F act(n 1))2
= 2?1 : 2 F act 1
= 2 F act 1
= 2 (f.G)1
= 2 ((f.G)F act)1
= 2 (n.n?1 : n F act(n 1))1
= 2 1?1 : 1 F act 0
=21
=2

x es el punto fijo de f si y slo si f (x) = x.
Captulo 4. Introduccin al lambda clculo y a la teora de tipos 51

Let
La construccin let no es necesaria, pero ser til ms adelante y por lo tanto tambin la
vamos a considerar:
let x = t in u
es equivalente a (x.u)t.

4.1.2. Gramtica de PCF


Los trminos vlidos de PCF los podemos describir con una gramtica formal:
t ::= x | x.t | tt | n N | t + t | t t | t t | t/t
| t?t : t | x.t | let x = t in t
PCF es Turing completo, es decir que todas las funciones de enteros computables son
programables en PCF.

4.1.3. Semntica operacional


La gramtica nos dice qu trminos podemos escribir sintcticamente. La semntica ope-
racional nos da el significado de los trminos, al definir como operan.
Las siguientes reglas tienen la forma t u, y se lee t reduce a u:
(x.u)t u[t/x] ( reduccin)
p q n Si p q = n, con = +, , o /
0?t : u t
1?t : u u
x.t t[x.t/x]
let x = t in u u[t/x]
Tambin tendremos reglas de congruencia que permitirn reducir un trmino dentro de
otro:
tu tu tu tu tu
tv uv vt vu x.t x.u t v u v v tv u
Ejercicio: escribir las que faltan.
Observacin. La tercera regla, que permite reducir dentro de la funcin, corresponde a
la posibilidad de optimizar programas.

4.1.4. No terminacin
Ejemplos 4.2.
1. x.x x[x.x/x] = x.x
2. Sin : = (x.xx)(x.xx) xx[x.xx/x] = (x.xx)(x.xx) =
Ejercicio:
(f.x.f x)0
Termina?
52 4.1. PCF no tipado

Fix sin

Y = f.(x.f (xx))(x.f (xx))


Sea F una funcin cualquiera:

Y F (x.F (xx))(x.F (xx)) F (Y F )

Y F es el punto fijo de F !

f.G (f.G)(f.G)
| {z } | {z } | {z }
YF F YF

Ejercicio: escribir el factorial sin usar .

4.1.5. Captura de variables


Ejercicio: Reducir los siguientes trminos
1. (x.x.x)23

2. (x.y.((x.(x + y))x)54

3. let x = 4 in


let f = y.y + x in En las primeras versiones de Lisp, este
let x = 5 in
ejemplo daba 11 en lugar de 10.

f6

Tenemos definir precisamente qu significa t[u/x]. Lo definimos por induccin sobre t.

x[u/x] = u
y[u/x] = y
(x.t)[u/x] = x.t
(y.t)[u/x] = y.t[u/x] Si y
/ FV(u)
(y.t)[u/x] = z.t[z/y][u/x] Si y FV(u)
(tv)[u/x] = t[u/x]v[u/x]
n[u/x] = n
(t v)[u/x] = t[u/x] v[u/x]
(t?v1 : v2 )[u/x] = t[u/x]?v1 [u/x] : v2 [u/x]
(x.t)[u/x] = x.t
(y.t)[u/x] = y.t[u/x] Si y
/ FV(u)
(y.t)[u/x] = z.t[z/y][u/x] Si y FV(u)
(let x = t in v)[u/x] = let x = t[u/x] in v
(let y = t in v)[u/x] = let y = t[u/x] in v[u/x] Si y
/ FV(u)
(let y = t in v)[u/x] = let y = t[u/x] in v[z/y][u/x] Si y FV(u)
Captulo 4. Introduccin al lambda clculo y a la teora de tipos 53

Ejercicio: Definir, por induccin sobre t, FV(t).


Ejercicio: Definir, por induccin sobre t, BV (t), es decir, el conjunto de variables ligadas
de t (bounded variables).

4.2. Estrategias de reduccin


4.2.1. Primeras definiciones
Definicin 4.3. Notamos al cierre reflexivo y transitivo de . Es decir, si t u,
entonces, t = v0 v1 v2 vn = u, con n 0. Notamos + al cierre transitivo
de . Es decir, si t u, t = v0 v1 vn = u, con n 1.

Ejemplo 4.4. (x.x + 2)1 3 porque (x.x + 2)1 1 + 2 3.


Tambin, (x.x + 2)1 + 3, ya que (x.x + 2)1 6= 3.

Definicin 4.5.

1. Un trmino t est en forma normal si no existe u tal que t u.

2. Un trmino t es normalizable (o tiene forma normal) si existe u en forma normal


tal que t u.

3. Un trmino t es fuertemente normalizable si no existe una secuencia infinita v0 , v1 ,


. . . tal que t v0 v1 . . . . Es decir, toda secuencia de reduccin comenzada
en t debe ser finita y terminar en un trmino en forma normal.

Definicin 4.6. Sea R una relacin binaria, y R su cierre reflexivo y transitivo.

R satisface la propiedad del diamante si t R v1 y t R v2 t


implica que v1 R u y v2 R u para algn u.
v1 v2

u
R es Church-Rosser o confluente si R satisface la propiedad del diamante. Es
decir, si t R v1 y t R v2 implica que v1 R u y v2 R u para algn u.

R tiene formas normales nicas si t R v1 y t R v2 , para trminos en forma


normal v1 y v2 , implica v1 = v2 .

Lema 4.7.

1. Si R satisface la propiedad del diamante, entonces es Church-Rosser.

2. Si R es Church-Rosser, entonces tiene formas normales nicas.

Demostracin. Ejercicio.

Teorema 4.8. La relacin definida en la Seccin 4.1.3 (semntica operacional de PCF)


es Church-Rosser.
54 4.2. Estrategias de reduccin

Ejemplo 4.9. (x.((y.x + y)2))3

(x.x + 2)3 (y,3 + y)2

2+3
Pero esta propiedad, cuando hay trminos que no terminan, no es suficiente. Por ejemplo:

F act = f. n.n?1 : n f (n 1) = f.G


| {z }
G

Entonces:

F act 0 = (f.G)0
(G[F act/f ])0
(G[G[F act/f ]/f ])0
(G[G[G[F act/f ]/f ]/f ])0

F act 0 tiene un nico resultado, pero no cualquier camino llega a l.


Solucin (en este caso): cuando hay un ifz, reducir primero el ifz antes que sus ramas.
sto, como veremos luego, es una estrategia.
Otro ejemplo:

C0 = x,0
b1 = (f.x.f x)0

Entonces,

b1 = (f.x.f x)0 (x.(f.x.f x)x)0 (f.x.f x)0 = b1


| {z }
b2

Es decir,
b 1 b2 b1 b2
Por lo tanto, tenemos el siguiente diagrama:

C 0 b1 0

C 0 b2 C 0 b1 C 0 b2 C 0 b1 ...

En Caml,

let rec f x = f x in
let g x = 0 in
g (f 0)
Captulo 4. Introduccin al lambda clculo y a la teora de tipos 55

no termina nunca.
Mismo ejemplo en Java:

class Omega {
static int f (int x) {return f(x);}
static int g (int x) {return 0;}
static public void main (String [] args) {
System.out.println (g(f(0)));
}
}

La nocin de estrategia de reduccin permite definir el orden en el cual se debe reducir


un trmino.

Definicin 4.10. Llamamos radical (en ingls redex ) a un subtrmino de un trmino


que puede reducir.

4.2.2. Reduccin dbil


Ejemplo motivador:

(x.x + (4 + 5))3 3 + (4 + 5) 3+9 12

(x.x + 9)3

La direccin dice qu sucede cuando se ejecuta el programa.

La direccin comienza a ejecutar el programa antes de recibir los argumentos, es


decir, no ejecuta el programa sino que lo optimiza.

Definicin 4.11. Una estrategia de reduccin es dbil si no reduce nunca el cuerpo de


una funcin, es decir, si no reduce bajo .

Observacin. La estrategia dbil no optimiza programa, los ejecuta. Slo hace falta para
sto eliminar la regla
tu
x.t x.u

4.2.3. Call-by-name

C 0 b1 0

C 0 b2 C 0 b1 C 0 b2 C 0 b1 ...
56 4.3. PCF tipado

Definicin 4.12. La estrategia call-by-name reduce siempre el radical ms a la izquierda.


En caso de ser adems dbil, ser el ms a la izquierda que no est debajo de un .
Teorema 4.13 (Estandarizacin). Si un trmino reduce a un trmino en forma normal,
entonces la estrategia call-by-name termina.
Una ventaja de sta estrategia es el teorema de estandarizacin. Otra ventaja es que si
tenemos, por ejemplo (x,0)(Fact 10) no necesitamos calcular el factorial de 10. Por otro
lado, si tenemos (x.x + x)(Fact 10), tendremos que calcular el factorial de 10 dos veces.
De todas maneras, la mayora de los lenguajes que usan call-by-name usan alguna manera
de compartir informacin (por ejemplo, con punteros que dicen que (x.x + x)(Fact 10)
reduce a x + x, donde x es un puntero a Fact 10. A eso se le llama reduccin lazy.
Ejercicio: Escribir las reglas de reduccin y congruencia que implementan call-by-name.

4.2.4. Call-by-value
C 0 b1 0

C 0 b2 C0 b 1 C 0 b2 C 0 b1 ...

Definicin 4.14. A los trminos t de PCF tales que FV(t) = y que t est en forma
normal, se les llaman valores.
Definicin 4.15. La estrategia call-by-value consiste en evaluar siempre los argumentos
antes de pasarlos a la funcin. La idea es que
(x.t)v
reduce slo cuando v est en forma normal (si la estrategia es dbil, y slo reducimos
trminos cerrados, v es un valor).
En (x.x + x)(Fact 10) comenzamos por reducir el factorial, obtenemos 3628800 y recin
ah lo pasamos a la funcin. De esa manera el factorial es calculado una vez.
Ejercicio: Escribir las reglas que implementan call-by-value.
Observacin. Un poco de pereza es necesaria: ifz siempre debe evaluar primero la condi-
cin, estemos en call-by-name o call-by-value.

4.3. PCF tipado


4.3.1. Introduccin
Ejemplos motivadores:
(x.x + 1)x.x + 2 (x.x + 2) + 1
(x.x)?0 : 1 6
(x.x)1x.x 1x.x
Captulo 4. Introduccin al lambda clculo y a la teora de tipos 57

Todo es aplicable a todo! Sin restricciones. Sumar 1 a una funcin no tiene sentido. Hacer
un ifz sobre algo que no es un nmero o pasarle un argumento a un nmero, tampoco.
Idea: detectar este tipo de errores sintcticamente. Por ejemplo:

x.x recive un argumento y devuelve lo mismo 1 es una constante


(x.x)1 es una constante

Es decir, deducimos que no tiene sentido pasarle un argumento a (x.x)1, ya que es una
constante, y lo dedujimos sin tener que ejecutar el programa.

En matemticas:

Funcin: Dominio Codominio

Cualquier conjunto

Ejemplo:

f : Pares N
x
f (x) 7
2
Est bien definido f (3 + (4 + 1))? Hay que determinar si 3 + (4 + 1) pertenece al dominio,
es decir, si es par.
En general, determinar si un objeto cualquiera pertenece a un conjunto cualquiera es un
problema indecidible.
De todas maneras, x2 lo podemos calcular si x es un nmero (y no, por ejemplo, una
funcin), y poco importa si es par o no. As que vamos a restringir las clases de conjuntos
que se pueden utilizar como dominios. A estos conjuntos los llamamos tipos.

4.3.2. Gramtica de PCF tipado


Definicin 4.16. Los tipos de PCF los definimos inductivamente por:

nat (es decir N) es un tipo.

Si A y B son tipos, A B es un tipo que representa las funciones de A en B.

Teniendo tipos, tendremos que escribir de qu tipo son cada una de las variables. Como
slo nos vamos a interesar en trminos sin variables libres (slo los subtrminos tendrn
variables libres), es suficiente con escribir el tipo cuando se liga la variable. Por ejemplo,
en lugar de x.x la funcin identidad es una para cada tipo:

x : nat.x es la identidad sobre los naturales

x : nat nat.x es la identidad sobre las funciones de naturales en naturales.


58 4.3. PCF tipado

En y let tambin es necesario marcar el tipo de la variable ligada.


La gramtica de PCF tipado la definimos con una gramtica de tipos y una de trminos,
de la siguiente manera:

A ::= nat | A A
t ::= x | x : A.t | tt | n | t t | t?t : t | x : A.t | let x : A = t in t

donde = +, , , / y n N.

4.3.3. La relacin de tipado


Queremos definir inductivamente la relacin t : A (es decir, el trmino t tiene el tipo A).
Pero si hay variables libres en t, cmo las tipo? .
Por ejemplo:
x : nat.yx
Qu tipo tiene y? Claramente tiene que ser una funcin de nat en algo, pero cmo
defino ese algo?

Contextos Un contexto nos da tipos para variables, entonces, en vez de decir x :


nat.yx : nat nat, decimos, si y : nat nat, entonces x : nat.yx : nat nat. La
notacin que usamos es la siguiente:

y : nat nat ` x : nat.yx : nat nat


| {z }
contexto

Genricamente, queremos definir la relacin ` t : A que asocia un trmino t y un


contexto a un tipo A.

Definicin 4.17. La relacin de tipado ` t : A se define inductivamente por:

axv axc
, x : A ` x : A ` n : nat
, x : A ` t : B ` t : A B ` u : A e
i
` x : A.t : A B ` tu : B

` t : nat ` u : nat ` t : nat ` u : A ` v : A


ifz
` t u : nat ` t?u : v : A
, x : A ` t : A , x : A ` t : B ` u : A
let
` x : A.t : A ` let x : A = u in t : B

Donde son cuatro reglas, una para cada operacin aritmtica.



Dijimos que slo vamos a interesarnos por trminos cerrados (sin variables libres), pero como busca-
mos una definicin inductiva, necesitamos poder tipar cada subtrmino, y un subtrmino de un trmino
sin variables libres, puede perfectamente tener variables libres.
Captulo 4. Introduccin al lambda clculo y a la teora de tipos 59

Ejemplo 4.18. Tipar x : nat nat.x((y : nat.y + 2)3).


Sean = x : nat nat, y = , y : nat. Entonces,
axv axc
` y : nat ` 2 : nat
+
` y + 2 : nat
i axc
` y : nat.y + 2 : nat nat ` 3 : nat
axv e
` x : nat nat ` (y : nat.y + 2)3 : nat
e
` x((y : nat.y + 2)3) : nat
i
` x : nat nat.x((y : nat.y + 2)3) : (nat nat) nat

Ejercicio 1: tipar factorial.


Ejercicio 2: tipar x : A.xx para algn A.

4.3.4. Correctitud
Si deducimos el tipo A para un trmino (usando la Definicin 4.17), o sea, sin ejecutar
el programa, y luego ejecutamos el programa obteniendo u, entonces queremos que el
trmino u tienga el mismo tipo, ya que la intencin fue desde el principio saber qu
tipo de resultado voy a tener al ejecutar un programa (un nmero, una funcin, etc). El
teorema de subject reduction o de conservacin de tipos (Teorema 4.20) nos asegura eso
en el sistema que acabamos de definir. Para demostrar este teorema necesitaremos un
resultado previo (Lema 4.19).

Lema 4.19 (Substitucin). Si , x : A ` u : B y ` t : A, entonces ` u[t/x] : B.

Demostracin. Procedemos por induccin estructural sobre u.

u = x. Es decir que , x : A ` x : B, entonces B = A, y dado que x[t/x] = t, el caso


queda demostrado.

u = y. Es decir que , x : A ` y : B. Pero como x 6= y, se puede demostrar por induccin


en la relacin de tipado que ` y : B. Dado que y[t/x] = y, el caso queda
demostrado.

u = y : C.r. Es decir que , x : A ` y : C.r : B, por lo tanto B = C D y


, y : C, x : A ` r : D. Entonces, por hiptesis de induccin, , y : C ` r[t/x] : D, y
por la regla i , ` y : C.r[t/x] : B. Dado que y : C.r[t/x] = (y : C.r)[t/x], el
caso queda demostrado.

u = rs. Es decir que , x : A ` rs : B. Entonces , x : A ` r : C B y , x : A ` s : C,


y por hiptesis de induccin, ` r[t/x] : C B y ` s[t/x] : C. Por la regla e ,
tenemos ` r[t/x]s[t/x] : B. Notar que r[t/x]s[t/x] = (rs)[t/x], por lo que el caso
queda demostrado.

u = n. Es decir que , x : A ` n : B, por lo tanto B = nat y ` n : nat. Notar que


n[t/x] = n, por lo que el caso queda demostrado.
60 4.3. PCF tipado

u = r s. Es decir que , x : A ` r s : B, y entonces B = nat y tenemos , x : A `


r : nat y , x : A ` s : nat. Entonces, por hiptesis de induccin ` r[t/x] : nat
y ` s[t/x] : nat. Por lo tanto, por regla , ` r[t/x] s[t/x] : nat. Dado que
r[t/x] s[t/x] = (r s)[t/x], el caso queda demostrado.
u = r?s : o. Es decir que , x : A ` r?s : o : B, y entonces , x : A ` r : nat, , x : A ` s : B
y , x : A ` o : B. Por hiptesis de induccin, ` r[t/x] : nat, ` s[t/x] : B y
` o[t/x] : B. Entonces, por regla ifz, ` r[t/x]?s[t/x] : o[t/x] : B. Dado que
r[t/x]?s[t/x] : o[t/x] = (r?s : o)[t/x], el caso queda demostrado.
u = y : C.r. Es decir que , x : A ` y : C.r : B, y entonces C = B y , x : A, y :
B ` r : B. Por hiptesis de induccin, , y : B ` r[t/x] : B. Entonces, por regla
, ` y : B.r[t/x] : B. Dado que y : B.r[t/x] = (y : C.r)[t/x] el caso queda
demostrado.
u = let y : C = r in s. Es decir que , x : A ` let y : C = r in s : B, y entonces , y :
C, x : A ` s : B y , x : A ` r : C. Por hiptesis de induccin , y : C ` s[t/x] : B
y ` r[t/x] : C, y entonces por la regla let, ` let y : C = r[t/x] in s[t/x] : B.
Dado que let y : C = r[t/x] in s[t/x] = (let y : C = r in s)[t/x], el caso queda
demostrado.
Con el lema anterior podemos demostrar el siguiente teorema.
Teorema 4.20 (Subject reduction). Si ` t : A y t u entonces ` u : A.
Demostracin. Procedemos por induccin sobre la relacin .
(x : B.u)t u[t/x]. Entonces ` (x : B.u)t : A, por lo tanto ` x : B.u : B A
y ` t : B, y entonces , x : B ` u : A. Entonces, por el Lema 4.19, ` u[t/x] : A.
p q n si p q = n. Entonces ` p q : A, por lo tanto A = nat, y por la regla axc ,
` n : nat.
0?t : u t. Entonces ` 0?t : u : A, por lo que ` t : A.
1?t : u u. Entonces ` 1?t : u : A, por lo que ` u : A.
x.t t[x.t/x]. Entonces ` x.t : A, por lo tanto , x : A ` t : A. Entonces, por
Lema 4.19, ` t[x.t/x] : A.
let x : B = t in u u[t/x]. Entonces ` let x : B = t in u : A, por lo que , x : B ` u :
A y ` t : B. Entonces, por Lema 4.19, ` u[t/x] : A.
El teorema de Tait, o teorema de normalizacin fuerte (Teorema 4.21) nos dice que todo
trmino tipado que no contenga a , termina, independientemente de la estrategia de
reduccin elegida.
Teorema 4.21 (Normalizacin fuerte). Si ` t : A, y t no contiene a , entonces t es
fuertemente normalizante.
Qu sucede con = (x.xx)(x.xx)? No es tipable. Es decir, no existe un tipo A tal
que ` : A.
Ejercicio: Extender PCF con constructores para pares: (t, u), 1 (t, u) y 2 (t, u). Dar la
gramtica, semntica operacional y reglas de tipado.
Captulo 4. Introduccin al lambda clculo y a la teora de tipos 61

4.4. Inferencia de tipos simples


4.4.1. Introduccin
En muchos lenguajes el programador debe indicar el tipo de las variables. Por ejemplo

x : nat.x + 1

Sin embargo, en este caso es un poco innecesario, ya que la operacin + slo puede ocurrir
entre naturales, y por lo tanto era posible inferir que x deba ser de tipo nat.
Podemos entonces liberar al programador de escribir los tipos y escribir un algoritmo que
los infiera.

Estilo Curry. Escribimos variables sin tipos, como hicimos con PCF no tipado, y
definimos independientemente el lenguaje de tipos, como ya lo definimos.
As, en vez de ` x : nat.x + 1 : nat nat escribimos ` x.x + 1 : nat nat.

Gramtica

A ::= nat | A A
t ::= x | x.t | tt | n | t t | t?t : t | x.t | let x = t in t

Reglas de tipado

axv axc
, x : A ` x : A ` n : nat
, x : A ` t : B ` t : A B ` u : A e
i
` x.t : A B ` tu : B

` t : nat ` u : nat ` t : nat ` u : A ` v : A


ifz
` t u : nat ` t?u : v : A
, x : A ` t : A , x : A ` t : B ` u : A
let
` x.t : A ` let x = u in t : B

Ahora, para el mismo trmino, podemos derivar diferentes tipos. Por ejemplo:
axv axv
x : nat ` x : nat i x : nat nat ` x : nat nat i
` x.x : nat nat ` x.x : (nat nat) (nat nat)

podemos simplemente decir:


axv
x : X ` x : X i
` x.x : X X
donde X es una variable en el sentido de que desconocido, o cualquier tipo.
Definicin 4.22. Notamos A(X) a un tipo cualquiera que contiene alguna variable X.
Notamos a una substitucin de meta-variables por tipos.
62 4.4. Inferencia de tipos simples

Ejemplo 4.23. Sea = nat/X, nat nat/Y . Entonces,


(X Y ) = nat nat nat
Teorema 4.24. Si ` t : A(X), entonces ` t : A(X) para cualquier substitucin .
Ejemplo 4.25. Como vimos anteriormente, ` x.x : X X. Por lo tanto, tomando
= nat/X,
` x.x : nat nat
Tomando = (nat nat) nat/X tenemos
` x.x : ((nat nat) nat) ((nat nat) nat)

4.4.2. Algoritmo de Hindley


Supongamos que queremos tipar f ,2 + f 1, entonces ponemos en el contexto f : X y
tenemos que llegar a f : X ` 2 + f 1 : Y para algn X e Y . Dado que hay una suma,
tenemos que tipar f : X ` 2 : nat y f : X ` f 1 : nat, y como la suma slo puede ser nat,
sabemos que Y = nat. Por lo tanto tenemos f : X ` 2 : nat y f : X ` f 1 : nat. Entonces,
como es una aplicacin, tenemos que f : X ` f : Z nat y f : X ` 1 : Z. Entonces
Z = nat y X = nat nat. Por lo tanto:

axv axc
f : nat nat ` f : nat nat f : nat nat ` 1 : nat
axc e
f : nat nat ` 2 : nat f : nat nat ` f 1 : nat
+
f : nat nat ` 2 + f 1 : nat
i
` f ,2 + f 1 : nat nat

Es decir, que en este caso hay una nica solucin.


Vamos a describir la primera parte del algoritmo inductivamente como una relacin
`t A,
entre un contexto y un trmino t, con un tipo A y un conjunto de ecuaciones .
, x : A ` x A, `n nat,
, x : A ` t B, `t A, ` u B,
(X nueva)
` x.t A B, ` tu X, {A = B X}
`t A, ` u B,
`t u nat, {A = nat, B = nat}
`t B, ` u A, ` v C,
` t?u : v A, {B = nat, A = C}
, x : A ` t B, `u C, , x : B ` t A,
` x.t B, {A = B} ` let x = u in t A, {B = C}
Ejemplo 4.26.
f :A`f A, f : A ` 1 nat,
f :A`2 nat, f : A ` f1 X, {A = nat X}
f : A ` 2 + f1 nat, {A = nat X, nat = nat, X = nat}
` f ,2 + f 1 A nat, {A = nat X, nat = nat, X = nat}
Captulo 4. Introduccin al lambda clculo y a la teora de tipos 63

4.4.3. Algoritmo de unificacin de Robinson


La segunda parte consiste en resolver las ecuaciones sobre los tipos. El lenguaje de tipos no
tiene variables y est formado por la constante nat y el smbolo de dos argumentos. Para
resolver las ecuaciones utilizamos el algoritmo de unificacin de Robinson, que permite
resolver las ecuaciones de cualquier lenguaje sin variables ligadas.

Definicin 4.27. Sea una substitucin A1 /X1 , . . . , An /Xn . Decimos que es una so-
lucin del conjunto de ecuaciones si para todo B = C en , B y C son idnticos.

Teorema 4.28. Si ` t A, , entonces para toda solucin de , ` t : A.


Ms general: si ` t A, , entonces para toda solucin de , ` t : A, donde
es la substitucin en cada tipo que aparece en .

Algoritmo de unificacin de Robinson

Si una ecuacin tiene forma A B = C D, reemplazarla por las ecuaciones


A = C y B = D.

Si una ecuacin tiene la forma nat = nat, borrarla.

Si una ecuacin tiene la forma nat = A B, o A B = nat, responder error.

Si una ecuacin tiene forma X = X, borrarla.

Si una ecuacin tiene forma A = X, X = A y X aparece en A, pero A 6= X,


responder error.

Si una ecuacin tiene forma A = X, X = A y X no aparece en A pero aparece en


otras ecuaciones ecuaciones, substituir X por A en todas las ecuaciones.

Si el algoritmo termina en error: en el sistema no haba solucin.


Si el algoritmo termina sin error, tendremos una lista de ecuaciones X1 = A1 , . . . , Xn =
An , con Xi distintas y ij, Xi
/ Aj . En ese caso, la substitucin = A1 /X1 , . . . , An /Xn
es una solucin.
En ese caso, es principal, en el sentido de que para toda otra solucin , existe una
substitucin tal que = . Decimos que = mgu( ) (most general unifier).
Ejemplo 4.29. Continuando con el ejemplo anterior, tenamos

` f ,2 + f 1 A nat, {A = nat X, nat = nat, X = nat}



A = nat X  
A = nat X A = nat nat

nat = nat
X = nat X = nat
X = nat

Solucin: [nat nat/A, nat/X]. Por lo tanto,

` f ,2 + f 1 : (nat nat) nat


64 4.5. Polimorfismo

4.5. Polimorfismo
4.5.1. Introduccin
En la seccin anterior vimos que el tipo principal de x.x es X X. Es decir, x.x tiene
tipo X X para todo X. Podemos entonces atribuirle el tipo
X.(X X)
y agregar una regla segn la cual si t tiene tipo X.A, entonces t tiene tipo A[B/X] para
cualquier B.
A tales lenguajes se los llama polimrficos.
Ejemplo 4.30. Usemos los algoritmos de Hindley y Robinson para inferir el tipo del
trmino let i = x.x in ii:
i:X`i X, i : X ` i X, x:Z`x Z,
i : X ` ii Y, {X = X Y } ` x.x Z Z,
` let i = x.x in ii Y, {X = X Y, X = Z Z}
El algoritmo de Robinson finalizar con error al leer la ecuacin X = X Y .
Sin embargo, el trmino equivalente (x.x)(x.x) s puede ser tipado:

x:X`x X, x:Y `x Y,
` x.x X X, ` x.x Y Y,
` (x.x)(x.x) Z, {X X = (Y Y ) Z}
 
X = Y Y
X X = (Y Y ) Z = = Y Y = Z
X = Z
Es decir, el trmino tiene tipo Y Y para cualquier Y .
La diferencia entre el primer trmino y el segundo es que en el primero, i debe tener
el mismo tipo en ambas instancias, Z Z para cualquier Z, en cambio en el segundo
ejemplo, cada funcin identidad puede instanciar la Z de manera diferente.
Con un tipo , podemos hacer que el i del let tenga tipo X.(X X) y cada ocurrencia
de i se instancie en un tipo diferente, haciendo que el trmino let i = x.x in ii pueda ser
tipado como Y.(Y Y ).

El ejemplo anterior no es un ejemplo aislado. Podramos por ejemplo hacer una funcin
map para rboles, sea cual sea el tipo de los elementos en los rboles, lo que permite
reusabilidad de cdigo y por lo tanto programas ms concisos.

4.5.2. Tipos polimrficos


Podemos dar un tipo cuantificado a las variables ligadas por let, pero vamos a dejar tipos
simples para las variables ligadas por y , de otra manera, est demostrado que no es
posible hacer inferencia de tipos.
Tenemos que distinguir tipos sin cuantificadores (los que llamaremos simplemente tipos)
de tipos cuantificados (que llamaremos esquemas de tipos).
Captulo 4. Introduccin al lambda clculo y a la teora de tipos 65

Definicin 4.31. Un esquema de tipo tiene forma X1 . . . Xn .A, donde A es un tipo,


con n 0.
Definimos entonces una gramtica a dos niveles: uno para tipos y otro para esquemas de
tipos:
A ::= X | nat | A A
::= [A] | X.
Si A es un tipo, [A] es un esquema de tipo formado por el tipo A donde ninguna variable
est cuantificada.
Definicin 4.32. Ahora que tenemos variables y un ligador () en los tipos, extendemos
la definicin de variables libres (FV) para tipos:
FV(X) = {X}
FV(nat) =
FV(A B) = FV(A) FV(B)
FV([A]) = FV(A)
FV(X.) = FV() \ {X}
Los contextos ahora dan un esquema de tipo a cada variable de trmino.
Definicin 4.33. El sistema de tipos asocia contextos y trminos con esquemas de tipos,
` t : , y viene dado por
axv axc
, x : ` x : ` n : [nat]
, x : [A] ` t : [B] ` t : [A B] ` u : [A]
i e
` x.t : [A B] ` tu : [B]
` t : [nat] ` u : [nat] ` t : [nat] ` u : [A] ` v : [A]
ifz
` t u : [nat] ` t?u : v : [A]
, x : [A] ` t : [A] ` t : , x : ` u : [A]
let
` x.t : [A] ` let x = t in u : [A]

`t: ` t : X.
Si X
/ FV(),
` t : X. i ` t : [A/X] e
Observaciones.
En la definicin anterior se atribuye un esquema de tipo a cada trmino, en par-
ticular a las variables. Las reglas y piden x : [A], es decir, un esquema sin
cuantificar. Slo let permite darle a la variable cualquier esquema.
La condicin de la regla i permite tipar, por ejemplo,
axv
x : [X] ` x : [X]
i
` xx : [X X]

` x.x : X.[X X] i

` x.x : [nat nat] e
66 4.6. Interpretacin

pero impide algo como


ax
 v

x : [X] `x:[X]

x : X.[X] i
`
x
 : [X]

Ejercicios: Tipar los siguientes trminos con tipos polimrficos

1. x.x

2. let i = x.x in ii

3. (f.f f )(x.x)

4. (x.xx)(x.xx)

Teorema 4.34. Todo trmino tipado que no contenga a , termina.

Observacin. Si permitimos en obtenemos System F de Girard [1972] y Reynolds


[1974], pero la tipabilidad es indecidible (teorema de Wells [1994]), es decir, no existe
algoritmo de inferencia.
Similarmente, en hace el sistema indecidible (teorema de Kfoury, Tiuryn, y Urzyczyn
[1990]).
Por eso, dar polimorfismo slo a let es un buen compromiso que permite reusabilidad de
cdigo e inferencia de tipos.

4.6. Interpretacin
El programa que calcula el valor de un trmino se llama intrprete.

4.6.1. Interpretacin en CBN


Supongamos que queremos un programa que tome (x.x x)4 y nos devuelva 16.
El programa debe reemplazar todas las x por 4 para obtener 4 4 puede ser muy costoso
en tiempo. Una alternativa es guardar x = 4 en una estructura anexa llamada contexto
y evaluar x x en ese contexto.
En un contexto permitimos tener la misma variable varias veces, y se dar la prioridad a
la de ms a la derecha.
Ejemplo 4.35. En el contexto x = 3, y 4, x = 5, z = 8, x vale 5 y no 3.
Evaluamos trminos con variables libres y cuando queremos evaluar la variable en s, la
buscamos en el contexto.
Si el trmino inicial es cerrado, cada vez que busquemos una variable, esta estar en el
contexto.

Si en el contexto encontramos x = t, donde t no es un valor, deberamos encontrar tambin


el contexto en el que t fue evaluado.

Definicin 4.36 (Thunk). Un par ht, i formado por un trmino y un contexto de


evaluacin, se llama thunk.
Captulo 4. Introduccin al lambda clculo y a la teora de tipos 67

Definicin 4.37 (Cierre). Cuando queremos en cambio evaluar un trmino x.t en un


contexto, el resultado no puede ser simplemente x.t, tiene que ser t pero con t cerrado.
Introducimos para esto otro valor llamado cierre que se compone de un trmino x.t y
un contexto , y se nota hx, t, i.
Definicin 4.38 (Relacin , en CBN). Vamos a definir la relacin ` t , v que se
lee t se interpreta a v en .
0 ` t , v x
/ D() ` t , n ` u , m Si n m = p
, x = ht, 0 i, ` x , v ` n , n ` t u , p
` t , hx, t0 , 0 i 0 , x = hr, i ` t0 , v
` x.t , hx, t, i ` tr , v
` t , 0 ` r , v ` t , n ` s , v Si n 6= 0
` t?r : s , v ` t?r : s , v
, x = hr, i ` t , v , x = hx.t, i ` t , v
` let x = r in t , v ` x.t , v
Ejemplo 4.39. (Leer de abajo hacia arriba)
` 4 , 4 ` 4 , 4
x = h4, i ` x , 4 x = h4, i ` x , 4
` x.x x , hx, x x, i x = h4, i ` x x , 16
` (x.x x)4 , 16

4.6.2. Interpretacin en CBV


En call-by-name es ms fcil, ya que siempre se interpretan primero los argumentos, as
que, por ejemplo, en lugar de
0 ` t , v x
/ D() x
/ D()
tenemos , x = v, ` x , v
, x = ht, 0 i, ` x , v
Lo mismo sucede con let. As que los contextos ligan variables con valores, no con thunks.
Sin embargo, la regla pide substituir la variable por una expresin, no por un valor, y
si evaluamos esto antes de introducirlo al contexto, el clculo no termina.
Por lo tanto el contexto contendr valores extendidos que son o bien valores o bien thunks
formados por un trmino x.t y un contexto.
Definicin 4.40 (Relacin , en CBV).
0 ` y.t v
x
/ D() x
/ D()
, x = v, ` x , v , x = hy.t, i0 , ` x , v
` t , n ` u , m Si n m = p
` n , n ` t u , p
` r , w ` t , hx, t0 , 0 i 0 , x = w ` t0 , v
` x.t , hx, t, i ` tr , v
` t , 0 ` r , v ` t , n ` s , v Si n 6= 0
` t?r : s , v ` t?r : s , v
` r , w , x = w ` t , v , x = hx.t, i ` t , v
` let x = r in t , v ` x.t , v
68 4.7. Semntica denotacional

4.7. Semntica denotacional


4.7.1. Primeras definiciones
Sintaxis (o gramtica) : Cmo escribir los trminos. Cules son vlidos y cules no.
Semntica: Qu significan.
Ejemplo: A perro un. Sintacticamente correcto. Semnticamente incorrecto, ya que la
frase no significa nada.
Definicin 4.41 (Semntica). La semntica de un lenguaje es una relacin , que a
cada expresin le asocia algo que le da significado.

Semntica denotacional (en programas deterministas). Para cada programa p,


la relacin entre las entradas y las salidas de p es una funcin que escribimos JpK. La
relacin se define entonces como
p, e , s JpKe = s
La pregunta es, obviamente, cmo definir JpK. (Lo veremos ms adelante en esta seccin).

Semntica operacional a grandes pasos Tambin llamada semntica operacional a


grandes pasos o semntica natural. Consiste en dar una definicin inductiva de , que
nos relacione un trmino con su valor. Por ejemplo, el intrprete de la Seccin 4.6:
(x.y.x + y)((x.x)4)5 , 9
| {z }
Significado de esta expresin: 9

En ese ejemplo damos semntica de acuerdo a lo que calcula.


As, si considero
(x.y.x + y)4 5 y (x.y.x + y)5 4
puedo ver que los 3 programas tienen la misma semntica.

Semntica operacional a pequeos pasos Tambin llamada semntica por reescri-


tura. Consiste en definir , a partir de otra relacin que describe las etapas elementales.
Ejemplo:
(x.(x x) + x)4 (4 4) + 4 16 + 4 20

t , r t r y r irreducible
donde es la clausura reflexiva y transitiva de .

La no terminacin. Un programa puede dar un resultado, producir un error o no


terminar. Los errores se pueden considerar como resultados particulares. Para expresar
programas que no terminan hay varias formas de expresar su semntica:
La primera consiste en considerar que si t no termina, entonces no existe r tal que t , r.
La segunda consiste en agregar un elemento particular a los valores de salida y consi-
derar que si t no termina, entonces t , .
Captulo 4. Introduccin al lambda clculo y a la teora de tipos 69

4.7.2. La semntica denotacional de PCF tipado


En general, en los lenguajes funcionales buscamos reducir la distancia que separa la nocin
de programa de la de funcin. Es decir, se busca reducir la distancia entre un programa
y su semntica denotacional.

Interpretacin de los tipos. A cada tipo le asociamos un conjunto:

JnatK = N
JA BK = JAK JBK

donde A B es el conjunto de funciones de A en B.

Interpretacin de los trminos. A cada trmino t de tipo A le asociamos un elemento


JtK del conjunto JAK. Si t tiene variables libres, necesitamos dar una funcin que a cada
x : A en el contexto , le asigne un elemento a JAK.

JxK = (x)
Jx : A.tK = a : JAK.JtK,x=a
JtrK = JtK JrK
JnK =n
Jt rK = JtK JrK

JrK si JtK = 0
Jt?r : sK =
JsK si JtK N
Jlet x : A = r in tK = JtK,x=JrK

Hasta ah es trivial: un programa es una funcin y su semntica es la misma funcin.


Esta trivialidad es uno de los objetivos de los lenguajes funcionales.
Observaciones.

1. t/0 tirar error en PCF y no est definida en matemtica. Para que esta definicin
sea correcta hay que agregar un elemento error a cada conjunto JAK y adaptar la
definicin 
error si JrK = 0
Jt/rK =
JtK/JrK si JtK N, JrK N

2. An no dijimos como interpretar .

La construccin es la nica donde la semntica denotacional es interesante, porque es


la nica que se aleja de matemtica, respecto a la definicin de funciones:
En matemtica, contrariamente a PCF, slo podemos tomar un punto fijo si este existe
y si hay varios, tenemos que especificar cual!
Ejemplo 4.42.

1. f (x) = x + 1 no tiene punto fijo. Pero en PCF x : nat.x + 1 es vlido.


70 4.7. Semntica denotacional

2. f : nat nat.x : nat.(f x) + 1 tampoco tiene punto fijo. . . y basta con cmabiar el
primer y tengo el .

3. x : nat.x tiene infinitos puntos fijos.

4. x : nat.x tambin.

Teorema 4.43. Si tomamos el punto fijo de una funcin que no tiene punto fijo o que
tiene varios, el programa que obtenemos no termina.

Observacin. Tambin existen programas con un slo punto fijo y que no terminan en
PCF. Por ejemplo x : nat.x + x.

Para comprender la semntica denotacional del punto fijo necesitamos comprender la


semntica de los trminos que no terminan.

La semntica operacional a pequeos pasos no atribuye ningn resultado a estos


trminos.

La semntica operacional a grandes pasos tampoco, pero podemos completar la


relacin , agregando tal que x : nat.(x + 1) , .

En la semntica denotacional la idea es hacer lo mismo: definir una funcin parcial


JK tal que Jx : nat.(x + 1)K no est definido, y adjuntamos un valor a JnatK tal
que
Jx : nat.(x + 1)K =

Agregando el valor , cuando interpretamos, por ejemplo t + r, comenzamos por inter-


pretar t y r y si alguno loopea, tambin lo hace t + r. Entonces:

JtK + JrK si JtK , JrK N
Jt + rK =
si JtK = o JrK =

Ahora vemos que la funcin Jx : nat.x + 1K que no tena punto fijo cuando JnatK = N, si
JnatK = N le podemos dar como semntica a ese trmino.
Jx : nat.xK que tena muchos puntos fijos, ahora tiene uno ms: .
Jx : nat.x + xK que tena slo un punto fijo en 0, ahora tiene 2: 0 y , y el segundo es el
que queremos atribuirle como semntica.

Definicin 4.44 (Orden de Scott). es el elemento ms chico de cualquier conjunto


que lo contenga.

Definimos entonces Jx : nat.tK como el punto fijo ms chico de Jx : nat.tK.


Captulo 4. Introduccin al lambda clculo y a la teora de tipos 71

Semntica denotacional completa de PCF (sin error)

JxK = (x)
Jx : A.tK = a : JAK.JtK,x=a
JtrK = JtK JrK
JnK =n

JtK JrK si JtK , JrK N
Jt rK =
N si no

JrK si JtK = 0
Jt?r : sK = JsK si JtK N
A si JtK = N y A es el tipo del trmino

Jlet x : A = r in tK = JtK,x=JrK
Jx : A.tK = FIX(a : JAK.JtK,x=a )

donde FIX(f ) es el mnimo punto fijo de f .


Observacin. El mnimo de JAK es A y el mnimo de JA BK = JAKJBK que es la
funcin constante JBK .

Teorema 4.45. Si ` t : A, entonces para toda valuacin vlida en se tiene


JtK JAK.

Demostracin. Ejercicio (Ayuda: Induccin sobre la derivacin de ` t : A).

Teorema 4.46 (Soundness). Si ` t : A y t r, entonces para toda valuacin vlida


en se tiene JtK = JrK .

Demostracin. Ejercicio (Ayuda: Induccin sobre la relacin ).


72 4.7. Semntica denotacional
Captulo 5

Extensiones cunticas al lambda clculo

5.1. Control clsico, datos cunticos


El paradigma de control clsico y datos cunticos se atribuye a Peter Selinger [2004], y
la idea es que en cualquier lenguaje de programacin cuntico, los datos (qubits), son
cunticos, pero el flujo de control del programa ser clsico. Es decir, no se pueden su-
perponer programas, slo datos. La primer extensin a lambda clculo en este paradigma
vino de la mano de Selinger y Valiron [2006], y es el clculo que vamos a estudiar en la
Seccin 5.1.1.

5.1.1. El clculo de Selinger y Valiron


Gramtica
La gramtica del clculo es la siguiente:

t ::=x | x.t | tt | t?t : t | 0 | 1 | new | meas | U | | (t, t) | let (x, y) = t in t

Donde
new mapea un bit clsico en un qubit.

meas mapea un qubit en un bit clsico, a travs de una medicin cuntica.

U es un cualquier matriz unitaria.


Las que siguen son notaciones prcticas:

(t1 , t2 , . . . , tn ) = (t1 , (t2 , (. . . , tn )))


let x = r in t = (x.t)r
(x, y).t = z.(let (x, y) = z in t)

Programas
El estado de un programa se representa con una tripleta [q, `, t] donde
q es un vector normalizado de ni=1 C2 , para algn n > 0.
N

73
74 5.1. Control clsico, datos cunticos

t es un trmino lambda.
` es una funcin de W en Nn , donde FV(t) W . A L se la llama funcin de
linkeado.
La funcin de linkeado linkea variables libres especficas de t a qubits especficos de q.
Ejemplo 5.1. La tripleta
1
[ (|00i + |11i), {x 7 2}, y.Xx]
2
representa el programa que comienza con el estado de Bell 00 y al pasarle un argumento
cualquiera aplica la compuerta X (not) al segundo qubit, transformando dicho estado en
01 , pero an no hemos dicho cmo reduce un programa para poder verificar esta ltima
afirmacin.

Notacin. Para simplificar la notacin, se usan pi para denotar las variables libres x
tal que `(x) = i. Es decir, pi es la variable que referencia al i-simo qubit. De esa manera,
un programa [q, `, t] es abreviado en [q, t0 ], donde t0 = t[p`(x1 ) /x1 ] . . . [p`(xn ) /xn ].
Ejemplo 5.2. La tripleta del ejemplo 5.1 se escribe abreviadamente como
1
[ (|00i + |11i), y.Xp2 ]
2
Observacin. El teorema de no clonado (ver Teorema 1.27) en este lenguaje es traducido
en que cada qubit cuntico no puede ser referenciado ms de una vez a travs de la funcin
de linkeado. Sintcticamente esta restriccin se traduce en la condicin de linealidad: una
lambda abstraccin x.t se dice lineal si la variable x aparece exactamente una vez en t.
El sistema de tipos se encargar de que las variables linkeadas a travs de la funcin ` se
usen linealmente, mientras al resto de las variables se permite una utilizacin no-lineal.

Semntica operacional: preliminares


Estrategia de reduccin. An no hemos definido las reglas de reduccin, sin embargo,
veremos un ejemplo que ayuda a decidir la estrategia a utilizar.
Sea xor = x.y.x?(y?0 : 1) : y. Luego, definimos el siguiente trmino:
t = (x.xor xx)(meas(H(new 0)))

Call-by-value. En call-by-value la reduccin es la siguiente


[|i, t] CBV [|0i, (x.xorxx)(meas(Hp1 ))]
1
CBV [ (|0i + |1i), (x.xor xx)(meas p1 )]
2

[|0i, (x.xor xx)0]
CBV
[|1i, (x.xor xx)1]

[|0i, xor 0 0]
CBV
[|1i, xor 1 1]

[|0i, 0]
CBV
[|1i, 0]
Captulo 5. Extensiones cunticas al lambda clculo 75

Donde las dos ramas tienen probabilidad 1/2 cada una, por lo tanto, en call-by-value este
programa produce el valor booleano 0 con probabilidad 1.

Call-by-name. En call-by-name, en cambio, la reduccin es la siguiente:




[|01i, 1]
[|10i, 1]

[|i, t] CBN [|i, xor (meas(H(new 0))) (meas(H(new 0)))] CBN

[|00i, 0]
[|11i, 0]

(No se detalla paso a paso ya que hay algunas sutilezas con la construccin ? : que an
no hemos mencionado).
Entonces, en call-by-name este programa produce 0 o 1 con la misma probabilidad.

Sin estrategia. Si no se establece una estrategia, este trmino podra incluso reducir
a un trmino mal formado, por ejemplo:

[|i, t] CBV [|0i, (x.xorxx)(meas(Hp1 ))]


1
CBV [ (|0i + |1i), (x.xor xx)(meas p1 )]
2
1
CBN [ (|0i + |1i), xor (meas p1 ) (meas p1 )]
2
Notar que el ltimo trmino no es vlido ya que contiene dos ocurrencias de p1 .

Conclusin: Se utiliza la estrategia call-by-value, ya que es la ms natural.

Reescritura probabilista. Como se vio en el ejemplo anterior, es necesario utilizar


un sistema de reescritura probabilista. Esto es, un sistema de reescritura donde algunos
trminos pueden reducir en ms de una forma, cada una de ellas con una probabilidad
asociada. No nos detendremos ms a formalizar sto, basta decir que todas las reglas de
reduccin tendrn probabilidad 1, a excepcin de meas que tendr diferentes formas de
reducirlo con una probabilidad dada por el vector de estado cuntico del programa.
Por ejemplo,

[|0i + |1i, meas p1 ] ||2 [|0i, 0] y [|0i + |1i, meas p1 ] ||2 [|1i, 1]

donde t p r se lee t reduce a r con probabilidad p.

Semntica operacional: formalizacin


Dado que se ha elegido una estrategia call-by-value, definimos los valores de la siguiente
manera:
v ::= x | x.t | 0 | 1 | meas | new | U | | (v, v)
El conjunto de estados de valores es V = {[q, `, v]}.
76 5.1. Control clsico, datos cunticos

Las reglas de reduccin se dan a continuacin, donde se ha utilizado la convencin para


simplificar la notacin sin la funcin de linkeado.

[q, (x.t)v] 1 [q, t[v/x]]


[q, 1?t : r] 1 [q, t]
[q, 0?t : r] 1 [q, r]
[q, U (pj1 , . . . , pjn )] 1 [q 0 , (pj1 , . . . , pjn )] ()
[|q0 i + |q1 i, meas pi ] ||2 [|q0 i, 0] ()
[|q0 i + |q1 i, meas pi ] ||2 [|q1 i, 1] ()
[q, new 0] 1 [q |0i, pn+1 ] ( )
[q, new 1] 1 [q |1i, pn+1 ] ( )
[q, let (x1 , x2 ) = (v1 , v2 ) in t] 1 [q, t[v1 /x1 ][v2 /x2 ]]
Para las siguientes reglas, sea [q, t] p [q 0 , t0 ]. Entonces:
[q, rt] p [q 0 , rt0 ]
[q, tv] p [q 0 , t0 v]
[q, (t, r)] p [q 0 , (t0 , r)]
[q, (v, t)] p [q 0 , (v, t0 )]
[q, t?r : s] p [q 0 , t0 ?r : s]
[q, let (x, y) = t in r] [q 0 , let (x, y) = t0 in r]
[q, let (x, y) = r in t] [q 0 , let (x, y) = r in t0 ]

() U es una compuerta cuntica de n-qubits y q 0 es q luego de aplicar la compuerta a


los qubits j1 , . . . , jn .

() |q0 i y |q1 i son qubits normalizados de la forma


X X
|q0 i = j |0j i |0i |j0 i y |q1 i = j |1j i |1i |j1 i
j j

i1
donde |0j i, |1j i C2 .
n
( ) q C2

Tipos
El sistema de tipos captura la nocin de duplicabilidad, como se discuti anteriormente.
Se utiliza la notacin de la lgica lineal de Girard [1987]. Un trmino de tipo A se asume no
duplicable, y a los trminos duplicables se les asignar tipos de la forma !A. La gramtica
de los tipos se define como sigue:

A ::= | X | !A | A ( A | > | A A

donde es alguno de un conjunto de constantes y X es alguno de un conjunto de variables


de tipo.
Captulo 5. Extensiones cunticas al lambda clculo 77

Escribimos !n A en lugar de !! . . .!!A con n repeticiones de !, y An para el producto tensorial


de n As: A A.
En general, un valor de tipo !A podremos utilizarlo ms de una vez. Pero no hay ningn
problema si decimos que ese valor tiene tambin tipo A, y en ese caso debe usarse slo
una vez. Por lo tanto, se definen reglas de subtipado, que nos permitirn hacer que si un
trmino tiene un tipo, tambin tenga cualquier subtipo de ste.

(X) (>) A <: B (D) !A <: B (!)


<: () X <: X > <: > !A <: B !A <:!B
A1 <: B1 A2 <: B2 A <: A0 B <: B 0 (()
()
A1 A2 <: B1 B2 A0 ( B <: A ( B 0
Que un programa [q, `, t] est bien tipado, significa simplemente que t est bien tipado,
por lo tanto, vamos a dar las reglas de tipos slo para t.
Para cada constante c del lenguaje se asocia un tipo fijo Ac :

A0 = !bit Anew = !(bit ( qbit)


A1 = !bit Ameas = !(qbit ( bit) AU = !(qbitn ( qbitn )

A <: B Ac <: B
(var ) (const)
, x : A ` x : B `c:B
1 , ! ` t : bit 2 , ! ` r : A 2 , ! ` s : A
(if )
1 , 2 , ! ` t?r : s : A
1 , ! ` t : A ( B 2 , ! ` r : A
(app)
1 , 2 , ! ` tr : B
x : A, ` t : B , !, x : A ` t : B
(1 ) Si FV(t) || = , (2 )
` x.t : A ( B , ! ` x.t :!n+1 (A ( B)
1 , ! ` t :!n A1 2 , ! ` r :!n A2
(i ) (>)
1 , 2 , ! ` (t, r) :!n (A1 A2 ) ` :!n >
1 , ! ` t :!n (A1 A2 ) 2 , !, x :!n A1 , y :!n A2 ` r : A
(e )
1 , 2 , ! ` let (x, y) = t in r : A

Ejemplo: Teleportacin
La teleportacin fue presentada en la Seccin 1.6.2. Reproducimos el circuito aqu por
conveniencia.

|i H

|0i H

|0i Z b1 X b2 |i

Las lneas punteadas delimitan tres partes del circuito: la primera es la creacin del
estado de Bell 00 , y le llamaremos Bell. La segunda es las operaciones que realiza Alice,
78 5.2. Control y datos cunticos

y llamaremos a esta parte del algoritmo Alice. Finalmente, la tercera es la que realiza
Bob, por lo que le llamaremos Bob. Los tipos de cada parte del programa sern:

` Bell :!(> 7 (qbit qbit)


` Alice :!(qbit ( qbit ( bit bit)
` Bob :!(qbit ( bit bit ( qbit)

Esas funciones se definen por

Bell = x.CNOT (H (new 0), new 0)


Alice = q1 .q2 .(let (p, p0 ) = CNOT (q1 , q2 ) in (meas(H p), meas p0 ))
Bob = q.(x, y).x?(y?ZX q : Z q) : (y?X q : q)

Luego,
Telep = q.(let (p, p0 ) = Bell in (Bob p0 (Alice q p)))

Ejercicios:

1. Dar la traza de [ 12 (|0i + |1i), Telep p1 ].

2. Dar trminos para Deutsch y la codificacin superdensa, y tiparlos.

5.2. Control y datos cunticos


Antes del clculo de Selinger y Valiron, y de la idea de control clsico y datos cunticos,
hubo otras extensiones al lambda clculo. La ms notoria, quiz, es el clculo de van
Tonder [2004] del cual veremos algunos detalles en la Seccin 5.2.1. Sin embargo, luego
de la introduccin del paradigma de control clsico y datos cunticos tambin hubo
desarrollos en el paradigma de control y datos cunticos. En particular, dicho paradigma
puede ser ms apropiado para estudiar la computacin cuntica desde un punto de vista
lgico a travs del isomorfismo de Curry-Howard (ver [Srensen y Urzyczyn, 2006]). El
clculo lineal-algebraico (Lineal ) de Arrighi y Dowek [2008] dio origen al estudio de los
lenguajes cunticos a nivel de su semntica operacional y lo veremos en la Seccin 5.2.2,
as como su versin tipada, del trabajo de Arrighi, Daz-Caro, y Valiron [2013]. Luego
veremos una modificacin a dicho clculo, agregando medicin y un sistema de tipos
simples en la Seccin 5.2.3, donde se describe el paper de Daz-Caro y Dowek [2016] y se
da una intuicin de su semntica denotacional.

5.2.1. El clculo de van Tonder


Al igual que con el clculo de Selinger y Valiron, van Tonder tambin utiliza un sistema
de tipos lineal para evitar el clonado. Sin embargo, el clculo de van Tonder estudia
otra propiedad interesante: la reversibilidad. Efectivamente, la computacin cuntica,
excluyendo la medicin, es reversible, ya que las compuertas cunticas son unitarias.
Captulo 5. Extensiones cunticas al lambda clculo 79

Inicialmente van Tonder plantea una gramtica simple, con constantes para las operacio-
nes cunticas
t ::= x | x.t | tt | c
c ::= 0 | 1 | H | CN OT | X | Z | . . .
donde, como puede observarse, no hay medicin.
La computacin reversible fue estudiada en los 70s, en particular, el trabajo de Bennett
[1973] mostr una manera simple de obtener reversibilidad: llevar un historial de los pasos
de reduccin. Por ejemplo, si t0 t1 t2 . . . , la reduccin reversible sera
(t0 ) (t0 , t1 ) (t0 , t1 , t2 ) . . .
Sin embargo, en el caso cuntico, no es tan directo. Supongamos que el estado inicial
viene dado por H aplicada al qubit |0i, que van Tonder lo representa dentro de un ket
de la siguiente manera:
|(H 0)i
Las reglas de reduccin para este trmino deberan ser tales que |(H 0)i reduzca a 12 (|0i+
|1i) y |(H 1)i a 12 (|0i|1i). Sin embargo, estas reglas no son reversibles. Usando el truco
de Bennett podramos tener
1 1
|(H 0)i (|(H 0); 0i + |(H 0); 1i) = |(H 0)i (|0i + |1i)
2 2
En este ejemplo, el historial se factoriza a la izquierda y el trmino reducido queda a la
derecha. Sin embargo, consideremos el siguiente ejemplo:
1
|(H (H 0))i (|(H (H 0)); (H 0)i + |(H (H 0)); (H 1)i)
2
1
|(H (H 0))i (|(H 0); 0i + |(H 0); 1i + |(H 1); 0i |(H 1); 1i)
2
Aqu el trmino reducido no puede ser factorizado: el registro quedo enredado con parte
del historial.
Pero en este ejemplo vemos que se est guardando ms informacin de la necesaria. Con
guardar simplemente que subtrmino redujo y con qu operacin es suficiente. Retomando
el mismo ejemplo, tendramos:
1
|(H (H 0))i (|(_ (H _)); (H 0)i + |(_ (H _)); (H 1)i)
2
1
|(_ (H _))i (|(H _); 0i + |(H _); 1i + |(H _); 0i |(H _); 1i)
2
= |(_ (H _)); (H _)i |0i
Con estas ideas en mente se define el modelo computacional. El estado computacional se
toma como una superposicin cuntica de secuencias
h1 ; . . . ; hn ; t
donde h1 ; . . . ; hn es llamado historial, y t registro computacional.
No vamos a discutir el clculo de van Tonder en este curso, slo estas observaciones y se
recomienda al interesado el paper [van Tonder, 2004].
80 5.2. Control y datos cunticos

5.2.2. El lambda clculo lineal algebraico


El lambda clculo lineal algebraico (de ahora en ms, Lineal) sigue un paradigma di-
ferente a los dos vistos anteriormente: la idea es tener un lambda clculo puro, donde
no hay distincin entre datos y programas, y, por lo tanto, dado que los datos pueden
superponerse, tambin pueden hacerlo los programas.
Este clculo es un primer paso hacia un clculo cuntico. En este primer paso el clculo
se centra en la nocin computacional de espacios vectoriales.

Gramtica
La gramtica del lenguaje incluye todos los trminos de lambda clculo, y sus combina-
ciones lineales.

t ::= x | x.t | tr | 0 | .t | t + t

donde C. Aqu, la constante 0 tiene un significado diferente a la de los clculos


anteriores: recordemos que Lineal no es un clculo cuntico, sino un clculo vectorial, y
por lo tanto 0 representa simplemente al vector nulo.
Los valores de este clculo son las variables y las abstracciones, y los escribimos utilizando
la letra v.

Semntica operacional
Las reglas de reduccin son, adems de la beta reduccin, una versin orientada de los
axiomas de espacios vectoriales. La orientacin de cada regla ha sido elegida de manera
de obtener un clculo confluente.
La idea principal es que una abstraccin, sobre una combinacin lineal, se comporte
linealmente como lo hace una matriz sobre un vector. As,

(x.t)(.r + .s) .(x.t)r + .(x.t)s

De esa manera no se impone no clonado con una restriccin de lgica lineal (ver el clculo
de Selinger y Valiron en la Seccin 5.1.1), sino que siempre que haya una superposicin,
la funcin actuar linealmente, y por lo tanto slo actuar en los vectores de base. Re-
cordemos que los vectores de base son clonables: por ejemplo, la compuerta CNOT clona
los qubits |0i y |1i:

CNOT |00i = |00i


CNOT |10i = |11i

En cambio, la misma funcin aplicada a una superposicin, acta de la siguiente manera:

CNOT (|0i + |1i) |0i = CNOT (|00i + |10i)


= CNOT |00i + CNOT |10i
= |00i + |11i

Notar que ese qubit difiere de (|0i + |1i) (|0i + |1i).


Captulo 5. Extensiones cunticas al lambda clculo 81

Por lo tanto el clculo deber ser call-by-value, ya que si el argumento reduce a una
superposicin, es necesario reducirlo antes de pasarlo a una abstraccin.

-reduccin Reglas de factorizacin


(x.t)v t[v/x] .t + .t ( + ).t
Reglas elementales .t + t ( + 1).t
0.t 0 t + t 2.t
1.t t t+0 0
,0 0 Reglas de aplicacin
.(,0) ( ),0 (t + r)s ts + rs
.(t + r) .t + .r t(r + s) tr + ts
(.t)r .tr
t(.r) .tr
0t 0
t0 0
Si t r entonces C[t] C[r] para cualquier contexto C[]

Ejemplo 5.3. Consideremos los trminos true y false de Church, x.y.x y x.y.y como
los qubits |0i y |1i. De esa manera podemos codificar el trmino t?r : s simplemente como
trs, ya que si t es |0i, x.y.xrs r y si t es |1i, x.y.yrs s.
La compuerta Hadamard podra ser codificada en Lineal de la siguiente manera:

1 1
Hx = x( (|0i + |1i))( (|0i |1i))
2 2

Sin embargo, de esta manera trivial no funciona, ya que los mecanismos utilizados para
no-clonado (las reglas de aplicacin), harn que el trmino reduzca de la siguiente manera:

H|0i = Hx.y.x
1 1
= x.y.x( (|0i + |1i))( (|0i |1i))
2 2
1 1
x.y.x(|0i + |1i)( (|0i |1i))
2 2
1 1
(x.y.x|0i + x.y.x|1i)( (|0i |1i))
2 2
1
(y.|0i + y.|1i)(|0i |1i)
2
1
(|0i |0i + |1i |1i)
2
0

El problema est en la linealidad. Lo que debemos hacer es que el encodaje del ? : detenga
la linealidad. Por ejemplo:

t?r : s = (t(x.r)(x.s))(x.x)
82 5.2. Control y datos cunticos

Para hacerlo ms legible, usamos la siguiente notacin:

[t] = x.t con x


/ FV(t)
t = t(x.x)

Y entonces, el encodaje del ? : es el siguiente:

t?r : s = {t[r][s]}

Por ejemplo, a la compuerta Hadamard la codificamos correctamente como

1 1
{Hx} = {x[( (|0i + |1i))][( (|0i |1i))]}
2 2

Tipos
El sistema de tipos vectorial para Lineal [Arrighi, Daz-Caro, y Valiron, 2013] propone
que los tipos lleven cuenta de las superposiciones en los trminos. As, si el trmino t
tiene tipo A y el trmino r tiene tipo B, el trmino .t + .r tendr tipo .A + .B.
Si consideramos T = X Y X y F = X Y Y , el trmino 12 (|0i + |1i) tendr
tipo 12 (T + F ). Notar que este tipo tiene norma 1, al igual que el trmino, y por lo
tanto, un tal tipo nos permite verificar facilmente la norma del vector que produce un
programa.
Dada la estrategia call-by-value, las variables slo pueden tener tipos no superpuestos,
los que llamamos unit types. Esta necesidad se comprende mejor con el siguiente ejemplo:
Supongamos que permitimos variables con tipos escalados, como .V . Entonces, el tr-
mino x.x + t podra tener tipo (.V ) .V + U , con t de tipo U . Luego, tomemos un
trmino v de tipo V y tenemos (x.x + t)(.v) de tipo .V + U . Sin embargo

(x.x + t)(.v) .(x.x + t)v .(v + t) .v + .t

lo cual es problemtico, ya que .V + U no refleja esta superposicin.


Por el contrario, las variables de tipo no necesitan ser solo unit. Sin embargo, debemos
distinguir variables unit de las que no lo son, ya que slo las variables unit pueden
aparecer a la izquierda de una flecha. Por ese motivo definimos dos tipos de variables:
las variables X , que slo podrn ser reemplazadas por tipos unit, y las variables X,
que pueden ser reemplazadas por cualquier tipo (escribimos simplemente X cuando nos
refiramos a cualquiera de las dos). El tipo X es unit, mientras el tipo X no lo es.
En particular, T = X .Y.X Y X y F = X .Y.X Y Y . El tipo de H es
 
1 1
X. [ (T + F )] [ (T + F )] X X
2 2

Donde [A] = (X .X X ) A.
Captulo 5. Extensiones cunticas al lambda clculo 83

Gramtica de los tipos. Formalizando lo anterior, la gramtica de los tipos es la


siguiente:

A ::= U | .A | A + A | X
U ::= X | U A | X .U | X.U

Consideramos tambin las siguientes equivalencias entre tipos, la cual es una congruencia:

1.A A .A + .A ( + ).A
.(.A) ( ).A A+B B+A
.A + .B .(A + B) A + (B + C) (A + B) + C

Observacin. Por una cuestin tcnica, la equivalencia A + 0.B A no es vlida, y por


lo tanto la propiedad de subject reduction es ms dbil, en el sentido de que si ` t : A
y t p r, slo se puede asegurar que ` r : B donde si la regla por la cual se redujo t a
r no es una regla de factorizacin, entonces B = A, en otro caso, A puede ser B + 0.C.
De todas maneras, obviaremos este detalle tcnico en este apunte, y se refiere al lector a
[Arrighi, Daz-Caro, y Valiron, 2013, 4.2] para ms detalles.

Reglas de tipado. Las reglas de tipado se detallan a continuacin. Usamos [T /X] para
referir a [U/X ] o [A/X].

`t:A 0 , x : U ` t : A
ax I
, x : U ` x : U ` 0 : 0.A I ` x.t : U A

` t : ni=1 i .X.(U Ai ) ` r : m
P P
j=1 j .U [T /X]
Pn Pm E
` tr : i=1 j=1 i j .Ai [Tj /X]

` t : ni=1 i .Ui X ` t : ni=1 i .X.Ui


P P
/ FV()
I E
` t : ni=1 i .X.Ui ` t : ni=1 i .Ui [T /X]
P P

` t : A I `t:A `r:B + `t:A AB


I
` .t : .A `t+r :A+B `t:B
Ejemplo 5.4 (Tipando Hadamard). Sean |0i = x.y.x y |1i = x.y.y. Es fcil verificar
que

` |0i : X Y.X Y X ,
` |1i : X Y.X Y Y.

Observacin. Usamos la notacin XY.A para X.Y.A.


Tambin definimos las siguientes superposiciones:

1 1
|+i = .(|0i + |1i) y |i = .(|0i |1i).
2 2
84 5.2. Control y datos cunticos

De la misma manera,definimos
1
 = .((X Y.X Y X ) + (X Y.X Y Y)),
2
1
= .((X Y.X Y X ) (X Y.X Y Y)).
2
Es fcil verificar que ` [|+i] : [] y ` [|i] : [ ].
Para simplificar la notacin, tomamos A = [] [ ] [X]. Entonces
ax
x:A`x:A x : A ` [|+i] : []
E
x : A ` x[|+i] : [ ] [X] x : A ` [|i] : [ ]
E
x : A ` x[|+i][|i] : [X]
E
x : A ` {x[|+i][|i]} : X
I
` x.{x[|+i][|i]} : A X

` x.{x[|+i][|i]} : X.([] [ ] [X]) X I
Ahora podemos aplicar Hadamard a un qubit para obtener el tipo correcto. Sea H =
x.{x[|+i][|i]}.
` |0i : X Y.X Y X

` H : X.([] [ ] [X]) X ` |0i : Y.[] Y [] E
E
` H : ([] [ ] [])  ` |0i : [] [ ] [] E
E
` H|0i : 
Un ejemplo an ms interesante es el siguiente. Sea
1
I = .(([] [ ] []) + ([] [ ] [ ]))
2
Es decir, I es  donde los forall han sido instanciados. Es fcil verificar que ` |+i : I .
Entonces,
` H : X.([] [ ] [X]) X ` |+i : I
E
` H|+i : 12 .  + 12 .
Y dado que 1 .  + 12 . X Y.X Y X , podemos concluir
2

` H|+i : X Y.X Y X .
Notar que H|+i |0i.

Ejercicio: Escribir el algoritmo de teleportacin en Lineal no tipado.

5.2.3. Tipando superposiciones y mediciones proyectivas


En esta seccin veremos un trabajo muy reciente (de hecho, an no est publicado ya que
en este momento est en proceso de revisin por pares), y por lo tanto lo que se presenta
aqu es sujeto a cambios. El paper es [Daz-Caro y Dowek, 2016].
El principal objetivo es agregar medicin a Lineal, el clculo presentado en la Sec-
cin 5.2.2. Como se mencion anteriormente, para evitar el clonado se conocen dos tc-
nicas:
Captulo 5. Extensiones cunticas al lambda clculo 85

(LL) Usar trminos lineales en el sentido de la lgica lineal, y entonces x.x x es un


trmino mal formado.

(AL) Usar un sistema de reescritura que defina las aplicaciones como aplicaciones lineales,
as x.x x es permitido, pero al aplicarlo a .|0i + .|1i producir .|00i + .|11i
y no (.|0i + .|1i) (.|0i + .|1i).

Sin embargo, definir aplicaciones lineales por medio de reescritura no funciona si el clculo
tiene medicin, ya que slo las compuertas cunticas se comportan de esa manera. Por
ejemplo, digamos que tenemos un operador de medicin notado por , entonces

(x.x)(.|0i + .|1i) .(x.x)|0i + .(x.x)|1i .|0i + .|1i

lo cual claramente es un error.


En este clculo se propone usar una combinacin de las dos tcnicas, LL y AL, de esa
manera, una abstraccin podr tomar una superposicin, pero slo en el caso de que la
trate linealmente, en el sentido de LL, en otro caso, la aplicacin slo podr comportarse
en el sentido de AL.
Claro que para eso, debemos distinguir trminos superpuestos de trminos que no lo
estn.

Gramticas
La gramtica de tipos se separa en dos niveles ya que este clculo es de primer orden (por
razones que luego discutiremos).

::= Q | S() Tipos qubit


A ::= | A | S(A) Tipos

La gramtica de trminos es la siguiente:

t ::= x | x : .t | tt | |0i | |1i | t + t | .t | 0S(A) | t | ? :

con C.
Utilizamos la notacin t?r : s para (? : )trs. El motivo de considerar a ? : como una funcin
es aprovechar la linealidad AL de las funciones, de esa manera,

(.|0i + .|1i)?r : s .|0i?r : s + .|1i?r : s

Dentro de la gramtica de trminos, distinguimos dos subgramticas, la de los trminos


de base:
b ::= x | x : .t | |0i | |1i
y la de los valores, que son combinaciones lineales de trminos de base:

v ::= b | v + v | .v | 0S(A)
86 5.2. Control y datos cunticos

Tipos

Dado que la semntica operacional de una aplicacin ser diferente si el argumento es


una superposicin o no, y esa informacin la sabremos utilizando los tipos, debemos dar
primero los tipos, y luego la semntica operacional dependiente de ellos.
La lgica de los tipos es que marcamos con una S a las superposiciones, de la misma
manera que en lgica lineal se marca con ! a los trminos que pueden ser duplicados.
En realidad, nuestras superposiciones son exactamente los trminos que no pueden ser
copiados, y por ese motivo no utilizamos notacin de lgica lineal.
Naturalmente existe un subtipado: si un trmino no es una superposicin, es decir, puede
ser copiado, tambin puede ser tratado como una superposicin y por lo tanto no ser
copiado. Es decir, Q  S(Q).
Formalmente, la relacin  es un preorden definido por

A  S(A)

S(S(A))  S(A)

Si A  B, entonces

AB
S(A)  S(B)

Observacin. Notar que con esta definicin, S(S(A)) S(A).


El sistema de tipos se define a continuacin:

ax ax ~0 ax |0i ax |1i
x:`x: ` ~0S(A) : S(A) ` |0i : Q ` |1i : Q

`t:A ` t : A ` u : A S+ ` t : S(Q)
S S
` .t : S(A) I , ` (t + u) : S(A) I ` t : Q E

` t : A (AB) , x : ` t : A
 if I
`t:B ` ?: : Q Q Q Q ` 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
Captulo 5. Extensiones cunticas al lambda clculo 87

Semntica operacional

Reglas beta Axiomas de espacios vectoriales


Si b tiene tipo Q, entonces (~0S(A) + t) (1) t (neutral)
(x : Q t)b (1) (b/x)t (b ) 1.t (1) t (unit)
Si u tiene tipo S(), entonces Si t tiene tipo A, entonces
(x : S() t)u (1) (u/x)t(n ) 0.t (1) ~0S(A) (zero )
If-then-else .~0S(A) (1) ~0S(A) (zero)
|1i?u : v (1) u (if1 ) .(.t) (1) ( ).t (prod)
|0i?u : v (1) v (if0 ) .(t + u) (1) (.t + .u) (dist)
Linear distribution (.t + .t) (1) ( + ).t (fact)

Si t tiene tipo Q A, entonces (.t + t) (1) ( + 1).t (fact1 )


+
t(u + v) (1) (tu + tv) (linr ) (t + t) (1) 2.t (fact2 )
Si t tiene tipo Q A then Modulo AC

t(.u) (1) .tu (linr ) (u + v) =AC (v + u) (comm)
Si t tiene tipo Q A, entonces ((u + v) + w) =AC (u + (v + w)) (assoc)
t~0S(Q) (1) ~0S(A) (lin0r ) Proyeccin
+
(t + u)v (1) (tv + uv)(linl ) n
(linl ) ( [i .]bi ) Pn|k |2 2 bk
X  
(.t)u (1) .tu (proj)
| |
i=1 i
~0S(QA) t ~
(1) 0S(A) 0
(linl ) i=1

donde, en la regla (proj),


i, bi = |0i o bi = |1i,
Pn
i=1 i .bi es normal (y por lo tanto 1 n 2),

si un k est ausente, |k |2 = 1, y

1 k n.

Primer orden. El motivo de utilizar primer orden es que en este clculo hemos mez-
clado los dos enfoques precedentes: LL y AL, y por lo tanto ahora es posible construir
una mquina de clonado si se permite alto orden. El truco es esconder dentro de una
abstraccin una superposicin, por ejemplo x : Q..|0i + .|1i. ste es un trmino du-
plicable, y no hay problema en ello (no es una superposicin, es un programa que produce
una). Sin embargo, dado que ahora tenemos trminos LL, podramos tambin producir
y : S(Q).x : Q.y, el cual nos permite generar superposiciones duplicables. La solucin
es impedir tomar una abstraccin como argumento, y por lo tanto este trmino no podr
ser duplicado.

Multiple qubits: productos tensoriales


Consideremos el siguiente ejemplo:

|0i (|0i + |1i) |00i + |01i (5.1)


88 5.2. Control y datos cunticos

El primer trmino podra ser tipado con Q S(Q), en cambio el segundo debera ser
tipado con S(Q Q). Naturalmente el subipado va en sentido contrario al necesario:
Q S(Q)  S(Q Q), y por lo tanto este ejemplo rompe la propiedad de preservacin
de tipos.
Es normal, en matemtica, que al desarrollar un trmino perdamos informacin. Por
ejemplo, (x 1)(x 2) = x2 3x + 2. La informacin del trmino izquierdo, que da
sus races y una factorizacin, es perdida al desplegar el trmino. Por este motivo, no
permitimos la reduccin (5.1). En cambio, para poder realizar esa reduccin, se debe
castear el trmino, y entonces el tipo es preservado:

S(QQ)
S(QS(Q)) |0i (|0i + |1i) |00i + |01i

Las gramticas entonces se actualizan de la siguiente manera:

Q ::= Q | Q Q
::= Q | S() |
A ::= | A | S(A) | A A

t ::= x | x : .t | tt | |0i | |1i | t + t | .t | 0S(A) | j t | ? :


| t t | head t | tail t |S(BC)
S(A) t

A la gramtica de los tipos simplemente se le agreg el producto tensorial.


A la gramtica de los trminos se le cambi por j , que es representa la medicin de
los primeros j qubits. Adems, se agreg el producto tensorial con formato de lista.

Para las reglas de tipado, primero definimos el tipo QSn , donde S es un conjunto de
nmeros menores que n, de la siguiente manera:

Definicin 5.5. Sea S {1, , n}. Definimos QSn inductivamente por:

ASn1 Q

si n
/S
QSn = S\{n}
An1 S(Q) si n S
ASn1 Q Q

si n
/S
ASn Q= S\{n}
An1 S(Q) Q si n S
ASn1 Q S(B)

si n
/S
ASn S(B) = S\{n}
An1 S(Q B) si n S
A0 B = B

donde B es cualquier tipo.

Es decir,QSn es el tensor de n qubits donde aquellos indexados por S son superpuestos


{1,2}
con el tipo ms general. Por ejemplo, Q3 = S(Q Q) Q y no S(Q) S(Q) Q.
Captulo 5. Extensiones cunticas al lambda clculo 89

Ejemplo 5.6.
{1,2,4} {4,5}
Q5 Q5
{1,2,4} {4}
= A4 Q = A4 S(Q)
{1,2}
= A3 S(Q) Q = A3 S(Q Q)
{1,2}
= A2 Q S(Q) Q = A2 Q S(Q Q)
{1}
= A1 S(Q) Q S(Q) Q = A1 Q Q S(Q Q)
= A0 S(Q Q) Q S(Q) Q = A0 Q Q Q S(Q Q)
= S(Q Q) Q S(Q) Q = Q Q Q S(Q Q)

Actualizamos el subtipado para productos tensoriales:

A  S(A)

S(S(A))  S(A)

If A  B, then

AB
AC BC
S(A)  S(B)
C AC B

Las reglas de tipado se actualizan como sigue:

ax ax ~0 ax |0i ax |1i
x:`x: ` ~0S(A) : S(A) ` |0i : Q ` |1i : Q

` t : QSn SNn
`t:A S ` t : A ` u : A S+ SE ( )
S\{1,...,j}
` .t : S(A) I , ` (t + u) : S(A) I ` j t : Qn jn

` t : A (AB) , x : ` t : A
 if I
`t:B ` ?: : Q Q Q Q ` 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:QQ `t:QQ

, ` t u : A B I ` head t : Q Er ` tail t : Q El
` t : S(S(A) B) ` t : S(A S(B))
S(AB)
r l
`S(S(A)B) t : S(A B) `S(AB)
S(AS(B)) t : S(A B)
90 5.2. Control y datos cunticos

`S(A)
S(B) t : S(A)
S(A)
`S(B) t : S(A) `S(A)
S(B) r : S(A)
+
`S(A)
S(B) .t : S(A)
S(A)
, `S(B) (t + r) : S(A)
Finalmente, las reglas de reduccin son las siguientes:

Reglas beta Listas e if-then-else


Si b tiene tipo Q, entonces Si v 6= u u0 , entonces
(x : Q t)b (1) (b/x)t (b ) head (v t) (1) v (head)
Si u tiene tipo , entonces Si h =6 u v, entonces
(x : t)u (1) (u/x)t (n ) tail (v t) (1) t (tail)
Axiomas de e.v. |1i?u : v (1) u (if1 )
(~0S(A) + t) (1) t (neutral) |0i?u : v (1) v (if0 )
1.t (1) t (unit) Linear distribution
Si t tiene tipo A, entonces Si t tiene tipo Q A, entonces
0.t (1) ~0S(A) (zero ) t(u + v) (1) (tu + tv) (lin+r )
.~0S(A) (1) ~0S(A) (zero) Si t tiene tipo Q A, entonces
.(.t) (1) ( ).t (prod) t(.u) (1) .tu (linr )
.(t + u) (1) (.t + .u) (dist) Si t tiene tipo Q A, entonces
(.t + .t) (1) ( + ).t (fact) t~0S(Q) (1) ~0S(A) (lin0r )

(.t + t) (1) ( + 1).t (fact1 ) (t + u)v (1) (tv + uv)(lin+l )


2
(t + t) (1) 2.t (fact ) (.t)u (1) .tu (linl )
Modulo AC ~0S(QA) t (1) ~0S(A) (lin0l )
(u + v) =AC (v + u) (comm)
((u + v) + w) =AC (u + (v + w)) (assoc)
Casteos
S(AB)
S(S(A)B) ((r + s) u) S(AB)
(1) (S(S(A)B) (r u) + S(AB)
S(S(A)B) (s u)) (dist+
r )
S(BA) S(BA) S(BA) +
S(BS(A)) (u (r + s)) (1) (S(BS(A)) (u r) + S(BS(A)) (u s)) (distl )
S(AB)
S(S(A)B) ((.r) u) (1) . S(AB)
S(S(A)B) (r u) (distr )
S(BA)
S(BS(A)) (u (.r)) S(BA)
(1) . S(BS(A)) (u r) (distl )
S(AB)
S(S(A)B) (~0S(A) u) (1) ~0S(AB) (dist0r )
S(BS(A)) (u ~0S(A) )
S(BA)
(1) ~0S(BA) (dist0l )
S(BC)
S(A) (t + u) S(BC) S(BC)
(1) (S(A) t + S(A) u) (dist+
)
S(BC)
S(A) (.t) S(BC)
(1) . S(A) t (dist )
S(AB)
S(S(A)B) (b1 b2 ) (1) b1 b2 (neutr )
S(AB)
S(AS(B)) (b1 b2 ) (1) b1 b2 (neutl )
Projection

n j
r Pi
P N P
j ( [i .](b1i bmi )) (p) bhk .(bj+1,i bmi )(proj)
i=1 h=1 iP |i |2
iP

donde
|i |2/Pn |i |2 ),
P
p= iP ( i=1

j m, k n,

i n, h m, bih = |0i o bih = |1i,


Captulo 5. Extensiones cunticas al lambda clculo 91

si un i est ausente, se toma como 1,


Pn m
i=1 [i .](b1i bmi ) est en forma normal (por lo tanto, 1 n 2 ), y

P Nn , tal que i P , h j, bhi = bhk .

Algoritmo de Deutsch
La compuerta Hadamard puede ser implementada de la siguiente manera:

H = x : Q.1/ 2.(|0i + (x?(|1i) : |1i))

Notar que la variable es un tipo de base, y por lo tanto, si H se aplica a una superposicin,
por ejemplo (.|0i + .|1i), reduce de la siguiente manera:
(lin+ ) (lin )2
H(.|0i + .|1i) r (1) (H.|0i + H.|1i) r (1) (.H|0i + .H|1i)

y por lo tanto, finalmente se aplica a trminos de base.


Definimos H1 como la funcin que toma dos qubits y aplica H al primero:

H1 = x : Q Q ((H (head x)) (tail x))

Similarmente, Hboth aplica H a ambosqubits:

Hboth = x : Q Q ((H (head x)) (H (tail x)))

El orculo Uf est definido por:

Uf |xyi = |x, y f (x)i

donde es la suma modulo 2. Para implementarlo, necesitamos la compuerta not, la que


puede ser implementada como sigue:

not = x : Q (x?|0i : |1i)

Entonces, Uf es:

Uf = x : Q Q ((head x) ((tail x)?(not (f (head x))) : (f (head x))))

donde f es una funcin dada de tipo Q Q.


Finalmente, el algoritmo de Deutsch combina todas las definiciones previas:

Deutschf = 1 (S(QQ) S(QQ) S(QS(Q))


S(S(Q)Q) H1 (Uf S(QS(Q)) S(S(Q)S(Q)) Hboth (|0i |1i)))

Los casteos luego de las compuertas Hadamard se necesitan para desarrollar el trmino
por completo para luego poder pasarlo a una abstraccin que espera trminos de base.
El trmino Deutschf se tipa como sigue:

` Deutschf : Q S(Q)

Este trmino, en la funcin identidad, reduce as:


(proj)
Deutschid (1) 1 (1/ 2.|10i 1/ 2.|11i) (1) |1i (1/ 2.|0i 1/ 2.|1i)
92 5.2. Control y datos cunticos

Teleportation algorithm En el ejemplo precedente la aplicacin de la medicin tena


slo un resultado posible: el primer qubit ya estaba en un estado de base antes de medirlo.
Por lo tanto, introducimos un ejemplo un poco ms complejo, la teleportacin, donde la
medicin es usada como un operador que cambia el estado.
La compuerta cnot la implementamos como sigue:

cnot = x : Q Q ((head x) ((head x)?(not (tail x)) : (tail x)))

Definimos H31 que aplica H al primer qubit en un sistema de tres qubits:

H31 = x : Q Q Q ((H (head x)) (tail x))

Notar que la nica diferencia con H1 es el tipo de la variable. Tambin, necesitamos aplicar
cnot a los dos primeros qubits de un sistema de tres qubits, por lo que definimos cnot312 :

x : Q Q Q ((cnot (head x (head tail x))) (tail tail x))

La compuerta Z se implementa de manera similar a not:

Z = x : Q (x?(|1i) : |0i)

A la parte de Alice la definimos as:


S(QQQ)
Alice = x : S(Q) S(Q Q) (2 (S(S(Q)QQ) H31 (cnot312 (S(QS(QQ))
S(QQQ) S(QS(QQ))
S(S(Q)S(QQ)) x))))

Notar que antes de pasar a cnot312 el parmetro de tipo S(Q) S(Q Q), necesitamos
desarrollar el trmino por completo usando dos casteos, y de nuevo luego de la compuerta
Hadamard.
El lado de Bob del algoritmo aplicar ciertas compuertas basado en los bits que reciba
de Alice. Por lo tanto, para cualquier ` U : Q S(Q) o ` U : Q Q, definimos U(b)
como la funcin que aplica U o no dependiendo del bit b:

U(b) = (x : Q y : Q (x?Uy : y)) b

Bob se implementa como sigue:

Bob = x : Q Q Q (Z(head x)
(not(head tail x)
(tail tail x)))

El estado de Bell lo definimos directamente:



00 = (1/ 2.|00i + 1/ 2.|11i)

Finalmente, la teleportacin se define por:


S(QQQ)
Telep = q : S(Q) (Bob(S(QQS(Q)) Alice (q 00 )))

Este tipo tiene el tipo esperado S(Q) S(Q), y aplicado a cualquier superposicin
(.|0i + .|1i) reduce, como es de esperarse, a (.|0i + .|1i).
Bibliografa

Pablo Arrighi y Gilles Dowek. Linear-algebraic lambda-calculus: higher-order, encodings,


and confluence. En Proceedings of RTA-2008, (editado por Andrei Voronkov), tomo
5117 de Lecture Notes in Computer Science, pgs. 1731. Springer, 2008.

Pablo Arrighi, Alejandro Daz-Caro, y Benot Valiron. The vectorial lambda-calculus.


Under review. Available at arXiv:1308.1138, 2013.

Charles Bennett y Gilles Brassard. Quantum cryptography: Public key distribution and
coin tossing. En Proceedings of IEEE International Conference on Computers, Systems
and Signal Processing, pgs. 175179. 1984.

Charles Bennett, Gilles Brassard, Claude Crpeau, Richard Jozsa, Asher Peres, y William
Wootters. Teleporting an unknown quantum state via dual classical and Einstein
PodolskyRosen channels. Physical Review Letters, 70(13):18951899, 1993.

Charles Bennett y Stephen Wiesner. Communication via one- and two-particle operators
on EinsteinPodolskyRosen states. Physical Review Letters, 69(20):28812884, 1992.

Charles H. Bennett. Logical reversibility of computation. IBM Journal of Research and


Development, 17(6):525532, 1973.

Garret Birkhoff y John von Neumann. The logic of quantum mechanics. Annals of
Mathematics, 37(4):823843, 1936.

Julian Brown. The Quest for the Quantum Computer. Touchstone, 2001.

David Deutsch. Quantum theory, the church-turing principle and the universal quantum
computer. Proceedings of the Royal Society of London. Series A, Mathematical and
Physical Sciences, 400(1818):97117, 1985.

David Deutsch y Richard Jozsa. Rapid solution of problems by quantum computation.


Proceedings of the Royal Society of London A: Mathematical, Physical and Engineering
Sciences, 439(1907):553558, 1992.

Alejandro Daz-Caro y Gilles Dowek. Typing quantum superpositions and projective


measurements. arXiv:1601.04294, 2016.

Paul A. M. Dirac. A new notation for quantum mechanics. Mathematical Proceedings of


the Cambridge Philosophical Society, 35(03):416418, 1939.

93
94 Bibliografa

Gilles Dowek y Jean-Jacques Lvy. Introduction to the theory of programming languages.


Undergraduate topics in computer science. Springer, 2011.

Albert Einstein, Boris Podolsky, y Nathan Rosen. Can quantum-mechanical description


of physical reality be considered complete? Physical Review, 44(10):777780, 1935.

Jean-Yves Girard. Interprtation fonctionnelle et limination des coupures dans


larithmtique dordre suprieure. Tesis Doctoral, Universit Paris Diderot, Pars, Fran-
cia, 1972.

Jean-Yves Girard. Linear logic. Theoretical Compututer Science, 50:1102, 1987.

Lov K. Grover. A fast quantum mechanical algorithm for database search. En Proceedings
of the 28th Annual ACM Symposium on Theory of computing, STOC-96, pgs. 212219.
ACM, 1996.

A. Kfoury, J. Tiuryn, y P. Urzyczyn. The undecidability of the semi-unification problem.


En Proceedings of STOC-1990, pgs. 468476. 1990.

Michael Nielsen y Isaac Chuang. Quantum Computation and Quantum Information. 10th
Anniversary Edition. Cambridge University Press., 2010.

Gordon Plotkin. LCF considered as a programming language. Theoretical Computer


Science, 5(3):223255, 1977.

John Preskill. Quantum computing: pro and con. Proceedings of the Royal Society of
London A, 454:469486, 1998.

John C. Reynolds. Towards a theory of type structure. En Programming Symposium:


Proceedings of the Colloque sur la Programmation, (editado por Bernard Robinet),
tomo 19 de Lecture Notes in Computer Science, pgs. 408425. Springer, 1974.

Peter Selinger. Towards a quantum programming language. Mathematical Structures in


Computer Science, 14(4):527586, 2004.

Peter Selinger y Benot Valiron. A lambda calculus for quantum computation with clas-
sical control. Mathematical Structures in Computer Science, 16(3):527552, 2006.

Peter W. Shor. Polynomial-time algorithms for prime factorization and discrete loga-
rithms on a quantum computer. SIAM Journal on Computing, 26(5):14841509, 1997.

Morten H. Srensen y Pawel Urzyczyn. Lectures on the Curry-Howard Isomorphism,


tomo 149 de Studies in Logic and the Foundations of Mathematics. Elsevier, 2006.

Andr van Tonder. A lambda calculus for quantum computation. SIAM Journal on
Computing, 33:11091135, 2004.

Gilbert S. Vernam. Cipher printing telegraph systems for secret wire and radio telegrap-
hic communications. Transactions of the American Institute of Electrical Engineers,
XLV:295301, 1926.
Bibliografa 95

Joe B. Wells. Typability and type checking in the second-order lambda-calculus are equi-
valent and undecidable. En Proceedings of LICS-1994, pgs. 176185. IEEE Computer
Society, 1994.

William K. Wootters y Wojciech .H. Zurek. A single quantum cannot be cloned. Nature,
299:802803, 1982.

Вам также может понравиться