Nivel 2 · Tipos simples (λ→)
Juicios y contextos
El módulo anterior cerró con un anticipo del cálculo lambda simplemente tipado : los tipos simples (Definición 7.45), los términos tipables (Definición 7.48), los términos pre-tipados (Definición 7.50) y la forma del juicio de tipado (Definición 7.51). Este módulo desarrolla en detalle, siguiendo a Nederpelt y Geuvers (2014) . La pregunta que lo organiza es doble: qué significa exactamente la afirmación «el término tiene el tipo », y cómo se demuestra. Esta página fija el lenguaje de las afirmaciones; la siguiente presenta las reglas que las derivan.
Los tipos, de un vistazo
El conjunto de tipos simples de la
Definición 7.45se escribe en forma compacta (estilo BNF) como
donde recorre el conjunto infinito de variables de tipo. Las letras griegas denotan variables de tipo; los símbolos denotan tipos simples arbitrarios; los paréntesis externos se omiten y la flecha agrupa por la derecha: abrevia . La interpretación es la esperada:
- las variables de tipo () representan tipos básicos, como para los números naturales o para las listas;
- los tipos flecha () representan funciones, como , el conjunto de funciones de naturales a reales.
El símbolo «» se utiliza para denotar que un término tiene un tipo específico. Por ejemplo:
- significa que el término es de tipo ;
- significa que es una variable de tipo ;
- significa que la función toma un argumento de tipo y devuelve un resultado de tipo ;
- significa que la aplicación de a produce un resultado de tipo .
De los enunciados a los juicios
Las cuatro nociones que estructuran todo el sistema ya fueron definidas en la Definición 7.51; conviene repasarlas con calma, porque el resto del módulo las usa sin pausa.
- Un enunciado tiene la forma , con un término pre-tipado y un tipo simple; es el sujeto y el tipo. Por ejemplo, es un enunciado.
- Una declaración es un enunciado cuyo sujeto es una variable, como .
- Un contexto es una lista de declaraciones con sujetos distintos: El contexto vacío se denota .
- Un juicio tiene la forma , con un contexto y un enunciado.
El juicio se lee en voz alta así: «asumiendo las declaraciones del contexto , el término tiene el tipo ». El símbolo separa las suposiciones (los tipos asignados a las variables libres) de la afirmación demostrada (el enunciado ). Un contexto no es un adorno: sin conocer los tipos de las variables libres de , en general no puede asignarse tipo alguno a .
El símbolo (el torniquete) reaparecerá en el módulo 3 con un significado distinto. En la Definición 9.3, es un conjunto de fórmulas proposicionales y afirma que la fórmula es derivable a partir de mediante deducción natural . Aquí, en cambio, es una lista de declaraciones de variables y lo que se deriva es un enunciado de tipado . Son dos relaciones definidas sobre objetos diferentes y no deben confundirse. La coincidencia tipográfica, sin embargo, no es casual: la correspondencia de Curry–Howard identificará ambas lecturas de manera precisa (Definición 7.60).
Anatomía de un contexto
Los contextos son listas finitas y admiten las operaciones de manipulación habituales. Las siguientes cuatro nociones son la contabilidad básica con la que se enuncian las propiedades generales de .
Considérese:
- Dominio (): el dominio de un contexto , escrito , es la secuencia ordenada de las variables declaradas en él. Así, para , su dominio es .
- Subcontexto (): un contexto es subcontexto de si cada declaración en también existe en , manteniendo el mismo orden.
- Permutación: un contexto es una permutación de si ambos contextos están compuestos por el mismo conjunto de declaraciones, sin importar el orden en que aparecen.
- Proyección (): la proyección de un contexto sobre un conjunto de variables , escrita , produce un subcontexto de que contiene exclusivamente las declaraciones de cuyas variables son miembros de . Formalmente, el dominio del nuevo contexto es la intersección .
Dado el contexto :
- Su dominio es . El dominio del contexto vacío, , es la lista vacía, .
- La relación de subcontexto se ilustra con .
- Un reordenamiento como es una permutación de .
- La proyección de sobre el conjunto resulta en : la variable no está declarada en , así que simplemente no aporta nada.
Con el lenguaje ya fijado, queda lo esencial: las tres reglas que permiten derivar juicios , y el primer dividendo de esta contabilidad, el Lema 7.57 de variables libres, que conecta con .