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 construyeron para seguir una correspondencia uno a uno con los conectores lógicos. Por ejemplo, el conector lógico llamado implicación () corresponde al tipo de una 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
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 escribey representa todo aquello que no se puede demostrar (es decir, no puede existir una prueba de ello). En consecuencia, la negación se define como una función de ello:.
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,yLógicamente, tal par ordenado contendría una prueba dey una prueba de, por lo que se puede ver un tipo de escritura 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 cartesianoestá escrito:
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 Σ sirvan como cuantificador existencial . La afirmación "existe unde tipo, de tal manera que"se demuestra" se convierte en el tipo de pares ordenados donde el primer elemento es el valorde tipoy 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 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 función que, dado un número natural, devuelve un vector que contieneLos números reales se escriben:
Cuando el tipo de salida no depende del valor de entrada, el tipo de función a menudo se escribe simplemente con un. De este modo,es el tipo de funciones de números naturales a números reales. Dichos tipos Π corresponden a la implicación lógica. La proposición lógicacorresponde 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 cadade tipo,"se demuestra" se convierte en una función dede tipoa pruebas de. Por lo tanto, dado el valor deLa función genera una prueba de quese mantiene para ese valor. El tipo sería
= constructor de tipo
= Los tipos se crean a partir de dos términos. Dados dos términos comoy, puedes 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 ambosycalcular al término canónico, habrá un término del tipoEn la teoría de tipos intuicionista, existe una única forma de introducir los tipos = y es mediante la reflexividad :
Es posible crear tipos = comodonde 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ías crear un término de. Poner eso en una función generaría una función de tipo. Desdees como la teoría de tipos intuicionista define la negación, tendríaso, 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 es una lista vacía o un par formado por un número natural y otra lista enlazada. Los tipos inductivos se pueden utilizar para definir estructuras matemáticas no acotadas como árboles , grafos , etc. De hecho, el tipo de números naturales puede definirse como un tipo inductivo, ya sea siendoo el sucesor de otro número natural.
Los tipos inductivos definen nuevas constantes, como cero.y la función sucesora. Desdeno tiene definición y no puede evaluarse mediante sustitución, términos comoyse 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 predicadoPara 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 en el tipo de universose puede asignar a un tipo creado con cualquier combinación dey el constructor de tipos inductivo. Sin embargo, para evitar paradojas, no hay ningún término enque se corresponde conpara cualquier. [ 1 ]
Escribir demostraciones sobre todos los "tipos pequeños" y, debes usar, que sí contiene un término parapero no por sí mismo. De manera similar, para. Existe una jerarquía predicativa de universos, por lo que para cuantificar una prueba sobre cualquier constante fijauniversos, 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 utilizando juicios. Por ejemplo, en la afirmación "sies un tipo yentonces es un tipoes un tipo" hay juicios de "es un tipo", "y" y "si... entonces...". La expresiónNo es un juicio; es el tipo que se está definiendo.
Este segundo nivel de la teoría de tipos puede ser confuso, particularmente en lo que respecta a la igualdad. Hay 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 hay un juicio de igualdad de tipos, digamos que, lo que significa cada elemento dees un elemento del tipoy viceversa. A nivel de tipo, hay un tipoy contiene términos si hay una prueba de queyreducir al mismo valor. (Los términos de este tipo se generan utilizando el juicio de igualdad de términos). Por último, hay un nivel de igualdad en lengua inglesa, porque usamos la palabra "cuatro" y el símbolo "" para referirse al término canónicoMartin-Löf denomina a sinónimos como estos "definitivamente equivalentes".
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 variablecon el objetoen.
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 variablecon el objetoen.
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 a una abstracción. Constantes comose puede 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 llama(o). Desdees un tipo, sus miembros son objetos. Hay un tipo dependiente.que asigna cada objeto a su tipo correspondiente. En la mayoría de los textosnunca está escrito. A partir del contexto de la declaración, un lector casi siempre puede saber sise refiere a un tipo, o si se refiere al objeto enque corresponde al 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 demostrar la proposición. Si no hay demostración para la proposición, entonces el tipo no contiene objetos. Los operadores como "y" y "o", que funcionan con proposiciones, introducen nuevos tipos y nuevos objetos. Por lo tanto,es un tipo que depende del tipoy el tipo. Los objetos de ese tipo dependiente se definen para existir para cada par de objetos eny. Si algunoono tiene prueba y es un tipo vacío, entonces el nuevo tipo que representaTambié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
Se han implementado diferentes formas de teoría de tipos como sistemas formales subyacentes a varios asistentes de demostración . Si bien muchos se basan en las ideas de Per Martin-Löf, otros han añadido características, más axiomas o un trasfondo filosófico diferente. Por ejemplo, el sistema Nuprl se basa en la teoría de tipos computacional [ 5 ] y Rocq en el cálculo de construcciones (co)inductivas . Los tipos dependientes también se utilizan en el diseño de lenguajes de programación como ATS , Cayenne , Epigram , Agda [ 6 ] e Idris [ 7 ] .
Teorías del tipo Martin-Löf
Per Martin-Löf construyó varias teorías de tipos que se publicaron en distintos momentos, algunas mucho después de que las preimpresiones con su descripción se volvieran accesibles a los especialistas (entre ellos 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 distinguen 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 MLTT79, donde se añade la η-reducción para productos dependientes.
MLTT71 fue la primera teoría de tipos creada por Per Martin-Löf. Apareció en una prepublicación en 1971. Constaba de un único universo, pero este universo tenía nombre propio; es decir, era una teoría de tipos con, como se denomina hoy en día, "tipo dentro de tipo". Jean-Yves Girard demostró que este sistema era inconsistente, y la prepublicació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 identidad (=-tipos). El universo era " predicativo " en el sentido de 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, no se asumía que estuviera en V. El universo era a la manera de los 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 un constructor añadido 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 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). Programación en la teoría de tipos de Martin-Löf . Prensa de la Universidad de Oxford, pág. 90.
- ↑ Altenkirch, Thorsten; Anberrée, Thomas; Li, Nuo. Cocientes definibles en la teoría de tipos (PDF) (Informe). Archivado del original (PDF) el 19 de abril de 2024.
- ↑ Allen, SF; Bickford, M.; Constable, RL; Eaton, R.; Kreitz, C.; Lorigo, L.; Moran, E. (2006). "Innovaciones en la teoría de tipos computacional usando Nuprl" . Journal of Applied Logic . 4 (4): 428– 469. doi : 10.1016/j.jal.2005.10.005 .
- ↑ Norell, Ulf (2009). "Programación con tipos dependientes en Agda". Actas del 4.º taller internacional sobre tipos en el diseño e implementación de lenguajes . TLDI '09. Nueva York, NY, EE. UU.: ACM. págs. 1–2 . CiteSeerX 10.1.1.163.7149 . doi : 10.1145/1481861.1481862 . ISBN 9781605584201. S2CID 1777213 .
- ↑ Brady, Edwin (2013). "Idris, un lenguaje de programación de propósito general con tipado dependiente: diseño e implementación" . Journal of Functional Programming . 23 (5): 552– 593. doi : 10.1017/S095679681300018X . ISSN 0956-7968 . S2CID 19895964 .
- ↑ Martin-Löf, Per (1998). Una teoría intuicionista de los tipos, Veinticinco años de teoría constructiva de tipos (Venecia, 1995) . Oxford Logic Guides. Vol. 36. Nueva York: Oxford University Press. pp. 127–172 .
- ↑ Martin-Löf, Per (1975). «Una teoría intuicionista de los tipos: parte predicativa». Estudios en lógica y fundamentos de las matemáticas . Coloquio de lógica '73 (Bristol, 1973). Vol. 80. Ámsterdam: North-Holland. págs. 73–118 .
- ↑ 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: North-Holland. pp. 153–175 .
- ↑ Martin-Löf, Per (1984). Teoría de tipos intuicionista, Estudios en teoría de la demostración (notas de clase de Giovanni Sambin) . Vol. 1. Bibliopolis. pp. iv, 91.
Referencias
- 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