Articulo de referencia

Tipo inductivo

En teoría de tipos , un sistema tiene tipos inductivos si dispone de mecanismos para crear un nuevo tipo a partir de constantes y funciones que generan términos de ese tipo. Est...

En teoría de tipos , un sistema tiene tipos inductivos si dispone de mecanismos para crear un nuevo tipo a partir de constantes y funciones que generan términos de ese tipo. Esta característica cumple una función similar a la de las estructuras de datos en un lenguaje de programación y permite que la teoría de tipos incorpore conceptos como números , relaciones y árboles . Como su nombre indica, los tipos inductivos pueden ser autorreferenciales, pero generalmente solo de forma que permitan la recursión estructural .

El ejemplo estándar consiste en codificar los números naturales utilizando la codificación de Peano . Se puede definir en Rocq (anteriormente llamado Coq ) de la siguiente manera:

Inductivo nat : Tipo := | O : nat | S : nat -> nat .

Aquí, un número natural se crea a partir de la constante "0" (que representa el cero) o aplicando la función "S" a otro número natural. "S" es la función sucesora , que representa la suma de uno a un número. Así, "S O" es uno, "S (SO)" es dos, "S (S (SO))" es tres, y así sucesivamente.

Desde su introducción, los tipos inductivos se han ampliado para codificar cada vez más estructuras, sin dejar de ser predicativos y de admitir la recursión estructural.

Principio de inducción

Los tipos inductivos suelen venir acompañados de una función para demostrar propiedades sobre ellos. Por lo tanto, "nat" puede venir acompañado de (en la sintaxis de Rocq):

nat_ind : ( para todo P : nat -> Prop , ( P O ) -> ( para todo n , P n -> P ( S n )) -> ( para todo n , P n )).

En otras palabras: para cualquier predicado "P" sobre los números naturales, dada una demostración de "P O" y una demostración de "P n -> P (n+1)", obtenemos una demostración de "para todo n, P n". Este es el conocido principio de inducción para los números naturales.

Implementaciones

Tipos W y M

Los tipos W son tipos bien fundados en la teoría de tipos intuicionista (ITT). [ 1 ] Generalizan los números naturales, las listas, los árboles binarios y otros tipos de datos con forma de árbol. Sea U un universo de tipos . Dado un tipo A  : U y una familia dependiente B  : AU , se puede formar un tipo W.Wa:AB(a){\displaystyle {\mathsf {W}}_{a:A}B(a)}. El tipo A puede pensarse como "etiquetas" para los (potencialmente infinitos) constructores del tipo inductivo que se está definiendo, mientras que B indica la (potencialmente infinita) aridad de cada constructor. Los tipos W (resp. tipos M) también pueden entenderse como árboles bien fundados (resp. no bien fundados) con nodos etiquetados por elementos a  : A y donde el nodo etiquetado por a tiene B ( a )-muchos subárboles. [ 2 ] Cada tipo W es isomorfo al álgebra inicial de un llamado functor polinomial .

Sean 0 , 1 , 2 , etc. tipos finitos con habitantes 1 1  : 1 , 1 2 , 2 2 : 2 , etc. Se pueden definir los números naturales como el tipo W. norte:=Wincógnita:2F(incógnita){\displaystyle \mathbb {N} :={\mathsf {W}}_{x:\mathbf {2} }f(x)} con f  : 2 U se define por f (1 2 ) = 0 (que representa el constructor para cero, que no toma argumentos), y f (2 2 ) = 1 (que representa la función sucesora, que toma un argumento).

Se pueden definir listas sobre un tipo A  : U comoLista(A):=W(incógnita:1+A)F(incógnita){\displaystyle \operatorname {Lista} (A):={\mathsf {W}}_{(x:\mathbf {1} +A)}f(x)}dónde F(inl(11))=0F(inr(a))=1{\displaystyle {\begin{aligned}f(\operatorname {inl} (1_{\mathbf {1} }))&=\mathbf {0} \\f(\operatorname {inr} (a))&=\mathbf {1} \end{aligned}}} y 1 1 es el único habitante de 1 . El valor deF(inl(11)){\displaystyle f(\operatorname {inl} (1_{\mathbf {1} }))}corresponde al constructor para la lista vacía, mientras que el valor deF(inr(a)){\displaystyle f(\operatorname {inr} (a))}corresponde al constructor que agrega un al principio de otra lista.

El constructor para elementos de un tipo W genéricoWincógnita:AB(incógnita){\displaystyle {\mathsf {W}}_{x:A}B(x)}tiene tipo spag:a:A(B(a)Wincógnita:AB(incógnita))Wincógnita:AB(incógnita).{\displaystyle {\mathsf {sup}}:\prod _{a:A}{\Big (}B(a)\to {\mathsf {W}}_{x:A}B(x){\Big )}\to {\mathsf {W}}_{x:A}B(x).} También podemos escribir esta regla al estilo de una demostración por deducción natural , a:AF:B(a)Wincógnita:AB(incógnita)spag(a,F):Wincógnita:AB(incógnita).{\displaystyle {\frac {a:A\qquad f:B(a)\to {\mathsf {W}}_{x:A}B(x)}{{\mathsf {sup}}(a,f):{\mathsf {W}}_{x:A}B(x)}}.}

La regla de eliminación para los tipos W funciona de manera similar a la inducción estructural en árboles. Si, siempre que una propiedad (bajo la interpretación de proposiciones como tipos )do:Wincógnita:AB(incógnita)U{\displaystyle C:{\mathsf {W}}_{x:A}B(x)\to U}Si se cumple para todos los subárboles de un árbol dado, también se cumple para ese árbol, y luego se cumple para todos los árboles.

w:Wa:AB(a)a:A,F:B(a)Wincógnita:AB(incógnita),do:b:B(a)do(F(b))h(a,F,do):do(spag(a,F))milimetro(w,h):do(w){\displaystyle {\frac {w:{\mathsf {W}}_{a:A}B(a)\qquad a:A,\;f:B(a)\to {\mathsf {W}}_{x:A}B(x),\;c:\prod _{b:B(a)}C(f(b))\;\vdash \;h(a,f,c):C({\mathsf {sup}}(a,f))}{{\mathsf {elim}}(w,h):C(w)}}}

En las teorías de tipos extensionales, los tipos W (o M) pueden definirse, salvo isomorfismo , como álgebras iniciales (o coálgebras finales) para functores polinomiales . En este caso, la propiedad de inicialidad (o finalidad) corresponde directamente al principio de inducción apropiado. [ 3 ] En las teorías de tipos intensionales con el axioma de univalencia , esta correspondencia se mantiene salvo homotopía (igualdad proposicional). [ 4 ] [ 5 ] [ 6 ]

Los tipos M son duales a los tipos W y representan datos coinductivos (potencialmente infinitos) como flujos . [ 7 ] Los tipos M se pueden derivar de los tipos W. [ 8 ]

definiciones mutuamente inductivas

Esta técnica permite definir varios tipos que dependen unos de otros. Por ejemplo, definir dos predicados de paridad sobre números naturales utilizando dos tipos mutuamente inductivos en Rocq:

Inductivo par : nat -> Prop := | zero_is_even : even O | S_of_odd_is_even : ( para todo n : nat , odd n -> even ( S n )) con odd : nat -> Prop := | S_of_even_is_odd : ( para todo n : nat , even n -> odd ( S n )).

Recursión inductiva

La inducción-recursión surgió como un estudio de los límites de la Teoría de Tipos Inductivos (TTI). Una vez descubiertos, estos límites se transformaron en reglas que permitieron definir nuevos tipos inductivos. Dichos tipos podían depender de una función, y la función del tipo, siempre que ambos se definieran simultáneamente.

Los tipos de universo se pueden definir mediante inducción-recursión.

Inducción-inducción

La inducción permite definir un tipo y una familia de tipos al mismo tiempo. Por lo tanto, un tipo A y una familia de tiposB:ATypagmi{\displaystyle B:A\to Type}.

Tipos inductivos superiores

Esta es un área de investigación actual en la teoría de tipos homotópicos (HoTT). Se diferencia de la teoría de tipos inductivos (ITT) por su tipo identidad (igualdad). Los tipos inductivos superiores definen un nuevo tipo con constantes y funciones que crean elementos del tipo, y nuevas instancias del tipo identidad que los relacionan.

Un ejemplo sencillo es el tipo círculo , que se define con dos constructores, un punto base;

base  : círculo

y un bucle;

bucle  : base = base .

La existencia de un nuevo constructor para el tipo identidad convierte al círculo en un tipo inductivo superior.

Véase también

  • La coinducción permite (de hecho) estructuras infinitas en la teoría de tipos.

Referencias

  1. ^ Martin-Löf, Per (1984). Teoría de tipos intuicionista (PDF) . Sambin, Giovanni. Nápoles: Bibliópolis. ISBN 8870881059OCLC 12731401 
  2. Ahrens, Benedikt; Capriotti, Paolo; Spadotti, Régis (12 de abril de 2015). Árboles no bien fundados en la teoría de tipos homotópicos . Actas internacionales Leibniz en informática (LIPIcs). Vol. 38. págs. 17–30 . arXiv : 1504.02949 . doi : 10.4230/LIPIcs.TLCA.2015.17 . ISBN   9783939897873. S2CID 15020752 . 
  3. Dybjer, Peter (1997). "Representación de conjuntos definidos inductivamente mediante buenos ordenamientos en la teoría de tipos de Martin-Löf". Theoretical Computer Science . 176 ( 1–2 ): 329–335 . doi : 10.1016/s0304-3975(96)00145-4 .
  4. Awodey, Steve; Gambino, Nicola; Sojakova, Kristina (2012-01-18). "Tipos inductivos en la teoría de tipos homotópicos". arXiv : 1201.3898 [ math.LO ].
  5. Ahrens, Benedikt; Capriotti, Paolo; Spadotti, Régis (12 de abril de 2015). Árboles no bien fundados en la teoría de tipos homotópicos . Actas internacionales Leibniz en informática (LIPIcs). Vol. 38. págs. 17–30 . arXiv : 1504.02949 . doi : 10.4230/LIPIcs.TLCA.2015.17 . ISBN   9783939897873. S2CID 15020752 . 
  6. Awodey, Steve; Gambino, Nicola; Sojakova, Kristina (2015-04-21). "Álgebras iniciales de homotopía en teoría de tipos". arXiv : 1504.05531 [ math.LO ].
  7. van den Berg, Benno; Marchi, Federico De (2007). "Árboles no bien fundados en categorías". Annals of Pure and Applied Logic . 146 (1): 40– 59. arXiv : math/0409158 . doi : 10.1016/j.apal.2006.12.001 . S2CID 360990 . 
  8. Abbott, Michael; Altenkirch, Thorsten; Ghani, Neil (2005). "Contenedores: Construcción de tipos estrictamente positivos" . Theoretical Computer Science . 342 (1): 3– 27. CiteSeerX 10.1.1.166.34 . doi : 10.1016/j.tcs.2005.06.002 . 
  • Programa de Fundamentos Univalentes (2013). Teoría de tipos homotópicos: Fundamentos Univalentes de las Matemáticas . Instituto de Estudios Avanzados.
  • Diapositivas de inducción-recursión
  • Diapositivas de inducción-inducción
  • Tipos inductivos superiores: un recorrido por el zoológico