Teoría Homotópica de Tipos

Deducción Natural y Lambda Cálculo

En la deducción natural, probamos enunciados sobre proposiciones usando árboles de prueba construidos a partir de reglas. Estas reglas se dividen en dos tipos: las reglas de introducción nos dicen cómo probar algo, y las reglas de eliminación nos dicen cómo usar algo.

Lógica proposicional

Reglas para la conjunción

Definición 1 — Conjunción \land

Dadas proposiciones PP y QQ, la conjunción PQP \land Q se gobierna por las siguientes reglas:

Introducción (\land-intro): Si tenemos PP y QQ, entonces tenemos PQP \land Q.

PQPQ\frac{P \quad Q}{P \land Q}

Eliminación izquierda (\land-elim-l): Si tenemos PQP \land Q, entonces tenemos PP.

PQP\frac{P \land Q}{P}

Eliminación derecha (\land-elim-r): Si tenemos PQP \land Q, entonces tenemos QQ.

PQQ\frac{P \land Q}{Q}

Reglas para la implicación

Definición 2 — Implicación \to

Introducción (\to-intro): Si, asumiendo PP, podemos probar QQ, entonces tenemos PQP \to Q. La hipótesis PP queda descargada.

PiQPQ  i\frac{\overline{P}^i \quad \vdots \quad Q}{P \to Q} \; i

Eliminación (\to-elim, modus ponens): Si tenemos PP y PQP \to Q, entonces tenemos QQ.

PPQQ\frac{P \quad P \to Q}{Q}

Ejemplo 1 — QQ se sigue de P(PQ)P \land (P \to Q)

Para cualesquiera proposiciones P,QP, Q: de P(PQ)P \land (P \to Q) se deduce QQ.

P(PQ)P  -elim-lP(PQ)PQ  -elim-rQ  -elim\frac{\dfrac{P \land (P \to Q)}{P}\;\land\text{-elim-l} \quad \dfrac{P \land (P \to Q)}{P \to Q}\;\land\text{-elim-r}}{Q} \;\to\text{-elim}

Ejemplo 2 — (PQ)P(P \land Q) \to P

PQi-elim-lP    -introi\frac{\overline{P \land Q}^i \quad \land\text{-elim-l}}{P} \;\; \to\text{-intro}^i

Luego (PQ)P\vdash (P \land Q) \to P.

Lambda cálculo simplemente tipado

Si hacemos la deducción natural proof-relevant (es decir, que registremos la forma de la prueba), obtenemos el lambda cálculo simplemente tipado (STLC).

Definición 3 — Proof-relevance

En la deducción natural escribimos "PP" para decir "PP vale". En el STLC, escribimos "p:Pp : P" para decir que "pp es una prueba/testigo de PP", o equivalentemente, "pp habita PP".

Llamamos a pp una prueba, testigo, término o elemento de PP, y a PP una proposición o tipo.

Reglas tipadas para \land

Definición 4 — Reglas para \land en STLC

Formación:

ΓP  typeΓQ  typeΓPQ  type\frac{\Gamma \vdash P \;\text{type} \quad \Gamma \vdash Q \;\text{type}}{\Gamma \vdash P \land Q \;\text{type}}

Introducción: Si Γp:P\Gamma \vdash p : P y Γq:Q\Gamma \vdash q : Q, entonces Γ(p,q):PQ\Gamma \vdash (p, q) : P \land Q.

Eliminación: Si Γa:PQ\Gamma \vdash a : P \land Q, entonces Γpr1a:P\Gamma \vdash \text{pr}_1\, a : P y Γpr2a:Q\Gamma \vdash \text{pr}_2\, a : Q.

Computación (β\beta): Γpr1(p,q)p:P\Gamma \vdash \text{pr}_1(p, q) \doteq p : P y Γpr2(p,q)q:Q\Gamma \vdash \text{pr}_2(p, q) \doteq q : Q.

Unicidad (η\eta): Γ(pr1a,pr2a)a:PQ\Gamma \vdash (\text{pr}_1\, a, \text{pr}_2\, a) \doteq a : P \land Q.

Reglas tipadas para \to

Definición 5 — Reglas para \to en STLC

Formación:

ΓP  typeΓQ  typeΓPQ  type\frac{\Gamma \vdash P \;\text{type} \quad \Gamma \vdash Q \;\text{type}}{\Gamma \vdash P \to Q \;\text{type}}

Introducción: Si Γ,x:Pq:Q\Gamma, x : P \vdash q : Q, entonces Γλx.q:PQ\Gamma \vdash \lambda x.\, q : P \to Q.

Eliminación: Si Γp:P\Gamma \vdash p : P y Γf:PQ\Gamma \vdash f : P \to Q, entonces Γfp:Q\Gamma \vdash f\, p : Q.

Computación (β\beta): Γ(λx.q)pq[p/x]:Q\Gamma \vdash (\lambda x.\, q)\, p \doteq q[p/x] : Q (sustitución).

Unicidad (η\eta): Γλx.fxf:PQ\Gamma \vdash \lambda x.\, f\, x \doteq f : P \to Q.

Si pensamos en los tipos como conjuntos y los términos como elementos, PQP \land Q se comporta como el producto P×QP \times Q de conjuntos.

Teorema 3 — Lambek (1985)

Existe una interpretación del STLC en Set\mathbf{Set}, la categoría de conjuntos. De hecho, hay una equivalencia entre el STLC y las categorías cartesianas cerradas (CCC).

Interpretaciones del tipo función

Bajo la interpretación de Howard (lógica), \to corresponde a la implicación. Bajo la interpretación de Lambek (conjuntos), \to corresponde a funciones. También podemos interpretar los tipos como especificaciones de programas: un tipo PPP \to P especifica un programa que toma una entrada de tipo PP y retorna una salida de tipo PP.

Teorema 4 — Howard (1969) — Correspondencia de Curry-Howard

Los árboles de prueba de la deducción natural están en correspondencia biyectiva con los términos del STLC.

Teoría de tipos dependientes

Definición 6 — Tipos dependientes

En la deducción natural no hay términos. En el STLC, los términos pueden depender de otros términos (ej. a:PQpr1a:Pa : P \land Q \vdash \text{pr}_1\, a : P). En la teoría de tipos dependientes, no solo los términos, sino también los tipos pueden depender de términos.

Por ejemplo:

  • n:NVect(n)  typen : \mathbb{N} \vdash \text{Vect}(n) \;\text{type} (vectores de longitud nn)
  • n:NisEven(n)  typen : \mathbb{N} \vdash \text{isEven}(n) \;\text{type} (testigo de que nn es par)

Si interpretamos los tipos dependientes como:

  • Proposiciones: los tipos dependientes son predicados.
  • Conjuntos: los tipos dependientes son familias indexadas de conjuntos.
  • Programas: los tipos dependientes son especificaciones parametrizadas.

Funciones dependientes y Π\Pi-tipos

Definición 7 — Funciones dependientes

Una función dependiente O:n:NVect(n)O : \prod_{n:\mathbb{N}} \text{Vect}(n) asigna a cada n:Nn : \mathbb{N} un vector de longitud nn. A veces se escribe O:(n:N)Vect(n)O : (n : \mathbb{N}) \to \text{Vect}(n).

La regla de eliminación nos da O(n):Vect(n)O(n) : \text{Vect}(n) para cualquier n:Nn : \mathbb{N}.

Definición 8 — Reglas para Π\Pi-tipos

Formación: Si Γ,x:PQ  type\Gamma, x : P \vdash Q \;\text{type}, entonces Γx:PQ  type\Gamma \vdash \prod_{x:P} Q \;\text{type}.

Introducción: Si Γ,x:Pq:Q\Gamma, x : P \vdash q : Q, entonces Γλx.q:x:PQ\Gamma \vdash \lambda x.\, q : \prod_{x:P} Q.

Eliminación: Si Γf:x:PQ\Gamma \vdash f : \prod_{x:P} Q y Γp:P\Gamma \vdash p : P, entonces Γfp:Q[p/x]\Gamma \vdash f\, p : Q[p/x].

Computación (β\beta): Γ(λx.q)pq[p/x]:Q[p/x]\Gamma \vdash (\lambda x.\, q)\, p \doteq q[p/x] : Q[p/x].

Unicidad (η\eta): Γλx.fxf:x:PQ\Gamma \vdash \lambda x.\, f\, x \doteq f : \prod_{x:P} Q.

Observaciones sobre los Π\Pi-tipos:

  • \to es un caso especial de Π\Pi: cuando QQ no depende de xx, x:PQ\prod_{x:P} Q es simplemente PQP \to Q.
  • \land es un caso especial de Π\Pi: si tenemos B\mathbb{B} (el tipo con 2 elementos), entonces b:BVectb\prod_{b:\mathbb{B}} \text{Vect}_b es lo mismo que Vect0Vect1\text{Vect}_0 \land \text{Vect}_1.
  • En la interpretación lógica, Π\Pi corresponde al cuantificador universal \forall.