Dans la plupart des systèmes de types, les règles de type fonctionnent ensemble pour définir des jugements de la forme:
Γ ⊢ e : τ
Cela indique que dans le contexte l'expression a le type . est une cartographie des variables libres de à leurs types.e τ Γ eΓeτ
Γe
Un système de types consistera en un ensemble d'axiomes et de règles (un système formel de règles d'inférence , comme le souligne Raphaël).
Un axiome est de la forme
Γ ⊢ e : τ
Cela indique que le jugement est (toujours).Γ ⊢ e : τ
Un exemple est
x : τ⊢ x : τ
qui stipule que dans l'hypothèse où le type de variable est , alors l'expression a le type .τ x τXτXτ
Les règles d'inférence prennent des faits qui ont déjà été déterminés et en construisent des faits plus larges. Par exemple, la règle d'inférence
Γ ⊢ e1: τ→ τ′Γ ⊢ e2: τΓ ⊢ e1 e2: τ′
dit que si j'ai une dérivation du fait et une dérivation du fait , alors je peux obtenir une dérivation du fait . Dans ce cas, c'est la règle pour taper l'application de fonction. Γ ⊢ e 2 : τ Γ ⊢ e 1 e 2 : τ ′Γ ⊢ e1: τ→ τ′Γ ⊢ e2: τΓ ⊢ e1 e2: τ′
Il existe deux manières de lire cette règle:
- de haut en bas - étant donné deux expressions (une fonction et une autre expression) et quelques contraintes sur leur type, nous pouvons construire une autre expression (l'application de la fonction à l'expression) avec le type donné.
- de bas en haut - étant donné une expression qui est, dans ce cas, l'application d'une fonction à une expression, la façon dont elle est typée est en tapant d'abord les deux expressions, en s'assurant que leurs types satisfont à certaines contraintes, à savoir que la première est un type de fonction et que le second a le type d'argument de la fonction.
Certaines règles d'inférence manipulent également en y ajoutant de nouveaux ingrédients (vue de bas en haut). Voici la règle pour -abstraction:λΓλ
Γ x : τ⊢ e : τ′R ⊢ X x . e : τ→ τ′
Les règles d'inférence sont appliquées de manière inductive en fonction de la syntaxe de l'expression considérée pour former un arbre de dérivation. Aux feuilles de l'arbre (en haut) seront des axiomes, et des branches seront formées en appliquant des règles d'inférence. Tout en bas de l'arborescence se trouve l'expression que vous souhaitez saisir.
Par exemple, une dérivation du typage de l'expression estλ f. λ x . F X
F: τ→ τ′, x : τ⊢ f: τ→ τ′F: τ→ τ′, x : τ⊢ x : τF: τ→ τ′, x : τ⊢ f x : τ′F: τ→ τ′⊢ λ x . F x : τ′⊢ λ f. λ x . F x : τ′
Deux très bons livres pour apprendre sur les systèmes de types sont:
Les deux livres sont très complets, mais ils commencent lentement, construisant une base solide.