In den meisten Typsystemen arbeiten die Typregeln zusammen, um Urteile der Form zu definieren:
Γ⊢e:τ
Dies besagt, dass im Kontext der Ausdruck den Typ . ist eine Abbildung der freien Variablen von auf ihre Typen.e τ Γ eΓeτ
Γe
Ein Typensystem besteht aus einer Reihe von Axiomen und Regeln (ein formales System von Inferenzregeln , wie Raphael hervorhebt).
Ein Axiom ist von der Form
Γ⊢e:τ
Dies besagt, dass das Urteil (immer) gilt.Γ⊢e:τ
Ein Beispiel ist
x:τ⊢x:τ
die besagt , daß unter der Annahme , dass die Art der Variablen x ist τ , dann wird der Ausdruck x hat Typ τ .
Inferenzregeln nehmen bereits ermittelte Tatsachen und bauen daraus größere Tatsachen auf. Zum Beispiel die Inferenzregel
Γ⊢e1:τ→τ′Γ⊢e2:τΓ⊢e1 e2:τ′
sagt, wenn ich eine Ableitung der Tatsache und eine Ableitung der Tatsache Γ Γ e 2 : τ habe , dann kann ich eine Ableitung der Tatsache . In diesem Fall ist dies die Regel für die Eingabe von Funktionsanwendungen.Γ⊢e1:τ→τ′Γ⊢e2:τΓ⊢e1 e2:τ′
Es gibt zwei Möglichkeiten, diese Regel zu lesen:
- top-down - Wenn zwei Ausdrücke (eine Funktion und ein anderer Ausdruck) und einige Einschränkungen für ihren Typ gegeben sind, können wir einen weiteren Ausdruck (die Anwendung der Funktion auf den Ausdruck) mit dem gegebenen Typ konstruieren.
- bottom-up - bei einem Ausdruck, bei dem es sich in diesem Fall um die Anwendung einer Funktion auf einen Ausdruck handelt, werden zuerst die beiden Ausdrücke eingegeben, um sicherzustellen, dass ihre Typen bestimmten Bedingungen entsprechen, d. h Funktionstyp und dass der zweite den Argumenttyp der Funktion hat.
Einige Inferenzregeln manipulieren auch indem sie neue Zutaten hinzufügen (von unten nach oben betrachtet). Hier ist die Regel für -abstraction:λΓλ
Γx:τ⊢e:τ′Γ⊢λx.e:τ→τ′
Die Inferenzregeln werden induktiv angewendet, basierend auf der Syntax des Ausdrucks, der als Ableitungsbaum betrachtet wird. An den Blättern des Baumes (oben) werden Axiome und Zweige gebildet, indem Folgerungsregeln angewendet werden. Ganz unten im Baum befindet sich der Ausdruck, den Sie eingeben möchten.
λf.λx.f x
f:τ→τ′,x:τ⊢f:τ→τ′f:τ→τ′,x:τ⊢x:τf:τ→τ′,x:τ⊢f x:τ′f:τ→τ′⊢λx.f x:τ′⊢λf.λx.f x:τ′
Beide Bücher sind sehr umfangreich, beginnen jedoch langsam und bilden ein solides Fundament.