stringtranslate.com

Teoría de tipos intuicionista

La teoría de tipos intuicionista (también conocida como teoría de tipos constructiva , o teoría de tipos de Martin-Löf ) es una teoría de tipos y un fundamento alternativo de las matemáticas . La teoría de tipos intuicionista fue creada por Per Martin-Löf , un matemático y filósofo sueco , quien la publicó por primera vez en 1972. Existen múltiples versiones de la teoría de tipos: Martin-Löf propuso variantes intensionales y extensionales de la teoría y primeras versiones impredicativas . demostrado ser inconsistente por la paradoja de Girard , dio paso a versiones predicativas . Sin embargo, todas las versiones mantienen el diseño central de lógica constructiva utilizando tipos dependientes .

Diseño

Martin-Löf diseñó la teoría de tipos sobre los principios del constructivismo matemático . El constructivismo requiere que cualquier prueba de existencia contenga un "testigo". Por lo tanto, cualquier prueba de que "existe un número primo mayor que 1000" debe identificar un número específico que sea a la vez primo y mayor que 1000. La teoría de tipos intuicionista logró este objetivo de diseño internalizando la interpretación de BHK . Una consecuencia interesante es que las pruebas se convierten en objetos matemáticos que pueden examinarse, compararse y manipularse.

Los constructores de tipos de la teoría intuicionista de tipos se construyeron para seguir una correspondencia uno a uno con conectivos lógicos. Por ejemplo, el conectivo lógico llamado implicación ( ) corresponde al tipo de función ( ). Esta correspondencia se denomina isomorfismo de Curry-Howard . Las teorías de tipos anteriores también habían seguido este isomorfismo, pero la de Martin-Löf fue la primera en extenderlo a la lógica de predicados mediante la introducción de tipos dependientes.

Teoría de tipos

La teoría de tipos intuicionista tiene tres tipos finitos, que luego se componen utilizando cinco constructores de tipos diferentes. A diferencia de las teorías de conjuntos , las teorías de tipos no se construyen sobre una lógica como la de Frege . Por lo tanto, cada característica de la teoría de tipos cumple una doble función como característica tanto de las matemáticas como de la lógica.

Si no está familiarizado con la teoría de tipos y conoce la teoría de conjuntos, un resumen rápido es: Los tipos contienen términos al igual que los conjuntos contienen elementos. Los términos pertenecen a un solo tipo. Términos como y calcular ("reducir") hasta términos canónicos como 4. Para obtener más información, consulte el artículo sobre teoría de tipos .

0 tipo, 1 tipo y 2 tipo

Hay tres tipos finitos: El tipo 0 contiene 0 términos. El 1 tipo contiene 1 término canónico. Y el tipo 2 contiene 2 términos canónicos.

Debido a que el tipo 0 contiene 0 términos, también se le llama tipo vacío . Se utiliza para representar cualquier cosa que no pueda existir. También está escrito y representa cualquier cosa indemostrable. (Es decir, no puede existir una prueba de ello). Como resultado, la negación se define como una función de ello: .

Asimismo, el tipo 1 contiene 1 término canónico y representa la existencia. También se le llama tipo de unidad . A menudo representa proposiciones que pueden probarse y, por lo tanto, a veces se escribe . [ cita necesaria ]

Finalmente, el tipo 2 contiene 2 términos canónicos. Representa una elección definitiva entre dos valores. Se utiliza para valores booleanos pero no para proposiciones.

En cambio, las proposiciones están representadas por tipos particulares. Por ejemplo, una proposición verdadera se puede representar con el tipo 1 , mientras que una proposición falsa se puede representar con el tipo 0 . Pero no podemos afirmar que éstas sean las únicas proposiciones, es decir, la ley del tercero excluido no se cumple para las proposiciones de la teoría de tipos intuicionista.

constructor tipo Σ

Los tipos Σ contienen pares ordenados. Al igual que con los tipos típicos de pares ordenados (o 2 tuplas), un tipo Σ puede describir el producto cartesiano , de otros dos tipos, y . Lógicamente, un par ordenado de este tipo contendría una prueba de y una prueba de , por lo que se puede ver un tipo escrito como .

Los tipos Σ son más potentes que los típicos tipos de pares ordenados debido a la tipificación dependiente. En el par ordenado, el tipo del segundo término puede depender del valor del primer término. Por ejemplo, el primer término del par podría ser un número natural y el tipo del segundo término podría ser una secuencia de reales de longitud igual al primer término. Tal tipo se escribiría:

Usando la terminología de la teoría de conjuntos, esto es similar a una unión disjunta indexada de conjuntos. En el caso de pares ordenados habituales, el tipo del segundo término no depende del valor del primer término. Así, el tipo que describe el producto cartesiano se escribe:

Es importante señalar aquí que el valor del primer término, no depende del tipo del segundo término .

Los tipos Σ se pueden utilizar para construir tuplas más largas de tipo dependiente utilizadas en matemáticas y los registros o estructuras utilizados en la mayoría de los lenguajes de programación. Un ejemplo de una tupla 3 escrita de forma dependiente son dos números enteros y una prueba de que el primer número entero es menor que el segundo entero, descrito por el tipo:

La tipificación dependiente permite que los tipos Σ cumplan el papel de cuantificadores existenciales . La afirmación "existe un tipo , tal que está probado" se convierte en el tipo de pares ordenados donde el primer elemento es el valor del tipo y el segundo elemento es una prueba de . Observe que el tipo del segundo elemento (pruebas de ) depende del valor en la primera parte del par ordenado ( ). Su tipo sería:

constructor tipo Π

Los tipos Π contienen funciones. Al igual que los tipos de funciones típicos, constan de un tipo de entrada y un tipo de salida. Sin embargo, son más potentes que los tipos de funciones típicos, ya que el tipo de retorno puede depender del valor de entrada. Las funciones en la teoría de tipos son diferentes de la teoría de conjuntos. En la teoría de conjuntos, se busca el valor del argumento en un conjunto de pares ordenados. En la teoría de tipos, el argumento se sustituye en un término y luego se aplica el cálculo ("reducción") al término.

Como ejemplo, el tipo de función que dado un número natural devuelve un vector que contiene números reales se escribe:

Cuando el tipo de salida no depende del valor de entrada, el tipo de función a menudo se escribe simplemente con una extensión . Así, es el tipo de funciones desde números naturales hasta números reales. Estos tipos Π corresponden a implicaciones lógicas. La proposición lógica corresponde al tipo , que contiene funciones que toman pruebas de A y devuelven pruebas de B. Este tipo podría escribirse de manera más consistente como:

Los tipos Π también se utilizan en lógica para la cuantificación universal . La afirmación "para cada tipo , está probado" se convierte en una función desde tipo hasta pruebas de . Por lo tanto, dado el valor de la función se genera una prueba que es válida para ese valor. El tipo seria

= constructor de tipos

Los tipos = se crean a partir de dos términos. Dados dos términos como y , puedes crear un nuevo tipo . Los términos de ese nuevo tipo representan pruebas que el par reduce al mismo término canónico. Por lo tanto, dado que ambos y calculan el término canónico , habrá un término del tipo . En la teoría de tipos intuicionista, hay una única forma de introducir tipos = y es mediante reflexividad :

Es posible crear tipos = en los que los términos no se reducen al mismo término canónico, pero no podrá crear términos de ese nuevo tipo. De hecho, si pudiera crear un término de , podría crear un término de . Poner eso en una función generaría una función de tipo . Dado que así es como la teoría de tipos intuicionista define la negación, tendrías o, finalmente, .

La igualdad de pruebas es un área de investigación activa en la teoría de la prueba y ha llevado al desarrollo de la teoría de tipos de homotopía y otras teorías de tipos.

tipos inductivos

Los tipos inductivos permiten la creación de tipos complejos y autorreferenciales. Por ejemplo, una lista enlazada de números naturales es una lista vacía o un par de un número natural y otra lista enlazada. Los tipos inductivos se pueden utilizar para definir estructuras matemáticas ilimitadas como árboles , gráficos , etc. De hecho, el tipo de números naturales se puede definir como un tipo inductivo, ya sea como sucesor o sucesor de otro número natural.

Los tipos inductivos definen nuevas constantes, como el cero y la función sucesora . Dado que no tiene una definición y no se puede evaluar mediante sustitución, términos como y se convierten en términos canónicos de los números naturales.

Las pruebas de tipos inductivos son posibles mediante inducción . Cada nuevo tipo inductivo viene con su propia regla inductiva. Para probar un predicado para cada número natural, se utiliza la siguiente regla:

Los tipos inductivos en la teoría de tipos intuicionista se definen en términos de tipos W, el tipo de árboles bien fundamentados . El trabajo posterior en teoría de tipos generó tipos coinductivos, inducción-recursión e inducción-inducción para trabajar en tipos con tipos de autorreferencialidad más oscuros. Los tipos inductivos superiores permiten definir la igualdad entre términos.

Tipos de universo

Los tipos de universo permiten escribir pruebas sobre todos los tipos creados con los otros constructores de tipos. Cada término del tipo de universo se puede asignar a un tipo creado con cualquier combinación de y el constructor de tipos inductivos. Sin embargo, para evitar paradojas, no existe ningún término que se asigne a cualquier . [1]

Para escribir pruebas sobre todos los "tipos pequeños" y , debe utilizar , que contiene un término para , pero no para sí mismo . De manera similar, para . Existe una jerarquía predicativa de universos, por lo que para cuantificar una prueba sobre universos constantes fijos , puede utilizar .

Los tipos de universos son una característica complicada de las teorías de tipos. La teoría de tipos original de Martin-Löf tuvo que cambiarse para dar cuenta de la paradoja de Girard . Investigaciones posteriores cubrieron temas como "súper universos", " universos Mahlo " y universos impredicativos.

Juicios

La definición formal de la teoría de tipos intuicionista se escribe mediante juicios. Por ejemplo, en la afirmación "si es un tipo y es un tipo, entonces es un tipo", hay juicios de "es un tipo", "y" y "si... entonces...". La expresión no es un juicio; es el tipo que se está definiendo.

Este segundo nivel de la teoría de tipos puede resultar confuso, especialmente cuando se trata de igualdad. Hay un juicio de igualdad de términos, que podría decir . Es una afirmación de que dos términos se reducen a un mismo término canónico. También hay un juicio de igualdad de tipos, digamos que , lo que significa que cada elemento de es un elemento del tipo y viceversa. A nivel de tipo, hay un tipo y contiene términos si hay una prueba de que se reducen al mismo valor. (Los términos de este tipo se generan utilizando el criterio de igualdad de términos). Por último, existe un nivel de igualdad en el idioma inglés, porque usamos la palabra "cuatro" y el símbolo " " para referirnos al término canónico . Martin-Löf denomina sinónimos como estos "definitivamente iguales".

La descripción de las sentencias que figura a continuación se basa en la discusión de Nordström, Petersson y Smith.

La teoría formal trabaja con tipos y objetos .

Un tipo es declarado por:

Un objeto existe y es de un tipo si:

Los objetos pueden ser iguales.

y los tipos pueden ser iguales

Se declara un tipo que depende de un objeto de otro tipo.

y eliminado por sustitución

Un objeto que depende de un objeto de otro tipo se puede hacer de dos maneras. Si el objeto es "abstraído", entonces se escribe

y eliminado por sustitución

El objeto que depende del objeto también se puede declarar como una constante como parte de un tipo recursivo. Un ejemplo de tipo recursivo es:

Aquí hay una constante objeto que depende del objeto. No está asociado con una abstracción. Las constantes como se pueden eliminar definiendo la igualdad. Aquí la relación con la suma se define usando igualdad y usando coincidencia de patrones para manejar el aspecto recursivo de :

se manipula como una constante opaca: no tiene estructura interna para la sustitución.

Entonces, los objetos y tipos y estas relaciones se utilizan para expresar fórmulas en la teoría. Los siguientes estilos de juicios se utilizan para crear nuevos objetos, tipos y relaciones a partir de los existentes:

Por convención, existe un tipo que representa todos los demás tipos. Se llama (o ). Como es un tipo, sus miembros son objetos. Hay un tipo dependiente que asigna cada objeto a su tipo correspondiente. En la mayoría de los textos nunca está escrito. A partir del contexto de la declaración, un lector casi siempre puede decir si se refiere a un tipo o si se refiere al objeto que corresponde al tipo.

Ésta es la base completa de la teoría. Todo lo demás es derivado.

Para implementar la lógica, a cada proposición se le asigna su propio tipo. Los objetos de esos tipos representan las diferentes formas posibles de probar la proposición. Si no hay prueba para la proposición, entonces el tipo no tiene objetos. Operadores como "y" y "o" que funcionan con proposiciones introducen nuevos tipos y nuevos objetos. Así es un tipo que depende del tipo y del tipo . Los objetos de ese tipo dependiente están definidos para existir para cada par de objetos en y . Si or no tiene pruebas y es un tipo vacío, entonces el nuevo tipo que lo representa también está vacío.

Esto se puede hacer para otros tipos (booleanos, números naturales, etc.) y sus operadores.

Modelos categóricos de teoría de tipos.

Utilizando el lenguaje de la teoría de categorías , RAG Seely introdujo la noción de categoría cerrada localmente cartesiana (LCCC) como modelo básico de la teoría de tipos. Hofmann y Dybjer lo han refinado a Categorías con familias o Categorías con atributos basándose en trabajos anteriores de Cartmell. [2]

Una categoría con familias es una categoría C de contextos (en la que los objetos son contextos y los morfismos de contexto son sustituciones), junto con un funtor T  : C opFam ( Set ).

Fam ( Set ) es la categoría de familias de Conjuntos, en la que los objetos son pares de un "conjunto de índices" A y una función B : XA , y los morfismos son pares de funciones f  : AA' y g  : XX' , tal que B' ° g = f ° B ; en otras palabras, f asigna B a a B g ( a ) .

El funtor T asigna a un contexto G un conjunto de tipos y, para cada uno , un conjunto de términos. Los axiomas de un functor requieren que jueguen armoniosamente con la sustitución. La sustitución generalmente se escribe en la forma Af o af , donde A es un tipo in y a es un término in , y f es una sustitución de D a G. Aquí y .

La categoría C debe contener un objeto terminal (el contexto vacío) y un objeto final para una forma de producto llamada comprensión o extensión de contexto, en la que el elemento derecho es un tipo en el contexto del elemento izquierdo. Si G es un contexto, y , entonces debería haber un objeto final entre contextos D con asignaciones p  : DG , q  : Tm ( D,Ap ).

Un marco lógico, como el de Martin-Löf, toma la forma de condiciones de cierre de los conjuntos de tipos y términos dependientes del contexto: que debería haber un tipo llamado Conjunto, y para cada conjunto un tipo, que los tipos deberían cerrarse bajo formas. de suma y producto dependientes, etc.

Una teoría como la de la teoría predicativa de conjuntos expresa condiciones de cierre sobre los tipos de conjuntos y sus elementos: que deben cerrarse bajo operaciones que reflejen suma y producto dependientes, y bajo diversas formas de definición inductiva.

Extensional versus intensional

Una distinción fundamental es la teoría del tipo extensional versus intensional . En la teoría de tipos extensionales, la igualdad definicional (es decir, computacional) no se distingue de la igualdad proposicional, que requiere prueba. Como consecuencia, la verificación de tipos se vuelve indecidible en la teoría de tipos extensionales porque los programas en la teoría podrían no terminar. Por ejemplo, tal teoría permite darle un tipo al combinador Y ; Se puede encontrar un ejemplo detallado de esto en Programación de Nordstöm y Petersson en la Teoría de tipos de Martin-Löf . [3] Sin embargo, esto no impide que la teoría de tipos extensionales sea la base de una herramienta práctica; por ejemplo, Nuprl se basa en la teoría de tipos extensionales.

Por el contrario, en la teoría de tipos intensionales la verificación de tipos es decidible , pero la representación de conceptos matemáticos estándar es algo más engorrosa, ya que el razonamiento intensional requiere el uso de setoides o construcciones similares. Hay muchos objetos matemáticos comunes con los que es difícil trabajar o que no se pueden representar sin ellos, por ejemplo, números enteros , números racionales y números reales . Los números enteros y racionales se pueden representar sin setoides, pero es difícil trabajar con esta representación. Los números reales de Cauchy no se pueden representar sin esto. [4] [ se necesita cita completa ]

La teoría del tipo de homotopía trabaja para resolver este problema. Permite definir tipos inductivos superiores , que no sólo definen constructores de primer orden ( valores o puntos ), sino también constructores de orden superior, es decir, igualdades entre elementos ( caminos ), igualdades entre igualdades ( homotopías ), ad infinitum .

Implementaciones de la teoría de tipos.

Se han implementado diferentes formas de teoría de tipos como sistemas formales subyacentes a una serie de asistentes de prueba . Si bien muchos se basan en las ideas de Per Martin-Löf, muchos tienen características adicionales, más axiomas o un trasfondo filosófico diferente. Por ejemplo, el sistema Nuprl se basa en la teoría de tipos computacionales [5] y Coq se basa en el cálculo de construcciones (co)inductivas . Los tipos dependientes también aparecen en el diseño de lenguajes de programación como ATS , Cayenne , Epigram , Agda , [6] e Idris . [7]

Teorías tipo Martin-Löf

Per Martin-Löf construyó varias teorías tipográficas que se publicaron en distintas épocas, algunas de ellas mucho más tarde que cuando los preprints con su descripción estuvieron accesibles a los especialistas (entre otros, Jean-Yves Girard y Giovanni Sambin). La siguiente lista intenta enumerar todas las teorías que se han descrito en forma impresa y esbozar las características clave que las distinguían entre sí. Todas estas teorías tenían productos dependientes, sumas dependientes, uniones disjuntas, tipos finitos y números naturales. Todas las teorías tenían las mismas reglas de reducción que no incluían la reducción η ni para productos dependientes ni para sumas dependientes, excepto en MLTT79, donde se agrega la reducción η para productos dependientes.

MLTT71 fue la primera teoría de tipos creada por Per Martin-Löf. Apareció en una preimpresión en 1971. Tenía un universo, pero este universo tenía un nombre en sí mismo, es decir, era una teoría de tipos con, como se llama hoy, "Tipo en Tipo". Jean-Yves Girard ha demostrado que este sistema era inconsistente y la preimpresión nunca se publicó.

MLTT72 se presentó en una preimpresión de 1972 que ahora se ha publicado. [8] Esa teoría tenía un universo V y ningún tipo de identidad (=-tipos). El universo era " predicativo " en el sentido de que no se suponía que el producto dependiente de una familia de objetos de V sobre un objeto que no estaba en V como, por ejemplo, el propio V, estuviera en V. El universo era à la Principia Mathematica de Russell , es decir, se escribiría directamente "T∈V" y "t∈T" (Martin-Löf usa el signo "∈" en lugar del moderno ":") sin el constructor adicional como "El".

MLTT73 fue la primera definición de una teoría de tipos que publicó Per Martin-Löf (fue presentada en el Logic Colloquium '73 y publicada en 1975 [9] ). Hay tipos de identidad, que él describe como "proposiciones", pero como no se introduce ninguna distinción real entre las proposiciones y el resto de los tipos, el significado de esto no está claro. Existe lo que más tarde adquiere el nombre de J-eliminator pero aún sin nombre (véanse págs. 94-95). Hay en esta teoría una secuencia infinita de universos V 0 , ..., V n , ... . Los universos son predicativos, a la Russell y no acumulativos . De hecho, el Corolario 3.10 de la p. 115 dice que si A∈V m y B∈V n son tales que A y B son convertibles, entonces m  =  n . Esto significa, por ejemplo, que sería difícil formular el axioma de univalencia en esta teoría: hay tipos contráctiles en cada uno de los Vi , pero no está claro cómo declararlos iguales ya que no hay tipos de identidad que conecten a Vi . y V j para ij .

MLTT79 fue presentado en 1979 y publicado en 1982. [10] En este artículo, Martin-Löf introdujo los cuatro tipos básicos de juicio para la teoría de tipos dependientes que desde entonces se ha vuelto fundamental en el estudio de la metateoría de tales sistemas. También introdujo los contextos como un concepto separado (ver p. 161). Hay tipos de identidad con el J-eliminador (que ya apareció en MLTT73 pero que no tenía este nombre allí) pero también con la regla que hace que la teoría sea "extensional" (p. 169). Hay tipos W. Hay una secuencia infinita de universos predicativos que son acumulativos .

Bibliopolis : hay una discusión sobre una teoría de tipos en el libro Bibliopolis de 1984, [11] pero es algo abierta y no parece representar un conjunto particular de opciones, por lo que no hay una teoría de tipos específica asociada con ella.

Ver también

Notas

  1. ^ Bertot, Yves; Castéran, Pierre (2004). Demostración interactiva de teoremas y desarrollo de programas: Coq'Art: el cálculo de construcciones inductivas . Textos de informática teórica. Berlín Heidelberg: Springer. ISBN 978-3-540-20854-9.
  2. ^ Clairambault, Pierre; Dybjer, Peter (2014). "La biequivalencia de categorías cerradas localmente cartesianas y teorías de tipo Martin-Löf". Estructuras matemáticas en informática . 24 (6). arXiv : 1112.3456 . doi :10.1017/S0960129513000881. ISSN  0960-1295. S2CID  416274.
  3. ^ Bengt Nordström; Kent Petersson; Jan M. Smith (1990). Programación en la teoría de tipos de Martin-Löf . Prensa de la Universidad de Oxford, pág. 90.
  4. ^ Altenkirch, Thorsten, Thomas Anberrée y Nuo Li. "Cocientes definibles en teoría de tipos".
  5. ^ Allen, SF; Bickford, M.; Alguacil, RL; Eaton, R.; Kreitz, C.; Lorigo, L.; Morán, E. (2006). "Innovaciones en teoría de tipos computacionales utilizando Nuprl". Revista de lógica aplicada . 4 (4): 428–469. doi : 10.1016/j.jal.2005.10.005 .
  6. ^ Norell, Ulf (2009). "Programación escrita de forma dependiente en Agda". Actas del cuarto taller internacional sobre tipos en el diseño e implementación de lenguajes . TLDI'09. Nueva York, NY, Estados Unidos: ACM. págs. 1–2. CiteSeerX 10.1.1.163.7149 . doi :10.1145/1481861.1481862. ISBN  9781605584201. S2CID  1777213.
  7. ^ Brady, Edwin (2013). "Idris, un lenguaje de programación de tipo dependiente de propósito general: diseño e implementación". Revista de programación funcional . 23 (5): 552–593. doi : 10.1017/S095679681300018X . ISSN  0956-7968. S2CID  19895964.
  8. ^ Per Martin-Löf, Una teoría intuicionista de tipos, Veinticinco años de teoría de tipos constructiva (Venecia, 1995), Oxford Logic Guides, v. 36, págs. 127-172, Universidad de Oxford. Prensa, Nueva York, 1998
  9. ^ Martin-Löf, Per (1975). "Una teoría intuicionista de tipos: parte predicativa". Estudios de Lógica y Fundamentos de las Matemáticas . Coloquio de lógica '73 (Bristol, 1973). vol. 80. Ámsterdam: Holanda Septentrional. págs. 73-118.
  10. ^ Martin-Löf, Per (1982). "Matemáticas constructivas y programación informática". Estudios de Lógica y Fundamentos de las Matemáticas . Lógica, metodología y filosofía de la ciencia, VI (Hannover, 1979). vol. 104. Ámsterdam: Holanda Septentrional. págs. 153-175.
  11. ^ Per Martin-Löf, "Teoría de tipos intuicionista", Estudios en teoría de la prueba (notas de clase de Giovanni Sambin), vol. 1, págs. iv+91, 1984

Referencias

Otras lecturas

enlaces externos