En lógica matemática e informática teórica , la teoría de tipos estudia los sistemas formales que clasifican expresiones u objetos matemáticos según sus tipos . En términos generales, un tipo cumple una función similar a la de un tipo de dato en programación: especifica qué tipo de entidad es una expresión y cómo puede utilizarse. Las teorías de tipos se emplean en el estudio de lenguajes de programación ( sistemas de tipos ), lógica formal y la formalización de las matemáticas .
Se han propuesto algunas teorías de tipos como alternativas a la teoría de conjuntos como fundamento de las matemáticas . Algunos ejemplos son la teoría simple de tipos de Alonzo Church y la teoría de tipos intuicionista de Per Martin-Löf .
Muchos asistentes de demostración se basan en la teoría de tipos. Por ejemplo, el lenguaje formal subyacente de Rocq (antes Coq) es el cálculo de construcciones inductivas , mientras que Lean se basa en la teoría de tipos dependientes .
Historia
La teoría de tipos se creó para evitar paradojas en la teoría de conjuntos ingenua y la lógica formal [ a ] , como la paradoja de Russell , que demuestra que, sin axiomas adecuados, es posible definir el conjunto de todos los conjuntos que no son miembros de sí mismos; este conjunto se contiene a sí mismo y, a la vez, no se contiene a sí mismo. Entre 1902 y 1908, Bertrand Russell propuso varias soluciones a este problema.
En 1908, Russell desarrolló una teoría ramificada de tipos junto con un axioma de reducibilidad , ambos presentes en los Principia Mathematica de Whitehead y Russell , publicados en 1910, 1912 y 1913. Este sistema evitó las contradicciones sugeridas en la paradoja de Russell mediante la creación de una jerarquía de tipos y la asignación de cada entidad matemática concreta a un tipo específico. Las entidades de un tipo dado se construían exclusivamente a partir de subtipos de ese tipo, [ b ] impidiendo así que una entidad se definiera a sí misma. Esta resolución de la paradoja de Russell es similar a los enfoques adoptados en otros sistemas formales, como la teoría de conjuntos de Zermelo-Fraenkel . [ 4 ]
La teoría de tipos es particularmente popular en conjunto con el cálculo lambda de Alonzo Church . Un ejemplo temprano notable de teoría de tipos es el cálculo lambda simplemente tipado de Church . La teoría de tipos de Church [ 5 ] ayudó al sistema formal a evitar la paradoja de Kleene-Rosser que afectó al cálculo lambda original sin tipos. Church demostró [ c ] que podía servir como fundamento de las matemáticas y se la denominó lógica de orden superior .
En la literatura moderna, la "teoría de tipos" se refiere a un sistema tipado basado en el cálculo lambda. Un sistema influyente es la teoría de tipos intuicionista de Per Martin-Löf , propuesta como fundamento de las matemáticas constructivas . Otro es el cálculo de construcciones de Thierry Coquand , utilizado como base por Rocq (anteriormente conocido como Coq ), Lean y otros asistentes de demostración computacionales . La teoría de tipos es un área de investigación activa, y una de sus líneas de investigación es el desarrollo de la teoría de tipos homotópicos .
Aplicaciones
Fundamentos matemáticos
El primer asistente de demostración computacional, llamado Automath , utilizaba la teoría de tipos para codificar las matemáticas en una computadora. Martin-Löf desarrolló específicamente la teoría de tipos intuicionista para codificar todas las matemáticas y sentar así una nueva base para ellas. Actualmente se están realizando investigaciones sobre los fundamentos matemáticos mediante la teoría de tipos homotópicos .
Los matemáticos que trabajan en teoría de categorías ya tenían dificultades para trabajar con la base ampliamente aceptada de la teoría de conjuntos de Zermelo-Fraenkel . Esto dio lugar a propuestas como la Teoría Elemental de la Categoría de Conjuntos (ETCS) de Lawvere. [ 7 ] La teoría de tipos homotópicos continúa en esta línea utilizando la teoría de tipos. Los investigadores están explorando conexiones entre tipos dependientes (especialmente el tipo identidad) y topología algebraica (específicamente homotopía ).
Asistentes de corrección
Gran parte de la investigación actual sobre teoría de tipos está impulsada por verificadores de pruebas , asistentes interactivos de pruebas y demostradores automáticos de teoremas . La mayoría de estos sistemas utilizan una teoría de tipos como fundamento matemático para codificar pruebas, lo cual no es sorprendente, dada la estrecha conexión entre la teoría de tipos y los lenguajes de programación:
- LF es utilizado por Twelf , a menudo para definir otras teorías de tipos;
- Muchas teorías de tipos que se engloban dentro de la lógica de orden superior son utilizadas por la familia de demostradores HOL y PVS ;
- NuPRL utiliza la teoría de tipos computacional ;
- El cálculo de construcciones y sus derivados son utilizados por Rocq (anteriormente conocido como Coq ), Matita y Lean ;
- UTT (Teoría Unificada de Tipos Dependientes de Luo) es utilizada por Agda , que es a la vez un lenguaje de programación y un asistente de pruebas.
LEGO e Isabelle son compatibles con muchas teorías de tipos . Isabelle también admite otras bases además de las teorías de tipos, como ZFC . Mizar es un ejemplo de sistema de demostración que solo admite la teoría de conjuntos.
Lenguajes de programación
Cualquier análisis estático de programas , como los algoritmos de verificación de tipos en la fase de análisis semántico del compilador , está relacionado con la teoría de tipos. Un ejemplo paradigmático es Agda , un lenguaje de programación que utiliza la UTT (Teoría Unificada de Tipos Dependientes de Luo) para su sistema de tipos.
El lenguaje de programación ML se desarrolló para manipular teorías de tipos (véase Lógica para funciones computables ) y su propio sistema de tipos estuvo fuertemente influenciado por ellas.
Lingüística
La teoría de tipos también se utiliza ampliamente en las teorías formales de la semántica de los lenguajes naturales , [ 8 ] [ 9 ] especialmente en la gramática de Montague [ 10 ] y sus descendientes. En particular, las gramáticas categoriales y las gramáticas de pregrupos utilizan extensamente constructores de tipos para definir los tipos ( sustantivo , verbo , etc.) de las palabras.
La construcción más común toma los tipos básicosypara individuos y valores de verdad , respectivamente, y define el conjunto de tipos recursivamente de la siguiente manera:
- siyson tipos, entonces también lo es ;
- nada excepto los tipos básicos, y lo que se puede construir a partir de ellos mediante la cláusula anterior son tipos.
Un tipo complejoes el tipo de funciones de entidades de tipoa entidades de tipo . Por lo tanto, uno tiene tipos comoque se interpretan como elementos del conjunto de funciones de entidades a valores de verdad, es decir, funciones indicadoras de conjuntos de entidades. Una expresión de tipoes una función de conjuntos de entidades a valores de verdad, es decir, una (función indicadora de un) conjunto de conjuntos. Este último tipo se considera estándarmente el tipo de cuantificadores del lenguaje natural , como everybody o nobody ( Montague 1973, Barwise y Cooper 1981). [ 11 ]
La teoría de tipos con registros es un marco de representación semántica formal que utiliza registros para expresar tipos de la teoría de tipos . Se ha utilizado en el procesamiento del lenguaje natural , principalmente en la semántica computacional y los sistemas de diálogo . [ 12 ] [ 13 ]
ciencias sociales
Gregory Bateson introdujo una teoría de los tipos lógicos en las ciencias sociales; sus nociones de doble vínculo y niveles lógicos se basan en la teoría de los tipos de Russell.
Lógica
Una teoría de tipos es una lógica matemática , es decir, es una colección de reglas de inferencia que dan como resultado juicios . La mayoría de las lógicas tienen juicios que afirman "La proposiciónes cierto", o "La fórmulaes una fórmula bien formada ". [ 14 ] Una teoría de tipos tiene juicios que definen los tipos y los asignan a una colección de objetos formales, conocidos como términos. Un término y su tipo a menudo se escriben juntos como :{\mathsf {tipo}}} .
Términos
En lógica, un término se define recursivamente como un símbolo constante , una variable o una aplicación de función , donde un término se aplica a otro término. Los símbolos constantes podrían incluir el número natural ., el valor booleanoy funciones como la función sucesoray operador condicional . Por lo tanto, algunos términos podrían ser ,,y .
Sentencias
La mayoría de las teorías de tipos tienen 4 juicios:
- "es un tipo "
- "es un término de tipo"
- "Tipoes igual al tipo "
- "Términosyambos de tiposon iguales
Los juicios pueden derivarse de suposiciones. Por ejemplo, se podría decir "suponiendoes un término de tipoyes un término de tipo , se deduce quees un término de tipo" . Dichos juicios se escriben formalmente con el símbolo del torniquete ." .
Si no hay suposiciones, no habrá nada a la izquierda del torniquete.
- :{\mathsf {nat}}\to {\mathsf {nat}}}
La lista de supuestos de la izquierda es el contexto del juicio. Letras griegas mayúsculas, comoy, son opciones comunes para representar algunos o todos los supuestos. Los 4 juicios diferentes se suelen escribir de la siguiente manera.
Algunos libros de texto utilizan un signo de igualdad triple.para enfatizar que se trata de una igualdad basada en juicios y, por lo tanto, una noción extrínseca de igualdad. [ 15 ] Los juicios imponen que cada término tiene un tipo. El tipo restringirá qué reglas se pueden aplicar a un término.
Reglas de inferencia
Las reglas de inferencia de una teoría de tipos indican qué juicios se pueden realizar, basándose en la existencia de otros juicios. Las reglas se expresan como una deducción al estilo de Gentzen mediante una línea horizontal, con los juicios de entrada requeridos por encima de la línea y el juicio resultante por debajo. [ 16 ] Por ejemplo, la siguiente regla de inferencia establece una regla de sustitución para la igualdad de juicios.Las reglas son sintácticas y funcionan mediante reescritura . Las metavariables,,,yEn realidad , puede consistir en términos y tipos complejos que contienen muchas aplicaciones funcionales, no solo símbolos individuales.
Para generar un juicio particular en la teoría de tipos, debe haber una regla para generarlo, así como reglas para generar todas las entradas requeridas por esa regla, y así sucesivamente. Las reglas aplicadas forman un árbol de prueba , donde las reglas superiores no necesitan suposiciones. Un ejemplo de una regla que no requiere ninguna entrada es una que establece el tipo de un término constante. Por ejemplo, para afirmar que hay un términode tipo , uno escribiría lo siguiente.
Tipo de vivienda
Generalmente, la conclusión deseada de una demostración en teoría de tipos es una de habitabilidad de tipo . [ 17 ] El problema de decisión de habitabilidad de tipo (abreviado por ?} ) es:
- Dado un contextoy un tipo , decidir si existe un término que se le puede asignar el tipoen el entorno de tipos .
La paradoja de Girard demuestra que la ocupación de tipos está estrechamente relacionada con la consistencia de un sistema de tipos con la correspondencia de Curry-Howard. Para ser sólido, dicho sistema debe tener tipos no ocupados.
Una teoría de tipos suele tener varias reglas, entre ellas:
- crear un juicio (conocido como contexto en este caso)
- agregar una suposición al contexto ( debilitamiento del contexto )
- reorganizar los supuestos
- usar una suposición para crear una variable
- Definir la reflexividad , la simetría y la transitividad para la igualdad de juicios.
- Definir la sustitución para la aplicación de términos lambda
- Enumera todas las interacciones de igualdad, como la sustitución.
- definir una jerarquía de universos de tipos
- afirmar la existencia de nuevos tipos
Además, para cada tipo "por regla", existen 4 tipos diferentes de reglas:
- Las reglas de "formación de tipos" indican cómo crear el tipo.
- Las reglas de "introducción de términos" definen los términos canónicos y las funciones constructoras, como "pair" y "S".
- Las reglas de "eliminación de términos" definen las otras funciones como "primero", "segundo" y "R".
- Las reglas de "cálculo" especifican cómo se realiza el cálculo con las funciones específicas de cada tipo.
Para ver ejemplos de reglas, un lector interesado puede consultar el Apéndice A.2 del libro Teoría de tipos homotópicos , [ 15 ] o leer la Teoría de tipos intuicionistas de Martin-Löf. [ 18 ]
Conexiones con fundaciones
El marco lógico de una teoría de tipos guarda semejanza con la lógica intuicionista o constructiva. Formalmente, la teoría de tipos se cita a menudo como una implementación de la interpretación de Brouwer-Heyting-Kolmogorov de la lógica intuicionista. [ 18 ] Además, se pueden establecer conexiones con la teoría de categorías y los programas informáticos .
Lógica intuicionista
Cuando se utilizan como base, ciertos tipos se interpretan como proposiciones (enunciados demostrables), y los términos que los componen se interpretan como pruebas de dicha proposición. Al interpretar algunos tipos como proposiciones, existe un conjunto de tipos comunes que permiten conectarlos para formar un álgebra booleana . Sin embargo, esta lógica no es clásica, sino intuicionista , lo que significa que carece del principio del tercero excluido y de la doble negación .
Según esta interpretación intuicionista, existen tipos comunes que actúan como operadores lógicos:
Como la ley del tercero excluido no se cumple, no existe ningún término de tipo . Asimismo, la doble negación no se cumple, por lo que no existe ningún término de ese tipo . .
Es posible incluir la ley del tercero excluido y la doble negación en una teoría de tipos, ya sea por regla o por suposición. Sin embargo, los términos podrían no ser compatibles con los términos canónicos, lo que dificultaría determinar si dos términos son equivalentes desde un punto de vista de juicio.
Matemáticas constructivas
Per Martin-Löf propuso su teoría de tipos intuicionista como fundamento de las matemáticas constructivas . [ 14 ] Las matemáticas constructivas requieren al demostrar "existe uncon propiedad ", uno debe construir un particulary una prueba de que tiene propiedadEn la teoría de tipos, la existencia se logra utilizando el tipo de producto dependiente, y su prueba requiere un término de ese tipo.
Un ejemplo de prueba no constructiva es la prueba por contradicción . El primer paso es suponer queno existe y refutándolo por contradicción. La conclusión de ese paso es "no es el caso queno existe". El último paso es, por doble negación, concluir queexiste. Las matemáticas constructivas no permiten el último paso de eliminar la doble negación para concluir queexiste. [ 19 ]
La mayoría de las teorías de tipos propuestas como fundamentos son constructivas, incluyendo la mayoría de las utilizadas por los asistentes de demostración. Es posible añadir características no constructivas a una teoría de tipos, mediante reglas o suposiciones. Estas incluyen operadores sobre continuaciones, como la llamada con continuación actual . Sin embargo, estos operadores tienden a romper propiedades deseables como la canonicidad y la parametricidad .
Correspondencia entre Curry y Howard
La correspondencia de Curry-Howard es la similitud observada entre lógicas y lenguajes de programación. La implicación en lógica, "ALa expresión "B" se asemeja a una función del tipo "A" al tipo "B". Para diversas lógicas, las reglas son similares a las expresiones de los tipos de un lenguaje de programación. La similitud va más allá, ya que las aplicaciones de las reglas se asemejan a los programas de dichos lenguajes. Por lo tanto, esta correspondencia se suele resumir como "demostraciones como programas".
La oposición entre términos y tipos también puede verse como una de implementación y especificación . Mediante la síntesis de programas , (la contraparte computacional de) la representación de tipos puede utilizarse para construir (todos o partes de) programas a partir de la especificación dada en forma de información de tipos. [ 20 ]
Inferencia de tipo
Muchos programas que trabajan con teoría de tipos (por ejemplo, demostradores de teoremas interactivos) también realizan inferencia de tipos. Esto les permite seleccionar las reglas que el usuario pretende, con menos acciones por parte del usuario.
Áreas de investigación
Teoría de categorías
Aunque la motivación inicial de la teoría de categorías estaba muy alejada del fundacionalismo, ambos campos resultaron tener profundas conexiones. Como escribe John Lane Bell : «De hecho, las categorías pueden considerarse como teorías de tipos de cierto tipo; este hecho por sí solo indica que la teoría de tipos está mucho más relacionada con la teoría de categorías que con la teoría de conjuntos». En resumen, una categoría puede considerarse una teoría de tipos al considerar sus objetos como tipos (o clases [ 21 ] ), es decir, «en términos generales, una categoría puede pensarse como una teoría de tipos despojada de su sintaxis». De esta manera se derivan varios resultados significativos: [ 22 ]
- Las categorías cartesianas cerradas corresponden al cálculo λ tipificado ( Lambek , 1970);
- Los C-monoides (categorías con productos y exponenciales y un objeto no terminal) corresponden al cálculo λ no tipificado (observado independientemente por Lambek y Dana Scott alrededor de 1980);
- Las categorías cerradas cartesianas locales corresponden a teorías del tipo Martin-Löf (Seely, 1984).
Esta interacción, conocida como lógica categórica , ha sido objeto de intensa investigación desde entonces; véase, por ejemplo, la monografía de Jacobs (1999).
teoría de tipos homotópicos
La teoría de tipos homotópicos intenta combinar la teoría de tipos y la teoría de categorías. Se centra en las igualdades, especialmente las igualdades entre tipos. La teoría de tipos homotópicos se diferencia de la teoría de tipos intuicionista principalmente por su tratamiento del tipo de igualdad. En 2016, se propuso la teoría de tipos cúbicos , que es una teoría de tipos homotópicos con normalización. [ 23 ] [ 24 ]
Definiciones
Términos y tipos
Términos atómicos
Los tipos más básicos se llaman átomos, y un término cuyo tipo es un átomo se conoce como término atómico. Los términos atómicos comunes incluidos en las teorías de tipos son los números naturales , a menudo notados con el tipo ,valores de lógica booleana ( y ), anotado con el tipo y variables formales , cuyo tipo puede variar. [ 17 ] Por ejemplo, los siguientes pueden ser términos atómicos.
Términos de función
Además de los términos atómicos, la mayoría de las teorías de tipos modernas también permiten funciones . Los tipos de función introducen un símbolo de flecha y se definen inductivamente : Siyson tipos, entonces la notaciónes el tipo de una función que toma un parámetro de tipoy devuelve un término de tipo . Los tipos de esta forma se conocen como tipos simples . [ 17 ]
Algunos términos pueden declararse directamente como de tipo simple, como el siguiente término : , que toma dos números naturales en secuencia y devuelve un número natural.
- :{\mathsf {nat}}\to ({\mathsf {nat}}\to {\mathsf {nat}})}
Estrictamente hablando, un tipo simple solo permite una entrada y una salida, por lo que una lectura más fiel del tipo anterior es quees una función que toma un número natural y devuelve una función de la forma . Los paréntesis aclaran queno tiene el tipo , que sería una función que toma como entrada una función de números naturales y devuelve un número natural. La convención es que la flecha es asociativa derecha , por lo que se pueden eliminar los paréntesis de tipo de. [ 17 ]
Términos Lambda
Se pueden construir nuevos términos de función utilizando expresiones lambda , y se denominan términos lambda. Estos términos también se definen inductivamente: un término lambda tiene la forma , dondees una variable formal yes un término, y su tipo se anota , dondees el tipo deyes el tipo de . [ 17 ] El siguiente término lambda representa una función que duplica un número natural de entrada.
La variable esy (implícito del tipo del término lambda) debe tener tipo . El términotiene tipo , lo cual se observa al aplicar dos veces la regla de inferencia de aplicación de función. Por lo tanto, el término lambda tiene tipo, lo que significa que es una función que toma un número natural como argumento y devuelve un número natural.
Un término lambda es una función anónima [ d ] porque carece de nombre. El concepto de funciones anónimas aparece en muchos lenguajes de programación.
Reglas de inferencia
Aplicación de funciones
El poder de las teorías de tipos reside en especificar cómo se pueden combinar los términos mediante reglas de inferencia . [ 5 ] Las teorías de tipos que tienen funciones también tienen la regla de inferencia de aplicación de funciones : sies un término de tipoyes un término de tipo , entonces la aplicación dea , a menudo escrito , tiene tipo . Por ejemplo, si uno conoce las notaciones de tipo ,y , entonces las siguientes notaciones de tipo se pueden deducir de la aplicación de la función. [ 17 ]
Los paréntesis indican el orden de las operaciones ; sin embargo, por convención, la aplicación de funciones es asociativa por la izquierda , por lo que los paréntesis pueden omitirse cuando sea apropiado. [ 17 ] En el caso de los tres ejemplos anteriores, todos los paréntesis podrían omitirse de los dos primeros, y el tercero podría simplificarse a .
Reducciones
Las teorías de tipos que permiten términos lambda también incluyen reglas de inferencia conocidas como-reducción y-reducción. Generalizan la noción de aplicación de funciones a términos lambda. Simbólicamente, se escriben
- ( -reducción ).
- , sino es una variable libre en( -reducción ).
La primera reducción describe cómo evaluar un término lambda: si una expresión lambdase aplica a un término , uno reemplaza cada ocurrencia deencon . La segunda reducción explicita la relación entre expresiones lambda y tipos de funciones: sies un término lambda, entonces debe ser quees un término de función porque se está aplicando a . Por lo tanto, la expresión lambda es equivalente a simplemente , ya que ambos toman un argumento y aplicana ello. [ 5 ]
Por ejemplo, el siguiente término puede ser:-reducido.
En las teorías de tipos que también establecen nociones de igualdad para tipos y términos, existen reglas de inferencia correspondientes.-igualdad y-igualdad. [ 17 ]
Términos y tipos comunes
Tipo vacío
El tipo vacío no tiene términos. El tipo generalmente se escribeo . Un uso para el tipo vacío son las pruebas de habitabilidad de tipos . Si para un tipo , es consistente derivar una función de tipo , entoncesestá deshabitada , lo que quiere decir que no tiene términos.
Tipo de unidad
El tipo de unidad tiene exactamente 1 término canónico. El tipo está escritooy el único término canónico se escribe . El tipo de unidad también se utiliza en pruebas de habitabilidad de tipo. Si para un tipo , es consistente derivar una función de tipo , entoncesestá habitado , lo que significa que debe tener uno o más términos.
Tipo booleano
El tipo booleano tiene exactamente 2 términos canónicos. El tipo se suele escribirooLos términos canónicos suelen sery .
Números naturales
Los números naturales se suelen implementar al estilo de la aritmética de Peano . Existe un término canónico.para cero. Los valores canónicos mayores que cero utilizan aplicaciones iteradas de una función sucesora . :{\mathsf {nat}}\to {\mathsf {nat}}} .
Constructores de tipos
Algunas teorías de tipos permiten que los tipos de términos complejos, como funciones o listas, dependan de los tipos de sus argumentos; estos se denominan constructores de tipos . Por ejemplo, una teoría de tipos podría tener el tipo dependiente , que deben corresponder a listas de términos, donde cada término debe tener un tipo . En este caso,tiene el tipo, dondeEn la teoría, denota el universo de todos los tipos.
Tipo de producto
El tipo de producto ,Depende de dos tipos, y sus términos se suelen escribir como pares ordenados . . La parejatiene el tipo de producto , dondees el tipo deyes el tipo deCada tipo de producto se define generalmente con funciones eliminadoras . :\sigma \times \tau \to \sigma } y :\sigma \times \tau \to \tau } .
- devolucionesy
- devoluciones .
Además de los pares ordenados, este tipo se utiliza para los conceptos de conjunción lógica e intersección .
Tipo de suma
El tipo de suma se escribe comoo . En los lenguajes de programación, los tipos suma pueden denominarse uniones etiquetadas . Cada tipogeneralmente se define con constructores :\sigma \to (\sigma \sqcup \tau )} y :\tau \to (\sigma \sqcup \tau )} , que soninyectivas, y una función eliminadora :(\sigma \to \rho )\to (\tau \to \rho )\to (\sigma \sqcup \tau )\to \rho } tal que
- devolucionesy
- devoluciones .
El tipo suma se utiliza para los conceptos de disyunción lógica y unión .
Tipos polimórficos
Algunas teorías también permiten que las definiciones de los términos dependan de los tipos. Por ejemplo, una función identidad de cualquier tipo podría escribirse comoSe dice que la función es polimórfica en , o genérico en .
Como otro ejemplo, consideremos una función , que toma uny un término de tipo , y devuelve la lista con el elemento al final. La anotación de tipo de dicha función sería :\forall \,a.{\mathsf {list}}\,a\to a\to {\mathsf {list}}\,a} , que se puede leer como "para cualquier tipo , pasar en uny un , y devolver un " . Aquíes polimórfico en .
Productos y sumas
Con el polimorfismo, las funciones de eliminación se pueden definir genéricamente para todos los tipos de productos como :\forall \,\sigma \,\tau .\sigma \times \tau \to \sigma } y :\forall \,\sigma \,\tau .\sigma \times \tau \to \tau } .
- devolucionesy
- devoluciones .
Asimismo, los constructores de tipo suma se pueden definir para todos los tipos válidos de miembros suma como :\forall \,\sigma \,\tau .\sigma \to (\sigma \sqcup \tau )} y :\forall \,\sigma \,\tau .\tau \to (\sigma \sqcup \tau )} , que soninyectivas, y la función eliminadora se puede dar como :\forall \,\sigma \,\tau \,\rho .(\sigma \to \rho )\to (\tau \to \rho )\to (\sigma \sqcup \tau )\to \rho } tal que
- devolucionesy
- devoluciones .
Tipado dependiente
Algunas teorías también permiten que los tipos dependan de términos en lugar de tipos. Por ejemplo, una teoría podría tener el tipo , dondees un término de tipocodificando la longitud del vector . Esto permite una mayor especificidad y seguridad de tipos : las funciones con restricciones de longitud de vector o requisitos de coincidencia de longitud, como el producto escalar , pueden codificar este requisito como parte del tipo. [ 26 ]
Existen problemas fundamentales que pueden surgir de los tipos dependientes si una teoría no es cuidadosa con las dependencias permitidas, como la paradoja de Girard . El lógico Henk Barendegt introdujo el cubo lambda como marco para estudiar diversas restricciones y niveles de tipado dependiente. [ 27 ]
Productos y sumas dependientes
Dos tipos comunes de dependencias , los tipos de producto dependiente y suma dependiente, permiten que la teoría codifique la lógica intuicionista BHK actuando como equivalentes a la cuantificación universal y existencial ; esto se formaliza mediante la correspondencia de Curry-Howard . [ 26 ] Como también se conectan con productos y sumas en la teoría de conjuntos , a menudo se escriben con los símbolosy, respectivamente.
Los tipos suma se observan en pares dependientes , donde el segundo tipo depende del valor del primer término. Esto surge de forma natural en la informática, donde las funciones pueden devolver diferentes tipos de salidas en función de la entrada. Por ejemplo, el tipo booleano se define normalmente con una función eliminadora ., que toma tres argumentos y se comporta de la siguiente manera.
- devolucionesy
- devoluciones .
Definiciones ordinarias derequerirytener el mismo tipo. Si la teoría de tipos permite tipos dependientes, entonces es posible definir un tipo dependiente.de tal manera que
- devolucionesy
- devoluciones .
El tipo deentonces se puede escribir como .
Tipo de identidad
Siguiendo la noción de correspondencia de Curry-Howard, el tipo identidad es un tipo introducido para reflejar la equivalencia proposicional , en contraposición a la equivalencia de juicio (sintáctica) que ya proporciona la teoría de tipos.
Un tipo identidad requiere dos términos del mismo tipo y se escribe con el símbolo . Por ejemplo, siyson términos, entonceses un tipo posible. Los términos canónicos se crean con una función de reflexividad , . Por un plazo , la llamadadevuelve el término canónico que habita el tipo .
La complejidad de la igualdad en la teoría de tipos la convierte en un tema de investigación activo; la teoría de tipos homotópicos es un área de investigación destacada que se ocupa principalmente de la igualdad en la teoría de tipos.
Tipos inductivos
Los tipos inductivos constituyen una plantilla general para crear una gran variedad de tipos. De hecho, todos los tipos descritos anteriormente, y muchos más, pueden definirse utilizando las reglas de los tipos inductivos. Dos métodos para generar tipos inductivos son la inducción-recursión y la inducción-inducción . Un método que solo utiliza términos lambda es la codificación de Scott .
Algunos asistentes de demostración , como Rocq (anteriormente conocido como Coq ) y Lean , se basan en el cálculo para construcciones inductivas, que es un cálculo de construcciones con tipos inductivos.
Diferencias con la teoría de conjuntos
El fundamento más comúnmente aceptado para las matemáticas es la lógica de primer orden con el lenguaje y los axiomas de la teoría de conjuntos de Zermelo-Fraenkel con el axioma de elección , abreviado ZFC. Las teorías de tipos con suficiente expresividad también pueden servir como fundamento de las matemáticas. Existen varias diferencias entre estos dos enfoques.
- La teoría de conjuntos tiene reglas y axiomas , mientras que las teorías de tipos solo tienen reglas. Las teorías de tipos, en general, no tienen axiomas y se definen por sus reglas de inferencia. [ 15 ]
- La teoría clásica de conjuntos y la lógica poseen la ley del tercero excluido . Cuando una teoría de tipos codifica los conceptos de "y" y "o" como tipos, conduce a la lógica intuicionista y no necesariamente posee la ley del tercero excluido. [ 18 ]
- En la teoría de conjuntos, un elemento no está restringido a un solo conjunto. El elemento puede aparecer en subconjuntos y uniones con otros conjuntos. En la teoría de tipos, los términos (generalmente) pertenecen a un solo tipo. Cuando se usaría un subconjunto, la teoría de tipos puede usar una función predicado o usar un tipo producto de tipo dependiente, donde cada elementose acompaña de una prueba de que la propiedad del subconjunto se cumple para . Donde se usaría una unión, la teoría de tipos usa el tipo suma, que contiene nuevos términos canónicos.
- La teoría de tipos incorpora una noción de computación. Así, "1+1" y "2" son términos distintos en teoría de tipos, pero su valor computacional es el mismo. Además, las funciones se definen computacionalmente como términos lambda. En teoría de conjuntos, "1+1=2" significa que "1+1" es simplemente otra forma de referirse al valor "2". La computación en teoría de tipos requiere un concepto complejo de igualdad.
- La teoría de conjuntos codifica los números como conjuntos . La teoría de tipos puede codificar los números como funciones utilizando la codificación de Church , o de forma más natural como tipos inductivos , y la construcción se asemeja mucho a los axiomas de Peano .
- En la teoría de tipos, las demostraciones tienen tipos, mientras que en la teoría de conjuntos, las demostraciones forman parte de la lógica subyacente de primer orden. [ 15 ]
Los defensores de la teoría de tipos también señalarán su conexión con las matemáticas constructivas a través de la interpretación BHK , su conexión con la lógica mediante el isomorfismo de Curry-Howard y sus conexiones con la teoría de categorías .
Propiedades de las teorías de tipos
Los términos suelen pertenecer a un único tipo. Sin embargo, existen teorías de tipos que definen la "subtipificación".
El cálculo se realiza mediante la aplicación repetida de reglas. Muchos tipos de teorías son fuertemente normalizadoras , lo que significa que cualquier orden de aplicación de las reglas siempre dará como resultado el mismo término. Sin embargo, algunas no lo son. En una teoría de tipo normalizador, las reglas de cálculo unidireccionales se denominan "reglas de reducción", y su aplicación "reduce" el término. Si una regla no es unidireccional, se denomina "regla de conversión".
Algunas combinaciones de tipos son equivalentes a otras combinaciones de tipos. Cuando las funciones se consideran "exponenciación", las combinaciones de tipos se pueden escribir de forma similar a las identidades algebraicas. [ 28 ] Por lo tanto ,,,,, .
Axiomas
La mayoría de las teorías de tipos carecen de axiomas . Esto se debe a que una teoría de tipos se define por sus reglas de inferencia. Esto suele generar confusión entre quienes están familiarizados con la teoría de conjuntos, donde una teoría se define tanto por las reglas de inferencia de una lógica (como la lógica de primer orden ) como por axiomas sobre conjuntos.
En ocasiones, una teoría de tipos añade algunos axiomas. Un axioma es un juicio que se acepta sin derivación mediante las reglas de inferencia. Suelen añadirse para garantizar propiedades que no pueden incorporarse de forma precisa a través de dichas reglas.
Los axiomas pueden causar problemas si introducen términos sin una forma de calcularlos. Es decir, los axiomas pueden interferir con la propiedad de normalización de la teoría de tipos. [ 29 ]
Algunos axiomas que se encuentran con frecuencia son:
- El "axioma K" garantiza la "unicidad de las pruebas de identidad". Es decir, que cada término de un tipo de identidad es igual a la reflexividad. [ 30 ]
- El "axioma de univalencia" sostiene que la equivalencia de tipos es la igualdad de tipos. La investigación sobre esta propiedad condujo a la teoría de tipos cúbicos , donde la propiedad se cumple sin necesidad de un axioma. [ 24 ]
- La "ley del tercero excluido" se suele añadir para satisfacer a los usuarios que prefieren la lógica clásica , en lugar de la lógica intuicionista.
El axioma de elección no necesita añadirse a la teoría de tipos, ya que en la mayoría de ellas se puede derivar de las reglas de inferencia. Esto se debe a la naturaleza constructiva de la teoría de tipos, donde demostrar la existencia de un valor requiere un método para calcularlo. El axioma de elección es menos potente en la teoría de tipos que en la mayoría de las teorías de conjuntos, porque las funciones de la teoría de tipos deben ser computables y, al estar regidas por la sintaxis, el número de términos de un tipo debe ser contable. (Véase Axioma de elección § En matemáticas constructivas ).
Lista de teorías de tipos
Importante
- Cálculo lambda tipado simple, que es una lógica de orden superior.
- Teoría de tipos intuicionista
- Sistema F
- LF se usa a menudo para definir otras teorías de tipos.
- Cálculo de construcciones y sus derivados
Menor
- Autómata
- teoría del tipo ST
- UTT (Teoría unificada de tipos dependientes de Luo)
- algunas formas de lógica combinatoria
- otros definidos en el cubo lambda (también conocidos como sistemas de tipos puros )
- otros bajo el nombre de cálculo lambda escrito
Investigación activa
- La teoría de tipos homotópicos explora la igualdad de tipos.
- La teoría de tipos cúbicos es una implementación de la teoría de tipos homotópicos.
Véase también
Notas
- ↑ La paradoja de Kleene-Rosser "La inconsistencia de ciertas lógicas formales" en la página 636 de Annals of Mathematics 36 número 3 (julio de 1935), mostró que 1 = 2 . [ 1 ]
- ↑ Enel sistema de tipos de Julia , por ejemplo, los tipos abstractos no tienen instancias, pero pueden tener subtipos, [ 2 ] : 110 mientras que los tipos concretos no tienen subtipos pero pueden tener instancias, para " documentación, optimización y despacho ". [ 3 ]
- ↑ Church demostró su método logístico con su sencilla teoría de tipos, [ 5 ] y explicó su método en 1956, [ 6 ] páginas 47-68.
- ↑ En Julia , por ejemplo, una función sin nombre, pero con dos parámetros en alguna tupla (x,y), puede denotarse, por ejemplo,
(x,y) -> x^5+ycomo una función anónima. [ 25 ]
Referencias
- ↑ Kleene, SC y Rosser, JB (1935). "La inconsistencia de ciertas lógicas formales". Annals of Mathematics . 36 (3): 630– 636. doi : 10.2307/1968646 . JSTOR 1968646 .
- ↑ Balbaert, Ivo (2015) Introducción a la programación en Julia ISBN 978-1-78328-479-5
- ↑ docs.julialang.org v.1 Tipos Archivado el 24/03/2022 en Wayback Machine
- ↑ Enciclopedia de Filosofía de Stanford (revisada el lunes 12 de octubre de 2020) La paradoja de Russell Archivada el 18 de diciembre de 2021 en Wayback Machine 3. Primeras respuestas a la paradoja
- 1 2 3 4 Church, Alonzo (1940). "Una formulación de la teoría simple de tipos". The Journal of Symbolic Logic . 5 (2): 56– 68. doi : 10.2307/2266170 . JSTOR 2266170 . S2CID 15889861 .
- ↑ Alonzo Church (1956) Introducción a la lógica matemática Vol. 1
- ↑ ETCS en el Laboratorio n
- ↑ Chatzikyriakidis, Stergios; Luo, Zhaohui (2017-02-07). Perspectivas modernas en semántica de la teoría de tipos . Springer. ISBN 978-3-319-50422-3Archivado del original el 10 de agosto de 2023. Consultado el 29 de julio de 2022 .
- ↑ Winter, Yoad (8 de abril de 2016). Elementos de semántica formal: Una introducción a la teoría matemática del significado en el lenguaje natural . Edinburgh University Press. ISBN 978-0-7486-7777-1Archivado del original el 10 de agosto de 2023. Consultado el 29 de julio de 2022 .
- ↑ Cooper, Robin. " Teoría de tipos y semántica en constante cambio " . Archivado el 10 de mayo de 2022 en Wayback Machine . Handbook of the Philosophy of Science 14 (2012): 271-323.
- ↑ Barwise, Jon; Cooper, Robin (1981) Cuantificadores generalizados y lenguaje natural Lingüística y Filosofía 4 (2):159--219 (1981)
- ↑ Cooper, Robin (2005). "Registros y tipos de registros en la teoría semántica". Journal of Logic and Computation . 15 (2): 99– 112. doi : 10.1093/logcom/exi004 .
- ↑ Cooper, Robin (2010). Teoría de tipos y semántica en constante cambio . Manual de filosofía de la ciencia. Volumen 14: Filosofía de la lingüística . Elsevier.
- 1 2 Martin-Löf, Per (1987-12-01). "Verdad de una proposición, evidencia de un juicio, validez de una prueba" . Synthese . 73 (3): 407– 420. doi : 10.1007/BF00484985 . ISSN 1573-0964 .
- 1 2 3 4 El Programa de Fundamentos Univalentes (2013). Teoría de tipos homotópicos: Fundamentos Univalentes de las Matemáticas . Teoría de tipos homotópicos.
- ↑ Smith, Peter. "Tipos de sistema de prueba" (PDF) . logicmatters.net . Archivado (PDF) del original el 9 de octubre de 2022. Consultado el 29 de diciembre de 2021 .
- ^ Henk Barendregt ; Wil Dekkers; Richard Statman (20 de junio de 2013). Cálculo Lambda con tipos . Prensa de la Universidad de Cambridge. págs. 1 a 66. ISBN 978-0-521-76614-2.
- 1 2 3 "Reglas de la teoría de tipos intuicionista de Martin-Löf" (PDF) . Archivado (PDF) del original el 21-10-2021 . Recuperado el 22-01-2022 .
- ↑ "prueba por contradicción" . nlab . Archivado del original el 13 de agosto de 2023. Recuperado el 29 de diciembre de 2021 .
- ↑ Heineman, George T.; Bessai, Jan; Düdder, Boris; Rehof, Jakob (2016). «Un largo y sinuoso camino hacia la síntesis modular». Aprovechamiento de las aplicaciones de los métodos formales, la verificación y la validación: técnicas fundamentales . ISoLA 2016. Lecture Notes in Computer Science. Vol. 9952. Springer. pp. 303–317 . doi : 10.1007/978-3-319-47166-2_21 . ISBN 978-3-319-47165-5.
- ↑ Barendregt, Henk (1991). "Introducción a los sistemas de tipos generalizados". Journal of Functional Programming . 1 (2): 125– 154. doi : 10.1017/s0956796800020025 . hdl : 2066/17240 . ISSN 0956-7968 . S2CID 44757552 .
- ↑ Bell, John L. (2012). «Tipos, conjuntos y categorías» (PDF) . En Kanamory, Akihiro (ed.). Conjuntos y extensiones en el siglo XX . Manual de historia de la lógica. Vol. 6. Elsevier. ISBN 978-0-08-093066-4. Archivado (PDF) del original el 17-04-2018 . Recuperado el 03-11-2012 .
- ↑ Sterling, Jonathan; Angiuli, Carlo (29 de junio de 2021). «Normalización para la teoría de tipos cúbicos». 36.º Simposio Anual ACM/IEEE sobre Lógica en Ciencias de la Computación (LICS) de 2021. Roma, Italia: IEEE. pp. 1–15 . arXiv : 2101.11479 . doi : 10.1109/LICS52264.2021.9470719 . ISBN 978-1-6654-4895-6. S2CID 231719089 .
- 1 2 Cohen, Cyril; Coquand, Thierry; Huber, Simon; Mörtberg, Anders (2016). "Teoría de tipos cúbicos: una interpretación constructiva del axioma de univalencia" (PDF) . XXI Conferencia Internacional sobre Tipos para Pruebas y Programas (TYPES 2015) . arXiv : 1611.02108 . doi : 10.4230/LIPIcs.CVIT.2016.23 (inactivo el 2 de julio de 2025). Archivado (PDF) del original el 9 de octubre de 2022.
{{cite journal}}: CS1 maint: DOI inactivo desde julio de 2025 ( enlace ) - ↑ Balbaert, Ivo (2015) Introducción a Julia
- 1 2 Bove, Ana; Dybjer, Peter (2009), Bove, Ana; Barbosa, Luís Soares; Pardo, Alberto; Pinto, Jorge Sousa (eds.), "Dependent Types at Work" , Language Engineering and Rigorous Software Development: International LerNet ALFA Summer School 2008, Piriápolis, Uruguay, 24 de febrero - 1 de marzo de 2008, Revised Tutorial Lectures , Lecture Notes in Computer Science, Berlín, Heidelberg: Springer, pp. 57–99 , doi : 10.1007/978-3-642-03153-3_2 , ISBN 978-3-642-03153-3, consultado el 18 de enero de 2024
{{citation}}: CS1 mantenimiento: parámetro de trabajo con ISBN ( enlace ) - ↑ Barendegt, Henk (abril de 1991). "Introducción a los sistemas de tipos generalizados" . Journal of Functional Programming . 1 (2): 125– 154. doi : 10.1017/S0956796800020025 . hdl : 2066/17240 – vía Cambridge Core.
- ↑ Milewski, Bartosz. "Programación con matemáticas (Explorando la teoría de tipos)" . YouTube . Archivado del original el 22 de enero de 2022. Consultado el 22 de enero de 2022 .
- ↑ "Axiomas y computación" . Demostración de teoremas en Lean . Archivado del original el 22 de diciembre de 2021. Consultado el 21 de enero de 2022 .
- ↑ "Axioma K" . nLab . Archivado del original el 19 de enero de 2022. Consultado el 21 de enero de 2022 .
Lecturas adicionales
- Aarts, C.; Casa trasera, R.; Hoogendijk, P.; Voermans, E.; van der Woude, J. (diciembre de 1992). "Una teoría relacional de tipos de datos" . Universidad Técnica de Eindhoven.
- Andrews B., Peter (2002). Introducción a la lógica matemática y la teoría de tipos: Hacia la verdad a través de la demostración (2.ª ed.). Kluwer. ISBN 978-1-4020-0763-7.
- Jacobs, Bart (1999). Lógica categórica y teoría de tipos . Estudios en lógica y fundamentos de las matemáticas. Vol. 141. Elsevier. ISBN 978-0-444-50170-7Archivado del original el 10 de agosto de 2023. Consultado el 19 de julio de 2020 .Cubre la teoría de tipos en profundidad, incluyendo extensiones de tipos polimórficas y dependientes. Proporciona semántica categórica .
- Cardelli, Luca (1996). «Sistemas de tipos» . En Tucker, Allen B. (ed.). Manual de informática e ingeniería . CRC Press. pp. 2208–2236 . ISBN 9780849329098Archivado del original el 10 de abril de 2008. Consultado el 26 de junio de 2004 .
- Collins, Jordan E. (2012). Una historia de la teoría de tipos: desarrollos posteriores a la segunda edición de 'Principia Mathematica'.Lambert Academic Publishing. hdl : 11375/12315 . ISBN 978-3-8473-2963-3.Ofrece un panorama histórico del desarrollo de la teoría de tipos, centrándose en el declive de dicha teoría como fundamento de las matemáticas durante las cuatro décadas posteriores a la publicación de la segunda edición de 'Principia Mathematica'.
- Constable, Robert L. (2012) [2002]. «Teoría ingenua de tipos computacionales» (PDF) . En Schwichtenberg, H.; Steinbruggen, R. (eds.). Prueba y fiabilidad de sistemas . Nato Science Series II. Vol. 62. Springer. pp. 213–259 . ISBN 9789401004138Archivado (PDF) del original el 09/10/2022 .Concebida como una contraparte de la teoría de conjuntos ingenua de Paul Halmos (1960) en el ámbito de la teoría de tipos.
- Coquand, Thierry (2018) [2006]. "Teoría de tipos" . Enciclopedia de filosofía de Stanford .
- Thompson, Simon (1991). Teoría de tipos y programación funcional . Addison–Wesley. ISBN 0-201-41667-0Archivado del original el 23 de marzo de 2021. Consultado el 3 de abril de 2006 .
- Hindley, J. Roger (2008) [1995]. Teoría básica de tipos simples . Cambridge University Press. ISBN 978-0-521-05422-5.Una buena introducción a la teoría de tipos básica para informáticos; sin embargo, el sistema descrito no es exactamente el STT de Church. Reseña del libro archivada el 7 de junio de 2011 en Wayback Machine.
- Kamareddine, Fairouz D.; Laan, Twan; Nederpelt, Rob P. (2004). Una perspectiva moderna sobre la teoría de tipos: desde sus orígenes hasta la actualidad . Springer. ISBN 1-4020-2334-0.
- Ferreirós, José; Domínguez, José Ferreirós (2007). "X. Lógica y teoría de tipos en el período de entreguerras". Laberinto de pensamiento: una historia de la teoría de conjuntos y su papel en las matemáticas modernas (2ª ed.). Saltador. ISBN 978-3-7643-8349-7.
- Laan, TDL (1997). La evolución de la teoría de tipos en lógica y matemáticas (PDF) (Tesis doctoral). Universidad Tecnológica de Eindhoven. doi : 10.6100/IR498552 . ISBN 90-386-0531-5Archivado (PDF) del original el 09/10/2022 .
- Montague, R. (1973) «El tratamiento adecuado de la cuantificación en inglés ordinario». En KJJ Hintikka, JME Moravcsik y P. Suppes (eds.), Approaches to Natural Language (Synthese Library, 49), Dordrecht: Reidel, 221–242; reimpreso en Portner y Partee (eds.) 2002, pp. 17–35. Véase: Montague Semantics , Stanford Encyclopedia of Philosophy.
Enlaces externos
Material introductorio
- Teoría de tipos en nLab , que cuenta con artículos sobre muchos temas.
- Artículo sobre la teoría de tipos intuicionista en la Enciclopedia de Filosofía de Stanford.
- Libro Lambda Calculi con tipos de Henk Barendregt
- Cálculo de construcciones / Documento sobre cálculo lambda ( formato de libro de texto) de Helmut Brandl
- Notas sobre la teoría de tipos intuicionistas de Per Martin-Löf
- Programación en el libro de Teoría de Tipos de Martin-Löf
- Libro sobre la teoría de tipos homotópicos , que propuso la teoría de tipos homotópicos como fundamento matemático.
Material avanzado
- Robert L. Constable (ed.). "Teoría de tipos computacional" . Scholarpedia .
- El Foro TYPES es un foro de correo electrónico moderado centrado en la teoría de tipos en la informática, en funcionamiento desde 1987.
- "Introducción a la teoría de tipos" . Implementación de las matemáticas con el sistema de desarrollo de pruebas Nuprl . Prentice-Hall. 1985.
- Apuntes de clase del Proyecto Tipos de las escuelas de verano 2005–2008
- El curso de verano de 2005 incluye conferencias introductorias.
- Curso de verano de lenguajes de programación de Oregón : muchas conferencias y algunos apuntes.
- Conferencias del verano de 2013, incluidas las charlas de Robert Harper en YouTube.
- Tipos, lógica, semántica y verificación (Verano 2015)
- El blog de Andrej Bauer
- teoría de tipos
- Sistemas de lógica formal
- Jerarquía