xT xS
Ein Beispiel
Um diese Unterscheidung zu verdeutlichen, verwende ich das Beispiel in den Vorlesungsskripten von Herman Geuvers . Als erstes betrachten wir ein Beispiel für das Bewohnen eines Typs:
3+(7∗8)5:Nat,
3∈{n∈N∣∀x,y,z∈N+(xn+yn≠zn)}
Der Hauptunterschied besteht darin, dass wir, um zu testen, ob der erste Ausdruck eine natürliche Zahl ist, keine semantische Bedeutung berechnen müssen, sondern lediglich die Tatsache ablesen müssen, dass alle Literale vom Typ Nat sind und alle Operatoren geschlossen am Typ Nat.
33
Algorithmen gegen Beweise
Zusammenfassend gesagt, werden Typen häufig für 'einfache' Behauptungen zur Syntax eines Ausdrucks verwendet, so dass die Zugehörigkeit eines Typs von einem Algorithmus überprüft werden kann , während zum Testen der Zugehörigkeit zu einer Menge in der Regel ein Beweis erforderlich ist .
Um zu sehen, warum diese Unterscheidung nützlich ist, betrachten Sie einen Compiler einer typisierten Programmiersprache. Wenn dieser Compiler einen formalen Beweis für die Überprüfung von Typen erstellen muss, wird der Compiler aufgefordert, eine fast unmögliche Aufgabe zu erledigen (die automatische Beweisführung ist im Allgemeinen schwierig). Wenn der Compiler dagegen einfach einen (effizienten) Algorithmus ausführen kann, um die Typen zu überprüfen, kann er die Aufgabe realistisch ausführen.
Eine Motivation für eine strikte (er) Interpretation
Es gibt mehrere Interpretationen der semantischen Bedeutung von Mengen und Typen. Während unter der hier vorgenommenen Unterscheidung Erweiterungstypen und Typen mit unentscheidbarer Typprüfung (wie die in NuPRL verwendeten, wie in den Kommentaren erwähnt) keine "Typen" wären, können andere diese natürlich als solche bezeichnen (ebenso kostenlos) wie sie sind, um sie etwas anderes zu nennen, solange ihre Definitionen passen).
Wir (Herman Geuvers und ich) ziehen es jedoch vor, diese Interpretation nicht aus dem Fenster zu werfen, wofür ich (nicht Herman, obwohl er vielleicht zustimmt) die folgende Motivation habe:
Erstens ist die Absicht dieser Interpretation nicht so weit von der von Andrej Bauer entfernt. Die Absicht einer Syntax besteht normalerweise darin, zu beschreiben, wie etwas konstruiert werden soll, und einen Algorithmus zu haben, um es tatsächlich zu konstruieren, ist im Allgemeinen nützlich. Darüber hinaus werden die Merkmale einer Menge normalerweise nur benötigt, wenn wir eine semantische Beschreibung wünschen, für die Unentscheidbarkeit zulässig ist.
Der Vorteil unserer strengeren Beschreibung besteht also darin, die Trennung einfacher zu halten und eine Unterscheidung zu erhalten, die direkter mit der üblichen praktischen Verwendung zusammenhängt. Dies funktioniert gut, solange Sie Ihre Nutzung nicht wie bei NuPRL benötigen oder lockern möchten.