Typensystem basierend auf naiver Mengenlehre

11

Soweit ich weiß, basieren Datentypen in der Informatik aufgrund von Russells Paradoxon nicht auf der Mengenlehre, aber wie in realen Programmiersprachen können wir so komplexe Datentypen wie "Menge, die sich nicht selbst enthält" nicht ausdrücken, oder? Angenommen, in der Praxis ist der Typ eine unendliche Menge seiner Mitglieder, wobei die Instanzmitgliedschaft durch die Anzahl der Merkmale definiert wird, die diesem Typ / dieser Menge eigen sind (Vorhandensein bestimmter Eigenschaften, Methoden). Wenn nein, was wäre das Gegenbeispiel?

Nutel
quelle
1
Russells Paradoxon hat nichts direkt damit zu tun.
Andrej Bauer

Antworten:

11

Der Hauptgrund für die Vermeidung von Mengen in der Semantik von Typen ist, dass eine typische Programmiersprache es uns ermöglicht, beliebige rekursive Funktionen zu definieren. Unabhängig von der Bedeutung eines Typs muss er daher die Festkomma-Eigenschaft haben. Die einzige Menge mit einer solchen Eigenschaft ist die Singleton-Menge.

vττv=Φ(v)Φ:τττTf:TTT

Natürlich könnte man auch erkennen, dass der Schuldige die klassische Logik ist. Wenn Sie mit der intuitionistischen Mengenlehre arbeiten, ist es konsistent anzunehmen, dass es viele Mengen mit Festkomma-Eigenschaften gibt. Tatsächlich wurde dies verwendet, um die Semantik der Programmiersprache zu vermitteln, siehe zum Beispiel

Alex Simpson, Computational Adequacy for Recursive Types in Modellen der Intuitionistic Set Theory , In Annals of Pure and Applied Logic, 130: 207-275, 2004.

Andrej Bauer
quelle
7

π

Dave Clarke
quelle
1
Es gibt Vorläufer für Castagna. Bereits vor langer Zeit wurde die Teilmengenrelation zur Modellierung der Untertypisierung in PER-Modellen verwendet. Dort entspricht ein Typ einer partiellen Äquivalenzrelation (PER) und die Subtypisierung ist nur die Einbeziehung solcher Relationen.
Andrej Bauer
4

Mit wenigen Ausnahmen (eine, die Dave Clarke zitiert) ist eine einfache satztheoretische Semantik von Typen schwer anzuwenden. Der Grund ist, dass die Datenabstraktion mit der satztheoretischen Semantik nicht sehr gut zusammenspielt.

α.ααU

[[α.αα]]=ΠXU.XX

UUXXXUα

α.αα

Neel Krishnaswami
quelle
Neel, ich denke nicht, dass diese Antwort Sinn macht. Wenn die Semantik der Sprache die Standardsemantik im F-Stil ist, kann ein Compiler die Optimierung basierend auf dem Typsystem problemlos durchführen. Wenn die Semantik die satztheoretische Semantik ist, wäre die Optimierung nicht sinnvoll. Welches Modell Sie für die Typen verwenden, wird nicht eingegeben.
Sam Tobin-Hochstadt
Sam, ich verstehe deinen Standpunkt nicht: Es liest sich so, als ob du mir vollkommen zustimmst! Die standardmäßige satztheoretische Semantik kann nicht beweisen, dass der einzige Bewohner dieses Typs die Identität ist, daher benötigen Sie eine andere Semantik.
Neel Krishnaswami
1
@Neel: Das von Ihnen beschriebene Problem bleibt bestehen, auch wenn wir uns von Sets entfernen. Die Lösung besteht nicht darin, die Kategorie der Mengen durch etwas anderes zu ändern, sondern die Parametrizität anders zu modellieren. Man muss nämlich relationale Parametrizität verwenden, wie Sie sicher wissen. Aber dann läuft es genauso gut in Sets, wenn ich mich nicht irre. Das "einzige" Problem bei Mengen ist das Fehlen von Fixpunkten (sowohl auf der Ebene der rekursiven Werte als auch der rekursiven Typen).
Andrej Bauer
1
Ah, ich glaube ich verstehe, warum ich dich und Sam verwirre! Ich will damit nicht implizieren, dass es nicht sinnvoll ist, ein naives satztheoretisches Modell zu verwenden, nur dass dieses Modell oft nicht hilfreiche Antworten gibt - deshalb habe ich "schwer zu verwenden" und nicht "falsch" gesagt. Sie können natürlich Mengen verwenden, um ein nützliches Modell zu erstellen (dh relational), aber dann interpretieren wir Typen-als-Mengen nicht mehr in der in der Frage vorgeschlagenen Weise. (Wie Sie wissen, gibt es beim improvisierten Polymorphismus kein naives Modell, aber die Parametrizität ist immer noch aussagekräftig.)
Neel Krishnaswami
1
Ich denke, Ihr Punkt betrifft die Entsprechung zwischen Semantik - eine satztheoretische Semantik passt nicht gut zum Polymorphismus im System F-Stil, weil sie unaussprechliche Bewohner hat. Dies ist jedoch kein Punkt gegen die satztheoretische Semantik, sondern nur eine Aussage, der unsere Semantik zustimmen sollte. Wenn unsere Sprache es uns ermöglicht, die Funktionen auszudrücken, über die Sie sprechen (wie zum Beispiel Typed Racket), möchten wir möglicherweise die satztheoretische Semantik.
Sam Tobin-Hochstadt