La teoría de tipos intuicionista (también conocida como teoría de tipos constructiva o teoría de tipos de Martin-Löf , o MLTT ) es una teoría de tipos y un fundamento alternativo de las matemáticas . Fue creada por Per Martin-Löf , 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 , y las primeras versiones impredicativas , cuya inconsistencia fue demostrada por la paradoja de Girard , dieron paso a versiones predicativas . Sin embargo, todas las versiones conservan el diseño central de la lógica constructiva mediante tipos dependientes .
Diseño
Martin-Löf diseñó la teoría de tipos basándose en los principios del constructivismo matemático . El constructivismo exige que toda prueba de existencia contenga un «testigo». Por lo tanto, cualquier prueba de «existe un número primo mayor que 1000» debe identificar un número específico que sea primo y mayor que 1000. La teoría de tipos intuicionista logró este objetivo de diseño al internalizar la interpretación BHK . Una consecuencia útil es que las pruebas se convierten en objetos matemáticos que pueden examinarse, compararse y manipularse.
Los constructores de tipos de la teoría de tipos intuicionista se diseñaron para seguir una correspondencia biunívoca con los conectores lógicos. Por ejemplo, el conector lógico llamado implicación ( ) corresponde al tipo de una función ( ). Esta correspondencia se conoce como el 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
Una teoría de tipos es una ontología matemática , o fundamento , que describe los objetos fundamentales que existen. En el fundamento estándar, la teoría de conjuntos combinada con la lógica matemática , el objeto fundamental es el conjunto, que es un contenedor de elementos. En la teoría de tipos, el objeto fundamental es el término, cada uno de los cuales pertenece a un único tipo.
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 basan en una lógica como la de Frege . Por lo tanto, cada característica de la teoría de tipos cumple una doble función, sirviendo tanto para las matemáticas como para la lógica.
tipo 0, tipo 1 y tipo 2
Hay tres tipos finitos: El tipo 0 no contiene términos. El tipo 1 contiene un término canónico. El tipo 2 contiene dos términos canónicos.
Debido a que el tipo 0 no contiene términos, también se le llama tipo vacío . Se utiliza para representar cualquier cosa que no pueda existir. También se escribe y representa cualquier cosa indemostrable (es decir, una prueba de ello no puede existir). Como resultado, la negación se define como una función de él: .
Asimismo, el tipo 1 contiene un término canónico y representa la existencia. También se le llama tipo de unidad .
Finalmente, el tipo 2 contiene dos términos canónicos. Representa una elección definida entre dos valores. Se utiliza para valores booleanos , pero no para proposiciones.
En cambio, las proposiciones se representan mediante tipos específicos. Por ejemplo, una proposición verdadera puede representarse con el tipo 1 , mientras que una proposición falsa puede representarse con el tipo 0. Sin embargo, no podemos afirmar que estas sean las únicas proposiciones; es decir, el principio del tercero excluido no se aplica a las proposiciones en la teoría de tipos intuicionista.
Constructor de tipo Σ
Los tipos Σ contienen pares ordenados. Al igual que con los tipos de pares ordenados (o 2-tuplas) típicos, un tipo Σ puede describir el producto cartesiano , , de otros dos tipos, y . Lógicamente, dicho par ordenado contendría una prueba de y una prueba de , por lo que se puede ver dicho tipo escrito como .
Los tipos Σ son más potentes que los tipos de pares ordenados típicos debido a la dependencia de tipos. 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 números reales de longitud igual a la del primer término. Dicho tipo se escribiría:
Utilizando la terminología de la teoría de conjuntos, esto es similar a una unión disjunta indexada de conjuntos. En el caso del producto cartesiano usual, el tipo del segundo término no depende del valor del primer término. Por lo tanto, el tipo que describe el producto cartesiano se escribe:
El valor del primer término, , no depende del tipo del segundo término, .
Los tipos Σ se pueden usar para construir tuplas dependientes más largas que se usan en matemáticas y los registros o estructuras que se usan en la mayoría de los lenguajes de programación. Un ejemplo de una 3-tupla dependiente son dos enteros y una prueba de que el primer entero es menor que el segundo, descrita por el tipo:
La tipificación dependiente permite que los tipos Σ cumplan la función de cuantificador existencial . La afirmación "existe un de tipo , tal que se demuestra" se convierte en el tipo de pares ordenados donde el primer elemento es el valor de tipo y el segundo es una prueba de . Nótese que el tipo del segundo elemento (pruebas de ) depende del valor en la primera parte del par ordenado ( ). Su tipo sería:
constructor de tipo Π
Los tipos Π contienen funciones. Al igual que los tipos de función típicos, constan de un tipo de entrada y un tipo de salida. Sin embargo, son más potentes que los tipos de función típicos, ya que el tipo de retorno puede depender del valor de entrada. Las funciones en la teoría de tipos difieren 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 un cálculo ("reducción") a dicho término.
Como ejemplo, el tipo de una 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 un . Por lo tanto, es el tipo de funciones de números naturales a números reales. Estos tipos Π corresponden a la implicación lógica. 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 forma más consistente como:
Los tipos Π también se utilizan en lógica para la cuantificación universal . La afirmación "para cada de tipo , se demuestra" se convierte en una función de de tipo a pruebas de . Por lo tanto, dado el valor para la función genera una prueba que se cumple para ese valor. El tipo sería
= constructor de tipo
Los tipos = se crean a partir de dos términos. Dados dos términos como y , se puede crear un nuevo tipo . Los términos de ese nuevo tipo representan pruebas de que el par se reduce al mismo término canónico. Por lo tanto, dado que tanto como se calculan al término canónico , habrá un término del tipo . En la teoría de tipos intuicionista, hay una única forma de introducir los tipos = y que es mediante reflexividad :
Es posible crear tipos = tales que los términos no se reducen al mismo término canónico, pero no podrás crear términos de ese nuevo tipo. De hecho, si pudieras crear un término de , podrías 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 las pruebas es un área de investigación activa en la teoría de la demostración y ha llevado al desarrollo de la teoría de tipos homotópicos 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 puede ser una lista vacía o un par formado por un número natural y otra lista enlazada. Los tipos inductivos se pueden usar para definir estructuras matemáticas ilimitadas como árboles , grafos , etc. De hecho, el tipo de números naturales puede definirse como un tipo inductivo, ya sea siendo el número natural o el sucesor de otro número natural.
Los tipos inductivos definen nuevas constantes, como el cero y la función sucesora . Dado que no tiene definición y no se puede evaluar mediante sustitución, términos como y se convierten en los términos canónicos de los números naturales.
Las demostraciones sobre tipos inductivos son posibles gracias a la inducción . Cada nuevo tipo inductivo viene con su propia regla inductiva. Para demostrar un predicado para cada número natural, se utiliza la siguiente regla:
En la teoría de tipos intuicionista, los tipos inductivos se definen en términos de tipos W, el tipo de árboles bien fundados . Trabajos posteriores en teoría de tipos generaron tipos coinductivos, inducción-recursión e inducción-inducción para trabajar con tipos que presentan formas más complejas de autorreferencialidad. Los tipos inductivos superiores permiten definir la igualdad entre términos.
Tipos de universo
Los tipos de universo permiten escribir demostraciones sobre todos los tipos creados con los demás constructores de tipos. Cada término del tipo de universo puede asignarse a un tipo creado con cualquier combinación de y el constructor de tipos inductivo. Sin embargo, para evitar paradojas, no hay ningún término que se asigne a para ningún . [ 1 ]
Para escribir demostraciones sobre todos los "tipos pequeños" y , debes usar , 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 demostración sobre cualquier universo constante fijo , puedes usar .
Los tipos de universo son un aspecto complejo de las teorías de tipos. La teoría de tipos original de Martin-Löf tuvo que modificarse para dar cuenta de la paradoja de Girard . Investigaciones posteriores abarcaron temas como los "superuniversos", los " universos de Mahlo " y los universos impredicativos.
Sentencias
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», se utilizan los juicios «es un tipo», «y» y «si... entonces...». La expresión en sí no es un juicio; es el tipo que se está definiendo.
Este segundo nivel de la teoría de tipos puede resultar confuso, especialmente en lo que respecta a la igualdad. Existe un juicio de igualdad de términos, que podría decir . Es una afirmación de que dos términos se reducen al mismo término canónico. También existe un juicio de igualdad de tipos, que dice que , lo que significa que cada elemento de es un elemento del tipo y viceversa. A nivel de tipo, existe un tipo y contiene términos si hay una prueba de que y se reducen al mismo valor. (Los términos de este tipo se generan utilizando el juicio de igualdad de términos). Por último, existe un nivel de igualdad en inglés, porque usamos la palabra "four" y el símbolo " " para referirnos al término canónico . Martin-Löf denomina a sinónimos como estos "definicionalmente iguales".
La descripción de los juicios que figura a continuación se basa en el análisis realizado en Nordström, Petersson y Smith.
La teoría formal trabaja con tipos y objetos .
Un tipo se declara mediante:
Un objeto existe y pertenece a 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
- , reemplazando la variable con el objeto en .
Un objeto que depende de un objeto de otro tipo se puede hacer de dos maneras. Si el objeto está "abstraído", entonces se escribe
y eliminado por sustitución
- , reemplazando la variable con el objeto en .
El objeto que depende de otro objeto también puede declararse como una constante dentro de un tipo recursivo. Un ejemplo de tipo recursivo es:
Aquí, es un objeto constante que depende de otro objeto. No está asociado con una abstracción. Las constantes como esta se pueden eliminar definiendo la igualdad. Aquí, la relación con la suma se define usando la igualdad y usando la coincidencia de patrones para manejar el aspecto recursivo de :
se manipula como una constante opaca; no tiene una estructura interna para la sustitución.
Así pues, los objetos, los tipos y estas relaciones se utilizan para expresar fórmulas en la teoría. Los siguientes estilos de juicio se utilizan para crear nuevos objetos, tipos y relaciones a partir de los existentes:
Por convención, existe un tipo que representa a todos los demás tipos. Se denomina (o ). Dado que es un tipo, sus miembros son objetos. Existe un tipo dependiente que asigna cada objeto a su tipo correspondiente. En la mayoría de los textos, nunca se escribe . A partir del contexto de la declaración, un lector casi siempre puede determinar si se refiere a un tipo o si se refiere al objeto en que corresponde a ese tipo.
Esta 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 un tipo propio. Los objetos de esos tipos representan las diferentes maneras posibles de probar la proposición. Si no hay prueba para la proposición, entonces el tipo no contiene objetos. Los operadores como "y" y "o" que trabajan 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 se definen para que existan para cada par de objetos en y . Si o no tienen prueba y es un tipo vacío, entonces el nuevo tipo que 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 la 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. Esta noción fue refinada por Hofmann y Dybjer a Categorías con Familias o Categorías con Atributos, basándose en trabajos previos de Cartmell. [ 2 ]
Extensional versus intensional
Una distinción fundamental radica en la teoría de tipos extensional frente a la intensional . En la teoría de tipos extensional, la igualdad definicional (es decir, computacional) no se distingue de la igualdad proposicional, que requiere demostración. En consecuencia, la verificación de tipos se vuelve indecidible en la teoría de tipos extensional porque los programas en dicha teoría podrían no terminar. Por ejemplo, esta teoría permite asignar un tipo al combinador Y ; un ejemplo detallado de esto se puede encontrar en el artículo de Nordstöm y Petersson, «Programming in Martin-Löf's Type Theory» [ 3 ] . Sin embargo, esto no impide que la teoría de tipos extensional sirva de base para una herramienta práctica; por ejemplo, Nuprl se basa en la teoría de tipos extensional.
En contraste, en la teoría de tipos intensional 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 esto, por ejemplo, los números enteros , los números racionales y los números reales . Los enteros y los números racionales se pueden representar sin setoides, pero esta representación es difícil de manejar. Los números reales de Cauchy no se pueden representar sin esto. [ 4 ]
La teoría de tipos homotópicos trabaja para resolver este problema. Permite definir tipos inductivos superiores , que no solo 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
Different forms of type theory have been implemented as the formal systems underlying a number of proof assistants. While many are based on Per Martin-Löf's ideas, many have added features, more axioms, or a different philosophical background. For instance, the Nuprl system is based on computational type theory[5] and Rocq is based on the calculus of (co)inductive constructions. Dependent types also feature in the design of programming languages such as ATS, Cayenne, Epigram, Agda,[6] and Idris.[7]
Martin-Löf type theories
Per Martin-Löf constructed several type theories that were published at various times, some of them much later than when the preprints with their description became accessible to specialists (among others Jean-Yves Girard and Giovanni Sambin). The list below attempts to list all the theories that have been described in a printed form and to sketch the key features that distinguished them from each other. All of these theories had dependent products, dependent sums, disjoint unions, finite types and natural numbers. All the theories had the same reduction rules that did not include η-reduction either for dependent products or for dependent sums, except for MLTT79 where the η-reduction for dependent products is added.
MLTT71 was the first type theory created by Per Martin-Löf. It appeared in a preprint in 1971. It had one universe, but this universe had a name in itself, i.e., it was a type theory with, as it is called today, "Type in Type". Jean-Yves Girard has shown that this system was inconsistent, and the preprint was never published.
MLTT72 was presented in a 1972 preprint that has now been published.[8] That theory had one universe V and no identity types (=-types). The universe was "predicative" in the sense that the dependent product of a family of objects from V over an object that was not in V such as, for example, V itself, was not assumed to be in V. The universe was à la Russell's Principia Mathematica, i.e., one would write directly "T∈V" and "t∈T" (Martin-Löf uses the sign "∈" instead of modern ":") without an added constructor such as "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 identidad, que él describe como "proposiciones", pero como no se introduce una distinción real entre proposiciones y el resto de los tipos, el significado de esto no está claro. Hay lo que más tarde adquiere el nombre de J-eliminador pero aún sin nombre (ver pp. 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 en la p. 115 dice que si A∈V m y B∈V n son tales que A y B son convertibles entonces m = n .
MLTT79 se presentó en 1979 y se publicó 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 en él (ver pág. 161). Hay tipos de identidad con el J-eliminador (que ya apareció en MLTT73 pero no tenía este nombre allí) pero también con la regla que hace que la teoría sea "extensional" (pág. 169). Hay tipos W. Hay una secuencia infinita de universos predicativos que son acumulativos .
Bibliopolis : en el libro Bibliopolis de 1984 se discute una teoría de tipos , [ 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 a ella.
Véase también
Notas
- ↑ 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.
- ↑ Clairambault, Pierre; Dybjer, Peter (2014). "La biequivalencia de categorías cerradas localmente cartesianas y teorías de tipo Martin-Löf" . Mathematical Structures in Computer Science . 24 (6). arXiv : 1112.3456 . doi : 10.1017/S0960129513000881 . ISSN 0960-1295 . S2CID 416274 .
- ↑Bengt Nordström; Kent Petersson; Jan M. Smith (1990). Programming in Martin-Löf's Type Theory. Oxford University Press, p. 90.
- ↑Altenkirch, Thorsten; Anberrée, Thomas; Li, Nuo. Definable Quotients in Type Theory(PDF) (Report). Archived from the original(PDF) on 2024-04-19.
- ↑Allen, S.F.; Bickford, M.; Constable, R.L.; Eaton, R.; Kreitz, C.; Lorigo, L.; Moran, E. (2006). "Innovations in computational type theory using Nuprl". Journal of Applied Logic. 4 (4): 428–469. doi:10.1016/j.jal.2005.10.005.
- ↑Norell, Ulf (2009). "Dependently typed programming in Agda". Proceedings of the 4th international workshop on Types in language design and implementation. TLDI '09. New York, NY, USA: ACM. pp. 1–2. CiteSeerX 10.1.1.163.7149. doi:10.1145/1481861.1481862. ISBN 9781605584201. S2CID 1777213.
- ↑Brady, Edwin (2013). "Idris, a general-purpose dependently typed programming language: Design and implementation". Journal of Functional Programming. 23 (5): 552–593. doi:10.1017/S095679681300018X. ISSN 0956-7968. S2CID 19895964.
- ↑Martin-Löf, Per (1998). An intuitionistic theory of types, Twenty-five years of constructive type theory (Venice,1995). Oxford Logic Guides. Vol. 36. New York: Oxford University Press. pp. 127–172.
- ↑Martin-Löf, Per (1975). "An intuitionistic theory of types: predicative part". Studies in Logic and the Foundations of Mathematics. Logic Colloquium '73 (Bristol, 1973). Vol. 80. Amsterdam: North-Holland. pp. 73–118.
- ↑Martin-Löf, Per (1982). "Constructive mathematics and computer programming". Studies in Logic and the Foundations of Mathematics. Logic, methodology and philosophy of science, VI (Hannover, 1979). Vol. 104. Amsterdam: North-Holland. pp. 153–175.
- ↑Martin-Löf, Per (1984). Intuitionistic type theory, Studies in Proof Theory (lecture notes by Giovanni Sambin). Vol. 1. Bibliopolis. pp. iv, 91.
References
- Martin-Löf, Per ; Sambin, Giovanni (1984). Teoría de tipos intuicionista (PDF) . Nápoles: Bibliópolis. ISBN 978-8870881059OCLC 12731401
Lecturas adicionales
- Notas de Per Martin-Löf, registradas por Giovanni Sambin (1980)
- Nordström, Bengt; Petersson, Kent; Smith, enero M. (1990). Programación en la teoría de tipos de Martin-Löf . Prensa de la Universidad de Oxford. ISBN 9780198538141.
- Thompson, Simon (1991). Teoría de tipos y programación funcional . Addison-Wesley. ISBN 0-201-41667-0.
- Granström, Johan G. (2011). Tratado sobre teoría de tipos intuicionista . Saltador. ISBN 978-94-007-1735-0.
Enlaces externos
- Proyecto Tipos de la UE: Tutoriales – apuntes y diapositivas de la Escuela de Verano Tipos 2005
- n-Categorías - Esbozo de una definición – carta de John Baez y James Dolan a Ross Street , 29 de noviembre de 1995
- Fundamentos de las matemáticas
- Programación con tipos dependientes
- Constructivismo (filosofía de las matemáticas)
- teoría de tipos
- Lógica en informática
- intuicionismo