Teoría Homotópica de Tipos

Aritmética en Teoría de Tipos

Así como mostramos que la lógica de primer orden es un fragmento de la teoría de tipos, ahora veremos que las propiedades familiares de los números naturales emergen del principio de inducción. Toda la aritmética que conocemos puede derivarse dentro del sistema, sin postular axiomas sobre la suma o la multiplicación.

Operaciones básicas

Recordemos las definiciones del capítulo sobre tipos inductivos. La suma se define por recursión en el segundo argumento:

add(n,0)n\text{add}(n, 0) \doteq n

add(n,Sm)S(add(n,m))\text{add}(n, Sm) \doteq S(\text{add}(n, m))

La multiplicación se define de manera análoga:

mult(n,0)0\text{mult}(n, 0) \doteq 0

mult(n,Sm)add(n,mult(n,m))\text{mult}(n, Sm) \doteq \text{add}(n, \text{mult}(n, m))

Ambas definiciones utilizan únicamente el principio de eliminación de N\mathbb{N}. A partir de ellas, las propiedades aritméticas se demuestran por inducción.

Propiedades de la suma

Teorema 1 — Neutro a derecha: add(n,0)=Nn\text{add}(n, 0) =_{\mathbb{N}} n

Por la regla de computación, add(n,0)n\text{add}(n, 0) \doteq n. Luego, por reflexividad, rn:add(n,0)=Nnr_n : \text{add}(n, 0) =_{\mathbb{N}} n. Esta igualdad es judgmental: se obtiene directamente de la definición.

Teorema 2 — Neutro a izquierda: add(0,n)=Nn\text{add}(0, n) =_{\mathbb{N}} n

Esta igualdad no es judgmental: como la recursión se hace en el segundo argumento, add(0,n)\text{add}(0, n) no se reduce directamente a nn. Necesitamos inducción sobre nn.

Demostración

Caso base (n0n \equiv 0):

add(0,0)0\text{add}(0, 0) \doteq 0 por computación. Luego r0:add(0,0)=N0r_0 : \text{add}(0, 0) =_{\mathbb{N}} 0.

Paso inductivo (nSkn \equiv Sk, hipótesis p:add(0,k)=Nkp : \text{add}(0, k) =_{\mathbb{N}} k):

Por computación: add(0,Sk)S(add(0,k))\text{add}(0, Sk) \doteq S(\text{add}(0, k)).

Aplicando SS a la hipótesis inductiva (ap(S,p)\text{ap}(S, p)): S(add(0,k))=NSkS(\text{add}(0, k)) =_{\mathbb{N}} Sk.

Componiendo ambas igualdades: add(0,Sk)=NSk\text{add}(0, Sk) =_{\mathbb{N}} Sk.

QED
Teorema 3 — add(n,Sm)=NS(add(n,m))\text{add}(n, Sm) =_{\mathbb{N}} S(\text{add}(n, m))

Por la regla de computación, add(n,Sm)S(add(n,m))\text{add}(n, Sm) \doteq S(\text{add}(n, m)). La igualdad se obtiene por reflexividad. Esta es otra igualdad judgmental.

Teorema 4 — add(Sn,m)=NS(add(n,m))\text{add}(Sn, m) =_{\mathbb{N}} S(\text{add}(n, m))

No es judgmental. Se demuestra por inducción sobre mm.

Demostración

Caso base (m0m \equiv 0):

add(Sn,0)Sn\text{add}(Sn, 0) \doteq Sn y S(add(n,0))SnS(\text{add}(n, 0)) \doteq Sn, ambos por computación. Luego rSnr_{Sn} es testigo.

Paso inductivo (mSkm \equiv Sk, hipótesis p:add(Sn,k)=NS(add(n,k))p : \text{add}(Sn, k) =_{\mathbb{N}} S(\text{add}(n, k))):

Por computación: add(Sn,Sk)S(add(Sn,k))\text{add}(Sn, Sk) \doteq S(\text{add}(Sn, k)).

Aplicando SS a la hipótesis: S(add(Sn,k))=NS(S(add(n,k)))S(\text{add}(Sn, k)) =_{\mathbb{N}} S(S(\text{add}(n, k))).

Por computación: S(add(n,Sk))S(S(add(n,k)))S(\text{add}(n, Sk)) \doteq S(S(\text{add}(n, k))).

Componiendo: add(Sn,Sk)=NS(add(n,Sk))\text{add}(Sn, Sk) =_{\mathbb{N}} S(\text{add}(n, Sk)).

QED
Teorema 5 — Conmutatividad: add(n,m)=Nadd(m,n)\text{add}(n, m) =_{\mathbb{N}} \text{add}(m, n)

Por inducción sobre mm, usando los lemas anteriores.

Demostración

Caso base (m0m \equiv 0):

Debemos mostrar add(n,0)=Nadd(0,n)\text{add}(n, 0) =_{\mathbb{N}} \text{add}(0, n).

El lado izquierdo es nn por computación. El lado derecho es nn por el lema del neutro a izquierda.

Componiendo ambas igualdades obtenemos el resultado.

Paso inductivo (mSkm \equiv Sk, hipótesis p:add(n,k)=Nadd(k,n)p : \text{add}(n, k) =_{\mathbb{N}} \text{add}(k, n)):

Por computación: add(n,Sk)S(add(n,k))\text{add}(n, Sk) \doteq S(\text{add}(n, k)).

Aplicando SS a la hipótesis: S(add(n,k))=NS(add(k,n))S(\text{add}(n, k)) =_{\mathbb{N}} S(\text{add}(k, n)).

Por el lema anterior: add(Sk,n)=NS(add(k,n))\text{add}(Sk, n) =_{\mathbb{N}} S(\text{add}(k, n)).

Por simetría: S(add(k,n))=Nadd(Sk,n)S(\text{add}(k, n)) =_{\mathbb{N}} \text{add}(Sk, n).

Componiendo: add(n,Sk)=Nadd(Sk,n)\text{add}(n, Sk) =_{\mathbb{N}} \text{add}(Sk, n).

QED
Teorema 6 — Asociatividad: add(add(n,m),k)=Nadd(n,add(m,k))\text{add}(\text{add}(n, m), k) =_{\mathbb{N}} \text{add}(n, \text{add}(m, k))

Por inducción sobre kk.

Demostración

Caso base (k0k \equiv 0):

Ambos lados se reducen a add(n,m)\text{add}(n, m) por computación. El resultado se sigue por reflexividad.

Paso inductivo (kSjk \equiv Sj, hipótesis p:add(add(n,m),j)=Nadd(n,add(m,j))p : \text{add}(\text{add}(n, m), j) =_{\mathbb{N}} \text{add}(n, \text{add}(m, j))):

Por computación: add(add(n,m),Sj)S(add(add(n,m),j))\text{add}(\text{add}(n, m), Sj) \doteq S(\text{add}(\text{add}(n, m), j)).

Aplicando SS a la hipótesis: S(add(add(n,m),j))=NS(add(n,add(m,j)))S(\text{add}(\text{add}(n, m), j)) =_{\mathbb{N}} S(\text{add}(n, \text{add}(m, j))).

Por computación: add(n,add(m,Sj))add(n,S(add(m,j)))S(add(n,add(m,j)))\text{add}(n, \text{add}(m, Sj)) \doteq \text{add}(n, S(\text{add}(m, j))) \doteq S(\text{add}(n, \text{add}(m, j))).

Componiendo: add(add(n,m),Sj)=Nadd(n,add(m,Sj))\text{add}(\text{add}(n, m), Sj) =_{\mathbb{N}} \text{add}(n, \text{add}(m, Sj)).

QED

Propiedades de la multiplicación

Teorema 7 — Absorbente a derecha: mult(n,0)=N0\text{mult}(n, 0) =_{\mathbb{N}} 0

Por computación, mult(n,0)0\text{mult}(n, 0) \doteq 0. La igualdad se obtiene por reflexividad.

Teorema 8 — Neutro a derecha: mult(n,1)=Nn\text{mult}(n, 1) =_{\mathbb{N}} n

Por computación: mult(n,S0)add(n,mult(n,0))add(n,0)n\text{mult}(n, S0) \doteq \text{add}(n, \text{mult}(n, 0)) \doteq \text{add}(n, 0) \doteq n. La igualdad se obtiene por reflexividad.

Teorema 9 — Distributividad: mult(n,add(m,k))=Nadd(mult(n,m),mult(n,k))\text{mult}(n, \text{add}(m, k)) =_{\mathbb{N}} \text{add}(\text{mult}(n, m), \text{mult}(n, k))

Se demuestra por inducción sobre kk, usando la asociatividad de la suma. El caso base se sigue por computación, y el paso inductivo combina las reglas de computación de mult\text{mult} y add\text{add} con la hipótesis inductiva y la asociatividad.

Observaciones

La asimetría entre add(n,0)\text{add}(n, 0) y add(0,n)\text{add}(0, n) ilustra una distinción fundamental. La primera es una igualdad judgmental (\doteq): se obtiene directamente de la regla de computación, sin necesidad de prueba. La segunda es una igualdad proposicional (=N=_{\mathbb{N}}): requiere construir un término testigo mediante inducción. Esta diferencia refleja el hecho de que la recursión se realiza en el segundo argumento; el primer argumento permanece opaco hasta que se descompone por inducción.

Todas las demostraciones de este capítulo utilizan exclusivamente el principio de inducción de N\mathbb{N} y las propiedades del tipo identidad. No se postulan axiomas sobre la aritmética: las propiedades emergen de la estructura del tipo inductivo.