En la mayoría de los sistemas de tipos, las reglas de tipos trabajan juntas para definir juicios de la forma:
Γ⊢e:τ
Esto establece que en el contexto la expresión e tiene el tipo τ . Γ es un mapeo de las variables libres de e a sus tipos.Γeτ
Γe
Un sistema de tipos consistirá en un conjunto de axiomas y reglas (un sistema formal de reglas de inferencia , como señala Rafael).
Un axioma es de la forma
Γ⊢e:τ
Esto establece que el juicio es válido (siempre).Γ⊢e:τ
Un ejemplo es
x:τ⊢x:τ
que establece que bajo el supuesto de que el tipo de variable es τ , entonces la expresión x tiene el tipo τ .xτxτ
Las reglas de inferencia toman hechos que ya han sido determinados y construyen hechos más grandes a partir de ellos. Por ejemplo, la regla de inferencia
Γ⊢e1:τ→τ′Γ⊢e2:τΓ⊢e1 e2:τ′
dice que si tengo una derivación del hecho y una derivación del hecho Γ ⊢ e 2 : τ , entonces puedo obtener una derivación del hecho Γ ⊢ e 1 e 2 : τ ′ . En este caso, esta es la regla para escribir la aplicación de función.Γ⊢e1:τ→τ′Γ⊢e2:τΓ⊢e1 e2:τ′
Hay dos formas de leer esta regla:
- De arriba hacia abajo: dadas dos expresiones (una función y otra expresión) y algunas restricciones sobre su tipo, podemos construir otra expresión (la aplicación de la función a la expresión) con el tipo dado.
- De abajo hacia arriba: dada una expresión que es, en este caso, la aplicación de una función a alguna expresión, la forma en que se escribe es escribiendo primero las dos expresiones, asegurando que sus tipos satisfagan algunas restricciones, a saber, que la primera es una tipo de función y que el segundo tiene el tipo de argumento de la función.
Algunas reglas de inferencia también manipulan al agregarle nuevos ingredientes (ver de abajo hacia arriba). Aquí está la regla para la abstracción λ :Γλ
Γx:τ⊢e:τ′Γ⊢λx.e:τ→τ′
Las reglas de inferencia se aplican inductivamente en función de la sintaxis de la expresión que se considera que forma un árbol de derivación. En las hojas del árbol (en la parte superior) habrá axiomas, y las ramas se formarán aplicando reglas de inferencia. En la parte inferior del árbol está la expresión que le interesa escribir.
Por ejemplo, una derivación de la tipificación de la expresión esλf.λx.f x
Dos libros muy buenos para aprender sobre sistemas de tipos son:
F: τ→ τ′, x : τ⊢ f: τ→ τ′F: τ→ τ′, x : τ⊢ x : τF: τ→ τ′, x : τ⊢ f x : τ′F: τ→ τ′⊢ λ x . F x : τ′⊢ λ f. λ x . F x : τ′
Ambos libros son muy completos, pero comienzan lentamente, construyendo una base sólida.